[
  {
    "path": "LICENSE",
    "content": "Copyright (c) 2021 SAMSUNG\n\nPermission is hereby granted, free of charge, to any person obtaining a copy \nof this software and associated documentation files (the \"Software\"), to deal \nin the Software without restriction, including without limitation the rights \nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell \ncopies of the Software, and to permit persons to whom the Software is \nfurnished to do so, subject to the following conditions: \n\nThe above copyright notice and this permission notice shall be included in all \ncopies or substantial portions of the Software. \n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR \nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, \nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE \nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER \nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, \nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE \nSOFTWARE.\n"
  },
  {
    "path": "README.md",
    "content": "# CredSweeper\n\n[![GitHub release (latestSemVer)](https://img.shields.io/github/v/release/Samsung/CredSweeper)](https://github.com/Samsung/CredSweeper/releases)\n[![Documentation Status](https://readthedocs.org/projects/credsweeper/badge/?version=latest)](https://credsweeper.readthedocs.io/en/latest/?badge=latest)\n[![License](https://img.shields.io/badge/licence-MIT-green.svg?style=flat)](LICENSE)\n[![PyPI](https://img.shields.io/pypi/v/credsweeper)](https://pypi.org/project/credsweeper/)\n[![Python](https://img.shields.io/pypi/pyversions/credsweeper.svg)](https://badge.fury.io/py/credsweeper)\n[![Test](https://github.com/Samsung/CredSweeper/actions/workflows/test.yml/badge.svg)](https://github.com/Samsung/CredSweeper/actions/workflows/test.yml)\n[![codecov](https://codecov.io/gh/Samsung/CredSweeper/branch/main/graph/badge.svg)](https://codecov.io/gh/Samsung/CredSweeper)\n[![CII Best Practices](https://bestpractices.coreinfrastructure.org/projects/6055/badge)](https://bestpractices.coreinfrastructure.org/projects/6055)\n[![OpenSSF Scorecard](https://api.securityscorecards.dev/projects/github.com/Samsung/CredSweeper/badge)](https://api.securityscorecards.dev/projects/github.com/Samsung/CredSweeper)\n\n<img src=\"https://raw.githubusercontent.com/Samsung/CredSweeper/main/docs/images/Logo.png\" width=\"500\"/>\n\n- [CredSweeper](#credsweeper)\n  - [Introduction](#introduction)\n  - [How To Use](#how-to-use)\n    - [Main Requirements](#main-requirements)\n    - [Installation](#installation)\n    - [Run](#run)\n    - [Config](#config)\n  - [Develop](#develop)\n    - [Tests](#tests)\n    - [Benchmark](#benchmark)\n  - [Overall Architecture](#overall-architecture)\n  - [Retrain Model](#retrain-model)\n  - [License](#license)\n  - [How to Get Involved](#how-to-get-involved)\n    - [Project Roles](#project-roles)\n      - [Contributor](#contributor)\n      - [Maintainer](#maintainer)\n  - [How to Contact](#how-to-contact)\n\n## Introduction\n\nCredSweeper is an advanced credential detection tool designed to identify exposed\ncredentials such as passwords, API keys, tokens, and other sensitive information\nacross source code, configuration files, documents, and binary assets.\nCredSweeper scans regular files, embedded data in containers, and files added in Git commits.\nThe tool combines pattern-based detection, machine learning–based validation, and\ndeep file inspection to deliver comprehensive and accurate security scanning for\nmodern codebases and repositories.\n\n**Key Capabilities:**\n- Credential detection in source code, configuration files, documents, and archives\n- False positive reduction using algorithmic filters and machine learning\n- Scanning of compressed files, documents, and binary formats\n- Git repository analysis and diff scanning\n\nFull documentation can be found here: <https://credsweeper.readthedocs.io/>\n\n## How To Use\n\n### Main Requirements\n\n- Python 3.10, 3.11, 3.12, 3.13, 3.14\n\n### Installation\n\nDetails [here](https://credsweeper.readthedocs.io/en/latest/install.html).\n\n```bash\npip install credsweeper\n```\n\n### Run\n\n[How to use](https://credsweeper.readthedocs.io/en/latest/guide.html).\n\nRun CredSweeper:\n\n```bash\npython -m credsweeper --path tests/samples/password.gradle --save-json output.json\n```\n\n### JSON Output\n\n```json\n[\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.993,\n        \"line_data_list\": [\n            {\n                \"line\": \"password = \\\"cackle!\\\"\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/password.gradle\",\n                \"info\": \"\",\n                \"variable\": \"password\",\n                \"variable_start\": 0,\n                \"variable_end\": 8,\n                \"value\": \"cackle!\",\n                \"value_start\": 12,\n                \"value_end\": 19,\n                \"entropy\": 2.52164\n            }\n        ]\n    }\n]\n```\n\n### Config\n\n[credsweeper/secret/config.json](credsweeper/secret/config.json) - Configuration file for pre-processing of CredSweeper. For more details please check [here](https://credsweeper.readthedocs.io/en/latest/overall_architecture.html#pre-processing).\n\nYou can set the `pattern`, `extension` and `path` you want to exclude from scanning as below.\n\n```json\n{\n    \"exclude\": {\n        \"pattern\": [\n            \"AKIA[0-9A-Z]{9}EXAMPLE\",\n            ...\n        ],\n        \"extension\": [\n            \"gif\",\n            \"jpg\",\n            ...\n        ],\n        \"path\": [\n            \"/.git/\",\n            \"/openssl/\",\n            ...\n        ]\n    },\n    ...\n}\n```\n\nAnd you can also set `source_ext`, `source_quote_ext`, `find_by_ext_list`, `check_for_literals`, `line_data_output`, and `candidate_output` as below.\n\n- `source_ext`: List of extensions for scanning categorized as source files.\n- `source_quote_ext`: List of extensions for scanning categorized as source files that use quotes.\n- `find_by_ext_list`: List of extensions to detect only extensions.\n- `check_for_literals`: Bool value for whether to check line has string literal declaration or not.\n- `line_data_output`: List of attributes of [line_data](credsweeper/credentials/line_data.py) for output.\n- `candidate_output`: List of attributes of [candidate](credsweeper/credentials/candidate.py) for output.\n\n```json\n{\n    ...\n    \"source_ext\": [\n        \".py\",\n        \".cpp\",\n        ...\n    ],\n    \"source_quote_ext\": [\n        \".py\",\n        \".cpp\",\n        ...\n    ],\n    \"find_by_ext_list\": [\n        \".pem\",\n        \".cer\",\n        ...\n    ],\n    \"check_for_literals\": true,\n    \"line_data_output\": [\n        \"line\",\n        \"line_num\",\n        ...\n    ],\n    \"candidate_output\": [\n        \"rule\",\n        \"severity\",\n        ...\n    ]\n}\n```\n\n[credsweeper/rules/config.yaml](credsweeper/rules/config.yaml) - Configuration file for setting Rule. For more details please check [here](https://credsweeper.readthedocs.io/en/latest/overall_architecture.html#rule).\n\n```yaml\n- name: Credential\n  severity: medium\n  confidence: moderate\n  type: keyword\n  values:\n    - credential\n  filter_type: GeneralKeyword\n  use_ml: true\n  min_line_len: 18\n  required_substrings:\n    - credential\n  target:\n    - code\n```\n\n## Develop\n\n### Tests\n\nRun all tests with random order:\n\n```bash\npython -m pytest --cov=credsweeper --cov-report=term-missing --random-order --random-order-bucket=global -s tests/\n```\n\n### Benchmark\n\nWe have a dataset for testing credential scanners called [CredData](https://github.com/Samsung/CredData).\nIf you want to test CredSweeper with this dataset please check [here](https://github.com/Samsung/CredData/blob/main/README.md#benchmark).\n\n## Overall Architecture\n\nTo check overall architecture of CredSweeper please check [here](https://credsweeper.readthedocs.io/en/latest/overall_architecture.html).\n\n## Retrain Model\n\nIf you want to check how model was trained or retrain it on your own data, please refer to the [experiment](experiment/README.md) folder\n\n## License\n\nThe CredSweeper is an Open Source project released under the terms of [MIT License](https://opensource.org/licenses/mit-license.php).\n\n## How to Get Involved\n\nIn addition to developing under an Open Source license, the project follows an Open Source Development approach,\nwelcoming everyone to participate, contribute, and engage with each other through the project.\n\n### Project Roles\n\nThe project recognizes the following formal roles: Contributor and Maintainer.\nInformally, the community may organize itself and grant additional rights and responsibilities to the necessary people to achieve its goals.\n\n#### Contributor\n\nA Contributor is anyone who wishes to contribute to the project, at any level. Contributors are granted the following rights to:\n\n- Contribute code, documentation, translations, artwork, samples, etc.\n- Report defects (bugs) and suggestions for enhancement.\n- Participate in the process of reviewing contributions by others.\n\nIf you want to participate in the project development, check out the [how to contribute guideline](./docs/howto/how-to-contribute.md) in advance.\n\nContributors who show dedication and skill are rewarded with additional rights and responsibilities.\nTheir opinions weigh more when decisions are made, in a fully meritocratic fashion.\n\n#### Maintainer\n\nA Maintainer is a Contributor who is also responsible for knowing, directing and anticipating the needs of a given Module.\nAs such, Maintainers have the right to set the overall organization of the source code in the Module,\nand the right to participate in the decision-making. Maintainers are required to review the contributor’s requests and decide whether to accept or not.\n\n| Name                                           | E-Mail                 |\n|------------------------------------------------|------------------------|\n| [Jaeku Yun](https://github.com/silentearth)    | jk0113.yun@samsung.com |\n| [Shinhyung Choi](https://github.com/csh519)    | sh519.choi@samsung.com |\n| [Roman Babenko](https://github.com/babenek)    | r.babenko@samsung.com  |\n| [Yuliia Tatarinova](https://github.com/Yullia) | yuliia.t@samsung.com   |\n\n## How to Contact\n\nPlease post questions, [issues, or suggestions in issues](https://github.com/Samsung/CredSweeper/issues). This is the best way to communicate with the developers.\n"
  },
  {
    "path": "SECURITY.md",
    "content": "# Security Policy\n\n## Supported Versions\n\n| Version | Supported          |\n|---------|--------------------|\n| 1.15.x  | :white_check_mark: |\n| <1.15.x | :x:                |\n\n## Reporting a Vulnerability\n\nPlease use [issues](https://github.com/Samsung/CredSweeper/issues) to report about any security issue.\n"
  },
  {
    "path": "action.yml",
    "content": "name: \"CredSweeper action\"\ndescription: \"CredSweeper checks files\"\nauthor: \"r.babenko@samsung.com\"\nbranding:\n  icon: \"terminal\"\n  color: \"gray-dark\"\ninputs:\n  python_version:\n    description: \"Python Version. 3.10 - default\"\n    default: \"3.10\"\n    required: false\n  path:\n    description: \"Path to scan\"\n    required: true\n  report:\n    description: \"CredSweeper report in JSON format\"\n    default: \"output.json\"\n    required: false\n  hashed:\n    description: \"Report output is hashed by default\"\n    default: \"--hashed\"\n    required: false\n  error:\n    description: \"Exit with an error code if credentials are detected\"\n    default: \"--error\"\n    required: false\nruns:\n  using: \"composite\"\n  steps:\n    - name: DEBUG\n      shell: bash\n      env:\n        path: ${{ inputs.path }}\n        report: ${{ inputs.report }}\n        error: ${{ inputs.error }}\n        hashed: ${{ inputs.hashed }}\n      run: echo \"print ('@@@ $error @@@ $report @@@ $path @@@ $PATH @@@')\"\n\n    - name: Setup Python\n      uses: actions/setup-python@42375524e23c412d93fb67b49958b491fce71c38 # v5.4.0 - 2025.01.28\n      with:\n        python-version: ${{ inputs.python_version }}\n\n    - name: Install CredSweeper\n      shell: bash\n      run: python -m pip install credsweeper\n\n    - name: Run CredSweeper\n      shell: bash\n      env:\n        path: ${{ inputs.path }}\n        report: ${{ inputs.report }}\n        error: ${{ inputs.error }}\n        hashed: ${{ inputs.hashed }}\n      run: python -m credsweeper --banner --log INFO --no-color --no-stdout \"$error\" \"$hashed\" --save-json \"$report\" --path \"$path\"\n"
  },
  {
    "path": "credsweeper/__init__.py",
    "content": "from credsweeper.app import CredSweeper\nfrom credsweeper.common.constants import ThresholdPreset, Severity, Confidence\nfrom credsweeper.file_handler.byte_content_provider import ByteContentProvider\nfrom credsweeper.file_handler.content_provider import ContentProvider\nfrom credsweeper.file_handler.data_content_provider import DataContentProvider\nfrom credsweeper.file_handler.diff_content_provider import DiffContentProvider\nfrom credsweeper.file_handler.string_content_provider import StringContentProvider\nfrom credsweeper.file_handler.text_content_provider import TextContentProvider\n\nfrom credsweeper.ml_model.ml_validator import MlValidator\n\n__all__ = [\n    \"ByteContentProvider\",  #\n    \"Confidence\",  #\n    \"ContentProvider\",  #\n    \"CredSweeper\",  #\n    \"DataContentProvider\",  #\n    \"DiffContentProvider\",  #\n    \"MlValidator\",  #\n    \"Severity\",  #\n    \"StringContentProvider\",  #\n    \"TextContentProvider\",  #\n    \"ThresholdPreset\",  #\n    \"__version__\"\n]\n\n__version__ = \"1.15.7\"\n"
  },
  {
    "path": "credsweeper/__main__.py",
    "content": "import sys\n\nfrom credsweeper.main import main\n\nif __name__ == \"__main__\":\n    sys.exit(main())\n"
  },
  {
    "path": "credsweeper/app.py",
    "content": "import json\nimport logging\nimport multiprocessing\nimport signal\nfrom pathlib import Path\nfrom typing import Any, List, Optional, Union, Dict, Sequence, Tuple\n\nimport pandas as pd\nfrom colorama import Style\n\n# Directory of credsweeper sources MUST be placed before imports to avoid circular import error\nAPP_PATH = Path(__file__).resolve().parent\n\nfrom credsweeper.scanner.scanner import Scanner\nfrom credsweeper.common.constants import Severity, ThresholdPreset, DiffRowType, DEFAULT_ENCODING\nfrom credsweeper.config.config import Config\nfrom credsweeper.credentials.candidate import Candidate\nfrom credsweeper.credentials.candidate_key import CandidateKey\nfrom credsweeper.credentials.credential_manager import CredentialManager\nfrom credsweeper.deep_scanner.deep_scanner import DeepScanner\nfrom credsweeper.file_handler.content_provider import ContentProvider\nfrom credsweeper.file_handler.file_path_extractor import FilePathExtractor\nfrom credsweeper.file_handler.abstract_provider import AbstractProvider\nfrom credsweeper.ml_model.ml_validator import MlValidator\nfrom credsweeper.utils.util import Util\n\nlogger = logging.getLogger(__name__)\n\n\nclass CredSweeper:\n    \"\"\"Advanced credential analyzer base class.\n\n    Parameters:\n        credential_manager: CredSweeper credential manager object\n        scanner: CredSweeper scanner object\n        pool_count: number of pools used to run multiprocessing scanning\n        config: dictionary variable, stores analyzer features\n        json_filename: string variable, credential candidates export filename\n\n    \"\"\"\n\n    def __init__(self,\n                 rule_path: Union[None, str, Path] = None,\n                 config_path: Optional[str] = None,\n                 json_filename: Union[None, str, Path] = None,\n                 xlsx_filename: Union[None, str, Path] = None,\n                 stdout: bool = False,\n                 color: bool = False,\n                 hashed: bool = False,\n                 subtext: bool = False,\n                 sort_output: bool = False,\n                 use_filters: bool = True,\n                 pool_count: int = 1,\n                 ml_batch_size: Optional[int] = None,\n                 ml_threshold: Union[int, float, ThresholdPreset] = ThresholdPreset.medium,\n                 ml_config: Union[None, str, Path] = None,\n                 ml_model: Union[None, str, Path] = None,\n                 ml_providers: Optional[str] = None,\n                 find_by_ext: bool = False,\n                 pedantic: bool = False,\n                 depth: int = 0,\n                 doc: bool = False,\n                 severity: Union[Severity, str] = Severity.INFO,\n                 size_limit: Optional[str] = None,\n                 exclude_lines: Optional[List[str]] = None,\n                 exclude_values: Optional[List[str]] = None,\n                 thrifty: bool = False,\n                 log_level: Optional[str] = None) -> None:\n        \"\"\"Initialize Advanced credential scanner.\n\n        Args:\n            rule_path: optional str variable, path of rule config file\n                validation was the grained candidate model on machine learning\n            config_path: optional str variable, path of CredSweeper config file\n                default built-in config is used if None\n            json_filename: optional string variable, path to save result to json\n            xlsx_filename: optional string variable, path to save result to xlsx\n            stdout: print results to stdout\n            color: print concise results to stdout with colorization\n            hashed: use hash of line, value and variable instead plain text\n            subtext: use subtext of line near variable-value like it performed in ML\n            use_filters: boolean variable, specifying the need of rule filters\n            pool_count: int value, number of parallel processes to use\n            ml_batch_size: int value, size of the batch for model inference\n            ml_threshold: float or string value to specify threshold for the ml model\n            ml_config: str or Path to set custom config of ml model\n            ml_model: str or Path to set custom ml model\n            ml_providers: str - comma separated list with providers\n            find_by_ext: boolean - files will be reported by extension\n            pedantic: boolean - scan all files\n            depth: int - how deep container files will be scanned\n            doc: boolean - document-specific scanning\n            severity: Severity - minimum severity level of rule\n            size_limit: optional string integer or human-readable format to skip oversize files\n            exclude_lines: lines to omit in scan. Will be added to the lines already in config\n            exclude_values: values to omit in scan. Will be added to the values already in config\n            thrifty: free provider resources after scan to reduce memory consumption\n            log_level: str - level for pool initializer according logging levels (UPPERCASE)\n\n        \"\"\"\n        self.pool_count: int = max(1, int(pool_count))\n        if not (_severity := Severity.get(severity)):\n            raise RuntimeError(f\"Severity level provided: {severity}\"\n                               f\" -- must be one of: {' | '.join([i.value for i in Severity])}\")\n        config_dict = self._get_config_dict(config_path=config_path,\n                                            use_filters=use_filters,\n                                            find_by_ext=find_by_ext,\n                                            pedantic=pedantic,\n                                            depth=depth,\n                                            doc=doc,\n                                            severity=_severity,\n                                            size_limit=size_limit,\n                                            exclude_lines=exclude_lines,\n                                            exclude_values=exclude_values)\n        self.config = Config(config_dict)\n        self.scanner = Scanner(self.config, rule_path)\n        self.deep_scanner = DeepScanner(self.config, self.scanner)\n        self.credential_manager = CredentialManager()\n        self.json_filename: Union[None, str, Path] = json_filename\n        self.xlsx_filename: Union[None, str, Path] = xlsx_filename\n        self.stdout = stdout\n        self.color = color\n        self.hashed = hashed\n        self.subtext = subtext\n        self.sort_output = sort_output\n        self.ml_batch_size = ml_batch_size if ml_batch_size and 0 < ml_batch_size else 16\n        self.ml_threshold = ml_threshold\n        self.ml_config = ml_config\n        self.ml_model = ml_model\n        self.ml_providers = ml_providers\n        self.__thrifty = thrifty\n        self.__log_level = log_level\n        self.__ml_validator: Optional[MlValidator] = None\n\n    # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #\n\n    @staticmethod\n    def _get_config_path(config_path: Optional[str]) -> Path:\n        if config_path:\n            return Path(config_path)\n        return APP_PATH / \"secret\" / \"config.json\"\n\n    # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #\n\n    def _get_config_dict(\n            self,  #\n            config_path: Optional[str],  #\n            use_filters: bool,  #\n            find_by_ext: bool,  #\n            pedantic: bool,  #\n            depth: int,  #\n            doc: bool,  #\n            severity: Severity,  #\n            size_limit: Optional[str],  #\n            exclude_lines: Optional[List[str]],  #\n            exclude_values: Optional[List[str]]) -> Dict[str, Any]:\n        config_dict = Util.json_load(self._get_config_path(config_path))\n        config_dict[\"use_filters\"] = use_filters\n        config_dict[\"find_by_ext\"] = find_by_ext\n        config_dict[\"size_limit\"] = size_limit\n        config_dict[\"pedantic\"] = pedantic\n        config_dict[\"depth\"] = depth\n        config_dict[\"doc\"] = doc\n        config_dict[\"severity\"] = severity.value\n\n        if exclude_lines is not None:\n            config_dict[\"exclude\"][\"lines\"] = config_dict[\"exclude\"].get(\"lines\", []) + exclude_lines\n        if exclude_values is not None:\n            config_dict[\"exclude\"][\"values\"] = config_dict[\"exclude\"].get(\"values\", []) + exclude_values\n\n        return config_dict  # type: ignore\n\n    # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #\n\n    def _use_ml_validation(self) -> bool:\n        if isinstance(self.ml_threshold, int) and 0 == self.ml_threshold:\n            logger.info(\"ML validation is disabled\")\n            return False\n        if not self.credential_manager.candidates:\n            logger.info(\"Skip ML validation because no candidates were found\")\n            return False\n        for i in self.credential_manager.candidates:\n            if i.use_ml:\n                # any() or all() is not used to speedup\n                return True\n        logger.info(\"Skip ML validation because no candidates support it\")\n        return False\n\n    # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #\n\n    @property\n    def ml_validator(self) -> MlValidator:\n        \"\"\"ml_validator getter\"\"\"\n        if not self.__ml_validator:\n            self.__ml_validator = MlValidator(\n                threshold=self.ml_threshold,  #\n                ml_config=self.ml_config,  #\n                ml_model=self.ml_model,  #\n                ml_providers=self.ml_providers,  #\n            )\n        if not self.__ml_validator:\n            raise RuntimeError(\"MlValidator was not initialized!\")\n        return self.__ml_validator\n\n    # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #\n\n    @staticmethod\n    def pool_initializer(log_kwargs) -> None:\n        \"\"\"Ignore SIGINT in child processes.\"\"\"\n        logging.basicConfig(**log_kwargs)\n        signal.signal(signal.SIGINT, signal.SIG_IGN)\n\n    # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #\n\n    def run(self, content_provider: AbstractProvider) -> int:\n        \"\"\"Run an analysis of 'content_provider' object.\n\n        Args:\n            content_provider: path objects to scan\n\n        \"\"\"\n        _empty_list: Sequence[ContentProvider] = []\n        file_extractors = content_provider.get_scannable_files(self.config) if content_provider else _empty_list\n        if not file_extractors:\n            logger.info(\"No scannable targets for %s paths\", len(content_provider.paths))\n            return 0\n        self.scan(file_extractors)\n        self.post_processing()\n        # PatchesProvider has the attribute. Circular import error appears with using the isinstance\n        change_type = content_provider.change_type if hasattr(content_provider, \"change_type\") else None\n        self.export_results(change_type)\n        return self.credential_manager.len_credentials()\n\n    # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #\n\n    def scan(self, content_providers: Sequence[ContentProvider]) -> None:\n        \"\"\"Run scanning of files from an argument \"content_providers\".\n\n        Args:\n            content_providers: file objects to scan\n\n        \"\"\"\n        if 1 < self.pool_count and 1 < len(content_providers):\n            self.__multi_jobs_scan(content_providers)\n        else:\n            self.__single_job_scan(content_providers)\n\n    # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #\n\n    def __single_job_scan(self, content_providers: Sequence[ContentProvider]) -> None:\n        \"\"\"Performs scan in main thread\"\"\"\n        logger.info(\"Scan for %s providers\", len(content_providers))\n        all_cred = self.files_scan(content_providers)\n        self.credential_manager.set_credentials(all_cred)\n\n    # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #\n\n    def __multi_jobs_scan(self, content_providers: Sequence[ContentProvider]) -> None:\n        \"\"\"Performs scan with multiple jobs\"\"\"\n        # use this separation to satisfy YAPF formatter\n        yapfix = \"%(asctime)s | %(levelname)s | %(processName)s:%(threadName)s | %(filename)s:%(lineno)s | %(message)s\"\n        log_kwargs = {\"format\": yapfix}\n        if isinstance(self.__log_level, str):\n            # is not None\n            if \"SILENCE\" == self.__log_level:\n                logging.addLevelName(60, \"SILENCE\")\n            log_kwargs[\"level\"] = self.__log_level\n        pool_count = min(self.pool_count, len(content_providers))\n        logger.info(\"Scan in %s processes for %s providers\", pool_count, len(content_providers))\n        with multiprocessing.get_context(\"spawn\").Pool(processes=pool_count,\n                                                       initializer=CredSweeper.pool_initializer,\n                                                       initargs=(log_kwargs,)) as pool:  # yapf: disable\n            try:\n                for scan_results in pool.imap_unordered(self.files_scan,\n                                                        (content_providers[x::pool_count] for x in range(pool_count))):\n                    for cred in scan_results:\n                        self.credential_manager.add_credential(cred)\n            except KeyboardInterrupt:\n                pool.terminate()\n                pool.join()\n                raise\n            pool.close()\n            pool.join()\n\n    # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #\n\n    def files_scan(self, content_providers: Sequence[ContentProvider]) -> List[Candidate]:\n        \"\"\"Auxiliary method for scan one sequence\"\"\"\n        all_cred: List[Candidate] = []\n        for provider in content_providers:\n            candidates = self.file_scan(provider)\n            if self.__thrifty:\n                provider.free()\n            all_cred.extend(candidates)\n        logger.info(\"Completed: processed %s providers with %s candidates\", len(content_providers), len(all_cred))\n        return all_cred\n\n    # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #\n\n    def file_scan(self, content_provider: ContentProvider) -> List[Candidate]:\n        \"\"\"Run scanning of file from 'file_provider'.\n\n        Args:\n            content_provider: content provider object to scan\n\n        Return:\n            list of credential candidates from scanned file\n\n        \"\"\"\n        candidates: List[Candidate] = []\n        logger.debug(\"Start scan file: %s %s\", content_provider.file_path, content_provider.info)\n\n        if FilePathExtractor.is_find_by_ext_file(self.config, content_provider.file_type):\n            # Skip the file scanning and create fake candidate because the extension is suspicious\n            dummy_candidate = Candidate.get_dummy_candidate(self.config, content_provider.file_path,\n                                                            content_provider.file_type, content_provider.info,\n                                                            FilePathExtractor.FIND_BY_EXT_RULE)\n            candidates.append(dummy_candidate)\n\n        else:\n            if self.config.depth or self.config.doc:\n                # deep scan with possible data representation\n                candidates = self.deep_scanner.scan(content_provider, self.config.depth, self.config.size_limit)\n            else:\n                if content_provider.file_type not in self.config.exclude_containers:\n                    # Regular file scanning\n                    candidates = self.scanner.scan(content_provider)\n\n        # finally return result from 'file_scan'\n        return candidates\n\n    # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #\n\n    def post_processing(self) -> None:\n        \"\"\"Machine learning validation for received credential candidates.\"\"\"\n        if purged := self.credential_manager.purge_duplicates():\n            logger.info(\"Purged %s duplicates\", purged)\n        if self._use_ml_validation():\n            logger.info(\"Grouping %s candidates\", len(self.credential_manager.candidates))\n            new_cred_list: List[Candidate] = []\n            cred_groups = self.credential_manager.group_credentials()\n            ml_cred_groups: List[Tuple[CandidateKey, List[Candidate]]] = []\n            for group_key, group_candidates in cred_groups.items():\n                # Analyze with ML if any candidate in group require ML\n                for candidate in group_candidates:\n                    if candidate.use_ml:\n                        ml_cred_groups.append((group_key, group_candidates))\n                        break\n                else:\n                    # all candidates do not require ML\n                    new_cred_list.extend(group_candidates)\n\n            # prevent extra ml_validator creation if ml_cred_groups is empty\n            if ml_cred_groups:\n                logger.info(\"Run ML Validation for %s groups\", len(ml_cred_groups))\n                is_cred, probability = self.ml_validator.validate_groups(ml_cred_groups, self.ml_batch_size)\n                for i, (_, group_candidates) in enumerate(ml_cred_groups):\n                    for candidate in group_candidates:\n                        if candidate.use_ml:\n                            if is_cred[i]:\n                                candidate.ml_probability = probability[i]\n                                new_cred_list.append(candidate)\n                        else:\n                            new_cred_list.append(candidate)\n            else:\n                logger.info(\"Skipping ML validation due not applicable\")\n\n            self.credential_manager.set_credentials(new_cred_list)\n\n    # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #\n\n    def export_results(self, change_type: Optional[DiffRowType] = None) -> None:\n        \"\"\"\n        Save credential candidates to json file or print them to a console.\n\n        Args:\n            change_type: flag to know which file should be created for a patch\n        \"\"\"\n\n        credentials = self.credential_manager.get_credentials()\n\n        logger.info(\"Exporting %s credentials\", len(credentials))\n\n        if self.sort_output:\n            credentials.sort(key=lambda x: (  #\n                x.line_data_list[0].path,  #\n                x.line_data_list[0].line_num,  #\n                x.severity,  #\n                x.rule_name,  #\n                x.line_data_list[0].value_start,  #\n                x.line_data_list[0].value_end  #\n            ))\n\n        if self.json_filename:\n            json_path = Path(self.json_filename)\n            if isinstance(change_type, DiffRowType):\n                # add suffix for appropriated reports to create two files for the patch scan\n                json_path = json_path.with_suffix(f\".{change_type.value}{json_path.suffix}\")\n            with open(json_path, 'w', encoding=DEFAULT_ENCODING) as f:\n                # use the approach to reduce total memory usage in case of huge data\n                first_item = True\n                f.write('[\\n')\n                for credential in credentials:\n                    if first_item:\n                        first_item = False\n                    else:\n                        f.write(\",\\n\")\n                    f.write(json.dumps(credential.to_json(hashed=self.hashed, subtext=self.subtext), indent=4))\n                f.write(\"\\n]\")\n\n        if self.xlsx_filename:\n            data_list = []\n            for credential in credentials:\n                data_list.extend(credential.to_dict_list(hashed=self.hashed, subtext=self.subtext))\n            df = pd.DataFrame(data=data_list)\n            if isinstance(change_type, DiffRowType):\n                if Path(self.xlsx_filename).exists():\n                    with pd.ExcelWriter(self.xlsx_filename, mode='a', engine=\"openpyxl\",\n                                        if_sheet_exists=\"replace\") as writer:\n                        df.to_excel(writer, sheet_name=change_type.value, index=False)\n                else:\n                    df.to_excel(self.xlsx_filename, sheet_name=change_type.value, index=False)\n            else:\n                df.to_excel(self.xlsx_filename, sheet_name=\"report\", index=False)\n\n        if self.color:\n            for credential in credentials:\n                for line_data in credential.line_data_list:\n                    # bright rule name and path or info\n                    if isinstance(credential.ml_probability, float):\n                        ml_probability_info = f\" {credential.ml_probability:.6f}\"\n                    else:\n                        ml_probability_info = \"\"\n                    print(Style.BRIGHT + credential.rule_name +\n                          f\" {line_data.info or line_data.path}:{line_data.line_num}{ml_probability_info}\" +\n                          Style.RESET_ALL)\n                    print(line_data.get_colored_line(hashed=self.hashed, subtext=self.subtext))\n\n        if self.stdout:\n            for credential in credentials:\n                print(credential.to_str(hashed=self.hashed, subtext=self.subtext))\n"
  },
  {
    "path": "credsweeper/common/__init__.py",
    "content": "from credsweeper.common.keyword_checklist import KeywordChecklist\n\n# use the variable to avoid singleton creation and make testing easier\nstatic_keyword_checklist = KeywordChecklist()\n"
  },
  {
    "path": "credsweeper/common/constants.py",
    "content": "import string\nimport typing\nfrom enum import Enum\nfrom typing import Optional, Union\n\n\nclass Severity(Enum):\n    \"\"\"Severity of candidate\"\"\"\n    CRITICAL = \"critical\"\n    HIGH = \"high\"\n    MEDIUM = \"medium\"\n    LOW = \"low\"\n    INFO = \"info\"\n\n    def __lt__(self, other) -> bool:\n        if Severity.INFO == self:\n            return other is not Severity.INFO\n        if Severity.LOW == self:\n            return other in [Severity.MEDIUM, Severity.HIGH, Severity.CRITICAL]\n        if Severity.MEDIUM == self:\n            return other in [Severity.HIGH, Severity.CRITICAL]\n        if Severity.HIGH == self:\n            return other is Severity.CRITICAL\n        return False\n\n    @staticmethod\n    def get(severity: Union[str, \"Severity\"]) -> Optional[\"Severity\"]:\n        \"\"\"returns Severity value from string or None\"\"\"\n        if isinstance(severity, Severity):\n            return severity\n        if isinstance(severity, str):\n            value = getattr(Severity, severity.strip().upper(), None)\n            if isinstance(value, Severity):\n                return value\n        return None\n\n\nclass Confidence(Enum):\n    \"\"\"Confidence of candidate\"\"\"\n    STRONG = \"strong\"\n    MODERATE = \"moderate\"\n    WEAK = \"weak\"\n\n    def __lt__(self, other) -> bool:\n        if Confidence.WEAK == self:\n            return other is not Confidence.WEAK\n        if Confidence.MODERATE == self:\n            return other is Confidence.STRONG\n        return False\n\n    @staticmethod\n    def get(confidence: Union[str, \"Confidence\"]) -> Optional[\"Confidence\"]:\n        \"\"\"returns Confidence value from string or None\"\"\"\n        if isinstance(confidence, Confidence):\n            return confidence\n        if isinstance(confidence, str):\n            value = getattr(Confidence, confidence.strip().upper(), None)\n            if isinstance(value, Confidence):\n                return value\n        return None\n\n\nBASE64COMMON = string.ascii_uppercase + string.ascii_lowercase + string.digits\n\n\nclass Chars(Enum):\n    \"\"\"Stores enumeration of characters sets of encoding dictionaries\"\"\"\n\n    # set of characters, hexadecimal numeral system (Base16). Upper- and lowercase\n    HEX_CHARS = string.digits + \"ABCDEFabcdef\"\n    # UUID charset in uppercase\n    UUID_UPPER_CHARS = string.digits + \"ABCDEF-\"\n    # UUID charset in lowercase\n    UUID_LOWER_CHARS = string.digits + \"abcdef-\"\n    # set of characters, hexadecimal numeral system (Base16). Uppercase\n    BASE16UPPER = string.digits + \"ABCDEF\"\n    # set of characters, hexadecimal numeral system (Base16). Lowercase\n    BASE16LOWER = string.digits + \"abcdef\"\n    # set of 32 characters, used in Base32 encoding\n    BASE32_CHARS = string.ascii_uppercase + \"234567\"\n    # set of 36 characters, used in Base36 encoding\n    BASE36_CHARS = string.digits + string.ascii_lowercase\n    # base62 set https://en.wikipedia.org/wiki/Base62\n    BASE62_CHARS = string.digits + string.ascii_uppercase + string.ascii_lowercase\n    # URL- and filename-safe standard\n    BASE64URL_CHARS = BASE64COMMON + \"-_\"\n    # URL- and filename-safe standard plus padding sign\n    BASE64URLPAD_CHARS = BASE64COMMON + \"-_=\"\n    # standard base64 charset\n    BASE64STD_CHARS = BASE64COMMON + \"+/\"\n    # standard base64 plus padding sign\n    BASE64STDPAD_CHARS = BASE64COMMON + \"+/=\"\n    # except whitespaces\n    ASCII_VISIBLE = string.digits + string.ascii_letters + string.punctuation\n    # all printable symbols\n    ASCII_PRINTABLE = string.printable\n\n\nclass GroupType(Enum):\n    \"\"\"Group type - used in Group constructor for load predefined set of filters\"\"\"\n    KEYWORD = \"keyword\"\n    PATTERN = \"pattern\"\n    # for empty filter set\n    DEFAULT = \"default\"\n\n\nclass RuleType(Enum):\n    \"\"\"Rule type\"\"\"\n    # combine pattern with predefined structure\n    KEYWORD = \"keyword\"\n    # use patterns as-is. all patterns must be found in target (line)\n    PATTERN = \"pattern\"\n    # single value to detect pem format with specific scanner\n    PEM_KEY = \"pem_key\"\n    # When first pattern found - second will be searched in adjoining lines\n    MULTI = \"multi\"\n\n\nclass ThresholdPreset(Enum):\n    \"\"\"Preset threshold to simplify precision/recall selection for the user.\"\"\"\n    lowest = \"lowest\"\n    low = \"low\"\n    medium = \"medium\"\n    high = \"high\"\n    highest = \"highest\"\n\n\nclass DiffRowType(Enum):\n    \"\"\"Diff type of row\"\"\"\n    ADDED = \"added\"\n    DELETED = \"deleted\"\n\n\nStartEnd = typing.NamedTuple(\"StartEnd\", [(\"start\", int), (\"end\", int)])\n\nMIN_VARIABLE_LENGTH = 1\nMIN_SEPARATOR_LENGTH = 1\nMIN_VALUE_LENGTH = 4\n# if the line is oversize - it will be scanned by chunks with overlapping\nMAX_LINE_LENGTH = 8000\n# the size for overlapping chunks must be less than MAX_LINE_LENGTH\nCHUNK_SIZE = 4000\nOVERLAP_SIZE = 1000\nCHUNK_STEP_SIZE = CHUNK_SIZE - OVERLAP_SIZE\n# ML hunk size to limit of variable or value size and get substring near value\nML_HUNK = 64\n\n# values according https://docs.python.org/3/library/codecs.html\nUTF_8 = \"utf_8\"\nLATIN_1 = \"latin_1\"\nASCII = \"ascii\"\n# 16-bits codecs may be detected during decoding\nUTF_16_LE = \"utf_16_le\"\nUTF_16_BE = \"utf_16_be\"\n\nDEFAULT_ENCODING = UTF_8\n\n# LATIN_1 has to be placed at end to apply binary file detection\nAVAILABLE_ENCODINGS = [UTF_8, LATIN_1]\n\n# to limit memory usage in case of recursive scan\nRECURSIVE_SCAN_LIMITATION = 1 << 30\n\n# default value for config and ValuePatternCheck\nDEFAULT_PATTERN_LEN = 4\n\n# PEM x509 patterns\nPEM_BEGIN_PATTERN = \"-----BEGIN\"\nPEM_END_PATTERN = \"-----END\"\n\n# similar min_line_len in rule_template - no real credential in data less than 8 bytes\nMIN_DATA_LEN = 8\n"
  },
  {
    "path": "credsweeper/common/keyword_checklist.py",
    "content": "from functools import cached_property\nfrom typing import Set, List\n\nfrom credsweeper.app import APP_PATH\n\n\nclass KeywordChecklist:\n    \"\"\"KeywordsChecklist contains words 3 or more letters length\"\"\"\n    __keyword_set: Set[str]\n    __morpheme_set: Set[str]\n    KEYWORD_PATH = APP_PATH / \"common\" / \"keyword_checklist.txt\"\n    MORPHEME_PATH = APP_PATH / \"common\" / \"morpheme_checklist.txt\"\n\n    def __init__(self) -> None:\n        # used suggested text read style. split() is preferred because it strips 0x0A on end the file\n        self.__keyword_list = self.KEYWORD_PATH.read_text().split()\n        self.__keyword_list.sort(key=str.__len__, reverse=True)\n        self.__keyword_set = set(self.KEYWORD_PATH.read_text().split())\n        # The list of morphemes can be combined to form words.\n        # The value is considered a variable if at least two exist.\n        self.__morpheme_set = set(self.MORPHEME_PATH.read_text().split())\n\n    @cached_property\n    def keyword_set(self) -> Set[str]:\n        \"\"\"Get set with keywords\"\"\"\n        return self.__keyword_set\n\n    @cached_property\n    def keyword_list(self) -> List[str]:\n        \"\"\"Get list with keywords in descended order of length\"\"\"\n        return self.__keyword_list\n\n    @cached_property\n    def keyword_len(self) -> int:\n        \"\"\"Length of keyword_set\"\"\"\n        return len(self.__keyword_set)\n\n    @cached_property\n    def morpheme_set(self) -> Set[str]:\n        \"\"\"Get extended set with keywords.\n\n        Return:\n            Extended set of strings\n\n        \"\"\"\n        return self.__morpheme_set\n\n    @cached_property\n    def morpheme_len(self) -> int:\n        \"\"\"Length of morpheme_set\"\"\"\n        return len(self.__morpheme_set)\n\n    def check_morphemes(self, line_lower: str, threshold: int) -> bool:\n        \"\"\"Checks limit of morphemes limit in line.\n\n        Args:\n            line_lower: input line - MUST be in lower\n            threshold: number of minimal morphemes\n\n        Return:\n            True - if number of morphemes exceeds the threshold\n        \"\"\"\n        matches = 0\n        for keyword in self.morpheme_set:\n            if keyword in line_lower:\n                matches += 1\n                if threshold < matches:\n                    return True\n        return False\n"
  },
  {
    "path": "credsweeper/common/keyword_checklist.txt",
    "content": "1234\nabort\nabout\nabove\nabsolute\nabstract\naccent\naccept\naccess\naccount\naction\nactive\nactivity\nactor\nactual\nadded\nadding\nadditional\naddress\nadjust\nadvise\nafter\nagain\nagent\nalert\nalias\nalgori\nallow\nalpha\nalready\nalways\namount\nanalyses\nanalyze\nanchor\nandroid\nanimated\nanimation\nanother\nanony\napache\napi\nappearance\napple\napplication\napply\nare\nargc\nargs\nargv\nargument\narray\narrow\narticle\nascii\naside\nassembly\nasset\nassert\nassign\nassociated\nassociation\natomic\nattachment\nattribute\naudio\nauthor\nauthen\nautomatically\navailable\navatar\navoid\nawait\nawesome\naws\nbackdrop\nbackground\nbackward\nbadge\nbanner\nbased\nbasic\nbeans\nbecause\nbefore\nbegin\nbehind\nbeing\nbelow\nbetween\nbeware\nbinary\nbinding\nbinds\nblah\nblack\nblank\nbless\nblock\nboost\nbool\nborder\nbottle\nbottom\nbound\nbrain\nbranch\nbrand\nbreak\nbreeze\nbrief\nbroker\nbrowse\nbuffer\nbuild\nbundle\nbutton\nbyte\ncache\ncalendar\ncallback\ncalled\ncaller\ncalls\ncamel\ncancel\ncannot\ncanvas\ncapacity\ncapab\ncarat\ncarousel\ncascade\ncases\ncatalog\ncatch\ncategories\ncategory\ncause\ncenter\ncertificate\nchain\nchange\nchannel\nchapter\ncharacter\nchart\ncheck\nchevron\nchild\nchoices\nchomp\nchoose\nchosen\nchrome\nchunk\ncircle\nclang\nclass\nclean\nclear\nclick\nclient\nclock\nclone\nclose\nclosure\ncloud\ncocoa\ncoding\ncollapse\ncollect\ncolor\ncolumn\ncommand\ncomment\ncommit\ncommon\ncompact\ncompare\ncompilation\ncomplete\ncompletion\ncomponent\ncomponents\ncompute\ncondensed\ncondition\nconfig\nconfirm\nconnect\nconsists\nconsole\nconstant\nconstraints\nconsumer\ncontact\ncontain\ncontent\ncontext\ncontinue\ncontrol\nconvenience\nconvert\ncopy\ncookie\ncoordinator\ncorner\ncorrect\ncould\ncount\ncourse\ncover\ncreate\ncreature\ncredential\ncron\ncriteria\ncroak\ncross\ncubic\ncurl\ncurrent\ncustom\ndanger\ndarken\ndashboard\ndashed\ndata\ndeclaration\ndeclared\ndecod\ndecoration\ndefault\ndeferred\ndefine\ndefinition\ndelay\ndelegate\ndelete\ndelivery\ndelta\ndemo\ndependency\ndependent\ndepth\ndescribe\ndescription\ndesigner\ndesktop\ndestination\ndestroy\ndetail\ndevelopment\ndevice\ndevise\ndiagnostic\ndictionary\ndifferent\ndigest\ndirect\ndisable\ndismiss\ndispatch\ndisplay\ndisposable\ndispose\ndisposing\ndistance\ndistribute\ndistribution\ndoctrine\ndocument\ndomain\ndotted\ndouble\ndownload\ndraft\ndriver\ndumps\nduration\nduring\ndword\ndynamic\neasing\neclipse\nediting\neditor\neffect\neither\nelastic\nelement\nemail\nempty\nenable\nencod\nencrypt\nengine\nenrollment\nensure\nentity\nentries\nentry\nenvironment\nequal\nequals\nerase\nerror\nevent\nexample\nexcept\nexclude\nexecute\nexist\nexpand\nexpect\nexplode\nexpir\nexport\nexposed\nexpression\nextend\nextension\nexternal\nextra\nfaces\nfactory\nfailed\nfailure\nfalse\nfamily\nfeature\nfederate\nfeedback\nfetch\nfield\nfigure\nfile\nfiles\nfilename\nfilter\nfinagle\nfinal\nfinish\nfirst\nfixed\nfixture\nflags\nflash\nfloat\nfloor\nfluid\nflush\nfocus\nfolder\nfollow\nfooter\nforce\nformat\nforms\nformula\nforum\nforward\nfound\nfragment\nframe\nfreeze\nfriend\nfulfill\nfunction\nfurnished\nfuture\ngallery\ngateway\ngenerate\ngenerator\ngeneric\ngeometry\ngetter\nget(\ngiven\ngithub\ngitlab\nglobal\ngraphics\ngreen\ngroup\ngrunt\nguard\nhandle\nheader\nheading\nheight\nhello\nhelper\nhidden\nhighlight\nhistory\nholders\nhooks\nhorizontal\nhours\nhover\nhttp\nhtml\nicons\nignore\nimage\nimmediately\nimmutable\nimplemented\nimport\ninclude\nindex\nindicator\ninference\ninfinite\ninfo\ninherit\ninherited\ninitial\ninject\ninner\ninput\ninsert\ninside\ninspect\ninstall\ninstance\ninstead\nintent\ninteraction\nintercept\ninterface\ninternal\ninterrupt\nintro\ninvalid\ninverted\ninvoke\nisolate\nissue\nitem\niterat\nitself\njava\njustified\njustify\nkey\nlabel\nlabels\nlambda\nlanguage\nlarge\nlaunch\nlayer\nlayout\nleader\nleast\nlegend\nlength\nletter\nlevel\nlibrary\nlight\nlimit\nlinear\nlines\nlinks\nlinux\nlistener\nlittle\nloaded\nloading\nloads\nlocal\nlocation\nlogger\nlogin\nlogon\nloose\nlower\nmachine\nmakes\nmanage\nmapping\nmarathon\nmargin\nmark\nmaster\nmatch\nmaterial\nmatrix\nmaximum\nmeans\nmeasure\nmedia\nmedium\nmember\nmemory\nmessage\nmeteor\nmethod\nmethods\nmetro\nmiddle\nmight\nminus\nminutes\nmissing\nmixed\nmobile\nmodel\nmodified\nmodule\nmoment\nmonth\nmount\nmouse\nmultiple\nmutating\nname\nnative\nnavigation\nneeded\nneeds\nnetwork\nneutral\nneutron\nnever\nnexus\nnodes\nnone\nnormal\nnotes\nnothing\nnotice\nnotification\nnull\nnumber\noauth\nobject\noblique\nobserve\nobserver\noccurs\noffline\noffset\noften\nopenssl\noperation\noperator\noption\noracle\norange\norbit\norder\norientation\norigin\norganis\nother\nouter\noutline\noverflow\noverride\noverview\nowner\npackage\npacket\npadding\npager\npages\npalette\npanel\npaper\nparam\nparent\nparse\npartial\nparts\npassed\npassing\npasscode\npassphrase\npassword\npatch\npaths\npattern\npause\npeer\npayload\npayment\npending\npeople\npercent\nperform\nperformance\npersistence\nperson\nperspective\nphone\npicker\npills\npipeline\npixels\nplace\nplacement\nplain\nplatform\nplayer\npoint\npool\npolicy\nportal\nportfolio\nposition\npossible\nposts\npower\nprecedence\npreference\nprefix\npreparation\nprepare\npresence\npresent\npressed\npreview\nprevious\nprice\nprimary\nprint\npriority\nprivate\nproblem\nprocess\nproduce\nproduct\nprofile\nprogram\nprogress\nproject\npromise\nproperties\nproperty\nprops\nprotected\nprotocol\nprototype\nprovide\nproxy\npublic\npublish\npurchase\npurple\nqueri\nquery\nquestion\nqueue\nradio\nradius\nrails\nraise\nraises\nrandom\nrange\nreact\nreader\nreadonly\nreadme\nready\nreally\nrealm\nreason\nreboot\nreceive\nrecommended\nrecord\nrecreated\nredirect\nreference\nreflect\nrefresh\nregenerated\nregion\nregist\nreject\nrelated\nrelation\nrelative\nrelease\nreload\nremarks\nremote\nremove\nrender\nrepeat\nreplace\nreplica\nreply\nreport\nrepository\nrepresenting\nrequest\nrequests\nrequire\nrescue\nreserved\nreset\nresolution\nresolve\nresource\nresponse\nresponsible\nresponsive\nrestart\nrestriction\nresult\nresume\nretain\nreturn\nreveal\nreverse\nright\nripple\nroles\nrotate\nround\nroute\nrudder\nrules\nrunner\nrunning\nsample\nscale\nscanner\nscene\nscenario\nscope\nscore\nscreen\nscript\nscroll\nsealed\nsearch\nsecond\nsecret\nsection\nsecure\nsecurity\nsegue\nselect\nsender\nsending\nsequel\nsequence\nseries\nserial\nserver\nservice\nsession\nsetting\nsetter\nsetup\nsha256\nsha1\nsha2\nsha224\nsha512\nshadow\nshallow\nshape\nshare\nshift\nshort\nshould\nshowing\nshown\nshutdown\nsidebar\nsignature\nsign\nsimilar\nsimple\nsince\nsingle\nsites\nsize\nsizing\nsleep\nslice\nslick\nslide\nsmall\nsmart\nsnapshot\nsocial\nsocket\nsolid\nsorted\nsource\nspace\nspaces\nspacing\nspark\nspeak\nspecial\nspecific\nspecified\nspecify\nspecs\nspeed\nspell\nspinner\nsplit\nspray\nsquare\nstack\nstart\nstash\nstate\nstatic\nstats\nstatus\nsteps\nsticky\nstorage\nstore\nstrategy\nstream\nstretch\nstrict\nstring\nstrip\nstroke\nstrong\nstruct\nstubs\nstudent\nstuff\nstyle\nsubject\nsubmit\nsubscriptions\nsubtitle\nsuccess\nsuite\nsummary\nsuper\nsupport\nswift\nswing\nswitch\nsymbol\nsynchronized\nsynthesize\nsystem\ntable\ntablet\ntarget\ntasks\nteacher\nteam\ntemp\nterms\ntest\ntexture\ntheir\ntheme\nthere\nthese\nthick\nthose\nthread\nthree\nthrift\nthrough\nthrow\nthrown\nthrows\nthumb\nthumbs\nticket\ntimeline\ntimer\ntimes\ntiming\ntitle\ntoday\ntoken\ntools\ntopic\ntotal\ntouch\ntrace\ntrack\ntrait\ntrans\ntagword\ntriangle\ntrigger\ntrue\ntrust\ntrying\ntween\ntype\ntypically\nuint\nunavailable\nunder\nuniform\nunion\nunique\nuniverse\nunknown\nunless\nunlock\nunsigned\nunstable\nuntil\nupdate\nupload\nused\nusername\nusing\nusually\nvalid\nvalue\nvariable\nvariant\nvector\nverbose\nverify\nversion\nvertical\nvideo\nviews\nvirtual\nvisibility\nvisible\nvisit\nvolatile\nvoid\nvolume\nwallet\nwarning\nwatch\nwaves\nweight\nwhatever\nwhere\nwhether\nwhich\nwhile\nwhite\nwidth\nwindow\nwith\nwithin\nwithout\nworld\nwould\nwrapper\nwrite\nwritten\nxxxxx\nyellow\nyield\nyour\nzeros\n.json\n.xml\n"
  },
  {
    "path": "credsweeper/common/keyword_pattern.py",
    "content": "import re\n\n\nclass KeywordPattern:\n    \"\"\"Pattern set of keyword types\"\"\"\n    directive = r\"(?P<directive>(?:\" \\\n                r\"(?:[#%]define|define(?=(\\s|\\\\{1,8}[tnr])*\\()|%global)\" \\\n                r\"(?:\\s?\\(|\\s|\\\\{1,8}[tnr]){1,8}|\\bset(?=\\b|\\w*(\\s|\\\\{1,8}[tnr])*\\()\" \\\n                r\"))?\"\n    key_left = r\"(?:\\\\[nrt]|(\\\\\\\\*u00|%)[0-9a-f]{2}|\\s)*\" \\\n               r\"(?P<variable>(([\\\"'`]{1,8}[^:=\\\"'`}<>\\\\/&?]*|[^:=\\\"'`}<>\\s()\\\\/&?;,%]*)\"\n    # keyword will be inserted here\n    key_right = r\"[^%:=\\\"'`<>({?!&;\\n]{0,80}\" \\\n                r\")\" \\\n                r\"(&(quot|apos|#3[49]);|(\\\\\\\\*u00|%)[0-9a-f]{2}|[\\\"'`])*\" \\\n                r\")\"  # <variable>\n    separator = r\"(?(directive)|(\\s|\\\\{1,8}[tnr])*\\]?(\\s|\\\\{1,8}[tnr])*)\" \\\n                r\"(?P<separator>:(\\s[a-z]{3,9}[?]?\\s)?=|:(?!:)|=(>|&gt;|(\\\\\\\\*u00|%)26gt;)|!==|!=|===|==|=~|=\" \\\n                r\"|(?(directive)(,|\\\\t|\\s|\\((?!\\))){1,80}|%3d))\" \\\n                r\"(\\s|\\\\{1,8}[tnr])*\"\n    # might be curly, square or parenthesis with words before\n    wrap = r\"(?P<wrap>(\" \\\n           r\"((\\s|\\\\{1,8}[tnr]|new|byte|char|string|\\[\\]){1,8})?\" \\\n           r\"(?P<get>([_a-z][0-9a-z_.\\[\\]]*\\.)get|(os\\.)?getenv)?\" \\\n           r\"([0-9a-z_.]|::|-(>|&gt;))*\" \\\n           r\"\\s*\" \\\n           r\"(\\[(?!\\])|\\((?!\\))|\\{(?!\\}))\" \\\n           r\"(\\s|\\\\{1,8}[tnr])*\" \\\n           r\"(?(get)('[^']{1,31}'|\\\"[^\\\"]{1,31}\\\")\\s*(,|\\)\\s*or)\\s*|)\" \\\n           r\"([0-9a-z_]{1,32}\\s*[:=]\\s*)?\" \\\n           r\"){1,8})?\"\n    string_prefix = r\"(((b|r|br|rb|u|t|f|rf|fr|l|@)(?=(\\\\*[\\\"'`])))?\"\n    left_quote = r\"(?P<value_leftquote>((?P<esq>\\\\{1,8})?([\\\"'`]|&(quot|apos|#3[49]);)){1,4}))?\"\n    # Authentication scheme ( oauth | basic | bearer | apikey ) precedes to credential\n    auth_keywords = r\"(\\s?(oauth|bot|basic|bearer|apikey|accesskey|ssws|ntlm|token)\\s)?\"\n    value = r\"(?P<value>\" \\\n            r\"(?(value_leftquote)\" \\\n            r\"(\" \\\n            r\"(?!(?P=value_leftquote))\" \\\n            r\"(?(esq)((?!(?P=esq)([\\\"'`]|&(quot|apos|#3[49]);)).)|((?!(?P=value_leftquote)).)))\" \\\n            r\"|\" \\\n            r\"(?!&(quot|apos|#3[49]);)\" \\\n            r\"(\\\\{1,8}([ tnr]|[^\\s\\\"'`])\" \\\n            r\"|\" \\\n            r\"(?P<url_esc>%[0-9a-f]{2})\" \\\n            r\"|\" \\\n            r\"(?(url_esc)[^\\s\\\"'`,;\\\\&]|[^\\s\\\"'`,;\\\\])\" \\\n            r\")\" \\\n            r\"){4,8000}\" \\\n            r\"|\" \\\n            r\"(<[^>]{4,8000}>)\" \\\n            r\"|\" \\\n            r\"(\\$?\\({1,3}[^)]{4,8000}\\){1,3})\" \\\n            r\"|\" \\\n            r\"(\\$?\\{{1,3}[^}]{4,8000}\\}{1,3})\" \\\n            r\"|\" \\\n            r\"(?(wrap)(?(value_leftquote)(?!\\\\(?P=value_leftquote))|[^\\]\\)\\}]){16,8000})\" \\\n            r\")\"  # <value>\n    right_quote = r\"(?(value_leftquote)\" \\\n                  r\"(?P<value_rightquote>(?<!\\\\)(?P=value_leftquote)|\\\\$|(?<=[0-9a-z+_/-])$)\" \\\n                  r\"|\" \\\n                  r\"(?(wrap)(\\]|\\)|\\}|;|\\\\|$))\" \\\n                  r\")\"\n\n    @classmethod\n    def get_keyword_pattern(cls, keyword: str) -> re.Pattern:\n        \"\"\"Returns compiled regex pattern\"\"\"\n        expression = ''.join([  #\n            cls.directive,  #\n            cls.key_left,  #\n            fr\"(?P<keyword>{keyword})\",  # named group required\n            cls.key_right,  #\n            cls.separator,  #\n            cls.wrap,  #\n            cls.string_prefix,  #\n            cls.left_quote,  #\n            cls.auth_keywords,  #\n            cls.value,  #\n            cls.right_quote,  #\n        ])\n        return re.compile(expression, flags=re.IGNORECASE | re.DOTALL)\n"
  },
  {
    "path": "credsweeper/common/morpheme_checklist.txt",
    "content": "../\n.com\n.org\n/bin\n/dev\n/etc\n/lib\n/mnt\n/opt\n/sbin\n/srv\n/tmp\n/usr\n/var\n000\n111\n14159265\n18284590\n222\n333\n444\n555\n65358979\n666\n71828182\n777\n80211\n888\n999\n_ack_\n_arg\n_cbc\n_cfg\n_clk\n_con\n_cpu\n_dbg_\n_dev\n_dir\n_div\n_dma\n_drv_\n_env\n_err\n_eth\n_ext\n_fig\n_fmt_\n_ghz\n_i2c_\n_id_\n_if\n_in\n_io_\n_irq\n_is\n_it\n_jpg\n_khz\n_lan\n_led_\n_mem\n_mhz\n_mux\n_num\n_on\n_op_\n_or_\n_pcm_\n_pin\n_pre\n_pro\n_pwr\n_ram\n_reg\n_req\n_ret\n_rev\n_rgb\n_rsa_\n_rw_\n_rx_\n_sdr_\n_src\n_to\n_tx_\n_un\n_up\n_val\n_vol\n_wap\n_wep\n_wpa\n_x64\nabel\nabilit\nable\nably\nabort\nabove\nabsolut\nabstra\nacadem\nacce\nacon\nactiv\nactor\nactual\nactur\nadapt\nadd\nader\nadjust\nadmi\nadver\nadvise\nadvisor\naes256\naffect\nafter\naggre\nagno\naight\naign\nakeup\nalert\nalgo\nalias\nalice\nalign\naling\nall\nalpha\nalter\naltit\namazon\nample\nanali\nanaly\nance\nanchor\nanci\nancy\nand\nanguage\nangular\nanima\nanomaly\nantenna\nanth\nanti\nany\napache\napi\napp\naram\narch\nare\narg_\nargc\nargs\nargv\narian\narker\narpa\narray\narro\nart\nascii\nash\nasia\nasic\nask\nassembl\nassert\nassoc\nasure\nasyn\nately\nathon\natic\natil\nating\natlas\natomic\nator\nattach\nattack\nattend\nattr\natus\naudio\naudit\nauri\nauten\nauth\nauto\naux\navail\navatar\naver\nawesom\naxis\nazure\nback\nbadge\nbalanc\nbank\nbann\nbar\nbas\nbatch\nbatt\nbeac\nbeans\nbeat\nbeef\nbegin\nbehav\nbehind\nbeing\nbelo\nbenutz\nbest\nbias\nbig\nbill\nbin/\nbinar\nbind\nbio\nbipol\nbit\nbixby\nblack\nblan\nbless\nblic\nblish\nblob\nblood\nblue\nboard\nbob\nbody\nbook\nbool\nboost\nboot\nboss\nbot\nboun\nbox\nbranch\nbreak\nbreeze\nbridge\nbrief\nbrit\nbro\nbssid\nbuck\nbuf\nbugs\nbuild\nbuiltin\nbular\nbulk\nbull\nbund\nburst\nbus\nbutor\nbutton\nbyte\ncache\ncalen\ncamel\ncamp\ncan\ncapab\ncapac\ncape\ncaptu\ncarat\ncard\ncarri\ncarry\ncascade\ncase\ncast\ncatch\ncategor\ncative\ncbc_\nccele\nccept\nccess\nceed\ncelebr\ncell\ncenar\ncense\ncent\ncert\ncessor\ncfg_\nchacha\nchain\nchange\nchannel\nchant\nchapter\nchar\ncheck\nchevron\nchild\nchin\nchip\nchoices\nchomp\nchoose\nchosen\nchrom\nchron\nchunk\nciat\ncilla\ncinema\ncircle\ncirrus\ncity\ncket\nclaims\nclan\nclass\nclean\nclear\nclick\nclien\nclip\nclk_\nclose\nclosure\ncloud\nclud\nclus\ncmd\ncocoa\ncode\ncodi\ncogn\ncollaps\ncollect\ncolor\ncolumn\ncomb\ncomi\ncomm\ncompa\ncompet\ncompil\ncompl\ncompo\ncompr\nconc\nconden\nconf\nconnect\nconsist\nconsole\nconst\ncontact\ncontai\nconten\ncontinu\ncontra\ncontri\ncontro\nconven\nconver\ncookie\ncoord\ncopy\ncore\ncorn\ncorrect\ncorrel\ncorres\ncorru\ncost\ncould\ncount\ncourse\ncourt\ncove\ncpu_\ncrac\ncreat\ncred\ncript\ncrit\ncroak\ncron\ncross\ncrypt\ncrystal\nctive\nctrl\ncubic\ncue\ncultur\ncumulat\ncurr\ncurs\ncustom\ncut\ncyan\ncycle\ndaily\ndanger\ndarken\ndarwin\ndas\ndata\ndate\ndavinci\nday\ndead\ndebug\ndecimal\ndecod\ndef\ndelay\ndele\ndeliv\ndelta\ndemo\ndenc\ndens\ndent\ndepen\ndeploy\ndepo\ndepth\nderive\ndesc\ndesired\ndesktop\ndest\ndetach\ndetai\ndetect\ndev/\ndev_\ndevelop\ndevice\ndevise\ndiag\ndial\ndicat\ndict\ndid\ndif\ndig\ndimen\nding\ndiod\ndir_\ndirect\ndisab\ndisc\ndisk\ndismi\ndispos\ndissoc\ndist\nditor\ndity\ndiv_\ndivid\ndma_\ndock\ndocs\ndoct\ndoes\ndog\ndot\ndouble\ndoubt\ndraft\ndragon\ndrift\ndrive\ndroid\ndrop\ndul\ndummy\ndump\ndup\ndurin\ndust\ndvb\ndynamic\ndynamo\neadbee\neasin\neasy\necdhe\necdsa\necret\nected\nector\nectron\neded\nedge\nedit\nedium\neeprom\neffect\negory\nelect\neless\nemai\nemi\nempty\nenabl\nence\nenclave\nencod\nencryp\nency\nende\neness\nengine\nength\nenhanc\nensure\nente\nentit\nentr\nenum\nenv_\nequal\nerase\nerial\nericsson\nerr_\nerror\nerse\nersi\nertise\nesam\nesses\nestima\nesult\netc/\neth_\netic\neting\neutron\neval\nevan\nevent\nexam\nexcee\nexcept\nexclu\nexist\nexit\nexpan\nexpe\nexpir\nexpl\nexpo\nexpr\next_\nexten\nexter\nextra\nexynos\nface\nfact\nfail\nfalse\nfamil\nfar\nfast\nfault\nfavor\nfeatu\nfee\nferr\nfetch\nfied\nfield\nfifo\nfig_\nfigur\nfile\nfill\nfilter\nfinagle\nfinal\nfind\nfine\nfire\nfirm\nfirst\nfix\nflas\nflat\nfleet\nflick\nflix\nfloat\nflood\nfloor\nfluent\nfluid\nflush\nfocus\nfoo\nfor\nfossil\nfoun\nfpga\nfrac\nframe\nfree\nfreq\nfriend\nfrom\nfront\nfrozen\nfujitsu\nfulf\nfull\nfunc\nfurn\nfutu\ngain\ngame\ngang\ngate\ngative\ngauss\ngen\ngeo\ngest\nget\nghbor\nghz_\ngian\nging\ngit\ngiven\nglobal\ngobble\ngood\ngoogle\ngrab\ngrace\ngram\ngrant\ngraph\ngrave\ngray\ngreater\ngreen\ngregat\ngregor\ngress\ngrid\ngro\ngrpc\nguard\nguest\nguid\nguish\nha1-\nha1_\nha2-\nha256\nha2_\nha394\nha512\nhack\nhalf\nhard\nhas\nhave\nhaving\nhavior\nhdmi\nhead\nhealth\nhear\nheight\nhello\nhelp\nherm\nheroku\nhetero\nhex\nhiber\nhidden\nhierar\nhigh\nhisto\nhola\nhome\nhook\nhorizon\nhost\nhoun\nhours\nhtml\nhttp\nhub\nhuman\nhumid\nhybrid\niabl\nical\nicon\nid_rsa\niden\nidle\nieee\nient\nif_\nificat\nignore\nillega\nilor\nimage\nimated\nimer\nimpact\nimple\nimprove\nin_\ninclu\nincom\nindemni\nindex\nindic\nindiv\niness\ninfo\ninfra\ningle\nings\ningular\ninherit\nini\ninjec\ninn\ninsert\ninsig\ninstead\nint\ninval\ninvent\ninver\ninvoke\nion\nipv4\nipv6\niron\nirq_\nis_\nished\niso_\nisolat\nissue\nit_\nitem\niter\nities\niting\nitiv\nivate\nixed\nixtu\nixup\nized\nizer\njabber\njava\nject\njira\njitsi\njob\njoin\njournal\njpeg\njpg_\njson\njump\njustif\nkafka\nkerberos\nkernel\nkey\nkhz_\nkill\nkind\nkinesis\nkirk\nknow\nknox\nkris\nlab\nlag\nlambda\nlan_\nlang\nlarge\nlarval\nlast\nlate\nlatit\nlative\nlaunch\nlayer\nlazy\nlead\nleaf\nleast\nleek\nleft\nlegacy\nlegal\nlend\nleng\nlens\nlet\nlevel\nlexeme\nlexic\nlianc\nliant\nlib/\nlibrary\nlicens\nlies\nlife\nlift\nlight\nlim\nline\nlingu\nlink\nlinux\nlist\nlite\nlittle\nlity\nlive\nlled\nllup\nlness\nload\nlocal\nlock\nlog\nlong\nlook\nloop\nloose\nlost\nlow\nluate\nlysis\nmac\nmagic\nmail\nmain\nmaker\nmakes\nmanage\nmanual\nmanuf\nmap\nmarat\nmargin\nmark\nmary\nmaster\nmatch\nmater\nmatrix\nmax\nmber\nmbin\nmbler\nmean\nmeasur\nmedi\nmedus\nmeet\nmem_\nmemb\nmemo\nment\nmenu\nmerc\nmerge\nmessag\nmeta\nmeteor\nmethod\nmetr\nmhz_\nmicha\nmicro\nmiddle\nmight\nmigrat\nmillis\nmin\nmirror\nmisc\nmiss\nmit\nmix\nmmon\nmmun\nmnt/\nmobile\nmock\nmode\nmodi\nmodu\nmonitor\nmonth\nmorp\nmory\nmote\nmotor\nmount\nmove\nmpeg\nmulti\nmutat\nmute\nmux_\nnalyz\nname\nnary\nnates\nnativ\nnced\nncept\nncies\nndom\nndow\nned\nneed\nneigh\nneo4j\nner\nnet\nneutr\nnever\nnew\nnext\nnexus\nnielsen\nning\nnipp\nnish\nnism\nnode\nnon\nnope\nnorm\nnot\nnsive\nntal\nnter\nnting\nnull\nnum_\nnumb\nnumer\nnuous\nnvram\nobj\noblique\noccur\nocean\nocess\noder\noff\noften\noken\noker\nold\nolygon\non_\noncat\none\nonfig\nonly\nookup\nopen\nopt/\nopted\nopti\noracle\norbi\norder\nordinar\nores\norgan\nories\norigin\norithm\normat\norph\notorola\nottle\nound\nously\nout\nover\nown\npack\npage\npair\npale\npanel\npar\npass\npatch\npath\npatte\npaw\npci\npcmcia\npeer\npenalt\npend\npeople\nper\npets\nphore\nphoton\nphrase\nphys\npick\npills\nping\npipe\npixel\npkcs1\npkcs8\nplace\nplain\nplan\nplay\nplex\nplic\nplod\nplor\nplug\nplus\npoin\npolar\npolic\npoll\npoly\npond\npons\npool\npoon\npop\nport\npose\nposit\npossib\npost\npoun\npower\npre_\npred\nprefi\nprese\npress\nprev\nprice\nprim\nprincip\nprior\npriv\npro_\nprobe\nproblem\nproc\nprod\nprof\nprog\nproj\npromise\nprompt\nprop\nprote\nproto\nprovi\nprox\npseudo\npster\npsycho\npub\npull\npurcha\npurple\npush\nput\npwr_\npython\nqos\nquantum\nqueri\nquery\nqueue\nquick\nquota\nquote\nrabbi\nrack\nradar\nradeon\nradio\nradius\nrage\nrails\nrain\nraise\nram_\nrammar\nrange\nrank\nransit\nrate\nrati\nraw\nrcept\nrchite\nrchive\nreached\nreact\nread\nreal\nreason\nreceive\nrecipe\nrecog\nrecom\nrecord\nredact\nredir\nredisson\nrefer\nreflect\nrefresh\nreg_\nregexp\nregio\nregist\nregs\nregul\nrejec\nrelat\nrelease\nreli\nremar\nremo\nrend\nrent\nrepeat\nrepl\nrepo\nrepre\nreq_\nrequest\nrequire\nresiz\nresolv\nresp\nresul\nret_\nretai\nretriev\nreturn\nrev_\nrevea\nrevel\nreven\nrever\nrevisio\nrevoke\nrgb_\nrick\nride\nright\nrimar\nrime\nrine\nring\nripple\nrish\nrisk\nritte\nrity\nriver\nrize\nroad\nrole\nroll\nroom\nroot\nropo\nrose\nrotat\nrotocol\nrottl\nrough\nroun\nroup\nrow\nrroga\nrrupt\nrticle\nrudder\nrule\nrun\nrxtx\nsabl\nsage\nsalt\nsame\nsampl\nsams\nsaves\nsavi\nscala\nscale\nscali\nscen\nsched\nschem\nscipl\nscont\nscope\nscram\nscreen\nscret\nscri\nscro\nseal\nsearc\nseccomp\nsecond\nsecre\nsect\nsecur\nseed\nseek\nseen\nsegue\nsein\nself\nsema\nsend\nsens\nsent\nseque\nseria\nseries\nserv\nsessio\nset\nsever\nsex\nsha1\nsha2\nsha3\nsha5\nshadow\nshape\nshift\nship\nshoot\nshort\nshot\nshould\nshow\nshut\nsian\nsible\nside\nsight\nsign\nsimilar\nsimpl\nsimul\nsince\nsine\nsing\nsip\nsites\nsize\nsizi\nskip\nslack\nslas\nslave\nsleep\nslice\nslick\nslide\nslot\nsmar\nsmooth\nsnap\nsness\nsniff\nsnip\nsocial\nsock\nsoft\nsolid\nsolve\nsome\nsony\nsort\nsoun\nsource\nspace\nspacing\nspeak\nspec\nspeed\nspell\nspent\nspin\nsplit\nspot\nspray\nsql\nsrc_\nsrv/\nssh\nssl\nstack\nstan\nstar\nstas\nstat\nstdin\nsteer\nstem\nsten\nstep\nstic\nsting\nston\nstop\nstor\nstrai\nstream\nstren\nstretch\nstrob\nstroke\nstrong\nstruct\nstubs\nstude\nstudio\nstuff\nstyle\nsub\nsuccee\nsucces\nsuch\nsuffi\nsuite\nsum\nsun\nsupe\nsupp\nsurro\nsuspe\nswap\nswift\nswing\nswitch\nswizz\nsymbol\nsync\nsynth\nsys\ntabl\ntag\ntail\ntain\ntape\ntate\ntative\nteacher\nteams\ntech\ntele\ntell\ntemp\ntent\ntera\nterm\nternal\ntery\ntest\ntext\nthan\nthat\nthe\nthick\nthing\nthis\nthor\nthose\nthreat\nthree\nthrift\nthro\nthumb\ntial\ntick\ntics\ntifier\ntime\ntimi\ntio\ntish\ntitle\ntitud\ntizen\ntmp/\nto_\ntod\ntoke\ntolera\ntomcat\ntoo\ntopic\ntory\ntorial\ntotal\ntouch\ntour\ntrace\ntract\ntraffic\ntrait\ntral\ntrans\ntreat\ntrial\ntriang\ntribut\ntric\ntries\ntrigger\ntrip\ntrol\ntrouble\ntroy\ntrue\ntrust\ntry\ntter\ntune\ntuni\ntunnel\nture\ntween\ntwenty\ntwitt\ntxrx\ntxt\ntype\ntypo\nultima\nunder\nunfo\nunic\nunio\nunique\nunit\nuniv\nunless\nunpre\nuntil\nunzip\nup_\nupdat\nupgrade\nurl\nusa\nusb\nuse\nusin\nusr/\nuster\nutil\nval_\nvalid\nvalu\nvar/\nvari\nvault\nvect\nveeva\nvendor\nverbose\nverify\nvers\nvert\nvery\nvideo\nview\nviol\nvirtual\nvisibl\nvisit\nvisual\nvita\nvocab\nvoice\nvoid\nvol_\nvolat\nvolume\nvuln\nwait\nwake\nwan\nwap_\nward\nwarm\nwarn\nwatch\nwave\nway\nweak\nweb\nweek\nweight\nwell\nwep_\nwhen\nwhere\nwhich\nwhile\nwhite\nwide\nwidge\nwidth\nwill\nwind\nwire\nwith\nwlan\nwood\nword\nwork\nworld\nwort\nwould\nwow\nwpa_\nwrap\nwrit\nwrong\nx64_\nxpect\nxxx\nyear\nyello\nyield\nyou\nzeppelin\nzero\nzigbee\nzing\nzona\nzorro\n"
  },
  {
    "path": "credsweeper/config/__init__.py",
    "content": ""
  },
  {
    "path": "credsweeper/config/config.py",
    "content": "import re\nfrom typing import Dict, List, Optional, Set, Any\n\nfrom humanfriendly import parse_size\n\nfrom credsweeper.common.constants import Severity, DEFAULT_PATTERN_LEN\nfrom credsweeper.utils.util import Util\n\n\nclass Config:\n    \"\"\"Class that contain configs that can be changed by user.\"\"\"\n\n    NOT_ALLOWED_PATH = [\n        \".*\\\\.min\\\\.js\", \".*message.*\\\\.properties\", \".*locale.*\\\\.properties\", \".*makefile.*\", \".*package-lock\\\\.json\",\n        \".*package\\\\.json\", \".*\\\\.css\", \".*\\\\.scss\"\n    ]\n\n    def __init__(self, config: Dict[str, Any]) -> None:\n        self.exclude_patterns: List[re.Pattern] = [re.compile(pattern) for pattern in config[\"exclude\"][\"pattern\"]]\n        self.exclude_paths: List[str] = config[\"exclude\"][\"path\"]\n        self.exclude_containers: List[str] = config[\"exclude\"][\"containers\"]\n        self.exclude_documents: List[str] = config[\"exclude\"][\"documents\"]\n        self.exclude_extensions: List[str] = config[\"exclude\"][\"extension\"]\n        self.exclude_lines: Set[str] = set(config[\"exclude\"].get(\"lines\", []))\n        self.exclude_values: Set[str] = set(config[\"exclude\"].get(\"values\", []))\n        self.source_extensions: List[str] = config[\"source_ext\"]\n        self.source_quote_ext: List[str] = config[\"source_quote_ext\"]\n        self.find_by_ext_list: List[str] = config[\"find_by_ext_list\"]\n        self.bruteforce_list: List[str] = config[\"bruteforce_list\"]\n        self.check_for_literals: bool = config[\"check_for_literals\"]\n        self.not_allowed_path_pattern = re.compile(f\"{Util.get_regex_combine_or(self.NOT_ALLOWED_PATH)}\",\n                                                   flags=re.IGNORECASE)\n        self.use_filters: bool = config[\"use_filters\"]\n        self.line_data_output: List[str] = config[\"line_data_output\"]\n        self.candidate_output: List[str] = config[\"candidate_output\"]\n        self.find_by_ext: bool = config[\"find_by_ext\"]\n        self.size_limit: Optional[int] = parse_size(config[\"size_limit\"]) if config[\"size_limit\"] is not None else None\n        self.pedantic: bool = bool(config[\"pedantic\"])\n        self.depth: int = int(config[\"depth\"])\n        self.doc: bool = config[\"doc\"]\n        self.severity: Severity = Severity.get(config.get(\"severity\"))\n\n        self.max_url_cred_value_length: int = int(config[\"max_url_cred_value_length\"])\n        self.max_password_value_length: int = int(config[\"max_password_value_length\"])\n\n        # Trim exclude patterns from space like characters\n        self.exclude_lines = set(line.strip() for line in self.exclude_lines)\n        self.exclude_values = set(line.strip() for line in self.exclude_values)\n\n        self.pattern_len = config.get(\"pattern_len\", DEFAULT_PATTERN_LEN)\n"
  },
  {
    "path": "credsweeper/credentials/__init__.py",
    "content": ""
  },
  {
    "path": "credsweeper/credentials/augment_candidates.py",
    "content": "from typing import List\n\nfrom credsweeper.credentials.candidate import Candidate\n\n\ndef augment_candidates(candidates: List[Candidate], new_candidates: List[Candidate]):\n    \"\"\"\n    Augments candidates with new_candidates if value of line data is not present in the candidates\n\n    Args:\n        candidates: [IN/OUT] list of candidates to be augmented\n        new_candidates: [IN] list with new candidates\n\n    \"\"\"\n\n    if not new_candidates:\n        return\n    found_values = set(line_data.value for candidate in candidates  #\n                       for line_data in candidate.line_data_list)\n    for new_candidate in new_candidates:\n        for line_data in new_candidate.line_data_list:\n            if line_data.value not in found_values:\n                candidates.append(new_candidate)\n                break\n"
  },
  {
    "path": "credsweeper/credentials/candidate.py",
    "content": "import copy\nimport re\nfrom json.encoder import py_encode_basestring_ascii\nfrom typing import Any, Dict, List, Optional\n\nfrom credsweeper.common.constants import Severity, Confidence\nfrom credsweeper.config.config import Config\nfrom credsweeper.credentials.line_data import LineData\n\n\nclass Candidate:\n    \"\"\"Candidates that can be credentials.\n\n    Class contains list of LineData, some attributes from Rule object, and config\n\n    Parameters:\n        line_data_list: List of LineData\n        patterns: Regular expressions that can be used for detection\n        rule_name: Name of Rule\n        severity: critical/high/medium/low\n        confidence: strong/moderate/weak\n        config: user configs\n        use_ml: Whether the candidate should be validated with ML. If not - ml_probability is set None\n    \"\"\"\n\n    DUMMY_PATTERN = re.compile(r\"^\")\n\n    def __init__(self,\n                 line_data_list: List[LineData],\n                 patterns: List[re.Pattern],\n                 rule_name: str,\n                 severity: Severity,\n                 config: Optional[Config] = None,\n                 use_ml: bool = False,\n                 confidence: Confidence = Confidence.MODERATE) -> None:\n        self.line_data_list = line_data_list\n        self.patterns = patterns\n        self.rule_name = rule_name\n        self.severity = severity\n        self.config = config\n        self.use_ml = use_ml\n        self.confidence = confidence\n        # None - ML is not applicable or not processed yet; float - the ml decision above ml_threshold\n        # Note: -1.0 is possible too for some activation functions in ml model, so let avoid negative values\n        self.ml_probability: Optional[float] = None\n\n    def compare(self, other: 'Candidate') -> bool:\n        \"\"\"Comparison method - checks only result of final cred\"\"\"\n        if self.rule_name == other.rule_name \\\n                and self.severity == other.severity \\\n                and self.confidence == other.confidence \\\n                and self.use_ml == other.use_ml \\\n                and self.ml_probability == other.ml_probability \\\n                and len(self.line_data_list) == len(other.line_data_list):\n            for i, j in zip(self.line_data_list, other.line_data_list):\n                if i.compare(j):\n                    continue\n                break\n            else:\n                # all line_data are equal\n                return True\n        return False\n\n    @staticmethod\n    def _encode(value: Any) -> Any:\n        \"\"\"Encode value to the base string ascii\n\n        Args:\n            value: Any type of value to be encoded\n        \"\"\"\n        if isinstance(value, str):\n            return py_encode_basestring_ascii(value)\n        return value\n\n    def to_str(self, subtext: bool = False, hashed: bool = False) -> str:\n        \"\"\"Represent candidate with subtext or|and hashed values\"\"\"\n        return f\"rule: {self.rule_name}\" \\\n               f\" | severity: {self.severity.value}\" \\\n               f\" | confidence: {self.confidence.value}\" \\\n               f\" | ml_probability: {self.ml_probability}\" \\\n               f\" | line_data_list: [{', '.join([x.to_str(subtext, hashed) for x in self.line_data_list])}]\"\n\n    def __str__(self):\n        return self.to_str()\n\n    def __repr__(self):\n        return self.to_str(subtext=True)\n\n    def to_json(self, hashed: bool, subtext: bool) -> Dict:\n        \"\"\"Convert credential candidate object to dictionary.\n\n        Return:\n            Dictionary object generated from current credential candidate\n\n        \"\"\"\n        full_output = {\n            \"patterns\": [pattern.pattern for pattern in self.patterns],\n            \"rule\": self.rule_name,\n            \"severity\": self.severity.value,\n            \"confidence\": self.confidence.value,\n            \"use_ml\": self.use_ml,\n            \"ml_probability\": self.ml_probability,\n            # put the array to end to make json more readable\n            \"line_data_list\": [line_data.to_json(hashed, subtext) for line_data in self.line_data_list],\n        }\n        if self.config is not None:\n            reported_output = {k: v for k, v in full_output.items() if k in self.config.candidate_output}\n        else:\n            reported_output = full_output\n        return reported_output\n\n    def to_dict_list(self, hashed: bool, subtext: bool) -> List[dict]:\n        \"\"\"Convert credential candidate object to List[dict].\n\n        Return:\n            List[dict] object generated from current credential candidate\n\n        \"\"\"\n        reported_output = []\n        json_output = self.to_json(hashed, subtext)\n        refined_data = copy.deepcopy(json_output)\n        del refined_data[\"line_data_list\"]\n        for line_data in json_output[\"line_data_list\"]:\n            line_data.update(refined_data)\n            for key in line_data.keys():\n                line_data[key] = self._encode(line_data[key])\n            reported_output.append(line_data)\n        return reported_output\n\n    @classmethod\n    def get_dummy_candidate(cls, config: Config, file_path: str, file_type: str, info: str, rule_name: str):\n        \"\"\"Create dummy instance to use in searching file by extension\"\"\"\n        return cls(  #\n            line_data_list=[LineData(config, '', -1, 0, file_path, file_type, info, cls.DUMMY_PATTERN)],\n            patterns=[cls.DUMMY_PATTERN],  #\n            rule_name=rule_name,  #\n            severity=Severity.INFO,  #\n            config=config,  #\n            confidence=Confidence.WEAK)\n"
  },
  {
    "path": "credsweeper/credentials/candidate_group_generator.py",
    "content": "from typing import Dict, List, Tuple\n\nfrom credsweeper.credentials.candidate import Candidate\nfrom credsweeper.credentials.candidate_key import CandidateKey\n\n\nclass CandidateGroupGenerator:\n    \"\"\"CandidateGroupGenerator\"\"\"\n\n    def __init__(self) -> None:\n        self.grouped_candidates: Dict[CandidateKey, List[Candidate]] = {}\n\n    @property\n    def grouped_candidates(self) -> Dict[CandidateKey, List[Candidate]]:\n        \"\"\"property getter\"\"\"\n        return self._grouped_candidates\n\n    @grouped_candidates.setter\n    def grouped_candidates(self, grouped_candidates: Dict[CandidateKey, List[Candidate]]) -> None:\n        \"\"\"property setter\"\"\"\n        self._grouped_candidates = grouped_candidates\n\n    def __contains__(self, key: CandidateKey) -> bool:\n        return key in self.grouped_candidates\n\n    def __getitem__(self, key) -> List[Candidate]:\n        return self.grouped_candidates[key]\n\n    def __setitem__(self, key: CandidateKey, value: List[Candidate]) -> None:\n        self.grouped_candidates[key] = value\n\n    def __len__(self) -> int:\n        return len(self.grouped_candidates)\n\n    def items(self) -> List[Tuple[CandidateKey, List[Candidate]]]:\n        \"\"\"getter\"\"\"\n        return list(self.grouped_candidates.items())\n"
  },
  {
    "path": "credsweeper/credentials/candidate_key.py",
    "content": "from typing import Tuple\n\nfrom credsweeper.credentials.line_data import LineData\n\n\nclass CandidateKey:\n    \"\"\"Class used to identify credential candidates.\n\n    Candidates that detected same value on same string in a same file would have identical CandidateKey\n    \"\"\"\n\n    def __init__(self, line_data: LineData):\n        self.path: str = line_data.path\n        self.line_num: int = line_data.line_num\n        self.value_start: int = line_data.value_start\n        self.value_end: int = line_data.value_end\n        self.key: Tuple[str, int, int, int] = (self.path, self.line_num, self.value_start, self.value_end)\n        self.__line = line_data.line\n\n    def __hash__(self):\n        return hash(self.key)\n\n    def __eq__(self, other):\n        return self.key == other.key\n\n    def __ne__(self, other):\n        return not bool(self == other)\n\n    def __repr__(self) -> str:\n        return f\"{self.key}:{self.__line}\"\n"
  },
  {
    "path": "credsweeper/credentials/credential_manager.py",
    "content": "import logging\nfrom multiprocessing import Manager\nfrom typing import List, Dict, Tuple\n\nfrom credsweeper.credentials.candidate import Candidate\nfrom credsweeper.credentials.candidate_group_generator import CandidateGroupGenerator, CandidateKey\n\nlogger = logging.getLogger(__name__)\n\n\nclass CredentialManager:\n    \"\"\"The manager allows you to store, add and delete separate credit candidates.\"\"\"\n\n    def __init__(self) -> None:\n        self.candidates: List[Candidate] = list(Manager().list())\n\n    def clear_credentials(self) -> None:\n        \"\"\"Clear credential candidates stored in the manager.\"\"\"\n        self.candidates.clear()\n\n    def len_credentials(self) -> int:\n        \"\"\"Get number of credential candidates stored in the manager.\n\n        Return:\n            Non-negative integer\n\n        \"\"\"\n        return len(self.candidates)\n\n    def get_credentials(self) -> List[Candidate]:\n        \"\"\"Get all credential candidates stored in the manager.\n\n        Return:\n            List with all Candidate objects stored in manager\n\n        \"\"\"\n        return self.candidates\n\n    def set_credentials(self, candidates: List[Candidate]) -> None:\n        \"\"\"Remove all current credentials candidates from the manager and add new credentials.\n\n        Args:\n            candidates: List with candidates to replace current candidates in the manager\n\n        \"\"\"\n        self.candidates = candidates\n\n    def add_credential(self, candidate: Candidate) -> None:\n        \"\"\"Add credential candidate to the manager.\n\n        Args:\n            candidate: credential candidate to be added\n\n        \"\"\"\n        self.candidates.append(candidate)\n\n    def remove_credential(self, candidate: Candidate) -> None:\n        \"\"\"Remove credential candidate from the manager.\n\n        Args:\n            candidate: credential candidate to be removed\n\n        \"\"\"\n        self.candidates.remove(candidate)\n\n    def purge_duplicates(self) -> int:\n        \"\"\"Purge duplicates candidates which may appear in overlaps during long line scan.\n\n        Returns: number of removed duplicates\n        \"\"\"\n        candidates_dict: Dict[Tuple[str, str, str, int, int, int, int, int, int, int], Candidate] = {}\n        before = len(self.candidates)\n        for i in self.candidates:\n            ld = i.line_data_list[0]\n            candidate_key = (\n                i.rule_name,  #\n                ld.path,  #\n                ld.info,  #\n                ld.line_pos,  #\n                ld.variable_start,  #\n                ld.variable_end,  #\n                ld.separator_start,  #\n                ld.separator_end,  #\n                ld.value_start,  #\n                ld.value_end)\n            if candidate_key in candidates_dict:\n                # check precisely - compare with the values\n                candidate_dict = candidates_dict[candidate_key]\n                if not candidate_dict.compare(i):\n                    ld_ = candidate_dict.line_data_list[0]\n                    logger.warning(\"Check %s and %s\", (ld_.variable, ld_.value), (ld.variable, ld.value))\n            else:\n                candidates_dict[candidate_key] = i\n        self.candidates = list(candidates_dict.values())\n        after = len(self.candidates)\n        return before - after\n\n    def group_credentials(self) -> CandidateGroupGenerator:\n        \"\"\"Join candidates that reference same secret value in the same line.\n\n        Candidate can belong to two groups in the same time if it has more than one LineData object inside\n\n        Return:\n            Contain dictionary of [path, line_num, value] -> credential candidates list\n\n        \"\"\"\n        groups = CandidateGroupGenerator()\n        for credential_candidate in self.get_credentials():\n            for line_data in credential_candidate.line_data_list[:1]:\n                # Match by file path+line num+value. Value required so two different credentials still be\n                #  processed independently\n                candidate_key = CandidateKey(line_data)\n                if candidate_key in groups:\n                    groups[candidate_key].append(credential_candidate)\n                else:\n                    groups[candidate_key] = [credential_candidate]\n        return groups\n"
  },
  {
    "path": "credsweeper/credentials/line_data.py",
    "content": "import contextlib\nimport hashlib\nimport re\nimport string\nfrom functools import cached_property\nfrom typing import Any, Dict, Optional, Tuple\n\nfrom colorama import Fore, Style\n\nfrom credsweeper.common.constants import MAX_LINE_LENGTH, UTF_8, StartEnd, ML_HUNK\nfrom credsweeper.config.config import Config\nfrom credsweeper.utils.util import Util\n\n\nclass LineData:\n    \"\"\"Object to treat and store scanned line related data.\n\n    Parameters:\n        key: Optional[str] = None\n        line: string variable, line\n        line_num: int variable, number of line in file\n        path: string variable, path to file\n        file_type: string variable, extension of file '.txt'\n        info: additional info about how the data was detected\n        pattern: regex pattern, detected pattern in line\n        separator: optional string variable, separators between variable and value\n        separator_start: optional variable, separator position start\n        value: optional string variable, detected value in line\n        variable: optional string variable, detected variable in line\n\n    \"\"\"\n\n    quotation_marks = ('\"', \"'\", '`')\n    comment_starts = (\"//\", \"* \", \"# \", \"/*\", \"<!––\", \"%{\", \"%\", \"...\", \"(*\", \"--\", \"--[[\", \"#=\")\n    bash_param_split = re.compile(\"\\\\s+(\\\\-|\\\\||\\\\>|\\\\w+?\\\\>|\\\\&)\")\n    line_endings = re.compile(r\"\\\\{1,8}[nr]\")\n    # https://en.wikipedia.org/wiki/Percent-encoding\n    url_percent_split = re.compile(r\"%(21|23|24|26|27|28|29|2a|2b|2c|2f|3a|3b|3d|3f|40|5b|5d)\", flags=re.IGNORECASE)\n    url_unicode_split = re.compile(r\"\\\\u00(0000)?(21|23|24|26|27|28|29|2a|2b|2c|2f|3a|3b|3d|3f|40|5b|5d)\",\n                                   flags=re.IGNORECASE)\n    # some symbols e.g. double quotes cannot be in URL string https://www.ietf.org/rfc/rfc1738.txt\n    # \\ - was added for case of url in escaped string \\u0026amp; - means escaped & in HTML\n    url_scheme_part_regex = re.compile(r\"[0-9A-Za-z.-]{3}\")\n    url_chars_not_allowed_pattern = re.compile(r'[\\s\"<>\\[\\]^~`{|}]')\n    url_value_pattern = re.compile(r'[^\\s&;\"<>\\[\\]^~`{|}]+[&;][^\\s=;\"<>\\[\\]^~`{|}]{3,80}=[^\\s;&=\"<>\\[\\]^~`{|}]{1,80}')\n    variable_strip_pattern = string.whitespace + \"\"\",'\"-;\"\"\"\n\n    INITIAL_WRONG_POSITION = -3\n    EXCEPTION_POSITION = -2\n\n    def __init__(\n            self,  #\n            config: Config,  #\n            line: str,  #\n            line_pos: int,  #\n            line_num: int,  #\n            path: str,  #\n            file_type: str,  #\n            info: str,  #\n            pattern: re.Pattern,  #\n            match_obj: Optional[re.Match] = None) -> None:\n        self.config = config\n        self.line: str = line\n        self.line_pos: int = line_pos\n        self.line_num: int = line_num\n        self.path: str = path\n        self.file_type: str = file_type\n        self.info: str = info\n        self.pattern: re.Pattern = pattern\n        # do not store match object due it cannot be pickled with multiprocessing\n\n        # start - end position of matched object\n        self.value_start = LineData.INITIAL_WRONG_POSITION\n        self.value_end = LineData.INITIAL_WRONG_POSITION\n        self.key: Optional[str] = None\n        self.separator: Optional[str] = None\n        self.separator_start: int = LineData.INITIAL_WRONG_POSITION\n        self.separator_end: int = LineData.INITIAL_WRONG_POSITION\n        self.value: Optional[str] = None\n        self.variable: Optional[str] = None\n        self.variable_start = LineData.INITIAL_WRONG_POSITION\n        self.variable_end = LineData.INITIAL_WRONG_POSITION\n        self.value_leftquote: Optional[str] = None\n        self.value_rightquote: Optional[str] = None\n        # is set when variable & value are in URL for any source type\n        self.url_part = False\n        self.wrap = None\n        self._3d_escaped_separator = False\n        self.initialize(match_obj)\n        # the line is very useful for debug breakpoint\n        pass  # pylint: disable=W0107\n\n    def compare(self, other: 'LineData') -> bool:\n        \"\"\"Comparison method - skip whole line and checks only when variable and value are the same\"\"\"\n        if self.path == other.path \\\n                and self.info == other.info \\\n                and self.line_num == other.line_num \\\n                and self.value_start == other.value_start \\\n                and self.variable == other.variable \\\n                and self.value == other.value:\n            return True\n        return False\n\n    def initialize(self, match_obj: Optional[re.Match] = None) -> None:\n        \"\"\"Apply regex to the candidate line and set internal fields based on match.\"\"\"\n        if not isinstance(match_obj, re.Match) and isinstance(self.pattern, re.Pattern):\n            match_obj = self.pattern.search(self.line, endpos=MAX_LINE_LENGTH)\n        if match_obj is None:\n            return\n\n        def get_group_from_match_obj(_match_obj: re.Match, group: str) -> Any:\n            with contextlib.suppress(Exception):\n                return _match_obj.group(group)\n            return None\n\n        def get_span_from_match_obj(_match_obj: re.Match, group: str) -> Tuple[int, int]:\n            with contextlib.suppress(Exception):\n                span = _match_obj.span(group)\n                return span[0], span[1]\n            return LineData.EXCEPTION_POSITION, LineData.EXCEPTION_POSITION\n\n        self.key = get_group_from_match_obj(match_obj, \"keyword\")\n        self.separator = get_group_from_match_obj(match_obj, \"separator\")\n        self.separator_start, self.separator_end = get_span_from_match_obj(match_obj, \"separator\")\n        self.value = get_group_from_match_obj(match_obj, \"value\")\n        self.value_start, self.value_end = get_span_from_match_obj(match_obj, \"value\")\n        self.variable = get_group_from_match_obj(match_obj, \"variable\")\n        self.variable_start, self.variable_end = get_span_from_match_obj(match_obj, \"variable\")\n        self.value_leftquote = get_group_from_match_obj(match_obj, \"value_leftquote\")\n        self.value_rightquote = get_group_from_match_obj(match_obj, \"value_rightquote\")\n        self.wrap = get_group_from_match_obj(match_obj, \"wrap\")\n        # percent encoded '=' in url\n        self._3d_escaped_separator = bool(self.separator) and \"%3D\" == self.separator.upper()\n        self.sanitize_value()\n        self.sanitize_variable()\n\n    def sanitize_value(self):\n        \"\"\"Clean found value from extra artifacts. Correct positions if changed.\"\"\"\n        # process the quotation workaround before cached properties invocation\n        if not self.value_leftquote and not self.value_rightquote:\n            while self.value:\n                first_symbol_code = ord(self.value[0])\n                last_symbol_code = ord(self.value[-1])\n                if 0x2018 <= first_symbol_code <= 0x201B and 0x2018 <= last_symbol_code <= 0x201B:\n                    self.value_leftquote = self.value_rightquote = \"'\"\n                    self.value = self.value[:-1]\n                    self.value_end -= 1\n                    self.value = self.value[1:]\n                    self.value_start += 1\n                elif 0x201C <= first_symbol_code <= 0x201F and 0x201C <= last_symbol_code <= 0x201F:\n                    self.value_leftquote = self.value_rightquote = '\"'\n                    self.value = self.value[1:]\n                    self.value_start += 1\n                    self.value = self.value[:-1]\n                    self.value_end -= 1\n                else:\n                    break\n\n        if self.variable and self.value and not self.is_well_quoted_value:\n            # sanitize is actual step for keyword pattern only\n            _value = self.value\n            self.clean_url_parameters()\n            self.clean_bash_parameters()\n            self.clean_toml_parameters()\n            self.clean_tag_parameters()\n            if 0 <= self.value_start and 0 <= self.value_end and len(self.value) < len(_value):\n                start = _value.find(self.value)\n                self.value_start += start\n                self.value_end = self.value_start + len(self.value)\n\n    def check_url_part(self) -> bool:\n        \"\"\"Determines whether value is part of url like line\"\"\"\n        line_before_value = self.line[:self.value_start]\n        url_pos = -1\n        find_pos = 0\n        while find_pos < self.value_start:\n            # find rightmost pattern\n            find_pos = line_before_value.find(\"://\", find_pos)\n            if -1 == find_pos:\n                break\n            url_pos = find_pos\n            find_pos += 3\n        # whether the line has url start pattern\n        self.url_part = 3 <= url_pos\n        self.url_part &= bool(self.url_scheme_part_regex.match(line_before_value, pos=url_pos - 3, endpos=url_pos))\n        self.url_part &= not self.url_chars_not_allowed_pattern.search(line_before_value, pos=url_pos + 3)\n        self.url_part |= self.line[self.variable_start - 1] in \"?&\" if 0 < self.variable_start else False\n        self.url_part |= bool(self.url_value_pattern.match(self.value))\n        self.url_part |= self._3d_escaped_separator\n        return self.url_part\n\n    def clean_url_parameters(self) -> None:\n        \"\"\"Clean url address from 'query parameters'.\n\n        If line seem to be a URL - split by & character.\n        Variable should be right most value after & or ? ([-1]). And value should be left most before & ([0])\n        \"\"\"\n        # skip sanitize in case of URL credential rule - the regex is mature enough\n        if self.check_url_part() and not self.variable.endswith(\"://\"):\n            # all checks have passed - line before the value may be a URL\n            self.variable = self.variable.rsplit('&')[-1].rsplit('?')[-1].rsplit(';')[-1]\n            self.value = self.value.split('&', maxsplit=1)[0].split(';', maxsplit=1)[0].split('#', maxsplit=1)[0]\n            self.value = self.url_unicode_split.split(self.value)[0]\n            if self._3d_escaped_separator:\n                self.value = self.url_percent_split.split(self.value)[0]\n\n    def clean_bash_parameters(self) -> None:\n        \"\"\"Split variable and value by bash special characters, if line assumed to be CLI command.\"\"\"\n        if self.variable.startswith(\"-\"):\n            value_spl = self.bash_param_split.split(self.value)\n            # If variable name starts with `-` (usual case for args in CLI)\n            #  and value can be split by bash special characters\n            if len(value_spl) > 1:\n                self.value = value_spl[0]\n        if ' ' not in self.value and (\"\\\\n\" in self.value or \"\\\\r\" in self.value):\n            value_whsp = self.line_endings.split(self.value)\n            if len(value_whsp) > 1:\n                self.value = value_whsp[0]\n\n    def clean_toml_parameters(self) -> None:\n        \"\"\"Parenthesis, curly and squared brackets may be caught in TOML format and bash. Simple clearing\"\"\"\n        cleaning_required = self.value and self.value[-1] in ['}', ']', ')']\n        line_before_value = self.line[:self.value_start] if self.value_start and 0 <= self.value_start else \"\"\n        while cleaning_required:\n            cleaning_required = False\n            for left, right in [('{', '}'), ('[', ']'), ('(', ')')]:\n                if self.value.endswith(right) and left not in self.value \\\n                        and line_before_value.count(left) > line_before_value.count(right):\n                    # full match does not reasonable to implement due open character may be in other line\n                    self.value = self.value[:-1]\n                    cleaning_required = True\n\n    def clean_tag_parameters(self) -> None:\n        \"\"\"Remove closing tag from value if the opened is somewhere before in line\"\"\"\n        cleaning_required = self.value and self.value.endswith('>')\n        while cleaning_required:\n            closing_tag_pos = self.value.rfind(\"</\")\n            if 0 <= closing_tag_pos:\n                # use `<a` to avoid tag parameters\n                opening_tag_prefix = f\"<{self.value[closing_tag_pos + 2:-1]}\"\n                if cleaning_required := (opening_tag_prefix not in self.value\n                                         and 0 <= self.line.find(opening_tag_prefix, 0, self.value_start)):\n                    self.value = self.value[:closing_tag_pos]\n                    cleaning_required = self.value and self.value.endswith('>')\n            else:\n                break\n\n    def sanitize_variable(self) -> None:\n        \"\"\"Remove trailing spaces, dashes and quotations around the variable. Correct position.\"\"\"\n        sanitized_var_len = 0\n        variable = self.variable\n        while self.variable and sanitized_var_len != len(self.variable):\n            sanitized_var_len = len(self.variable)\n            self.variable = self.variable.strip(self.variable_strip_pattern)\n            if self.variable.endswith('\\\\'):\n                self.variable = self.variable[:-1]\n            if self.variable.startswith('{') and '}' in self.line[self.variable_end:]:\n                # TOML case\n                self.variable = self.variable[1:]\n        if variable and len(self.variable) < len(variable) and 0 <= self.variable_start and 0 <= self.variable_end:\n            start = variable.find(self.variable)\n            self.variable_start += start\n            self.variable_end = self.variable_start + len(self.variable)\n\n    def is_comment(self) -> bool:\n        \"\"\"Check if line with credential is a comment.\n\n        Return:\n            True if line is a comment, False otherwise\n\n        \"\"\"\n        cleaned_line = self.line.strip()\n        for comment_start in self.comment_starts:\n            if cleaned_line.startswith(comment_start):\n                return True\n        return False\n\n    @cached_property\n    def is_well_quoted_value(self) -> bool:\n        \"\"\"Well quoted value - means the value has been quoted or has line wrap\"\"\"\n        result = False\n        if self.value_leftquote and self.value_rightquote:\n            if self.value_leftquote == self.value_rightquote:\n                # regex caught well\n                return True\n\n            if 1 == len(self.value_leftquote):\n                leftquote = self.value_leftquote\n            else:\n                # right side symbol should be a quote\n                leftquote = self.value_leftquote[-1]\n                if leftquote not in self.quotation_marks:\n                    leftquote = \"\"\n\n            if 1 == len(self.value_rightquote):\n                rightquote = self.value_rightquote\n            else:\n                # clean \\ sign in escaping text\n                for q in self.value_rightquote:\n                    if q in self.quotation_marks:\n                        rightquote = q\n                        break\n                else:\n                    rightquote = \"\"\n\n            result = bool(leftquote) and (  #\n                bool(rightquote) and (leftquote == rightquote)  # normal case\n                or '\\\\' == self.value_rightquote and '\\\\' == self.line[-1]  # line wrap\n            )\n\n        elif self.value_leftquote:\n            result = (  #\n                ('\\\\' == self.value_rightquote or '\\\\' == self.value[-1]) and '\\\\' == self.line[-1]  # line wrap\n                or '.php' == self.file_type  # php may use multiline string\n                or 3 == self.value_leftquote.count('\"') or 3 == self.value_leftquote.count(\"'\")  # python multiline\n            )\n\n        return result\n\n    @cached_property\n    def is_quoted(self) -> bool:\n        \"\"\"Check if variable and value in a quoted string.\n\n        Return:\n            True if candidate in a quoted string, False otherwise\n\n        \"\"\"\n        left_quote = None\n        if 0 < self.variable_start:\n            for i in self.line[:self.variable_start]:\n                if i in ('\"', \"'\", '`'):\n                    left_quote = i\n                    break\n        right_quote = None\n        if len(self.line) > self.value_end:\n            for i in self.line[self.value_end:]:\n                if i in ('\"', \"'\", '`'):\n                    right_quote = i\n                    break\n        result = bool(left_quote) and bool(right_quote) and left_quote == right_quote\n        return result\n\n    def is_source_file(self) -> bool:\n        \"\"\"Check if file with credential is a source code file or not (data, log, plain text).\n\n        Return:\n            True if file is source file, False otherwise\n\n        \"\"\"\n        if not self.path:\n            return False\n        if Util.get_extension(self.path) in self.config.source_extensions:\n            return True\n        return False\n\n    def is_source_file_with_quotes(self) -> bool:\n        \"\"\"Check if file with credential require quotation for string literals.\n\n        Return:\n            True if file require quotation, False otherwise\n\n        \"\"\"\n        file_type = self.file_type or Util.get_extension(self.path)\n        return bool(file_type) and file_type in self.config.source_quote_ext\n\n    @staticmethod\n    def get_hash_or_subtext(\n            text: Optional[str],  #\n            hashed: bool,  #\n            cut_pos: Optional[StartEnd] = None,  #\n    ) -> Optional[str]:\n        \"\"\"Represent not empty text with hash or a \"beauty\" subtext if required\n\n        Args:\n            text: str - input string\n            hashed: bool - whether the text will be hashed and returned\n            cut_pos: Optional[StartEnd] - start, end positions which text must be kept in output\n\n        Return:\n            sha256 hash in hex representation of input text with UTF-8 encodings\n            or\n            subtext from start to end, or original text as is\n\n        \"\"\"\n        if text:\n            if hashed:\n                text = hashlib.sha256(text.encode(UTF_8, errors=\"strict\")).hexdigest()\n            elif cut_pos is not None:\n                if 2 * ML_HUNK < cut_pos.end - cut_pos.start:\n                    # subtext positions exceed the limit\n                    text = text[cut_pos.start:cut_pos.end]\n                else:\n                    strip_text = text.strip()\n                    if 2 * ML_HUNK >= len(strip_text):\n                        # stripped text length meets the limit\n                        text = strip_text\n                    else:\n                        offset = len(text) - len(text.lstrip())\n                        center = (cut_pos.end + cut_pos.start - offset) >> 1\n                        text = Util.subtext(strip_text, center, ML_HUNK)\n        return text\n\n    def to_str(self, subtext: bool = False, hashed: bool = False) -> str:\n        \"\"\"Represent line_data with subtext or|and hashed values\"\"\"\n        cut_pos = StartEnd(self.variable_start, self.value_end) if subtext else None\n        return f\"path: {self.path}\" \\\n               f\" | line_num: {self.line_num}\" \\\n               f\" | value: '{self.get_hash_or_subtext(self.value, hashed)}'\" \\\n               f\" | line: '{self.get_hash_or_subtext(self.line, hashed, cut_pos)}'\"\n\n    def __str__(self):\n        return self.to_str()\n\n    def __repr__(self):\n        return self.to_str(subtext=True)\n\n    def to_json(self, hashed: bool, subtext: bool) -> Dict:\n        \"\"\"Convert line data object to dictionary.\n\n        Return:\n            Dictionary object generated from current line data\n\n        \"\"\"\n        cut_pos = StartEnd(self.variable_start if 0 <= self.variable_start else self.value_start,\n                           self.value_end) if subtext else None\n        if isinstance(self.value, str):\n            entropy = round(Util.get_shannon_entropy(self.value), 5)\n        else:\n            entropy = None\n        full_output = {\n            \"key\": self.key,\n            \"line\": self.get_hash_or_subtext(self.line, hashed, cut_pos),\n            \"line_num\": self.line_num,\n            \"path\": self.path,\n            # info may contain variable name - so let it be hashed if requested\n            \"info\": self.get_hash_or_subtext(self.info, hashed),\n            \"pattern\": self.pattern.pattern,\n            \"variable\": self.get_hash_or_subtext(self.variable, hashed),\n            \"variable_start\": self.variable_start,\n            \"variable_end\": self.variable_end,\n            \"separator\": self.separator,\n            \"separator_start\": self.separator_start,\n            \"separator_end\": self.separator_end,\n            \"value\": self.get_hash_or_subtext(self.value, hashed),\n            \"value_start\": self.value_start,\n            \"value_end\": self.value_end,\n            \"entropy\": entropy,\n            \"value_leftquote\": self.value_leftquote,\n            \"value_rightquote\": self.value_rightquote,\n        }\n        reported_output = {k: v for k, v in full_output.items() if k in self.config.line_data_output}\n        return reported_output\n\n    def get_colored_line(self, hashed: bool, subtext: bool = False) -> str:\n        \"\"\"Represents the LineData with a value, separator, and variable color formatting\"\"\"\n        if hashed:\n            # return colored hash\n            return Fore.LIGHTGREEN_EX \\\n                + self.get_hash_or_subtext(self.line, hashed,\n                                           StartEnd(self.value_start, self.value_end) if subtext else None) \\\n                + Style.RESET_ALL\n        # at least, value must present\n        line = self.line[:self.value_start] \\\n               + Fore.LIGHTYELLOW_EX \\\n               + self.line[self.value_start:self.value_end] \\\n               + Style.RESET_ALL \\\n               + self.line[self.value_end:]  # noqa: E127\n        # separator may be missing\n        if 0 <= self.separator_start < self.separator_end <= self.value_start:\n            line = line[:self.separator_start] \\\n                   + Fore.LIGHTGREEN_EX \\\n                   + line[self.separator_start:self.separator_end] \\\n                   + Style.RESET_ALL \\\n                   + line[self.separator_end:]\n        # variable may be missing\n        if 0 <= self.separator_start \\\n                and 0 <= self.variable_start < self.variable_end <= self.separator_end <= self.value_start \\\n                or 0 <= self.variable_start < self.variable_end <= self.value_start:\n            line = line[:self.variable_start] \\\n                   + Fore.LIGHTBLUE_EX \\\n                   + line[self.variable_start:self.variable_end] \\\n                   + Style.RESET_ALL \\\n                   + line[self.variable_end:]\n        if subtext:\n            # display part of the text, centered around the start of the value, style reset at the end as a fallback\n            line = f\"{Util.subtext(line, self.value_start + len(line) - len(self.line), ML_HUNK)}{Style.RESET_ALL}\"\n        return line\n"
  },
  {
    "path": "credsweeper/deep_scanner/__init__.py",
    "content": ""
  },
  {
    "path": "credsweeper/deep_scanner/abstract_scanner.py",
    "content": "import contextlib\nimport datetime\nimport logging\nfrom abc import abstractmethod, ABC\nfrom typing import List, Optional, Tuple, Any, Generator\n\nfrom credsweeper.common.constants import RECURSIVE_SCAN_LIMITATION, MIN_DATA_LEN, DEFAULT_ENCODING, UTF_8, \\\n    MIN_VALUE_LENGTH\nfrom credsweeper.config.config import Config\nfrom credsweeper.credentials.augment_candidates import augment_candidates\nfrom credsweeper.credentials.candidate import Candidate\nfrom credsweeper.file_handler.byte_content_provider import ByteContentProvider\nfrom credsweeper.file_handler.content_provider import ContentProvider\nfrom credsweeper.file_handler.data_content_provider import DataContentProvider\nfrom credsweeper.file_handler.descriptor import Descriptor\nfrom credsweeper.file_handler.diff_content_provider import DiffContentProvider\nfrom credsweeper.file_handler.file_path_extractor import FilePathExtractor\nfrom credsweeper.file_handler.string_content_provider import StringContentProvider\nfrom credsweeper.file_handler.struct_content_provider import StructContentProvider\nfrom credsweeper.file_handler.text_content_provider import TextContentProvider\nfrom credsweeper.scanner.scanner import Scanner\n\nlogger = logging.getLogger(__name__)\n\n\nclass AbstractScanner(ABC):\n    \"\"\"Base abstract class for all recursive scanners\"\"\"\n\n    @property\n    @abstractmethod\n    def config(self) -> Config:\n        \"\"\"Abstract property to be defined in DeepScanner\"\"\"\n        raise NotImplementedError(__name__)\n\n    @property\n    @abstractmethod\n    def scanner(self) -> Scanner:\n        \"\"\"Abstract property to be defined in DeepScanner\"\"\"\n        raise NotImplementedError(__name__)\n\n    @abstractmethod\n    def data_scan(\n            self,  #\n            data_provider: DataContentProvider,  #\n            depth: int,  #\n            recursive_limit_size: int) -> Optional[List[Candidate]]:\n        \"\"\"Abstract method to be defined in DeepScanner\"\"\"\n        raise NotImplementedError(__name__)\n\n    @staticmethod\n    @abstractmethod\n    def get_deep_scanners(data: bytes, descriptor: Descriptor, depth: int) -> Tuple[List[Any], List[Any]]:\n        \"\"\"Returns possibly scan methods for the data depends on content and fallback scanners\"\"\"\n        raise NotImplementedError(__name__)\n\n    # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #\n\n    def recursive_scan(\n            self,  #\n            data_provider: DataContentProvider,  #\n            depth: int = 0,  #\n            recursive_limit_size: int = 0) -> List[Candidate]:\n        \"\"\"Recursive function to scan files which might be containers like ZIP archives\n\n            Args:\n                data_provider: DataContentProvider object may be a container\n                depth: maximal level of recursion\n                recursive_limit_size: maximal bytes of opened files to prevent recursive zip-bomb attack\n        \"\"\"\n        candidates: List[Candidate] = []\n        if 0 > depth:\n            # break recursion if maximal depth is reached\n            logger.debug(\"Bottom reached %s recursive_limit_size:%d\", data_provider.file_path, recursive_limit_size)\n            return candidates\n        depth -= 1\n        if MIN_DATA_LEN > len(data_provider.data):\n            # break recursion for minimal data size\n            logger.debug(\"Too small data: size=%d, depth=%d, limit=%d, path=%s, info=%s\", len(data_provider.data),\n                         depth, recursive_limit_size, data_provider.file_path, data_provider.info)\n            return candidates\n        logger.debug(\"Start data_scan: size=%d, depth=%d, limit=%d, path=%s, info=%s\", len(data_provider.data), depth,\n                     recursive_limit_size, data_provider.file_path, data_provider.info)\n\n        if FilePathExtractor.is_find_by_ext_file(self.config, data_provider.file_type):\n            # Skip scanning file and makes fake candidate due the extension is suspicious\n            dummy_candidate = Candidate.get_dummy_candidate(self.config, data_provider.file_path,\n                                                            data_provider.file_type, data_provider.info,\n                                                            FilePathExtractor.FIND_BY_EXT_RULE)\n            candidates.append(dummy_candidate)\n        else:\n            new_candidates = self.deep_scan_with_fallback(data_provider, depth, recursive_limit_size)\n            augment_candidates(candidates, new_candidates)\n\n        return candidates\n\n    # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #\n\n    @staticmethod\n    def key_value_combination(structure: dict) -> Generator[Tuple[Any, Any], None, None]:\n        \"\"\"Combine items by `key` and `value` from a dictionary for augmentation\n        {..., \"key\": \"api_key\", \"value\": \"XXXXXXX\", ...} -> (\"api_key\", \"XXXXXXX\")\n\n        \"\"\"\n        for key_id in (\"key\", \"KEY\", \"Key\"):\n            if key_id in structure:\n                struct_key = structure.get(key_id)\n                break\n        else:\n            struct_key = None\n        if isinstance(struct_key, bytes):\n            # sqlite table may produce bytes for `key`\n            with contextlib.suppress(UnicodeError):\n                struct_key = struct_key.decode(UTF_8)\n        # only str type is common used for the augmentation\n        if struct_key and isinstance(struct_key, str):\n            for value_id in (\"value\", \"VALUE\", \"Value\"):\n                if value_id in structure:\n                    struct_value = structure.get(value_id)\n                    if struct_value and isinstance(struct_value, (str, bytes)):\n                        yield struct_key, struct_value\n                        # break in successful case\n                        break\n\n    # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #\n\n    @staticmethod\n    def structure_processing(structure: Any) -> Generator[Tuple[Any, Any], None, None]:\n        \"\"\"Yields pair `key, value` from given structure if applicable\"\"\"\n        if isinstance(structure, dict):\n            # transform dictionary to list\n            for key, value in structure.items():\n                if not value:\n                    # skip empty values\n                    continue\n                if isinstance(value, (list, tuple)):\n                    if 1 == len(value):\n                        # simplify some structures like YAML when single item in new line is a value\n                        yield key, value[0]\n                        continue\n                # all other data will be precessed in next code\n                yield key, value\n            yield from AbstractScanner.key_value_combination(structure)\n        elif isinstance(structure, (list, tuple)):\n            # enumerate the items to fit for return structure\n            for key, value in enumerate(structure):\n                yield key, value\n        else:\n            logger.warning(\"Not supported type:%s val:%s\", str(type(structure)), repr(structure))\n\n    # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #\n\n    def structure_scan(\n            self,  #\n            struct_provider: StructContentProvider,  #\n            depth: int,  #\n            recursive_limit_size: int) -> List[Candidate]:\n        \"\"\"Recursive function to scan structured data\n\n            Args:\n                struct_provider: DataContentProvider object may be a container\n                depth: maximal level of recursion\n                recursive_limit_size: maximal bytes of opened files to prevent recursive zip-bomb attack\n        \"\"\"\n        candidates: List[Candidate] = []\n        logger.debug(\"Start struct_scan: depth=%d, limit=%d, path=%s, info=%s\", depth, recursive_limit_size,\n                     struct_provider.file_path, struct_provider.info)\n\n        if 0 > depth:\n            # break recursion if maximal depth is reached\n            logger.debug(\"Bottom reached %s recursive_limit_size:%d\", struct_provider.file_path, recursive_limit_size)\n            return candidates\n\n        depth -= 1\n\n        augmented_lines_for_keyword_rules = []\n        for key, value in AbstractScanner.structure_processing(struct_provider.struct):\n            # a keyword rule may be applicable for `key` (str only) and `value` (str, bytes)\n            keyword_match = bool(isinstance(key, str) and self.scanner.keywords_required_substrings_check(key.lower()))\n\n            if isinstance(value, (dict, list, tuple)) and value:\n                # recursive scan for not empty structured `value`\n                val_struct_provider = StructContentProvider(struct=value,\n                                                            file_path=struct_provider.file_path,\n                                                            file_type=struct_provider.file_type,\n                                                            info=f\"{struct_provider.info}|STRUCT:{key}\")\n                new_candidates = self.structure_scan(val_struct_provider, depth, recursive_limit_size)\n                candidates.extend(new_candidates)\n            elif isinstance(value, bytes):\n                # recursive data scan\n                if MIN_DATA_LEN <= len(value):\n                    bytes_struct_provider = DataContentProvider(data=value,\n                                                                file_path=struct_provider.file_path,\n                                                                file_type=struct_provider.file_type,\n                                                                info=f\"{struct_provider.info}|BYTES:{key}\")\n                    new_limit = recursive_limit_size - len(value)\n                    new_candidates = self.recursive_scan(bytes_struct_provider, depth, new_limit)\n                    candidates.extend(new_candidates)\n                if keyword_match and MIN_VALUE_LENGTH <= len(value):\n                    augmented_lines_for_keyword_rules.append(f\"{key} = {repr(value)}\")\n            elif isinstance(value, str):\n                # recursive text scan with transformation into bytes\n                stripped_value = value.strip()\n                if MIN_DATA_LEN <= len(stripped_value):\n                    # recursive scan only for data which may be decoded at least\n                    with contextlib.suppress(UnicodeError):\n                        data = stripped_value.encode(encoding=DEFAULT_ENCODING, errors='strict')\n                        str_struct_provider = DataContentProvider(data=data,\n                                                                  file_path=struct_provider.file_path,\n                                                                  file_type=struct_provider.file_type,\n                                                                  info=f\"{struct_provider.info}|STRING:{key}\")\n                        new_limit = recursive_limit_size - len(str_struct_provider.data)\n                        new_candidates = self.recursive_scan(str_struct_provider, depth, new_limit)\n                        candidates.extend(new_candidates)\n                if keyword_match and MIN_VALUE_LENGTH <= len(stripped_value):\n                    augmented_lines_for_keyword_rules.append(f\"{key} = {repr(stripped_value)}\")\n            elif not value or isinstance(value, (int, float, datetime.date, datetime.datetime)):\n                # skip useless types\n                pass\n            else:\n                logger.warning(\"Not supported type:%s value(%s)\", str(type(value)), str(value))\n\n        if augmented_lines_for_keyword_rules:\n            str_provider = StringContentProvider(augmented_lines_for_keyword_rules,\n                                                 file_path=struct_provider.file_path,\n                                                 file_type=struct_provider.file_type,\n                                                 info=f\"{struct_provider.info}|KEYWORD\")\n            new_candidates = self.scanner.scan(str_provider)\n            augment_candidates(candidates, new_candidates)\n\n        return candidates\n\n    # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #\n\n    def deep_scan_with_fallback(self, data_provider: DataContentProvider, depth: int,\n                                recursive_limit_size: int) -> List[Candidate]:\n        \"\"\"Scans with deep scanners and fallback scanners if possible\n\n            Args:\n                data_provider: DataContentProvider with raw data\n                depth: maximal level of recursion\n                recursive_limit_size: maximal bytes of opened files to prevent recursive zip-bomb attack\n\n            Returns: list with candidates\n\n        \"\"\"\n        candidates: List[Candidate] = []\n        deep_scanners, fallback_scanners = self.get_deep_scanners(data_provider.data, data_provider.descriptor, depth)\n        fallback = True\n        for scan_class in deep_scanners:\n            new_candidates = scan_class.data_scan(self, data_provider, depth, recursive_limit_size)\n            if new_candidates is None:\n                # scanner did not recognise the content type\n                continue\n            augment_candidates(candidates, new_candidates)\n            # this scan is successful, so fallback is not necessary\n            fallback = False\n        if fallback:\n            for scan_class in fallback_scanners:\n                fallback_candidates = scan_class.data_scan(self, data_provider, depth, recursive_limit_size)\n                if fallback_candidates is None:\n                    continue\n                augment_candidates(candidates, fallback_candidates)\n                # use only first successful fallback scanner\n                break\n        return candidates\n\n    # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #\n\n    def scan(self,\n             content_provider: ContentProvider,\n             depth: int,\n             recursive_limit_size: Optional[int] = None) -> List[Candidate]:\n        \"\"\"Initial scan method to launch recursive scan. Skips ByteScanner to prevent extra scan\n\n            Args:\n                content_provider: ContentProvider that might contain raw data\n                depth: maximal level of recursion\n                recursive_limit_size: maximal bytes of opened files to prevent recursive zip-bomb attack\n        \"\"\"\n        recursive_limit_size = recursive_limit_size if isinstance(recursive_limit_size,\n                                                                  int) else RECURSIVE_SCAN_LIMITATION\n        candidates: List[Candidate] = []\n        data: Optional[bytes] = None\n        if isinstance(content_provider, (TextContentProvider, ByteContentProvider)):\n            # Feature to scan files which might be containers\n            data = content_provider.data\n            info = f\"FILE:{content_provider.file_path}\"\n        elif isinstance(content_provider, DiffContentProvider) and content_provider.diff:\n            candidates = self.scanner.scan(content_provider)\n            # Feature to scan binary diffs\n            diff = content_provider.diff[0].get(\"line\")\n            # the check for legal fix mypy issue\n            if isinstance(diff, bytes):\n                data = diff\n            info = f\"DIFF:{content_provider.file_path}\"\n        else:\n            logger.warning(\"Content provider %s does not support deep scan\", type(content_provider))\n            info = \"NA\"\n\n        if data:\n            data_provider = DataContentProvider(data=data,\n                                                file_path=content_provider.file_path,\n                                                file_type=content_provider.file_type,\n                                                info=content_provider.info or info)\n            new_candidates = self.deep_scan_with_fallback(data_provider, depth, recursive_limit_size - len(data))\n            augment_candidates(candidates, new_candidates)\n        return candidates\n"
  },
  {
    "path": "credsweeper/deep_scanner/byte_scanner.py",
    "content": "import logging\nfrom abc import ABC\nfrom typing import List, Optional\n\nfrom credsweeper.credentials.candidate import Candidate\nfrom credsweeper.deep_scanner.abstract_scanner import AbstractScanner\nfrom credsweeper.file_handler.byte_content_provider import ByteContentProvider\nfrom credsweeper.file_handler.data_content_provider import DataContentProvider\n\nlogger = logging.getLogger(__name__)\n\n\nclass ByteScanner(AbstractScanner, ABC):\n    \"\"\"Implements plain data scanning\"\"\"\n\n    def data_scan(\n            self,  #\n            data_provider: DataContentProvider,  #\n            depth: int,  #\n            recursive_limit_size: int) -> Optional[List[Candidate]]:\n        \"\"\"Tries to represent data as plain text with splitting by lines and scan as text lines\"\"\"\n        byte_content_provider = ByteContentProvider(content=data_provider.data,\n                                                    file_path=data_provider.file_path,\n                                                    file_type=data_provider.file_type,\n                                                    info=f\"{data_provider.info}|RAW\")\n        return self.scanner.scan(byte_content_provider)\n"
  },
  {
    "path": "credsweeper/deep_scanner/bzip2_scanner.py",
    "content": "import bz2\nimport logging\nfrom abc import ABC\nfrom pathlib import Path\nfrom typing import List, Optional\n\nfrom credsweeper.credentials.candidate import Candidate\nfrom credsweeper.deep_scanner.abstract_scanner import AbstractScanner\nfrom credsweeper.file_handler.data_content_provider import DataContentProvider\nfrom credsweeper.utils.util import Util\n\nlogger = logging.getLogger(__name__)\n\n\nclass Bzip2Scanner(AbstractScanner, ABC):\n    \"\"\"Implements bzip2 scanning\"\"\"\n\n    @staticmethod\n    def match(data: bytes | bytearray) -> bool:\n        \"\"\"According https://en.wikipedia.org/wiki/Bzip2\"\"\"\n        if data.startswith(b\"\\x42\\x5A\\x68\") and 10 <= len(data) \\\n                and 0x31 <= data[3] <= 0x39 \\\n                and 4 == data.find(b\"\\x31\\x41\\x59\\x26\\x53\\x59\", 4, 10):\n            return True\n        return False\n\n    def data_scan(\n            self,  #\n            data_provider: DataContentProvider,  #\n            depth: int,  #\n            recursive_limit_size: int) -> Optional[List[Candidate]]:\n        \"\"\"Extracts data from bzip2 archive and launches data_scan\"\"\"\n        try:\n            file_path = Path(data_provider.file_path)\n            new_path = file_path.as_posix()\n            if \".bz2\" == file_path.suffix:\n                new_path = new_path[:-4]\n            bzip2_content_provider = DataContentProvider(data=bz2.decompress(data_provider.data),\n                                                         file_path=new_path,\n                                                         file_type=Util.get_extension(new_path),\n                                                         info=f\"{data_provider.info}|BZIP2:{file_path}\")\n            new_limit = recursive_limit_size - len(bzip2_content_provider.data)\n            bzip2_candidates = self.recursive_scan(bzip2_content_provider, depth, new_limit)\n            return bzip2_candidates\n        except Exception as bzip2_exc:\n            logger.warning(\"%s:%s\", data_provider.file_path, bzip2_exc)\n        return None\n"
  },
  {
    "path": "credsweeper/deep_scanner/crx_scanner.py",
    "content": "import logging\nimport struct\nfrom abc import ABC\nfrom typing import List, Optional\n\nfrom credsweeper.credentials.candidate import Candidate\nfrom credsweeper.deep_scanner.abstract_scanner import AbstractScanner\nfrom credsweeper.file_handler.data_content_provider import DataContentProvider\n\nlogger = logging.getLogger(__name__)\n\n\nclass CrxScanner(AbstractScanner, ABC):\n    \"\"\"Implements CRX files scanning with cut-off prefix\"\"\"\n\n    @staticmethod\n    def match(data: bytes | bytearray) -> bool:\n        \"\"\"Returns True if prefix match\"\"\"\n        if data.startswith((b\"Cr24\\x02\\x00\\x00\\x00\", b\"Cr24\\x03\\x00\\x00\\x00\")) and 32 < len(data):\n            return True\n        return False\n\n    @staticmethod\n    def zip_extract(data: bytes) -> bytes:\n        \"\"\"Extracts zip payload after signature block\"\"\"\n        pubkey_length = struct.unpack(\"<I\", data[8:12])\n        signature_length = struct.unpack(\"<I\", data[12:16])\n        zip_offset = 16 + pubkey_length[0] + signature_length[0]\n        return data[zip_offset:]\n\n    def data_scan(\n            self,  #\n            data_provider: DataContentProvider,  #\n            depth: int,  #\n            recursive_limit_size: int) -> Optional[List[Candidate]]:\n        \"\"\"Tries cut-off header and use ZIP payload\"\"\"\n        try:\n            zip_data = CrxScanner.zip_extract(data_provider.data)\n            zip_content_provider = DataContentProvider(data=zip_data,\n                                                       file_path=data_provider.file_path,\n                                                       file_type=data_provider.file_type,\n                                                       info=f\"{data_provider.info}|CRX\")\n            new_limit = recursive_limit_size - len(zip_data)\n            crx_candidates = self.recursive_scan(zip_content_provider, depth, new_limit)\n            return crx_candidates\n        except Exception as exc:\n            logger.warning(exc)\n        return None\n"
  },
  {
    "path": "credsweeper/deep_scanner/csv_scanner.py",
    "content": "import csv\nimport io\nimport logging\nimport re\nfrom abc import ABC\nfrom typing import List, Optional, Dict, Any\n\nfrom credsweeper.common.constants import MAX_LINE_LENGTH\nfrom credsweeper.credentials.candidate import Candidate\nfrom credsweeper.deep_scanner.abstract_scanner import AbstractScanner\nfrom credsweeper.file_handler.data_content_provider import DataContentProvider\nfrom credsweeper.file_handler.struct_content_provider import StructContentProvider\n\nlogger = logging.getLogger(__name__)\n\n\nclass CsvScanner(AbstractScanner, ABC):\n    \"\"\"Implements CSV scanning\"\"\"\n\n    sniffer = csv.Sniffer()\n    # do not use space as separator to avoid hallucinations\n    DELIMITERS = \",;\\t|\\x1F\"\n\n    CSV_PATTERN = re.compile(b\"[^\\r\\n]{1,8000}[,;\\t|\\x1F][^\\r\\n]{1,8000}\")\n\n    @staticmethod\n    def match(data: bytes | bytearray) -> bool:\n        \"\"\"Check if data MAY be in CSV format\"\"\"\n        end_pos = data.find(b'\\n', 0, MAX_LINE_LENGTH)\n        if 0 > end_pos:\n            # classic Mac OS format\n            end_pos = data.find(b'\\r', 0, MAX_LINE_LENGTH)\n        if 0 <= end_pos:\n            if CsvScanner.CSV_PATTERN.match(data, pos=0, endpos=end_pos):\n                return True\n        return False\n\n    @classmethod\n    def get_structure(cls, text: str) -> List[Dict[str, Any]]:\n        \"\"\"Reads a text as CSV standard with guessed dialect\"\"\"\n        # windows style \\r\\n\n        first_line_end = text.find('\\r', 0, MAX_LINE_LENGTH)\n        line_terminator = \"\\r\\n\"\n        if 0 > first_line_end:\n            # unix style \\n\n            first_line_end = text.find('\\n', 0, MAX_LINE_LENGTH)\n            line_terminator = \"\\n\"\n            if 0 > first_line_end:\n                raise ValueError(f\"No suitable line end found in {MAX_LINE_LENGTH} symbols\")\n\n        first_line = text[:first_line_end]\n        dialect = cls.sniffer.sniff(first_line, delimiters=cls.DELIMITERS)\n        rows = []\n        reader = csv.DictReader(io.StringIO(text),\n                                delimiter=dialect.delimiter,\n                                lineterminator=line_terminator,\n                                strict=True)\n        # check the constant columns number for all rows\n        fields_number = sum(1 for x in reader.fieldnames if x is not None)\n        for row in reader:\n            if not isinstance(row, dict):\n                raise ValueError(f\"ERROR: wrong row '{row}'\")\n            if len(row) != fields_number or any(x is None for x in row.values()):\n                # None means no separator used\n                raise ValueError(f\"Different columns number in row '{row}' - mismatch {fields_number}\")\n            rows.append(row)\n        return rows\n\n    def data_scan(\n            self,  #\n            data_provider: DataContentProvider,  #\n            depth: int,  #\n            recursive_limit_size: int) -> Optional[List[Candidate]]:\n        \"\"\"Tries to scan each row as structure with column name in key\"\"\"\n        try:\n            if rows := self.get_structure(data_provider.text):\n                struct_content_provider = StructContentProvider(struct=rows,\n                                                                file_path=data_provider.file_path,\n                                                                file_type=data_provider.file_type,\n                                                                info=f\"{data_provider.info}|CSV\")\n                new_limit = recursive_limit_size - sum(len(x) for x in rows)\n                struct_candidates = self.structure_scan(struct_content_provider, depth, new_limit)\n                return struct_candidates\n        except Exception as csv_exc:\n            logger.debug(\"%s:%s\", data_provider.file_path, csv_exc)\n        return None\n"
  },
  {
    "path": "credsweeper/deep_scanner/deb_scanner.py",
    "content": "import logging\nimport struct\nfrom abc import ABC\nfrom typing import List, Optional, Generator, Tuple\n\nfrom credsweeper.common.constants import MIN_DATA_LEN, UTF_8\nfrom credsweeper.credentials.candidate import Candidate\nfrom credsweeper.deep_scanner.abstract_scanner import AbstractScanner\nfrom credsweeper.file_handler.data_content_provider import DataContentProvider\nfrom credsweeper.utils.util import Util\n\nlogger = logging.getLogger(__name__)\n\n\nclass DebScanner(AbstractScanner, ABC):\n    \"\"\"Implements deb (ar) scanning\"\"\"\n\n    __header_size = 60\n\n    @staticmethod\n    def match(data: bytes | bytearray) -> bool:\n        \"\"\"According https://en.wikipedia.org/wiki/Deb_(file_format)\"\"\"\n        if data.startswith(b\"!<arch>\\n\"):\n            return True\n        return False\n\n    @staticmethod\n    def walk_deb(data: bytes) -> Generator[Tuple[int, str, bytes], None, None]:\n        \"\"\"Processes sequence of DEB archive and yields offset, name and data\"\"\"\n        offset = 8  # b\"!<arch>\\n\"\n        data_limit = len(data) - DebScanner.__header_size\n        while offset <= data_limit:\n            _data = data[offset:offset + DebScanner.__header_size]\n            offset += DebScanner.__header_size\n            # basic header structure\n            _name, _, _size, __ = struct.unpack('16s32s10s2s', _data)\n            file_size = int(_size)\n            if MIN_DATA_LEN < file_size <= len(data) - offset:\n                _data = data[offset:offset + file_size]\n                yield offset, _name.decode(encoding=UTF_8).strip().rstrip('/'), _data\n            offset += file_size if 0 == 1 & file_size else file_size + 1\n\n    def data_scan(\n            self,  #\n            data_provider: DataContentProvider,  #\n            depth: int,  #\n            recursive_limit_size: int) -> Optional[List[Candidate]]:\n        \"\"\"Extracts data file from .ar (debian) archive and launches data_scan\"\"\"\n        try:\n            candidates: List[Candidate] = []\n            for offset, name, data in DebScanner.walk_deb(data_provider.data):\n                deb_content_provider = DataContentProvider(data=data,\n                                                           file_path=f\"{data_provider.file_path}\",\n                                                           file_type=Util.get_extension(name),\n                                                           info=f\"{data_provider.info}|DEB:0x{offset:x}:{name}\")\n                new_limit = recursive_limit_size - len(data)\n                deb_candidates = self.recursive_scan(deb_content_provider, depth, new_limit)\n                candidates.extend(deb_candidates)\n            return candidates\n        except Exception as exc:\n            logger.warning(exc)\n        return None\n"
  },
  {
    "path": "credsweeper/deep_scanner/deep_scanner.py",
    "content": "import logging\nimport re\nfrom typing import List, Any, Tuple, Union, Dict\n\nfrom credsweeper.common.constants import MIN_DATA_LEN\nfrom credsweeper.config.config import Config\nfrom credsweeper.deep_scanner.byte_scanner import ByteScanner\nfrom credsweeper.deep_scanner.bzip2_scanner import Bzip2Scanner\nfrom credsweeper.deep_scanner.crx_scanner import CrxScanner\nfrom credsweeper.deep_scanner.csv_scanner import CsvScanner\nfrom credsweeper.deep_scanner.deb_scanner import DebScanner\nfrom credsweeper.deep_scanner.docx_scanner import DocxScanner\nfrom credsweeper.deep_scanner.eml_scanner import EmlScanner\nfrom credsweeper.deep_scanner.encoder_scanner import EncoderScanner\nfrom credsweeper.deep_scanner.gzip_scanner import GzipScanner\nfrom credsweeper.deep_scanner.html_scanner import HtmlScanner\nfrom credsweeper.deep_scanner.jclass_scanner import JclassScanner\nfrom credsweeper.deep_scanner.jks_scanner import JksScanner\nfrom credsweeper.deep_scanner.lang_scanner import LangScanner\nfrom credsweeper.deep_scanner.lzma_scanner import LzmaScanner\nfrom credsweeper.deep_scanner.mxfile_scanner import MxfileScanner\nfrom credsweeper.deep_scanner.patch_scanner import PatchScanner\nfrom credsweeper.deep_scanner.pdf_scanner import PdfScanner\nfrom credsweeper.deep_scanner.pkcs_scanner import PkcsScanner\nfrom credsweeper.deep_scanner.png_scanner import PngScanner\nfrom credsweeper.deep_scanner.pptx_scanner import PptxScanner\nfrom credsweeper.deep_scanner.rpm_scanner import RpmScanner\nfrom credsweeper.deep_scanner.rtf_scanner import RtfScanner\nfrom credsweeper.deep_scanner.sqlite3_scanner import Sqlite3Scanner\nfrom credsweeper.deep_scanner.strings_scanner import StringsScanner\nfrom credsweeper.deep_scanner.tar_scanner import TarScanner\nfrom credsweeper.deep_scanner.tmx_scanner import TmxScanner\nfrom credsweeper.deep_scanner.xlsx_scanner import XlsxScanner\nfrom credsweeper.deep_scanner.xml_scanner import XmlScanner\nfrom credsweeper.deep_scanner.zip_scanner import ZipScanner\nfrom credsweeper.deep_scanner.zlib_scanner import ZlibScanner\nfrom credsweeper.file_handler.descriptor import Descriptor\nfrom credsweeper.scanner.scanner import Scanner\nfrom credsweeper.utils.util import Util\n\nlogger = logging.getLogger(__name__)\n\n\nclass DeepScanner(\n    ByteScanner,  #\n    Bzip2Scanner,  #\n    CrxScanner,  #\n    CsvScanner,  #\n    DocxScanner,  #\n    EncoderScanner,  #\n    GzipScanner,  #\n    HtmlScanner,  #\n    JclassScanner,  #\n    JksScanner,  #\n    LangScanner,  #\n    LzmaScanner,  #\n    MxfileScanner,  #\n    EmlScanner,  #\n    PatchScanner,  #\n    PdfScanner,  #\n    PkcsScanner,  #\n    PngScanner,  #\n    PptxScanner,  #\n    RtfScanner,  #\n    RpmScanner,  #\n    Sqlite3Scanner,  #\n    StringsScanner,  #\n    TarScanner,  #\n    DebScanner,  #\n    XmlScanner,  #\n    XlsxScanner,  #\n    ZipScanner,  #\n    ZlibScanner,  #\n):  # yapf: disable\n    \"\"\"Advanced scanner with recursive exploring of data\"\"\"\n\n    def __init__(self, config: Config, scanner: Scanner) -> None:\n        \"\"\"Initialize Advanced credential scanner.\n\n        Args:\n            scanner: CredSweeper scanner object\n            config: dictionary variable, stores analyzer features\n        \"\"\"\n        self.__config = config\n        self.__scanner = scanner\n\n    @property\n    def config(self) -> Config:\n        return self.__config\n\n    @property\n    def scanner(self) -> Scanner:\n        return self.__scanner\n\n    # manually crafted dict to detect a media format with first byte, prefix and optionally pattern\n    MEDIA_PATTERNS: Dict[int, List[Tuple[bytes, re.Pattern]]] = {\n        0x00: [\n            # JPEG2000\n            (b\"\\x00\\x00\\x00\\x0C\\x6A\\x50\\x20\\x20\\x0D\\x0A\\x87\\x0A\", None),\n            # ICO\n            (b\"\\x00\\x00\\x01\\x00\", None),\n            # TTF\n            (b\"\\x00\\x01\\x00\\x00\\x00\", None),\n            # 3gp\n            (b\"\\x00\\x00\\x00\", re.compile(b\"\\x00\\x00\\x00.ftyp3g\")),\n            # GITCRYPT is not a media but added to use pedantic scan for strings and reduce extra warnings\n            (b\"\\x00GITCRYPT\\x00\", None),\n        ],\n        0x1A: [\n            # Matroska\n            (b\"\\x1A\\x45\\xDF\\xA3\", None),\n        ],\n        0x7F: [\n            # ELF signature - to quick pass for strings scanner\n            (b\"\\x7FELF\", re.compile(b\"\\x7FELF[\\x01\\x02][\\x01\\x02]\\x01[\\x00-\\x12]\"))\n        ],\n        0x89: [\n            # PNG - can store text chunks inside\n            (b\"\\x89PNG\\x0D\\x0A\\x1A\\x0A\", None),\n        ],\n        0xFF: [\n            # JPEG or MPEG-1 Layer 3\n            (b\"\\xFF\", re.compile(b\"\\xFF(\\xD8\\xFF[\\xDB\\xEE\\xE1\\xE0\\x51]|[\\xFB\\xF3\\xF2])\")),\n        ],\n        ord('8'): [\n            # PSD\n            (b\"8BPS\\x00\\x01\\x00\\x00\\x00\\x00\\x00\\x00\", None),\n            # PSB\n            (b\"8BPS\\x00\\x02\\x00\\x00\\x00\\x00\\x00\\x00\", None),\n        ],\n        ord('B'): [\n            # BMP\n            (b\"BM\", re.compile(b\"BM.{2}\\x00{4}\")),\n        ],\n        ord('G'): [\n            # GIF\n            (b\"GIF8\", re.compile(b\"GIF8[79]a[^\\x00-\\x08\\x0C\\x0E\\x1F\\x80-\\xFF]{0,4096}[\\x00-\\x08\\x0C\\x0E\\x1F\\x80-\\xFF]\")\n             ),\n        ],\n        ord('I'): [\n            # TIFF little endian\n            (b\"II\", re.compile(b\"II[+*]\\x00[^\\x00-\\x08\\x0C\\x0E\\x1F\\x80-\\xFF]{0,4096}[\\x00-\\x08\\x0C\\x0E\\x1F\\x80-\\xFF]\")),\n            # ID2v3 for various media (e.g. MP3)\n            (b\"ID3\\x03\\x00\\x00\\x00\", None),\n        ],\n        ord('M'): [\n            # TIFF big endian\n            (b\"MM\", re.compile(b\"MM\\x00[+*][^\\x00-\\x08\\x0C\\x0E\\x1F\\x80-\\xFF]{0,4096}[\\x00-\\x08\\x0C\\x0E\\x1F\\x80-\\xFF]\")),\n        ],\n        ord('O'): [\n            # OGG\n            (b\"OggS\", re.compile(b\"OggS[^\\x00-\\x08\\x0C\\x0E\\x1F\\x80-\\xFF]{0,4096}[\\x00-\\x08\\x0C\\x0E\\x1F\\x80-\\xFF]\")),\n            # OpenType font file\n            (b\"OTTO\\x00\",\n             re.compile(b\"OTTO\\x00[^\\x00-\\x08\\x0C\\x0E\\x1F\\x80-\\xFF]{0,4096}[\\x00-\\x08\\x0C\\x0E\\x1F\\x80-\\xFF]\")),\n        ],\n        ord('R'): [\n            # RIFF va\n            (b\"RIF\",\n             re.compile(b\"RIF[FX].{4}[ 0-9A-Za-z]{4}\"\n                        b\"[^\\x00-\\x08\\x0C\\x0E\\x1F\\x80-\\xFF]{0,4096}[\\x00-\\x08\\x0C\\x0E\\x1F\\x80-\\xFF]\")),\n        ],\n        ord('X'): [\n            # Macromedia\n            (b\"XFIR\",\n             re.compile(b\"XFIR.{4}[ 0-9A-Za-z]{4}\"\n                        b\"[^\\x00-\\x08\\x0C\\x0E\\x1F\\x80-\\xFF]{0,4096}[\\x00-\\x08\\x0C\\x0E\\x1F\\x80-\\xFF]\")),\n        ],\n        ord('f'): [\n            # mp4\n            (b\"ftyp\",\n             re.compile(b\"ftyp(isom|MSNV)[^\\x00-\\x08\\x0C\\x0E\\x1F\\x80-\\xFF]{0,4096}[\\x00-\\x08\\x0C\\x0E\\x1F\\x80-\\xFF]\")),\n        ],\n        ord('g'): [\n            # gimp\n            (b\"gimp xcf\",\n             re.compile(b\"gimp xcf (file|v001|v002)\\x00\"\n                        b\"[^\\x00-\\x08\\x0C\\x0E\\x1F\\x80-\\xFF]{0,4096}[\\x00-\\x08\\x0C\\x0E\\x1F\\x80-\\xFF]\")),\n        ],\n        ord('w'): [\n            # WOFF 1.0, 2.0\n            (b\"wOF\", re.compile(b\"wOF[2F][^\\x00-\\x08\\x0C\\x0E\\x1F\\x80-\\xFF]{0,4096}[\\x00-\\x08\\x0C\\x0E\\x1F\\x80-\\xFF]\")),\n        ],\n    }\n\n    @staticmethod\n    def is_media(data: Union[bytes, bytearray]) -> bool:\n        \"\"\"Returns True if well-known media format found\"\"\"\n        if patterns := DeepScanner.MEDIA_PATTERNS.get(data[0]):\n            for prefix, pattern in patterns:\n                # use prefix for speed-up total search\n                if prefix and data.startswith(prefix) and (pattern is None or pattern.match(data)):\n                    return True\n        return False\n\n    @staticmethod\n    def get_deep_scanners(data: bytes, descriptor: Descriptor, depth: int) -> Tuple[List[Any], List[Any]]:\n        \"\"\"Returns possibly scan methods for the data depends on content and fallback scanners\"\"\"\n        deep_scanners: List[Any] = []\n        fallback_scanners: List[Any] = []\n        if not data or not isinstance(data, (bytes, bytearray)) or len(data) < MIN_DATA_LEN:\n            # Guard clause: reject empty or invalid input data early\n            pass\n        elif ZipScanner.match(data):\n            if 0 < depth:\n                deep_scanners.append(ZipScanner)\n            # probably, there might be a docx, xlsx and so on.\n            # It might be scanned with text representation in third-party libraries.\n            if descriptor.extension in (\".xlsx\", \".ods\"):\n                deep_scanners.append(XlsxScanner)\n            else:\n                fallback_scanners.append(XlsxScanner)\n            if \".docx\" == descriptor.extension:\n                deep_scanners.append(DocxScanner)\n            else:\n                fallback_scanners.append(DocxScanner)\n            if \".pptx\" == descriptor.extension:\n                deep_scanners.append(PptxScanner)\n            else:\n                fallback_scanners.append(PptxScanner)\n        elif XlsxScanner.match(data):\n            if \".xls\" == descriptor.extension:\n                deep_scanners.append(XlsxScanner)\n            else:\n                fallback_scanners.append(XlsxScanner)\n        elif Bzip2Scanner.match(data):\n            if 0 < depth:\n                deep_scanners.append(Bzip2Scanner)\n        elif LzmaScanner.match(data):\n            if 0 < depth:\n                deep_scanners.append(LzmaScanner)\n        elif TarScanner.match(data):\n            if 0 < depth:\n                deep_scanners.append(TarScanner)\n        elif DebScanner.match(data):\n            if 0 < depth:\n                deep_scanners.append(DebScanner)\n        elif GzipScanner.match(data):\n            if 0 < depth:\n                deep_scanners.append(GzipScanner)\n        elif PdfScanner.match(data):\n            deep_scanners.append(PdfScanner)\n        elif PngScanner.match(data):\n            deep_scanners.append(PngScanner)\n        elif RpmScanner.match(data):\n            if 0 < depth:\n                deep_scanners.append(RpmScanner)\n        elif JclassScanner.match(data):\n            deep_scanners.append(JclassScanner)\n        elif JksScanner.match(data):\n            deep_scanners.append(JksScanner)\n        elif Sqlite3Scanner.match(data):\n            if 0 < depth:\n                deep_scanners.append(Sqlite3Scanner)\n        elif PkcsScanner.match(data):\n            deep_scanners.append(PkcsScanner)\n        elif CrxScanner.match(data):\n            if 0 < depth:\n                deep_scanners.append(CrxScanner)\n        elif RtfScanner.match(data):\n            deep_scanners.append(RtfScanner)\n            fallback_scanners.append(ByteScanner)\n        elif XmlScanner.match(data):\n            if HtmlScanner.match(data):\n                deep_scanners.append(HtmlScanner)\n                deep_scanners.append(XmlScanner)\n                fallback_scanners.append(ByteScanner)\n            elif MxfileScanner.match(data):\n                deep_scanners.append(MxfileScanner)\n                deep_scanners.append(XmlScanner)\n                fallback_scanners.append(ByteScanner)\n            elif TmxScanner.match(data):\n                deep_scanners.append(TmxScanner)\n                fallback_scanners.append(XmlScanner)\n                fallback_scanners.append(ByteScanner)\n            else:\n                deep_scanners.append(XmlScanner)\n                fallback_scanners.append(ByteScanner)\n        elif EmlScanner.match(data):\n            if descriptor.extension in (\".eml\", \".mht\"):\n                deep_scanners.append(EmlScanner)\n            else:\n                if 0 < depth:\n                    # a formal patch looks like an eml\n                    deep_scanners.append(PatchScanner)\n                fallback_scanners.append(EmlScanner)\n            fallback_scanners.append(ByteScanner)\n        elif DeepScanner.is_media(data):\n            # only StringsScanner may be applied for the formats effective\n            if 0 < depth:\n                fallback_scanners.append(StringsScanner)\n        elif not Util.is_binary(data):\n            # keep ByteScanner first to apply real value position if possible\n            deep_scanners.append(ByteScanner)\n            if 0 < depth:\n                deep_scanners.append(PatchScanner)\n                deep_scanners.append(LangScanner)\n                if CsvScanner.match(data):\n                    deep_scanners.append(CsvScanner)\n                if EncoderScanner.match(data):\n                    deep_scanners.append(EncoderScanner)\n                if ZlibScanner.match(data):\n                    deep_scanners.append(ZlibScanner)\n        else:\n            if 0 < depth:\n                if ZlibScanner.match(data):\n                    deep_scanners.append(ZlibScanner)\n                    fallback_scanners.append(StringsScanner)\n                else:\n                    deep_scanners.append(StringsScanner)\n            if not descriptor.info.endswith(\"|BASE64\"):\n                logger.warning(\"Cannot apply a deep scanner for type %s prefix %s %d\", descriptor, repr(data[:32]),\n                               len(data))\n        return deep_scanners, fallback_scanners\n"
  },
  {
    "path": "credsweeper/deep_scanner/docx_scanner.py",
    "content": "import io\nimport logging\nfrom abc import ABC\nfrom typing import List, Optional\n\nimport docx\nfrom docx.document import Document\nfrom docx.oxml import CT_P, CT_Tbl, CT_SectPr, CT_TcPr\nfrom docx.section import Section, _Header, _Footer\nfrom docx.table import _Cell, Table\nfrom docx.text.paragraph import Paragraph\nfrom lxml.etree import _Element\n\nfrom credsweeper.credentials.candidate import Candidate\nfrom credsweeper.deep_scanner.abstract_scanner import AbstractScanner\nfrom credsweeper.file_handler.data_content_provider import DataContentProvider\nfrom credsweeper.file_handler.string_content_provider import StringContentProvider\n\nlogger = logging.getLogger(__name__)\n\n\nclass DocxScanner(AbstractScanner, ABC):\n    \"\"\"Implements docx scanning\"\"\"\n\n    @staticmethod\n    def _iter_block_items(block):\n        if isinstance(block, Paragraph):\n            yield block\n            return\n        if isinstance(block, (_Header, _Footer)):\n            for table in block.tables:\n                for row in table.rows:\n                    for cell in row.cells:\n                        yield from DocxScanner._iter_block_items(cell)\n            yield from block.paragraphs\n            return\n        if isinstance(block, Section):\n            yield from DocxScanner._iter_block_items(block.header)\n            yield from DocxScanner._iter_block_items(block.footer)\n            return\n\n        if isinstance(block, Document):\n            parent_elm = block.element.body\n        elif isinstance(block, _Cell):\n            parent_elm = block._tc  # pylint: disable=W0212\n        else:\n            raise ValueError(f\"unrecognised:{type(block)}\")\n\n        for child in parent_elm.iterchildren():\n            if isinstance(child, CT_P):\n                yield Paragraph(child, block)\n            elif isinstance(child, CT_Tbl):\n                table = Table(child, block)\n                for row in table.rows:\n                    for cell in row.cells:\n                        yield from DocxScanner._iter_block_items(cell)\n            elif isinstance(child, (CT_TcPr, CT_SectPr)):\n                # config\n                pass\n            elif isinstance(child, _Element):\n                yield child\n            else:\n                logger.warning(\"Unknown:%s\", type(child))\n\n    def data_scan(\n            self,  #\n            data_provider: DataContentProvider,  #\n            depth: int,  #\n            recursive_limit_size: int) -> Optional[List[Candidate]]:\n        \"\"\"Tries to scan DOCX text with splitting by lines\"\"\"\n        try:\n            docx_lines: List[str] = []\n\n            doc = docx.Document(io.BytesIO(data_provider.data))\n            for block in self._iter_block_items(doc):\n                if block.text:\n                    docx_lines.append(block.text)\n\n            header_lines_set = set()\n            footer_lines_set = set()\n            for section in doc.sections:\n                for header in [section.first_page_header, section.even_page_header, section.header]:\n                    for block in self._iter_block_items(header):\n                        if block.text:\n                            header_lines_set.add(block.text)\n                for footer in [section.first_page_footer, section.even_page_footer, section.footer]:\n                    for block in self._iter_block_items(footer):\n                        if block.text:\n                            footer_lines_set.add(block.text)\n            docx_lines.extend(sorted(list(header_lines_set)))\n            docx_lines.extend(sorted(list(footer_lines_set)))\n\n            string_data_provider = StringContentProvider(lines=docx_lines,\n                                                         file_path=data_provider.file_path,\n                                                         file_type=data_provider.file_type,\n                                                         info=f\"{data_provider.info}|DOCX\")\n            docx_candidates = self.scanner.scan(string_data_provider)\n            return docx_candidates\n\n        except Exception as docx_exc:\n            logger.warning(\"%s:%s\", data_provider.file_path, docx_exc)\n        return None\n"
  },
  {
    "path": "credsweeper/deep_scanner/eml_scanner.py",
    "content": "import email\nimport logging\nfrom abc import ABC\nfrom typing import List, Optional\n\nfrom credsweeper.credentials.candidate import Candidate\nfrom credsweeper.deep_scanner.abstract_scanner import AbstractScanner\nfrom credsweeper.file_handler.byte_content_provider import ByteContentProvider\nfrom credsweeper.file_handler.data_content_provider import DataContentProvider\nfrom credsweeper.file_handler.string_content_provider import StringContentProvider\n\nlogger = logging.getLogger(__name__)\n\n\nclass EmlScanner(AbstractScanner, ABC):\n    \"\"\"Implements eml scanning\"\"\"\n\n    @staticmethod\n    def match(data: bytes | bytearray) -> bool:\n        \"\"\"According to https://datatracker.ietf.org/doc/html/rfc822 lookup the fields: Date, From, To or Subject\"\"\"\n        if (b\"\\nDate:\" in data or data.startswith(b\"Date:\")) \\\n                and (b\"\\nFrom:\" in data or data.startswith(b\"From:\")) \\\n                and (b\"\\nTo:\" in data or data.startswith(b\"To:\")) \\\n                and (b\"\\nSubject:\" in data or data.startswith(b\"Subject:\")):\n            return True\n        return False\n\n    def data_scan(\n            self,  #\n            data_provider: DataContentProvider,  #\n            depth: int,  #\n            recursive_limit_size: int) -> Optional[List[Candidate]]:\n        \"\"\"Tries to scan EML with text representation\"\"\"\n        try:\n            candidates: List[Candidate] = []\n            msg = email.message_from_bytes(data_provider.data)\n            for part in msg.walk():\n                content_type = part.get_content_type()\n                body = part.get_payload(decode=True)\n\n                if not isinstance(body, (bytes, str)):\n                    continue\n                if \"text/plain\" == content_type:\n                    eml_text_data_provider = ByteContentProvider(\n                        content=(body if isinstance(body, bytes) else body.encode()),\n                        file_path=data_provider.file_path,\n                        file_type=data_provider.file_type,\n                        info=f\"{data_provider.info}|EML-TEXT\")\n                    eml_candidates = self.scanner.scan(eml_text_data_provider)\n                    candidates.extend(eml_candidates)\n                else:\n                    x_data_provider = DataContentProvider(data=(body if isinstance(body, bytes) else body.encode()),\n                                                          file_path=data_provider.file_path,\n                                                          file_type=data_provider.file_type,\n                                                          info=f\"{data_provider.info}|EML-DATA\")\n                    new_limit = recursive_limit_size - len(body)\n                    if \"text/html\" == content_type and x_data_provider.represent_as_html(\n                            depth, new_limit, self.scanner.keywords_required_substrings_check):\n                        string_data_provider = StringContentProvider(lines=x_data_provider.lines,\n                                                                     line_numbers=x_data_provider.line_numbers,\n                                                                     file_path=data_provider.file_path,\n                                                                     file_type=data_provider.file_type,\n                                                                     info=f\"{data_provider.info}|EML-HTML\")\n                        html_candidates = self.scanner.scan(string_data_provider)\n                        candidates.extend(html_candidates)\n                    elif content_type.startswith(\"application\"):\n                        x_candidates = self.recursive_scan(x_data_provider, depth, new_limit)\n                        candidates.extend(x_candidates)\n                    else:\n                        logger.warning(\"%s:%s:%s cannot be supported\", data_provider.file_path, content_type,\n                                       type(body))\n            return candidates\n        except Exception as eml_exc:\n            logger.warning(\"%s:%s\", data_provider.file_path, eml_exc)\n        return None\n"
  },
  {
    "path": "credsweeper/deep_scanner/encoder_scanner.py",
    "content": "import contextlib\nimport logging\nimport re\nfrom abc import ABC\nfrom typing import List, Optional\n\nfrom credsweeper.common.constants import MAX_LINE_LENGTH\nfrom credsweeper.credentials.candidate import Candidate\nfrom credsweeper.deep_scanner.abstract_scanner import AbstractScanner\nfrom credsweeper.file_handler.data_content_provider import DataContentProvider\nfrom credsweeper.utils.util import Util\n\nlogger = logging.getLogger(__name__)\n\n# 8 bytes are encoded to 12 symbols 12345678 -> MTIzNDU2Nzg=\nMIN_ENCODED_DATA_LEN = 12\n\n\nclass EncoderScanner(AbstractScanner, ABC):\n    \"\"\"Implements recursive iteration when data might be encoded from base64\"\"\"\n\n    BASE64_PATTERN = re.compile(\n        rb\"(\\xFF\\xFE|\\xFE\\xFF)?(\"\n        rb\"(?:(?P<a>[A-Z])|(?P<b>[a-z])|(?P<c>[0-9/+])|[\\s\\x00\\\\])+(?(a)(?(b)(?(c)(=+|$)|(?!x)x)|(?!x)x)|(?!x)x)|\"\n        rb\"(?:(?P<e>[A-Z])|(?P<f>[a-z])|(?P<g>[0-9_-])|[\\s\\x00\\\\])+(?(e)(?(f)(?(g)(=+|$)|(?!x)x)|(?!x)x)|(?!x)x))\")\n\n    @staticmethod\n    def match(data: bytes | bytearray) -> bool:\n        \"\"\"Check if data MAY be base64 encoded with whitespaces (escaping too)\"\"\"\n        if len(data) >= MIN_ENCODED_DATA_LEN \\\n                and EncoderScanner.BASE64_PATTERN.match(data, pos=0, endpos=MAX_LINE_LENGTH):\n            return True\n        return False\n\n    @staticmethod\n    def decode(text: str) -> Optional[bytes]:\n        \"\"\"Decodes base64 text with cleaning whitespaces. Returns None when the decoding fails\"\"\"\n        with contextlib.suppress(Exception):\n            return Util.decode_base64(text=Util.PEM_CLEANING_PATTERN.sub(r'', text).replace('\\\\', ''),\n                                      padding_safe=True,\n                                      urlsafe_detect=True)\n        return None\n\n    def data_scan(\n            self,  #\n            data_provider: DataContentProvider,  #\n            depth: int,  #\n            recursive_limit_size: int) -> Optional[List[Candidate]]:\n        \"\"\"Tries to decode data from base64 encode to bytes and scan as bytes again\"\"\"\n        if decoded := EncoderScanner.decode(data_provider.text):\n            decoded_data_provider = DataContentProvider(data=decoded,\n                                                        file_path=data_provider.file_path,\n                                                        file_type=data_provider.file_type,\n                                                        info=f\"{data_provider.info}|BASE64\")\n            new_limit = recursive_limit_size - len(decoded_data_provider.data)\n            return self.recursive_scan(decoded_data_provider, depth, new_limit)\n        return None\n"
  },
  {
    "path": "credsweeper/deep_scanner/gzip_scanner.py",
    "content": "import gzip\nimport io\nimport logging\nfrom abc import ABC\nfrom pathlib import Path\nfrom typing import List, Optional\n\nfrom credsweeper.credentials.candidate import Candidate\nfrom credsweeper.deep_scanner.abstract_scanner import AbstractScanner\nfrom credsweeper.file_handler.data_content_provider import DataContentProvider\nfrom credsweeper.utils.util import Util\n\nlogger = logging.getLogger(__name__)\n\n\nclass GzipScanner(AbstractScanner, ABC):\n    \"\"\"Realises gzip scanning\"\"\"\n\n    @staticmethod\n    def match(data: bytes | bytearray) -> bool:\n        \"\"\"According https://www.rfc-editor.org/rfc/rfc1952\"\"\"\n        if data.startswith(b\"\\x1F\\x8B\\x08\"):\n            return True\n        return False\n\n    def data_scan(\n            self,  #\n            data_provider: DataContentProvider,  #\n            depth: int,  #\n            recursive_limit_size: int) -> Optional[List[Candidate]]:\n        \"\"\"Extracts data from gzip archive and launches data_scan\"\"\"\n        try:\n            with gzip.open(io.BytesIO(data_provider.data)) as f:\n                file_path = Path(data_provider.file_path)\n                new_path = file_path.as_posix()\n                if \".gz\" == file_path.suffix:\n                    new_path = new_path[:-3]\n                gzip_content_provider = DataContentProvider(data=f.read(),\n                                                            file_path=new_path,\n                                                            file_type=Util.get_extension(new_path),\n                                                            info=f\"{data_provider.info}|GZIP:{new_path}\")\n                new_limit = recursive_limit_size - len(gzip_content_provider.data)\n                gzip_candidates = self.recursive_scan(gzip_content_provider, depth, new_limit)\n                return gzip_candidates\n        except Exception as gzip_exc:\n            logger.warning(\"%s:%s\", data_provider.file_path, gzip_exc)\n        return None\n"
  },
  {
    "path": "credsweeper/deep_scanner/html_scanner.py",
    "content": "import logging\nfrom abc import ABC\nfrom typing import List, Optional\n\nfrom credsweeper.common.constants import MAX_LINE_LENGTH\nfrom credsweeper.credentials.candidate import Candidate\nfrom credsweeper.deep_scanner.abstract_scanner import AbstractScanner\nfrom credsweeper.file_handler.data_content_provider import DataContentProvider\nfrom credsweeper.file_handler.string_content_provider import StringContentProvider\n\nlogger = logging.getLogger(__name__)\n\n\nclass HtmlScanner(AbstractScanner, ABC):\n    \"\"\"Implements html scanning if possible\"\"\"\n\n    @staticmethod\n    def match(data: bytes | bytearray) -> bool:\n        \"\"\"Used to detect html format. Suppose, invocation of is_xml() was True before.\"\"\"\n        for opening_tag, closing_tag in [(b\"<html\", b\"</html>\"), (b\"<body\", b\"</body>\"), (b\"<table\", b\"</table>\"),\n                                         (b\"<p>\", b\"</p>\"), (b\"<span>\", b\"</span>\"), (b\"<div>\", b\"</div>\"),\n                                         (b\"<li>\", b\"</li>\"), (b\"<ol>\", b\"</ol>\"), (b\"<ul>\", b\"</ul>\"),\n                                         (b\"<th>\", b\"</th>\"), (b\"<tr>\", b\"</tr>\"), (b\"<td>\", b\"</td>\")]:\n            opening_pos = data.find(opening_tag, 0, MAX_LINE_LENGTH)\n            if 0 <= opening_pos < data.find(closing_tag, opening_pos):\n                # opening and closing tags were found - suppose it is an HTML\n                return True\n        return False\n\n    def data_scan(\n            self,  #\n            data_provider: DataContentProvider,  #\n            depth: int,  #\n            recursive_limit_size: int) -> Optional[List[Candidate]]:\n        \"\"\"Tries to represent data as html text and scan as text lines\"\"\"\n        if result := data_provider.represent_as_html(depth, recursive_limit_size,\n                                                     self.scanner.keywords_required_substrings_check):\n            string_data_provider = StringContentProvider(lines=data_provider.lines,\n                                                         line_numbers=data_provider.line_numbers,\n                                                         file_path=data_provider.file_path,\n                                                         file_type=data_provider.file_type,\n                                                         info=f\"{data_provider.info}|HTML\")\n            return self.scanner.scan(string_data_provider)\n        return None if result is None else []\n"
  },
  {
    "path": "credsweeper/deep_scanner/jclass_scanner.py",
    "content": "import io\nimport logging\nimport struct\nfrom abc import ABC\nfrom typing import List, Optional\n\nfrom credsweeper.common.constants import UTF_8\nfrom credsweeper.credentials.candidate import Candidate\nfrom credsweeper.deep_scanner.abstract_scanner import AbstractScanner\nfrom credsweeper.file_handler.data_content_provider import DataContentProvider\nfrom credsweeper.file_handler.struct_content_provider import StructContentProvider\n\nlogger = logging.getLogger(__name__)\n\n\nclass JclassScanner(AbstractScanner, ABC):\n    \"\"\"Implements java .class scanning\"\"\"\n\n    @staticmethod\n    def match(data: bytes | bytearray) -> bool:\n        \"\"\"According https://en.wikipedia.org/wiki/List_of_file_signatures - java class\"\"\"\n        if data.startswith(b\"\\xCA\\xFE\\xBA\\xBE\"):\n            return True\n        return False\n\n    @staticmethod\n    def u2(stream: io.BytesIO) -> int:\n        \"\"\"Extracts unsigned 16 bit big-endian\"\"\"\n        return int(struct.unpack(\">H\", stream.read(2))[0])\n\n    @staticmethod\n    def get_utf8_constants(stream: io.BytesIO) -> List[str]:\n        \"\"\"Extracts only Utf8 constants from java ClassFile\"\"\"\n        result = []\n        # actual number of items is one less!\n        items_counter = JclassScanner.u2(stream) - 1\n        while 0 < items_counter:\n            items_counter -= 1\n            # uint8\n            tag = int(stream.read(1)[0])\n            if 1 == tag:\n                # UTF-8 string in bytes may be bigger than in characters\n                length = JclassScanner.u2(stream)\n                data = stream.read(int(length))\n                value = data.decode(encoding=UTF_8, errors=\"replace\")\n                result.append(value)\n            elif tag in (3, 4, 9, 10, 11, 12, 18):\n                _ = stream.read(4)\n            elif tag in (7, 8, 16):\n                _ = stream.read(2)\n            elif tag in (5, 6):\n                _ = stream.read(8)\n                # long and double types use two indexes\n                items_counter -= 1\n            elif 15 == tag:\n                _ = stream.read(3)\n            else:\n                logger.warning(\"Unknown tag %s\", tag)\n                break\n        return result\n\n    def data_scan(\n            self,  #\n            data_provider: DataContentProvider,  #\n            depth: int,  #\n            recursive_limit_size: int) -> Optional[List[Candidate]]:\n        \"\"\"Extracts data from binary\"\"\"\n        try:\n            stream = io.BytesIO(data_provider.data)\n            stream.read(4)  # magic\n            minor = JclassScanner.u2(stream)\n            major = JclassScanner.u2(stream)\n            constants = JclassScanner.get_utf8_constants(stream)\n            struct_content_provider = StructContentProvider(struct=constants,\n                                                            file_path=data_provider.file_path,\n                                                            file_type=data_provider.file_type,\n                                                            info=f\"{data_provider.info}|Java.{major}.{minor}\")\n            new_limit = recursive_limit_size - sum(len(x) for x in constants)\n            candidates = self.structure_scan(struct_content_provider, depth, new_limit)\n            return candidates\n        except Exception as jclass_exc:\n            logger.warning(\"%s:%s\", data_provider.file_path, jclass_exc)\n        return None\n"
  },
  {
    "path": "credsweeper/deep_scanner/jks_scanner.py",
    "content": "import logging\nfrom abc import ABC\nfrom typing import List, Optional\n\nimport jks\n\nfrom credsweeper.common.constants import Severity, Confidence\nfrom credsweeper.credentials.candidate import Candidate\nfrom credsweeper.deep_scanner.abstract_scanner import AbstractScanner\nfrom credsweeper.file_handler.data_content_provider import DataContentProvider\n\nlogger = logging.getLogger(__name__)\n\n\nclass JksScanner(AbstractScanner, ABC):\n    \"\"\"Implements jks scanning\"\"\"\n\n    @staticmethod\n    def match(data: bytes | bytearray) -> bool:\n        \"\"\"According https://en.wikipedia.org/wiki/List_of_file_signatures - jks\"\"\"\n        if data.startswith(b\"\\xFE\\xED\\xFE\\xED\"):\n            return True\n        return False\n\n    def data_scan(\n            self,  #\n            data_provider: DataContentProvider,  #\n            depth: int,  #\n            recursive_limit_size: int) -> Optional[List[Candidate]]:\n        \"\"\"Tries to scan JKS to open with standard password\"\"\"\n        for pw_probe in self.config.bruteforce_list:\n            value = repr(pw_probe)\n            try:\n                keystore = jks.KeyStore.loads(data_provider.data, pw_probe, try_decrypt_keys=True)\n                # the password probe has passed, it will be the value\n                if keystore.private_keys or keystore.secret_keys:\n                    severity = Severity.HIGH\n                    confidence = Confidence.STRONG\n                    info = f\"{data_provider.info}|JKS:default password\"\n                    rule_name = f\"JKS private key with password {value}\"\n                else:\n                    severity = Severity.LOW\n                    confidence = Confidence.WEAK\n                    info = f\"{data_provider.info}|JKS:sensitive data\"\n                    rule_name = f\"JKS sensitive data with password {value}\"\n                candidate = Candidate.get_dummy_candidate(\n                    self.config,  #\n                    data_provider.file_path,  #\n                    data_provider.file_type,  #\n                    info,  #\n                    rule_name)\n                candidate.severity = severity\n                candidate.confidence = confidence\n                candidate.line_data_list[0].line = candidate.line_data_list[0].value = value\n                candidate.line_data_list[0].value_start = 0\n                candidate.line_data_list[0].value_end = len(value)\n                return [candidate]\n            except Exception as jks_exc:\n                logger.debug(\"%s:%s:%s\", data_provider.file_path, pw_probe, jks_exc)\n        return None\n"
  },
  {
    "path": "credsweeper/deep_scanner/lang_scanner.py",
    "content": "import logging\nfrom abc import ABC\nfrom typing import List, Optional\n\nfrom credsweeper.credentials.candidate import Candidate\nfrom credsweeper.deep_scanner.abstract_scanner import AbstractScanner\nfrom credsweeper.file_handler.data_content_provider import DataContentProvider\nfrom credsweeper.file_handler.struct_content_provider import StructContentProvider\n\nlogger = logging.getLogger(__name__)\n\n\nclass LangScanner(AbstractScanner, ABC):\n    \"\"\"Implements scanning of data if it is a script of some markup language\"\"\"\n\n    def data_scan(\n            self,  #\n            data_provider: DataContentProvider,  #\n            depth: int,  #\n            recursive_limit_size: int) -> Optional[List[Candidate]]:\n        \"\"\"Tries to represent data as markup language and scan as structure\"\"\"\n        if result := data_provider.represent_as_structure():\n            struct_data_provider = StructContentProvider(struct=data_provider.structure,\n                                                         file_path=data_provider.file_path,\n                                                         file_type=data_provider.file_type,\n                                                         info=f\"{data_provider.info}|STRUCT\")\n            return self.structure_scan(struct_data_provider, depth, recursive_limit_size)\n        return None if result is None else []\n"
  },
  {
    "path": "credsweeper/deep_scanner/lzma_scanner.py",
    "content": "import logging\nimport lzma\nfrom abc import ABC\nfrom pathlib import Path\nfrom typing import List, Optional\n\nfrom credsweeper.credentials.candidate import Candidate\nfrom credsweeper.deep_scanner.abstract_scanner import AbstractScanner\nfrom credsweeper.file_handler.data_content_provider import DataContentProvider\nfrom credsweeper.utils.util import Util\n\nlogger = logging.getLogger(__name__)\n\n\nclass LzmaScanner(AbstractScanner, ABC):\n    \"\"\"Implements lzma scanning\"\"\"\n\n    @staticmethod\n    def match(data: bytes | bytearray) -> bool:\n        \"\"\"According https://en.wikipedia.org/wiki/List_of_file_signatures - lzma also xz\"\"\"\n        if data.startswith((b\"\\xFD7zXZ\\x00\", b\"\\x5D\\x00\\x00\")):\n            return True\n        return False\n\n    def data_scan(\n            self,  #\n            data_provider: DataContentProvider,  #\n            depth: int,  #\n            recursive_limit_size: int) -> Optional[List[Candidate]]:\n        \"\"\"Extracts data from lzma archive and launches data_scan\"\"\"\n        try:\n            file_path = Path(data_provider.file_path)\n            new_path = file_path.as_posix()\n            if \".xz\" == file_path.suffix:\n                new_path = new_path[:-3]\n            elif \".lzma\" == file_path.suffix:\n                new_path = new_path[:-5]\n            lzma_content_provider = DataContentProvider(data=lzma.decompress(data_provider.data),\n                                                        file_path=new_path,\n                                                        file_type=Util.get_extension(new_path),\n                                                        info=f\"{data_provider.info}|LZMA:{file_path}\")\n            new_limit = recursive_limit_size - len(lzma_content_provider.data)\n            lzma_candidates = self.recursive_scan(lzma_content_provider, depth, new_limit)\n            return lzma_candidates\n        except Exception as lzma_exc:\n            logger.warning(\"%s:%s\", data_provider.file_path, lzma_exc)\n        return None\n"
  },
  {
    "path": "credsweeper/deep_scanner/mxfile_scanner.py",
    "content": "import logging\nfrom abc import ABC\nfrom typing import List, Optional\n\nfrom bs4 import BeautifulSoup\nfrom lxml import etree\n\nfrom credsweeper.common.constants import MAX_LINE_LENGTH\nfrom credsweeper.credentials.candidate import Candidate\nfrom credsweeper.deep_scanner.abstract_scanner import AbstractScanner\nfrom credsweeper.file_handler.data_content_provider import DataContentProvider\nfrom credsweeper.file_handler.string_content_provider import StringContentProvider\n\nlogger = logging.getLogger(__name__)\n\n\nclass MxfileScanner(AbstractScanner, ABC):\n    \"\"\"Scanner for drawio diagram\"\"\"\n\n    @staticmethod\n    def match(data: bytes | bytearray) -> bool:\n        \"\"\"Used to detect mxfile (drawio) format. Suppose, invocation of is_xml() was True before.\"\"\"\n        mxfile_tag_pos = data.find(b\"<mxfile\", 0, MAX_LINE_LENGTH)\n        if 0 <= mxfile_tag_pos < data.find(b\"</mxfile>\", mxfile_tag_pos):\n            return True\n        return False\n\n    def data_scan(\n            self,  #\n            data_provider: DataContentProvider,  #\n            depth: int,  #\n            recursive_limit_size: int) -> Optional[List[Candidate]]:\n        \"\"\"Tries to get text data from the xml format\"\"\"\n        try:\n            lines = []\n            line_numbers = []\n            tree = etree.fromstring(data_provider.text)\n            for element in tree.iter():\n                if \"mxCell\" == getattr(element, \"tag\"):\n                    line_number = element.sourceline\n                    attr = getattr(element, \"attrib\")\n                    if attr is None or not (value := attr.get(\"value\")):\n                        continue\n                    if html := BeautifulSoup(value, features=\"html.parser\"):\n                        _, value_lines, __ = data_provider.simple_html_representation(html)\n                        for line in value_lines:\n                            lines.append(line)\n                            line_numbers.append(line_number)\n            mxfile_data_provider = StringContentProvider(lines=lines,\n                                                         line_numbers=line_numbers,\n                                                         file_path=data_provider.file_path,\n                                                         file_type=data_provider.file_type,\n                                                         info=f\"{data_provider.info}|MXFILE\")\n            return self.scanner.scan(mxfile_data_provider)\n        except Exception as exc:\n            logger.warning(exc)\n        return None\n"
  },
  {
    "path": "credsweeper/deep_scanner/patch_scanner.py",
    "content": "import io\nimport logging\nfrom abc import ABC\nfrom typing import List, Optional\n\nfrom credsweeper.common.constants import DiffRowType\nfrom credsweeper.credentials.candidate import Candidate\nfrom credsweeper.deep_scanner.abstract_scanner import AbstractScanner\nfrom credsweeper.file_handler.data_content_provider import DataContentProvider\nfrom credsweeper.file_handler.patches_provider import PatchesProvider\n\nlogger = logging.getLogger(__name__)\n\n\nclass PatchScanner(AbstractScanner, ABC):\n    \"\"\"Implements .patch scanning\"\"\"\n\n    def data_scan(\n            self,  #\n            data_provider: DataContentProvider,  #\n            depth: int,  #\n            recursive_limit_size: int) -> Optional[List[Candidate]]:\n        \"\"\"Tries to scan EML with text representation\"\"\"\n        try:\n            candidates: List[Candidate] = []\n            # common limitation\n            new_limit_size = recursive_limit_size - len(data_provider.data)\n            # ADDED\n            path_added = [(data_provider.file_path, io.BytesIO(data_provider.data))]\n            added_content_provider = PatchesProvider(path_added, change_type=DiffRowType.ADDED)\n            for added_file in added_content_provider.get_scannable_files(self.config):\n                added_candidates = self.scan(added_file, depth, new_limit_size)\n                candidates.extend(added_candidates)\n            # DELETED\n            path_deleted = [(data_provider.file_path, io.BytesIO(data_provider.data))]\n            deleted_content_provider = PatchesProvider(path_deleted, change_type=DiffRowType.DELETED)\n            for deleted_file in deleted_content_provider.get_scannable_files(self.config):\n                added_candidates = self.scan(deleted_file, depth, new_limit_size)\n                candidates.extend(added_candidates)\n            # update the line data for deep scan only\n            for i in candidates:\n                for line_data in i.line_data_list:\n                    line_data.path = data_provider.file_path\n                    line_data.info = f\"{data_provider.info}|PATCH:{line_data.info}\"\n            return candidates\n        except Exception as patch_exc:\n            logger.warning(\"%s:%s\", data_provider.file_path, patch_exc)\n        return None\n"
  },
  {
    "path": "credsweeper/deep_scanner/pdf_scanner.py",
    "content": "import io\nimport logging\nfrom abc import ABC\nfrom typing import List, Optional\n\nfrom pdfminer.high_level import extract_pages\nfrom pdfminer.layout import LAParams, LTText, LTItem\n\nfrom credsweeper.credentials.candidate import Candidate\nfrom credsweeper.deep_scanner.abstract_scanner import AbstractScanner\nfrom credsweeper.file_handler.data_content_provider import DataContentProvider, MIN_DATA_LEN\nfrom credsweeper.file_handler.string_content_provider import StringContentProvider\n\nlogger = logging.getLogger(__name__)\n\n\nclass PdfScanner(AbstractScanner, ABC):\n    \"\"\"Implements pdf scanning\"\"\"\n\n    @staticmethod\n    def match(data: bytes | bytearray) -> bool:\n        \"\"\"According https://en.wikipedia.org/wiki/List_of_file_signatures - pdf\"\"\"\n        if data.startswith(b\"%PDF-\"):\n            return True\n        return False\n\n    def data_scan(\n            self,  #\n            data_provider: DataContentProvider,  #\n            depth: int,  #\n            recursive_limit_size: int) -> Optional[List[Candidate]]:\n        \"\"\"Tries to scan PDF elements recursively and the whole text on page as strings\"\"\"\n        # PyPDF2 - https://github.com/py-pdf/pypdf/issues/1328 text in table is merged without spaces\n        # pdfminer.six - splits text in table to many lines. Allows to walk through elements\n        try:\n            candidates = []\n            for page in extract_pages(io.BytesIO(data_provider.data), laparams=LAParams()):\n                for element in page:\n                    if isinstance(element, LTText):\n                        element_text = element.get_text().strip()\n                        if 0 < depth and element_text:\n                            if MIN_DATA_LEN < len(element_text):\n                                pdf_content_provider = DataContentProvider(\n                                    data=element_text.encode(),\n                                    file_path=data_provider.file_path,\n                                    file_type=data_provider.file_type,\n                                    info=f\"{data_provider.info}|PDF:{page.pageid}\")\n                                new_limit = recursive_limit_size - len(pdf_content_provider.data)\n                                element_candidates = self.recursive_scan(pdf_content_provider, depth, new_limit)\n                                candidates.extend(element_candidates)\n                        else:\n                            string_data_provider = StringContentProvider(lines=[element_text],\n                                                                         file_path=data_provider.file_path,\n                                                                         file_type=data_provider.file_type,\n                                                                         info=f\"{data_provider.info}|PDF:{page.pageid}\")\n                            pdf_candidates = self.scanner.scan(string_data_provider)\n                            candidates.extend(pdf_candidates)\n                    elif isinstance(element, LTItem):\n                        pass\n                    else:\n                        logger.warning(\"Unsupported %s\", element)\n            return candidates\n        except Exception as pdf_exc:\n            logger.warning(\"%s:%s\", data_provider.file_path, pdf_exc)\n        return None\n"
  },
  {
    "path": "credsweeper/deep_scanner/pkcs_scanner.py",
    "content": "import base64\nimport logging\nfrom abc import ABC\nfrom typing import List, Optional, Union\n\nfrom credsweeper.common.constants import Severity, Confidence\nfrom credsweeper.credentials.candidate import Candidate\nfrom credsweeper.deep_scanner.abstract_scanner import AbstractScanner\nfrom credsweeper.file_handler.data_content_provider import DataContentProvider\nfrom credsweeper.utils.util import Util\n\nlogger = logging.getLogger(__name__)\n\n\nclass PkcsScanner(AbstractScanner, ABC):\n    \"\"\"Implements pkcs12 scanning\"\"\"\n\n    @staticmethod\n    def match(data: Union[bytes, bytearray]) -> int:\n        \"\"\"Matched ASN1 structure\"\"\"\n        return bool(Util.get_asn1_size(data))\n\n    def data_scan(\n            self,  #\n            data_provider: DataContentProvider,  #\n            depth: int,  #\n            recursive_limit_size: int) -> Optional[List[Candidate]]:\n        \"\"\"Tries to scan PKCS12 to open with standard password\"\"\"\n        for pw_probe in self.config.bruteforce_list:\n            try:\n                password = pw_probe.encode() if pw_probe else None\n                if pkey := Util.load_pk(data_provider.data, password):\n                    if not Util.check_pk(pkey):\n                        logger.debug(\"False alarm %s\", data_provider.info)\n                        return []\n                    candidate = Candidate.get_dummy_candidate(\n                        self.config,  #\n                        data_provider.file_path,  #\n                        data_provider.file_type,  #\n                        info=f\"{data_provider.info}|PKCS_PASSWORD:{repr(password)}\",  #\n                        rule_name=f\"PKCS with password {repr(pw_probe)}\" if pw_probe else \"PKCS without password\")\n                    candidate.line_data_list[0].line = base64.b64encode(data_provider.data).decode()\n                    candidate.line_data_list[0].value = repr(password)\n                    # high severity is assigned to private key rules\n                    candidate.severity = Severity.HIGH\n                    candidate.confidence = Confidence.STRONG\n                    return [candidate]\n            except Exception as pkcs_exc:\n                logger.debug(\"%s:%s:%s\", data_provider.file_path, pw_probe, pkcs_exc)\n        return None\n"
  },
  {
    "path": "credsweeper/deep_scanner/png_scanner.py",
    "content": "import logging\nimport struct\nfrom abc import ABC\nfrom typing import List, Optional, Generator, Tuple\n\nfrom credsweeper.common.constants import LATIN_1, UTF_8\nfrom credsweeper.credentials.candidate import Candidate\nfrom credsweeper.deep_scanner.abstract_scanner import AbstractScanner\nfrom credsweeper.file_handler.data_content_provider import DataContentProvider\n\nlogger = logging.getLogger(__name__)\n\n\nclass PngScanner(AbstractScanner, ABC):\n    \"\"\"Implements PNG scanning for text chunks\"\"\"\n\n    @staticmethod\n    def match(data: bytes | bytearray) -> bool:\n        \"\"\"Returns True if prefix match\"\"\"\n        if data.startswith(b\"\\x89PNG\\r\\n\\x1a\\n\"):\n            return True\n        return False\n\n    @staticmethod\n    def yield_png_chunks(data: bytes) -> Generator[Tuple[int, str, bytes], None, None]:\n        \"\"\"Processes PNG chunks and yields offset, type and data\"\"\"\n        offset = 8  # b\"\\x89PNG\\r\\n\\x1a\\n\"\n        data_limit = len(data) - 12\n        while offset <= data_limit:\n            chunk_size = struct.unpack(\">I\", data[offset:offset + 4])[0]\n            chunk_type = data[offset + 4:offset + 8]\n            offset += 8\n            if len(data) < offset + chunk_size:\n                raise ValueError(f\"PNG chunk size {chunk_size} exceeds data limit 0x{offset:x}\")\n            match chunk_type:\n                case b\"IEND\":\n                    # https://www.w3.org/TR/png/#11IEND\n                    break\n                case b\"tEXt\":\n                    # https://www.w3.org/TR/png/#11tEXt\n                    keyword, text_data = data[offset:offset + chunk_size].split(b'\\0', 1)\n                    yield offset, f\"PNG_TEXT:{keyword.decode(encoding=LATIN_1, errors='strict')}\", text_data\n                case b\"zTXt\":\n                    # https://www.w3.org/TR/png/#11zTXt\n                    keyword, ztxt_data = data[offset:offset + chunk_size].split(b'\\0', 1)\n                    if not ztxt_data.startswith(b'\\0'):\n                        raise ValueError(f\"Unsupported compression method {ztxt_data[0]}\")\n                    yield offset, f\"PNG_ZTXT:{keyword.decode(encoding=LATIN_1, errors='strict')}\", ztxt_data[1:]\n                case b\"iTXt\":\n                    # https://www.w3.org/TR/png/#11iTXt\n                    keyword, itxt_data = data[offset:offset + chunk_size].split(b'\\0', 1)\n\n                    if itxt_data.startswith(b\"\\x00\\x00\"):\n                        compression = False\n                    elif itxt_data.startswith(b\"\\x01\\x00\"):\n                        compression = True\n                    else:\n                        raise ValueError(f\"Unsupported compression {repr(itxt_data[:2])}\")\n                    lang_tag, itxt_data = itxt_data[2:].split(b'\\0', 1)\n                    trans_key, itxt_data = itxt_data.split(b'\\0', 1)\n                    yield (offset, f\"PNG_ITXT_{'1' if compression else '0'}\"\n                           f\":{keyword.decode(encoding=UTF_8)}\"\n                           f\":{lang_tag.decode(encoding=UTF_8)}\"\n                           f\":{trans_key.decode(encoding=UTF_8)}\", itxt_data)\n                case _:\n                    pass\n            # skip crc verification\n            offset += chunk_size + 4\n\n    def data_scan(\n            self,  #\n            data_provider: DataContentProvider,  #\n            depth: int,  #\n            recursive_limit_size: int) -> Optional[List[Candidate]]:\n        \"\"\"Tries to scan each row as structure with column name in key\"\"\"\n        try:\n            candidates: List[Candidate] = []\n            for offset, chunk_type, data in PngScanner.yield_png_chunks(data_provider.data):\n                png_content_provider = DataContentProvider(data=data,\n                                                           file_path=data_provider.file_path,\n                                                           file_type=data_provider.file_type,\n                                                           info=f\"{data_provider.info}|{chunk_type}:0x{offset:x}\")\n                new_limit = recursive_limit_size - len(data)\n                png_candidates = self.recursive_scan(png_content_provider, depth, new_limit)\n                candidates.extend(png_candidates)\n            return candidates\n        except Exception as exc:\n            logger.warning(exc)\n        return None\n"
  },
  {
    "path": "credsweeper/deep_scanner/pptx_scanner.py",
    "content": "import io\nimport logging\nfrom abc import ABC\nfrom typing import List, Optional\n\nfrom pptx import Presentation\n\nfrom credsweeper.credentials.candidate import Candidate\nfrom credsweeper.deep_scanner.abstract_scanner import AbstractScanner\nfrom credsweeper.file_handler.data_content_provider import DataContentProvider\nfrom credsweeper.file_handler.string_content_provider import StringContentProvider\n\nlogger = logging.getLogger(__name__)\n\n\nclass PptxScanner(AbstractScanner, ABC):\n    \"\"\"Implements pptx scanning\"\"\"\n\n    def data_scan(\n            self,  #\n            data_provider: DataContentProvider,  #\n            depth: int,  #\n            recursive_limit_size: int) -> Optional[List[Candidate]]:\n        \"\"\"Tries to scan pptx text elements for all slides\"\"\"\n        try:\n            candidates = []\n            pptx_lines = []\n            presentation = Presentation(io.BytesIO(data_provider.data))\n            for n, slide in enumerate(presentation.slides):\n                for shape in slide.shapes:\n                    if shape.has_text_frame:\n                        for paragraph in shape.text_frame.paragraphs:\n                            pptx_lines.append(paragraph.text)\n                string_data_provider = StringContentProvider(lines=pptx_lines,\n                                                             file_path=data_provider.file_path,\n                                                             file_type=data_provider.file_type,\n                                                             info=f\"{data_provider.info}|PPTX:{n+1}\")\n                pptx_candidates = self.scanner.scan(string_data_provider)\n                candidates.extend(pptx_candidates)\n            return candidates\n        except Exception as pptx_exc:\n            logger.warning(\"%s:%s\", data_provider.file_path, pptx_exc)\n        return None\n"
  },
  {
    "path": "credsweeper/deep_scanner/rpm_scanner.py",
    "content": "import io\nimport logging\nfrom abc import ABC\nfrom typing import List, Optional\n\nimport rpmfile\n\nfrom credsweeper.credentials.candidate import Candidate\nfrom credsweeper.deep_scanner.abstract_scanner import AbstractScanner\nfrom credsweeper.file_handler.data_content_provider import DataContentProvider\nfrom credsweeper.file_handler.file_path_extractor import FilePathExtractor\nfrom credsweeper.utils.util import Util\n\nlogger = logging.getLogger(__name__)\n\n\nclass RpmScanner(AbstractScanner, ABC):\n    \"\"\"Implements rpm scanning\"\"\"\n\n    @staticmethod\n    def match(data: bytes | bytearray) -> bool:\n        \"\"\"According https://en.wikipedia.org/wiki/List_of_file_signatures\"\"\"\n        if data.startswith(b\"\\xED\\xAB\\xEE\\xDB\"):\n            return True\n        return False\n\n    def data_scan(\n            self,  #\n            data_provider: DataContentProvider,  #\n            depth: int,  #\n            recursive_limit_size: int) -> Optional[List[Candidate]]:\n        \"\"\"Extracts files one by one from the package type and launches recursive scan\"\"\"\n        try:\n            candidates = []\n            with rpmfile.open(fileobj=io.BytesIO(data_provider.data)) as rpm_file:\n                for member in rpm_file.getmembers():\n                    # skip directory\n                    if 0 != member.isdir:\n                        continue\n                    if FilePathExtractor.check_exclude_file(self.config, member.name):\n                        continue\n                    if 0 > recursive_limit_size - member.size:\n                        logger.warning(\"%s: size %s is over limit %s depth:%s\", member.filename, member.size,\n                                       recursive_limit_size, depth)\n                        continue\n                    rpm_content_provider = DataContentProvider(data=rpm_file.extractfile(member).read(),\n                                                               file_path=data_provider.file_path,\n                                                               file_type=Util.get_extension(member.name),\n                                                               info=f\"{data_provider.info}|RPM:{member.name}\")\n                    new_limit = recursive_limit_size - len(rpm_content_provider.data)\n                    rpm_candidates = self.recursive_scan(rpm_content_provider, depth, new_limit)\n                    candidates.extend(rpm_candidates)\n            return candidates\n        except Exception as rpm_exc:\n            logger.warning(\"%s:%s\", data_provider.file_path, rpm_exc)\n        return None\n"
  },
  {
    "path": "credsweeper/deep_scanner/rtf_scanner.py",
    "content": "import logging\nfrom abc import ABC\nfrom typing import List, Optional\n\nfrom striprtf import striprtf\n\nfrom credsweeper.credentials.candidate import Candidate\nfrom credsweeper.deep_scanner.abstract_scanner import AbstractScanner\nfrom credsweeper.file_handler.data_content_provider import DataContentProvider\nfrom credsweeper.file_handler.string_content_provider import StringContentProvider\nfrom credsweeper.utils.util import Util\n\nlogger = logging.getLogger(__name__)\n\n\nclass RtfScanner(AbstractScanner, ABC):\n    \"\"\"Implements squash file system scanning\"\"\"\n\n    @staticmethod\n    def match(data: bytes | bytearray) -> bool:\n        \"\"\"According https://en.wikipedia.org/wiki/List_of_file_signatures - Rich Text Format\"\"\"\n        if data.startswith(b\"{\\\\rtf1\") and data.endswith(b\"}\"):\n            return True\n        return False\n\n    @staticmethod\n    def get_lines(text: str) -> List[str]:\n        \"\"\"Extracts text lines from RTF format\"\"\"\n        rtf_text = striprtf.rtf_to_text(text)\n        lines = Util.split_text(rtf_text)\n        return lines\n\n    def data_scan(\n            self,  #\n            data_provider: DataContentProvider,  #\n            depth: int,  #\n            recursive_limit_size: int) -> Optional[List[Candidate]]:\n        \"\"\"Scans data as RTF\"\"\"\n        try:\n            string_data_provider = StringContentProvider(lines=RtfScanner.get_lines(data_provider.text),\n                                                         file_path=data_provider.file_path,\n                                                         file_type=data_provider.file_type,\n                                                         info=f\"{data_provider.info}|RTF\")\n            rtf_candidates = self.scanner.scan(string_data_provider)\n            return rtf_candidates\n        except Exception as rtf_exc:\n            logger.warning(\"%s:%s\", data_provider.file_path, rtf_exc)\n        return None\n"
  },
  {
    "path": "credsweeper/deep_scanner/sqlite3_scanner.py",
    "content": "import logging\nimport os.path\nimport sqlite3\nimport sys\nimport tempfile\nfrom abc import ABC\nfrom typing import List, Optional, Tuple, Any, Generator\n\nfrom credsweeper.credentials.candidate import Candidate\nfrom credsweeper.deep_scanner.abstract_scanner import AbstractScanner\nfrom credsweeper.file_handler.data_content_provider import DataContentProvider\nfrom credsweeper.file_handler.struct_content_provider import StructContentProvider\n\nlogger = logging.getLogger(__name__)\n\n\nclass Sqlite3Scanner(AbstractScanner, ABC):\n    \"\"\"Implements SQLite3 database scanning\"\"\"\n\n    @staticmethod\n    def match(data: bytes | bytearray) -> bool:\n        \"\"\"According https://en.wikipedia.org/wiki/List_of_file_signatures - SQLite Database\"\"\"\n        if data.startswith(b\"SQLite format 3\\0\"):\n            return True\n        return False\n\n    @staticmethod\n    def __walk(sqlite3db) -> Generator[Tuple[str, Any], None, None]:\n        sqlite3db.row_factory = sqlite3.Row\n        cursor = sqlite3db.cursor()\n        cursor.execute(\"SELECT name FROM sqlite_master WHERE type='table' AND name NOT LIKE 'sqlite_%';\")\n        for table in cursor.fetchall():\n            table_name = table[0]\n            try:\n                cursor.execute(f\"SELECT * FROM {table_name}\")\n                for row in cursor:\n                    yield table_name, dict(row)\n            except sqlite3.DatabaseError as exc:\n                print(f\"Error reading table {table_name}: {exc}\")\n\n    @staticmethod\n    def walk_sqlite(data: bytes) -> Generator[Tuple[str, Any], None, None]:\n        \"\"\"Yields data from sqlite3 database\"\"\"\n        if 10 < sys.version_info.minor:\n            # Added in version 3.11\n            with sqlite3.connect(\":memory:\") as sqlite3db:\n                sqlite3db.deserialize(data)  # type: ignore\n                yield from Sqlite3Scanner.__walk(sqlite3db)\n        elif \"nt\" != os.name:\n            # a tmpfile has to be used. TODO: remove when 3.10 will deprecate\n            with tempfile.NamedTemporaryFile(suffix=\".sqlite\") as t:\n                t.write(data)\n                t.flush()\n                with sqlite3.connect(t.name) as sqlite3db:\n                    yield from Sqlite3Scanner.__walk(sqlite3db)\n        elif \"nt\" == os.name:\n            # windows trick. TODO: remove when 3.10 will deprecate\n            with tempfile.NamedTemporaryFile(delete=False, suffix=\".sqlite\") as t:\n                t.write(data)\n                t.flush()\n            sqlite3db = sqlite3.connect(t.name)\n            yield from Sqlite3Scanner.__walk(sqlite3db)\n            sqlite3db.close()\n            if os.path.exists(t.name):\n                os.remove(t.name)\n\n    def data_scan(\n            self,  #\n            data_provider: DataContentProvider,  #\n            depth: int,  #\n            recursive_limit_size: int) -> Optional[List[Candidate]]:\n        \"\"\"Extracts data file from .ar (debian) archive and launches data_scan\"\"\"\n        try:\n            candidates: List[Candidate] = []\n            new_limit = recursive_limit_size - len(data_provider.data)\n            for table, row in self.walk_sqlite(data_provider.data):\n                struct_content_provider = StructContentProvider(struct=row,\n                                                                file_path=data_provider.file_path,\n                                                                file_type=data_provider.file_type,\n                                                                info=f\"{data_provider.info}|SQLite3.{table}\")\n                if new_candidates := self.structure_scan(struct_content_provider, depth, new_limit):\n                    candidates.extend(new_candidates)\n            return candidates\n        except Exception as exc:\n            logger.warning(exc)\n        return None\n"
  },
  {
    "path": "credsweeper/deep_scanner/strings_scanner.py",
    "content": "import logging\nfrom abc import ABC\nfrom typing import List, Optional, Tuple\n\nfrom credsweeper.common.constants import MIN_DATA_LEN\nfrom credsweeper.credentials.candidate import Candidate\nfrom credsweeper.deep_scanner.abstract_scanner import AbstractScanner\nfrom credsweeper.file_handler.data_content_provider import DataContentProvider\nfrom credsweeper.file_handler.string_content_provider import StringContentProvider\n\nlogger = logging.getLogger(__name__)\n\n\nclass StringsScanner(AbstractScanner, ABC):\n    \"\"\"Implements known binary file scanning with ASCII strings representations\"\"\"\n\n    @staticmethod\n    def get_enumerated_lines(data: bytes) -> List[Tuple[int, str]]:\n        \"\"\"Processes binary to found ASCII strings. Use offset instead line number.\"\"\"\n        enumerated_lines = []\n        offset = -1\n        line_items = []\n        for n, x in enumerate(data):\n            if 0x09 == x or 0x20 <= x <= 0x7E:\n                # TAB, SPACE and visible ASCII symbols\n                if 0 > offset:\n                    # use start of string as line number\n                    offset = n\n                line_items.append(chr(x))\n                continue\n            if MIN_DATA_LEN <= len(line_items):\n                # add valuable lines only\n                enumerated_lines.append((offset, ''.join(line_items)))\n            offset = -1\n            line_items.clear()\n        if MIN_DATA_LEN <= len(line_items):\n            enumerated_lines.append((offset, ''.join(line_items)))\n        return enumerated_lines\n\n    def data_scan(\n            self,  #\n            data_provider: DataContentProvider,  #\n            depth: int,  #\n            recursive_limit_size: int) -> Optional[List[Candidate]]:\n        \"\"\"Scan binary files for ASCII strings\"\"\"\n        if strings := StringsScanner.get_enumerated_lines(data_provider.data):\n            string_data_provider = StringContentProvider(lines=[x[1] for x in strings],\n                                                         line_numbers=[x[0] for x in strings],\n                                                         file_path=data_provider.file_path,\n                                                         file_type=data_provider.file_type,\n                                                         info=f\"{data_provider.info}|STRINGS\")\n            return self.scanner.scan(string_data_provider)\n        return None if strings is None else []\n"
  },
  {
    "path": "credsweeper/deep_scanner/tar_scanner.py",
    "content": "import contextlib\nimport io\nimport logging\nimport tarfile\nfrom abc import ABC\nfrom typing import List, Optional\n\nfrom credsweeper.credentials.candidate import Candidate\nfrom credsweeper.deep_scanner.abstract_scanner import AbstractScanner\nfrom credsweeper.file_handler.data_content_provider import DataContentProvider\nfrom credsweeper.file_handler.file_path_extractor import FilePathExtractor\nfrom credsweeper.utils.util import Util\n\nlogger = logging.getLogger(__name__)\n\n\nclass TarScanner(AbstractScanner, ABC):\n    \"\"\"Implements tar scanning\"\"\"\n\n    @staticmethod\n    def match(data: bytes | bytearray) -> bool:\n        \"\"\"According https://en.wikipedia.org/wiki/List_of_file_signatures\"\"\"\n        if 512 <= len(data) and 257 == data.find(b\"\\x75\\x73\\x74\\x61\\x72\", 257, 262) \\\n                and (262 == data.find(b\"\\x00\\x30\\x30\", 262, 265)\n                     or 262 == data.find(b\"\\x20\\x20\\x00\", 262, 265)):\n            with contextlib.suppress(Exception):\n                chksum = tarfile.nti(data[148:156])  # type: ignore\n                unsigned_chksum, signed_chksum = tarfile.calc_chksums(data)  # type: ignore\n                if chksum == unsigned_chksum or chksum == signed_chksum:\n                    return True\n        return False\n\n    def data_scan(\n            self,  #\n            data_provider: DataContentProvider,  #\n            depth: int,  #\n            recursive_limit_size: int) -> Optional[List[Candidate]]:\n        \"\"\"Extracts files one by one from tar archive and launches data_scan\"\"\"\n        try:\n            candidates = []\n            with tarfile.TarFile(fileobj=io.BytesIO(data_provider.data)) as tf:\n                for tfi in tf.getmembers():\n                    # skip directory\n                    if not tfi.isreg():\n                        continue\n                    if FilePathExtractor.check_exclude_file(self.config, tfi.name):\n                        continue\n                    if 0 > recursive_limit_size - tfi.size:\n                        logger.warning(\"%s: size %s is over limit %s depth:%s\", tfi.name, tfi.size,\n                                       recursive_limit_size, depth)\n                        continue\n                    with tf.extractfile(tfi) as f:\n                        tar_content_provider = DataContentProvider(data=f.read(),\n                                                                   file_path=data_provider.file_path,\n                                                                   file_type=Util.get_extension(tfi.name),\n                                                                   info=f\"{data_provider.info}|TAR:{tfi.name}\")\n                        # Nevertheless, use extracted data size\n                        new_limit = recursive_limit_size - len(tar_content_provider.data)\n                        tar_candidates = self.recursive_scan(tar_content_provider, depth, new_limit)\n                        candidates.extend(tar_candidates)\n            return candidates\n        except Exception as tar_exc:\n            # too many exception types might be produced with broken tar\n            logger.warning(\"%s:%s\", data_provider.file_path, tar_exc)\n        return None\n"
  },
  {
    "path": "credsweeper/deep_scanner/tmx_scanner.py",
    "content": "import logging\nfrom abc import ABC\nfrom typing import List, Optional\n\nfrom lxml import etree\n\nfrom credsweeper.common.constants import MIN_DATA_LEN, MAX_LINE_LENGTH\nfrom credsweeper.credentials.candidate import Candidate\nfrom credsweeper.deep_scanner.abstract_scanner import AbstractScanner\nfrom credsweeper.file_handler.data_content_provider import DataContentProvider\nfrom credsweeper.file_handler.string_content_provider import StringContentProvider\nfrom credsweeper.utils.util import Util\n\nlogger = logging.getLogger(__name__)\n\n\nclass TmxScanner(AbstractScanner, ABC):\n    \"\"\"Realises tmX files scanning for values only. Image tags are skipped.\"\"\"\n\n    @staticmethod\n    def match(data: bytes | bytearray) -> bool:\n        \"\"\"Used to detect tm7,tm6,etc. (ThreadModeling) format.\"\"\"\n        for opening_tag, closing_tag in [(b\"<ThreatModel\", b\"</ThreatModel>\"),\n                                         (b\"<KnowledgeBase\", b\"</KnowledgeBase>\")]:\n            opening_pos = data.find(opening_tag, 0, MAX_LINE_LENGTH)\n            if 0 <= opening_pos < data.find(closing_tag, opening_pos):\n                # opening and closing tags were found - suppose it is an HTML\n                return True\n        return False\n\n    def data_scan(\n            self,  #\n            data_provider: DataContentProvider,  #\n            depth: int,  #\n            recursive_limit_size: int) -> Optional[List[Candidate]]:\n        \"\"\"Tries to represent data as xml text and scan as text lines\"\"\"\n        try:\n            lines = []\n            # the format is always in single line xlm, so line numbers are not actual\n            tree = etree.fromstring(data_provider.data)\n            for element in tree.iter():\n                tag = Util.extract_element_data(element, \"tag\")\n                if \"Image\" in tag:\n                    continue\n                text = Util.extract_element_data(element, \"text\")\n                if MIN_DATA_LEN > len(text):\n                    continue\n                lines.append(text)\n            tmx_data_provider = StringContentProvider(lines=lines,\n                                                      file_path=data_provider.file_path,\n                                                      file_type=data_provider.file_type,\n                                                      info=f\"{data_provider.info}|TMX\")\n            return self.scanner.scan(tmx_data_provider)\n        except Exception as exc:\n            logger.warning(\"Cannot processed tmX file %s %s\", str(data_provider.file_path), str(exc))\n        return None\n"
  },
  {
    "path": "credsweeper/deep_scanner/xlsx_scanner.py",
    "content": "import io\nimport logging\nfrom abc import ABC\nfrom typing import List, Optional\n\nimport pandas as pd\n\nfrom credsweeper.credentials.augment_candidates import augment_candidates\nfrom credsweeper.credentials.candidate import Candidate\nfrom credsweeper.deep_scanner.abstract_scanner import AbstractScanner\nfrom credsweeper.file_handler.data_content_provider import DataContentProvider\nfrom credsweeper.file_handler.string_content_provider import StringContentProvider\nfrom credsweeper.utils.util import Util\n\nlogger = logging.getLogger(__name__)\n\n\nclass XlsxScanner(AbstractScanner, ABC):\n    \"\"\"Implements xlsx scanning\"\"\"\n\n    @staticmethod\n    def match(data: bytes | bytearray) -> bool:\n        \"\"\"According https://en.wikipedia.org/wiki/List_of_file_signatures\"\"\"\n        if data.startswith(b\"\\xD0\\xCF\\x11\\xE0\\xA1\\xB1\\x1A\\xE1\"):\n            # Compound File Binary Format: doc, xls, ppt, msi, msg\n            return True\n        return False\n\n    def data_scan(\n            self,  #\n            data_provider: DataContentProvider,  #\n            depth: int,  #\n            recursive_limit_size: int) -> Optional[List[Candidate]]:\n        \"\"\"Tries to scan xlsx text elements for all slides\"\"\"\n        try:\n            candidates = []\n            book = pd.read_excel(io.BytesIO(data_provider.data), sheet_name=None, header=None)\n            for sheet_name, sheet_data in book.items():\n                sheet_info = f\"{data_provider.info}|{sheet_name}\"\n                # replace open xml carriage returns _x000D_ before line feed only\n                df = sheet_data.replace(to_replace=\"_x000D_\\n\", value='\\n', regex=True).fillna('').astype(str)\n                for row_pos, row in enumerate(df.values):\n                    for col_pos, cell in enumerate(row):\n                        cell_info = f\"{sheet_info}:{Util.get_excel_column_name(col_pos)}{row_pos + 1}\"\n                        cell_provider = StringContentProvider(lines=cell.splitlines(),\n                                                              file_path=data_provider.file_path,\n                                                              file_type=data_provider.file_type,\n                                                              info=cell_info)\n                        cell_candidates = self.scanner.scan(cell_provider)\n                        candidates.extend(cell_candidates)\n                    row_line = '\\t'.join(row)\n                    row_provider = StringContentProvider(lines=[row_line],\n                                                         file_path=data_provider.file_path,\n                                                         file_type=data_provider.file_type,\n                                                         info=f\"{sheet_info}:R{row_pos + 1}\")\n                    row_candidates = self.scanner.scan(row_provider)\n                    augment_candidates(candidates, row_candidates)\n\n            return candidates\n        except Exception as xlsx_exc:\n            logger.warning(\"%s:%s\", data_provider.file_path, xlsx_exc)\n        return None\n"
  },
  {
    "path": "credsweeper/deep_scanner/xml_scanner.py",
    "content": "import logging\nimport re\nfrom abc import ABC\nfrom typing import List, Optional\n\nfrom credsweeper.common.constants import MAX_LINE_LENGTH\nfrom credsweeper.credentials.candidate import Candidate\nfrom credsweeper.deep_scanner.abstract_scanner import AbstractScanner\nfrom credsweeper.file_handler.data_content_provider import DataContentProvider\nfrom credsweeper.file_handler.string_content_provider import StringContentProvider\n\nlogger = logging.getLogger(__name__)\n\n\nclass XmlScanner(AbstractScanner, ABC):\n    \"\"\"Realises xml scanning\"\"\"\n\n    # A well-formed XML must start from < or a whitespace character\n    XML_FIRST_BRACKET_PATTERN = re.compile(rb\"^\\s*<\")\n    XML_OPENING_TAG_PATTERN = re.compile(rb\"<([0-9A-Za-z_]{1,256})\")\n\n    @staticmethod\n    def match(data: bytes | bytearray) -> bool:\n        \"\"\"Used to detect xml format from raw bytes\"\"\"\n        if XmlScanner.XML_FIRST_BRACKET_PATTERN.search(data, 0, MAX_LINE_LENGTH):\n            if first_bracket_match := XmlScanner.XML_OPENING_TAG_PATTERN.search(data, 0, MAX_LINE_LENGTH):\n                start_pos = first_bracket_match.start()\n                closing_tag = b\"</\" + first_bracket_match.group(1) + b\">\"\n                if start_pos < data.find(closing_tag, start_pos):\n                    return True\n        return False\n\n    def data_scan(\n            self,  #\n            data_provider: DataContentProvider,  #\n            depth: int,  #\n            recursive_limit_size: int) -> Optional[List[Candidate]]:\n        \"\"\"Tries to represent data as xml text and scan as text lines\"\"\"\n        if result := data_provider.represent_as_xml():\n            string_data_provider = StringContentProvider(lines=data_provider.lines,\n                                                         line_numbers=data_provider.line_numbers,\n                                                         file_path=data_provider.file_path,\n                                                         file_type=data_provider.file_type,\n                                                         info=f\"{data_provider.info}|XML\")\n            return self.scanner.scan(string_data_provider)\n        return None if result is None else []\n"
  },
  {
    "path": "credsweeper/deep_scanner/zip_scanner.py",
    "content": "import io\nimport logging\nfrom abc import ABC\nfrom typing import List, Optional\nfrom zipfile import ZipFile\n\nfrom credsweeper.credentials.candidate import Candidate\nfrom credsweeper.deep_scanner.abstract_scanner import AbstractScanner\nfrom credsweeper.file_handler.data_content_provider import DataContentProvider\nfrom credsweeper.file_handler.file_path_extractor import FilePathExtractor\nfrom credsweeper.utils.util import Util\n\nlogger = logging.getLogger(__name__)\n\n\nclass ZipScanner(AbstractScanner, ABC):\n    \"\"\"Implements zip scanning\"\"\"\n\n    @staticmethod\n    def match(data: bytes | bytearray) -> bool:\n        \"\"\"According https://en.wikipedia.org/wiki/List_of_file_signatures\"\"\"\n        if data.startswith(b\"PK\") and 4 <= len(data):\n            if 0x03 == data[2] and 0x04 == data[3]:\n                # normal PK\n                return True\n            if 0x05 == data[2] and 0x06 == data[3]:\n                # empty archive - no sense to scan in other scanners, so let it be a zip\n                return True\n            if 0x07 == data[2] and 0x08 == data[3]:\n                # spanned archive - NOT SUPPORTED\n                return False\n        return False\n\n    def data_scan(\n            self,  #\n            data_provider: DataContentProvider,  #\n            depth: int,  #\n            recursive_limit_size: int) -> Optional[List[Candidate]]:\n        \"\"\"Extracts files one by one from zip archives and launches data_scan\"\"\"\n        try:\n            candidates = []\n            with ZipFile(io.BytesIO(data_provider.data)) as zf:\n                for zfl in zf.infolist():\n                    # skip directory\n                    if zfl.is_dir():\n                        continue\n                    if FilePathExtractor.check_exclude_file(self.config, zfl.filename):\n                        continue\n                    if 0 > recursive_limit_size - zfl.file_size:\n                        logger.warning(\"%s: size %s is over limit %s depth:%s\", zfl.filename, zfl.file_size,\n                                       recursive_limit_size, depth)\n                        continue\n                    with zf.open(zfl) as f:\n                        zip_content_provider = DataContentProvider(data=f.read(),\n                                                                   file_path=data_provider.file_path,\n                                                                   file_type=Util.get_extension(zfl.filename),\n                                                                   info=f\"{data_provider.info}|ZIP:{zfl.filename}\")\n                        # nevertheless use extracted data size\n                        new_limit = recursive_limit_size - len(zip_content_provider.data)\n                        zip_candidates = self.recursive_scan(zip_content_provider, depth, new_limit)\n                        candidates.extend(zip_candidates)\n            return candidates\n        except Exception as zip_exc:\n            # too many exception types might be produced with broken zip\n            logger.warning(\"%s:%s\", data_provider.file_path, zip_exc)\n        return None\n"
  },
  {
    "path": "credsweeper/deep_scanner/zlib_scanner.py",
    "content": "import logging\nimport zlib\nfrom abc import ABC\nfrom typing import List, Optional\n\nfrom credsweeper.credentials.candidate import Candidate\nfrom credsweeper.deep_scanner.abstract_scanner import AbstractScanner\nfrom credsweeper.file_handler.data_content_provider import DataContentProvider\n\nlogger = logging.getLogger(__name__)\n\n\nclass ZlibScanner(AbstractScanner, ABC):\n    \"\"\"Implements zlib data inflate and scan\"\"\"\n\n    @staticmethod\n    def match(data: bytes | bytearray) -> bool:\n        \"\"\"Returns True if data looks like deflated data with zlib\"\"\"\n        if 6 < len(data):\n            cmf = data[0]\n            flg = data[1]\n            if 8 == (0xF & cmf) and 7 >= (cmf >> 4) and 0 == ((cmf << 8) | flg) % 31 and 0 == (0x20 & flg):\n                if 0x3 != (data[2] >> 1):\n                    # the last check of impossible bits\n                    return True\n        return False\n\n    @staticmethod\n    def decompress(limit: int, data: bytes) -> bytes:\n        \"\"\"Returns decompressed data by chunks with a limit or exception in unusual cases\"\"\"\n        zlib_obj = zlib.decompressobj()\n        result = zlib_obj.decompress(data, max_length=limit)\n        if zlib_obj.unconsumed_tail:\n            raise ValueError(f\"Limit exceeds for {len(zlib_obj.unconsumed_tail)}\")\n        if not zlib_obj.eof:\n            raise ValueError(\"Truncated zlib stream\")\n        if zlib_obj.unused_data:\n            raise ValueError(f\"Unused data {len(zlib_obj.unused_data)}\")\n        return result\n\n    def data_scan(\n            self,  #\n            data_provider: DataContentProvider,  #\n            depth: int,  #\n            recursive_limit_size: int) -> Optional[List[Candidate]]:\n        \"\"\"Inflate data from zlib compressed and launches data_scan\"\"\"\n        try:\n            decompressed = ZlibScanner.decompress(recursive_limit_size, data_provider.data)\n            zlib_content_provider = DataContentProvider(data=decompressed,\n                                                        file_path=data_provider.file_path,\n                                                        file_type=data_provider.file_type,\n                                                        info=f\"{data_provider.info}|ZLIB\")\n            new_limit = recursive_limit_size - len(decompressed)\n            zlib_candidates = self.recursive_scan(zlib_content_provider, depth, new_limit)\n            return zlib_candidates\n        except Exception as zlib_exc:\n            logger.warning(\"%s:%s\", data_provider.file_path, zlib_exc)\n        return None\n"
  },
  {
    "path": "credsweeper/file_handler/__init__.py",
    "content": ""
  },
  {
    "path": "credsweeper/file_handler/abstract_provider.py",
    "content": "import io\nfrom abc import ABC, abstractmethod\nfrom pathlib import Path\nfrom typing import Union, Tuple, Sequence\n\nfrom credsweeper.config.config import Config\nfrom credsweeper.file_handler.content_provider import ContentProvider\n\n\nclass AbstractProvider(ABC):\n    \"\"\"Base class for all files provider objects.\"\"\"\n\n    def __init__(self, paths: Sequence[Union[str, Path, io.BytesIO, Tuple[Union[str, Path], io.BytesIO]]]) -> None:\n        \"\"\"Initialize Files Provider object for 'paths'.\n\n        Args:\n            paths: file paths list to scan or io.BytesIO or tuple with both\n\n        \"\"\"\n        self.paths = paths\n\n    @property\n    def paths(self) -> Sequence[Union[str, Path, io.BytesIO, Tuple[Union[str, Path], io.BytesIO]]]:\n        \"\"\"paths getter\"\"\"\n        return self.__paths\n\n    @paths.setter\n    def paths(self, paths: Sequence[Union[str, Path, io.BytesIO, Tuple[Union[str, Path], io.BytesIO]]]) -> None:\n        \"\"\"paths setter\"\"\"\n        self.__paths = paths\n\n    @abstractmethod\n    def get_scannable_files(self, config: Config) -> Sequence[ContentProvider]:\n        \"\"\"Get list of file object for analysis based on attribute \"paths\".\n\n        Args:\n            config: dict of credsweeper configuration\n\n        Return:\n            file objects to analyse\n\n        \"\"\"\n        raise NotImplementedError()\n"
  },
  {
    "path": "credsweeper/file_handler/analysis_target.py",
    "content": "from functools import cached_property\nfrom typing import List, Optional\n\nfrom credsweeper.file_handler.descriptor import Descriptor\n\n\nclass AnalysisTarget:\n    \"\"\"AnalysisTarget\"\"\"\n\n    def __init__(\n        self,\n        line_pos: int,\n        lines: List[str],\n        line_nums: List[int],\n        descriptor: Descriptor,\n        line: Optional[str] = None,\n        offset: Optional[int] = None,\n    ):\n        self.__line_pos = line_pos\n        self.__lines = lines\n        self.__line_nums = line_nums\n        self.__descriptor = descriptor\n        self.__line = line\n        self.__offset = offset\n\n    @cached_property\n    def offset(self) -> Optional[int]:\n        \"\"\"cached value\"\"\"\n        # when the offset is not None - it means that original line was split into chunks\n        return self.__offset\n\n    @cached_property\n    def line(self) -> str:\n        \"\"\"cached value\"\"\"\n        if self.__line is None:\n            # normal target\n            return self.__lines[self.__line_pos]\n        # chunked target\n        return self.__line\n\n    @cached_property\n    def line_len(self) -> int:\n        \"\"\"cached value\"\"\"\n        return len(self.line)\n\n    @cached_property\n    def line_strip(self) -> str:\n        \"\"\"cached value\"\"\"\n        return self.line.strip()\n\n    @cached_property\n    def line_strip_len(self) -> int:\n        \"\"\"cached value\"\"\"\n        return len(self.line_strip)\n\n    @cached_property\n    def line_lower(self) -> str:\n        \"\"\"cached value\"\"\"\n        return self.line.lower()\n\n    @cached_property\n    def line_lower_strip(self) -> str:\n        \"\"\"cached value\"\"\"\n        return self.line_lower.strip()\n\n    @cached_property\n    def lines(self) -> List[str]:\n        \"\"\"cached value\"\"\"\n        return self.__lines\n\n    @cached_property\n    def lines_len(self) -> int:\n        \"\"\"cached value\"\"\"\n        return len(self.__lines)\n\n    @cached_property\n    def line_pos(self) -> int:\n        \"\"\"cached value\"\"\"\n        return self.__line_pos\n\n    @cached_property\n    def line_num(self) -> int:\n        \"\"\"cached value\"\"\"\n        return self.__line_nums[self.__line_pos]\n\n    @cached_property\n    def line_nums(self) -> List[int]:\n        \"\"\"cached value\"\"\"\n        return self.__line_nums\n\n    @cached_property\n    def file_path(self) -> Optional[str]:\n        \"\"\"cached value\"\"\"\n        return self.__descriptor.path\n\n    @cached_property\n    def file_type(self) -> Optional[str]:\n        \"\"\"cached value\"\"\"\n        return self.__descriptor.extension\n\n    @cached_property\n    def info(self) -> Optional[str]:\n        \"\"\"cached value\"\"\"\n        return self.__descriptor.info\n\n    @cached_property\n    def descriptor(self) -> Descriptor:\n        \"\"\"cached value\"\"\"\n        return self.__descriptor\n"
  },
  {
    "path": "credsweeper/file_handler/byte_content_provider.py",
    "content": "import logging\nfrom functools import cached_property\nfrom typing import List, Optional, Generator\n\nfrom credsweeper.file_handler.analysis_target import AnalysisTarget\nfrom credsweeper.file_handler.content_provider import ContentProvider\nfrom credsweeper.utils.util import Util\n\nlogger = logging.getLogger(__name__)\n\n\nclass ByteContentProvider(ContentProvider):\n    \"\"\"Allow to scan byte sequence instead of extra reading a file\"\"\"\n\n    def __init__(\n            self,  #\n            content: bytes,  #\n            file_path: Optional[str] = None,  #\n            file_type: Optional[str] = None,  #\n            info: Optional[str] = None) -> None:\n        \"\"\"\n        Parameters:\n            content: The bytes are transformed to an array of lines with split by new line character.\n\n        \"\"\"\n        super().__init__(file_path=file_path, file_type=file_type, info=info)\n        self.__data = content\n        self.__lines: Optional[List[str]] = None\n\n    @cached_property\n    def data(self) -> Optional[bytes]:\n        \"\"\"data RO getter for ByteContentProvider\"\"\"\n        return self.__data\n\n    def free(self) -> None:\n        \"\"\"free data after scan to reduce memory usage\"\"\"\n        self.__data = None\n        if \"data\" in self.__dict__:\n            delattr(self, \"data\")\n        self.__lines = None\n        if \"lines\" in self.__dict__:\n            delattr(self, \"lines\")\n\n    @cached_property\n    def lines(self) -> List[str]:\n        \"\"\"lines RO getter for ByteContentProvider\"\"\"\n        if self.__lines is None:\n            text = Util.decode_text(self.__data)\n            if text is None:\n                if not self.info.endswith(\"|BASE64|RAW\"):\n                    # avoid extra warnings for the hypothesis\n                    logger.warning(\"Binary data detected %s %s %s\", self.file_path, self.info,\n                                   repr(self.__data[:32]) if isinstance(self.__data, bytes) else \"NONE\")\n                self.__lines = []\n            else:\n                self.__lines = Util.split_text(text)\n        return self.__lines if self.__lines is not None else []\n\n    def yield_analysis_target(self, min_len: int) -> Generator[AnalysisTarget, None, None]:\n        \"\"\"Return lines to scan.\n\n        Args:\n            min_len: minimal line length to scan\n\n        Return:\n            list of analysis targets based on every row in a content\n\n        \"\"\"\n        return self.lines_to_targets(min_len, self.lines)\n"
  },
  {
    "path": "credsweeper/file_handler/content_provider.py",
    "content": "import logging\nfrom abc import ABC, abstractmethod\nfrom functools import cached_property\nfrom typing import List, Optional, Generator\n\nfrom credsweeper.common.constants import MAX_LINE_LENGTH\nfrom credsweeper.file_handler.analysis_target import AnalysisTarget\nfrom credsweeper.file_handler.descriptor import Descriptor\nfrom credsweeper.utils.util import Util\n\nlogger = logging.getLogger(__name__)\n\n\nclass ContentProvider(ABC):\n    \"\"\"Base class to provide access to analysis targets for scanned object.\"\"\"\n\n    def __init__(\n            self,  #\n            file_path: Optional[str] = None,  #\n            file_type: Optional[str] = None,  #\n            info: Optional[str] = None) -> None:\n        \"\"\"\n        Parameters:\n            file_path: optional string. Might be specified if you know the file name where data were taken from.\n            file_type: optional string. File extension e.g. \".java\". It might be obtained from file_path if not given.\n            info: optional string. Any information to help understand how a credential was found.\n\n        \"\"\"\n        _file_path: str = file_path or \"\"\n        _file_type: str = file_type if file_type is not None else Util.get_extension(file_path)\n        _info: str = info or \"\"\n        self.__descriptor = Descriptor(_file_path, _file_type, _info)\n\n    @abstractmethod\n    def yield_analysis_target(self, min_len: int) -> Generator[AnalysisTarget, None, None]:\n        \"\"\"Load and preprocess file diff data to scan.\n\n        Args:\n            min_len: minimal line length to scan\n\n        Return:\n            row objects to analysing\n\n        \"\"\"\n        raise NotImplementedError()\n\n    @cached_property\n    def descriptor(self) -> Descriptor:\n        \"\"\"descriptor getter\"\"\"\n        return self.__descriptor\n\n    @cached_property\n    def file_path(self) -> str:\n        \"\"\"file_path getter\"\"\"\n        return self.__descriptor.path\n\n    @cached_property\n    def file_type(self) -> str:\n        \"\"\"file_type getter\"\"\"\n        return self.__descriptor.extension\n\n    @cached_property\n    def info(self) -> str:\n        \"\"\"info getter\"\"\"\n        return self.__descriptor.info\n\n    @cached_property\n    @abstractmethod\n    def data(self) -> Optional[bytes]:\n        \"\"\"abstract data getter\"\"\"\n        raise NotImplementedError(__name__)\n\n    @abstractmethod\n    def free(self) -> None:\n        \"\"\"free data after scan to reduce memory usage\"\"\"\n        raise NotImplementedError(__name__)\n\n    def lines_to_targets(\n            self,  #\n            min_len: int,\n            lines: List[str],  #\n            line_nums: Optional[List[int]] = None) -> Generator[AnalysisTarget, None, None]:\n        \"\"\"Creates list of targets with multiline concatenation\"\"\"\n        lines_range = range(len(lines))\n        if line_nums is None or len(line_nums) != len(lines):\n            if line_nums is not None:\n                logger.warning(\"Line numerations %s does not match lines %s. Plain numeration applied\", len(line_nums),\n                               len(lines))\n            line_nums = [1 + x for x in lines_range]\n\n        for line_pos in lines_range:\n            line = lines[line_pos]\n            if min_len > len(line.strip()):\n                # Ignore target if stripped part is too short for all types\n                continue\n            if MAX_LINE_LENGTH < len(line):\n                for chunk_start, chunk_end in Util.get_chunks(len(line)):\n                    target = AnalysisTarget(\n                        line_pos=line_pos,  #\n                        lines=lines,  #\n                        line_nums=line_nums,  #\n                        descriptor=self.descriptor,  #\n                        line=line[chunk_start:chunk_end],  #\n                        offset=chunk_start)\n                    yield target\n            else:\n                target = AnalysisTarget(line_pos, lines, line_nums, self.descriptor)\n                yield target\n"
  },
  {
    "path": "credsweeper/file_handler/data_content_provider.py",
    "content": "import json\nimport logging\nimport warnings\nfrom functools import cached_property\nfrom typing import List, Optional, Any, Generator, Callable, Tuple\n\nimport yaml\nfrom bs4 import BeautifulSoup, Tag, XMLParsedAsHTMLWarning\n\nfrom credsweeper.common.constants import MIN_DATA_LEN\nfrom credsweeper.file_handler.analysis_target import AnalysisTarget\nfrom credsweeper.file_handler.content_provider import ContentProvider\nfrom credsweeper.utils.util import Util\n\nwarnings.filterwarnings(\"ignore\", category=XMLParsedAsHTMLWarning, module='bs4')\nlogger = logging.getLogger(__name__)\n\n# <t>12345678</t> - minimal xml with a credential\nMIN_XML_LEN = 16\n\n\nclass DataContentProvider(ContentProvider):\n    \"\"\"Dummy raw provider to keep bytes\"\"\"\n\n    def __init__(\n            self,  #\n            data: bytes,  #\n            file_path: Optional[str] = None,  #\n            file_type: Optional[str] = None,  #\n            info: Optional[str] = None) -> None:\n        \"\"\"\n        Parameters:\n            data: byte sequence to be stored for deep analysis\n\n        \"\"\"\n        super().__init__(file_path=file_path, file_type=file_type, info=info)\n        self.__data = data\n        self.__text: Optional[str] = None\n        self.structure: Optional[List[Any]] = None\n        self.decoded: Optional[bytes] = None\n        self.lines: List[str] = []\n        self.line_numbers: List[int] = []\n        self.__html_lines_size = len(data)  # the size is used to limit extra memory consumption during html combination\n\n    @cached_property\n    def data(self) -> Optional[bytes]:\n        \"\"\"data RO getter for DataContentProvider and the property is used in deep scan\"\"\"\n        return self.__data\n\n    def free(self) -> None:\n        \"\"\"free data after scan to reduce memory usage\"\"\"\n        self.__data = None\n        if \"data\" in self.__dict__:\n            delattr(self, \"data\")\n        self.__text = None\n        if \"text\" in self.__dict__:\n            delattr(self, \"text\")\n        self.structure = None\n        self.decoded = None\n        self.lines = []\n        self.line_numbers = []\n\n    @cached_property\n    def text(self) -> str:\n        \"\"\"Getter to produce a text from DEFAULT_ENCODING. Empty str for unrecognized data\"\"\"\n        if self.__text is None:\n            self.__text = Util.decode_text(self.__data) or ''\n        return self.__text\n\n    def __is_structure(self) -> bool:\n        \"\"\"Check whether a structure was recognized\"\"\"\n        return self.structure is not None and (isinstance(self.structure, dict) and 0 < len(self.structure.keys())\n                                               or isinstance(self.structure, list) and 0 < len(self.structure))\n\n    def represent_as_structure(self) -> Optional[bool]:\n        \"\"\"Tries to convert data with many parsers. Stores result to internal structure\n\n        Return:\n             True if some structure found\n             False if no data found\n             None if the format is not acceptable\n\n        \"\"\"\n        if MIN_DATA_LEN > len(self.text):\n            return False\n        # JSON & NDJSON\n        if '{' in self.text and '}' in self.text and '\"' in self.text and ':' in self.text:\n            try:\n                self.structure = json.loads(self.text)\n                logger.debug(\"CONVERTED from json\")\n            except Exception as exc:\n                logger.debug(\"Cannot parse as json:%s %s\", exc, self.data)\n            else:\n                if self.__is_structure():\n                    return True\n            try:\n                self.structure = []\n                for line in self.text.splitlines():\n                    # each line must be in json format, otherwise - exception rises\n                    self.structure.append(json.loads(line))\n                logger.debug(\"CONVERTED from ndjson\")\n            except Exception as exc:\n                logger.debug(\"Cannot parse as ndjson:%s %s\", exc, self.data)\n                self.structure = None\n            else:\n                if self.__is_structure():\n                    return True\n        else:\n            logger.debug(\"Data do not contain { - weak JSON\")\n\n        # # # Python\n        try:\n            # search only in sources with strings\n            if (';' in self.text or 2 < self.text.count('\\n') or 2 < self.text.count('\\r')) \\\n                    and ('\"' in self.text or \"'\" in self.text):\n                self.structure = Util.parse_python(self.text)\n                logger.debug(\"CONVERTED from Python\")\n            else:\n                logger.debug(\"Data do not contain line feed - weak PYTHON\")\n        except Exception as exc:\n            logger.debug(\"Cannot parse as Python:%s %s\", exc, self.data)\n        else:\n            if self.__is_structure():\n                return True\n        # # # YAML - almost always recognized\n        try:\n            if ':' in self.text and (2 < self.text.count('\\n') or 2 < self.text.count('\\r')):\n                self.structure = yaml.safe_load(self.text)\n                logger.debug(\"CONVERTED from yaml\")\n            else:\n                logger.debug(\"Data do not contain colon mark - weak YAML\")\n        except Exception as exc:\n            logger.debug(\"Cannot parse as yaml:%s %s\", exc, self.data)\n        else:\n            if self.__is_structure():\n                return True\n        # # # None of above\n        return None\n\n    def represent_as_xml(self) -> Optional[bool]:\n        \"\"\"Tries to read data as xml\n\n        Return:\n             True if reading was successful\n             False if no data found\n             None if the format is not acceptable\n\n        \"\"\"\n        if MIN_XML_LEN > len(self.text):\n            return False\n        try:\n            if '<' in self.text and '>' in self.text and \"</\" in self.text:\n                xml_text = self.text.splitlines()\n                self.lines, self.line_numbers = Util.get_xml_from_lines(xml_text)\n                logger.debug(\"CONVERTED from xml\")\n                return bool(self.lines and self.line_numbers)\n            logger.debug(\"Weak data to parse as XML\")\n        except Exception as exc:\n            logger.debug(\"Cannot parse as XML:%s %s\", exc, self.data)\n        return None\n\n    def _check_multiline_cell(self, cell: Tag) -> Optional[Tuple[int, str]]:\n        \"\"\"multiline cell will be analysed as text or return single line from cell\n        returns line number and one line for analysis\n        If there are no text or the text will be analysed as multiline - it returns None\"\"\"\n        # use not stripped get_text, otherwise all format is cleaned\n        cell_text = cell.get_text()\n        cell_lines = cell_text.splitlines()\n        line_numbers: List[int] = []\n        stripped_lines: List[str] = []\n        for offset, line in enumerate(cell_lines):\n            if stripped_line := line.strip():\n                line_numbers.append(cell.sourceline + offset)\n                stripped_lines.append(stripped_line)\n\n        if not stripped_lines:\n            return None\n        if 1 == len(stripped_lines):\n            return line_numbers[0], stripped_lines[0]\n        # otherwise the cell will be analyzed as multiline text\n        self.line_numbers.extend(line_numbers)\n        self.lines.extend(stripped_lines)\n        self.__html_lines_size += sum(len(x) for x in stripped_lines)\n        return None\n\n    @staticmethod\n    def simple_html_representation(html: BeautifulSoup) -> Tuple[List[int], List[str], int]:\n        \"\"\"simple parse as it is displayed to user and appends the lines\"\"\"\n        line_numbers: List[int] = []\n        lines: List[str] = []\n        lines_size = 0\n        # use dedicated variable to deal with yapf and flake\n        tags_to_split = [\n            \"p\", \"br\", \"tr\", \"li\", \"ol\", \"h1\", \"h2\", \"h3\", \"h4\", \"h5\", \"h6\", \"blockquote\", \"pre\", \"div\", \"th\", \"td\"\n        ]\n        for p in html.find_all(tags_to_split):\n            p.append('\\t')\n        html_lines = html.get_text().splitlines()\n        for line_number, doc_line in enumerate(html_lines):\n            line = doc_line.strip()\n            if line:\n                line_numbers.append(line_number + 1)\n                lines.append(line)\n                lines_size += len(line)\n        return line_numbers, lines, lines_size\n\n    @staticmethod\n    def _table_depth_reached(table: Tag, depth: int) -> bool:\n        if parent := table.parent:\n            if isinstance(parent, BeautifulSoup):\n                return False\n            if 0 > depth:\n                return True\n            if \"table\" == parent.name:\n                depth -= 1\n            return DataContentProvider._table_depth_reached(parent, depth)\n        return True\n\n    def _table_representation(\n            self,  #\n            table: Tag,  #\n            depth: int,  #\n            recursive_limit_size: int,  #\n            keywords_required_substrings_check: Callable[[str], bool]):\n        \"\"\"\n        transform table if table cell is assigned to header cell\n        make from cells a chain like next is assigned to previous\n        \"\"\"\n        if DataContentProvider._table_depth_reached(table, depth):\n            logger.warning(\"Recursive depth limit was reached during HTML table combinations\")\n            return\n        table_header: Optional[List[Optional[str]]] = None\n        rowspan_columns = []\n        for tr in table.find_all(\"tr\"):\n            if recursive_limit_size < self.__html_lines_size:\n                # weird tables may lead to oversize memory\n                break\n            record_numbers = []\n            record_lines = []\n            record_leading = None\n            if table_header is None:\n                table_header = []\n                # first row in table may be a header with <td> and a style, but search <th> too\n                for cell in tr.find_all([\"th\", \"td\"]):\n                    if recursive_limit_size < self.__html_lines_size:\n                        # keep the duplicates for early breaks!\n                        break\n                    colspan_header = int(cell.get(\"colspan\", 1))\n                    if td_numbered_line := self._check_multiline_cell(cell):\n                        td_text = td_numbered_line[1]\n                        td_text_has_keywords = keywords_required_substrings_check(td_text.lower())\n                        for _ in range(colspan_header):\n                            rowspan_header = int(cell.get(\"rowspan\", 1))\n                            rowspan_columns.append(rowspan_header)\n                            if td_text_has_keywords:\n                                table_header.append(td_text)\n                            else:\n                                table_header.append(None)\n                        if record_leading is None:\n                            if td_text_has_keywords:\n                                record_leading = td_text\n                            else:\n                                record_leading = \"\"\n                        else:\n                            record_numbers.append(td_numbered_line[0])\n                            record_lines.append(f\"{record_leading} : {td_text}\")\n                        # add single text to lines for analysis\n                        self.line_numbers.append(td_numbered_line[0])\n                        self.lines.append(td_text)\n                        self.__html_lines_size += len(td_text)\n                    else:\n                        # empty cell or multiline cell\n                        for _ in range(colspan_header):\n                            # number of columns is defined with header only\n                            rowspan_header = int(cell.get(\"rowspan\", 1))\n                            rowspan_columns.append(rowspan_header)\n                            table_header.append(None)\n            else:\n                header_pos = 0\n                # not a first line in table - may be combined with a header\n                for cell in tr.find_all(\"td\"):\n                    if recursive_limit_size < self.__html_lines_size:\n                        # keep the duplicates for early breaks!\n                        break\n                    while header_pos < len(rowspan_columns) and 1 < rowspan_columns[header_pos]:\n                        rowspan_columns[header_pos] -= 1\n                        header_pos += 1\n                    colspan_cell = int(cell.get(\"colspan\", 1))\n                    rowspan_cell = int(cell.get(\"rowspan\", 1))\n                    for i in range(header_pos, header_pos + colspan_cell):\n                        if i < len(rowspan_columns):\n                            rowspan_columns[i] += rowspan_cell - 1\n                    if td_numbered_line := self._check_multiline_cell(cell):\n                        td_text = td_numbered_line[1]\n                        if record_leading is None:\n                            td_text_has_keywords = keywords_required_substrings_check(td_text.lower())\n                            if td_text_has_keywords:\n                                record_leading = td_text\n                            else:\n                                record_leading = \"\"\n                        elif record_leading:\n                            record_numbers.append(td_numbered_line[0])\n                            record_lines.append(f\"{record_leading} : {td_text}\")\n                        if header_pos < len(table_header):\n                            if header_text := table_header[header_pos]:\n                                self.line_numbers.append(td_numbered_line[0])\n                                self.lines.append(f\"{header_text} : {td_text}\")\n                                self.__html_lines_size += len(td_text)\n                    else:\n                        # empty cell or multiline cell\n                        table_header.append(None)\n                    header_pos += colspan_cell\n            if record_lines:\n                # add combinations with left column\n                self.line_numbers.extend(record_numbers)\n                self.lines.extend(record_lines)\n                self.__html_lines_size += sum(len(x) for x in record_lines)\n\n    def _html_tables_representation(\n            self,  #\n            html: BeautifulSoup,  #\n            depth: int,  #\n            recursive_limit_size: int,  #\n            keywords_required_substrings_check: Callable[[str], bool]):\n        \"\"\"Iterates for all tables in html to explore cells and their combinations\"\"\"\n        depth -= 1\n        if 0 > depth:\n            return\n        for table in html.find_all(\"table\"):\n            if recursive_limit_size < self.__html_lines_size:\n                logger.warning(\"Recursive size limit was reached during HTML table combinations\")\n                break\n            self._table_representation(table, depth, recursive_limit_size, keywords_required_substrings_check)\n\n    def represent_as_html(\n            self,  #\n            depth: int,  #\n            recursive_limit_size: int,  #\n            keywords_required_substrings_check: Callable[[str], bool]) -> Optional[bool]:\n        \"\"\"Tries to read data as html\n\n        Return:\n             True if reading was successful\n             False if no data found\n             None if the format is not acceptable\n\n        \"\"\"\n        try:\n            if \"</\" in self.text and \">\" in self.text:\n                if html := BeautifulSoup(self.text, features=\"html.parser\"):\n                    line_numbers, lines, lines_size = self.simple_html_representation(html)\n                    self.line_numbers.extend(line_numbers)\n                    self.lines.extend(lines)\n                    self.__html_lines_size += lines_size\n                    # apply recursive_limit_size/2 to reduce extra calculation\n                    # of all accompanying losses per objects allocation\n                    self._html_tables_representation(html, depth, recursive_limit_size >> 1,\n                                                     keywords_required_substrings_check)\n                    logger.debug(\"CONVERTED from html\")\n            else:\n                logger.debug(\"Data do not contain specific tags - weak HTML\")\n        except Exception as exc:\n            logger.debug(\"Cannot parse as HTML:%s %s\", exc, self.data)\n        else:\n            return bool(self.lines and self.line_numbers)\n        return None\n\n    def yield_analysis_target(self, min_len: int) -> Generator[AnalysisTarget, None, None]:\n        \"\"\"Return nothing. The class provides only data storage.\n\n        Args:\n            min_len: minimal line length to scan\n\n        Raise:\n            NotImplementedError\n\n        \"\"\"\n        raise NotImplementedError()\n"
  },
  {
    "path": "credsweeper/file_handler/descriptor.py",
    "content": "from dataclasses import dataclass\n\n\n@dataclass(frozen=True)\nclass Descriptor:\n    \"\"\"Descriptor for file - optimize memory consumption\"\"\"\n    path: str\n    extension: str\n    info: str\n"
  },
  {
    "path": "credsweeper/file_handler/diff_content_provider.py",
    "content": "import logging\nfrom dataclasses import dataclass\nfrom functools import cached_property\nfrom typing import List, Tuple, Generator, TypedDict, Optional, Union, Any, Dict, cast\n\nimport whatthepatch\n\nfrom credsweeper.common.constants import DiffRowType\nfrom credsweeper.file_handler.analysis_target import AnalysisTarget\nfrom credsweeper.file_handler.content_provider import ContentProvider\n\nlogger = logging.getLogger(__name__)\n\nDiffDict = TypedDict(\n    \"DiffDict\",\n    {\n        \"old\": Optional[int],  #\n        \"new\": Optional[int],  #\n        \"line\": Union[str, bytes],  # bytes are possibly since whatthepatch v1.0.4\n        \"hunk\": Any  # not used\n    })\n\n\n@dataclass(frozen=True)\nclass DiffRowData:\n    \"\"\"Class for keeping data of diff row.\"\"\"\n\n    line_type: DiffRowType\n    line_numb: int\n    line: str\n\n\nclass DiffContentProvider(ContentProvider):\n    \"\"\"Provide data from a single `.patch` file.\n\n    Parameters:\n        file_path: path to file\n        change_type: set added or deleted file data to scan\n        diff: list of file row changes, with base elements represented as::\n\n            {\n                \"old\": line number before diff,\n                \"new\": line number after diff,\n                \"line\": line text,\n                \"hunk\": diff hunk number\n            }\n\n    \"\"\"\n\n    def __init__(\n            self,  #\n            file_path: str,  #\n            change_type: DiffRowType,  #\n            diff: List[DiffDict]) -> None:\n        super().__init__(file_path=file_path, info=f\"{file_path}:{change_type.value}\")\n        self.__change_type = change_type\n        self.__diff = diff\n\n    @cached_property\n    def data(self) -> bytes:\n        \"\"\"data getter for DiffContentProvider\"\"\"\n        raise NotImplementedError(__name__)\n\n    @cached_property\n    def diff(self) -> List[DiffDict]:\n        \"\"\"diff getter for DiffContentProvider\"\"\"\n        return self.__diff\n\n    def free(self) -> None:\n        \"\"\"free data after scan to reduce memory usage\"\"\"\n        self.__diff = []\n        if \"diff\" in self.__dict__:\n            delattr(self, \"diff\")\n\n    @staticmethod\n    def parse_lines_data(change_type: DiffRowType, lines_data: List[DiffRowData]) -> Tuple[List[int], List[str]]:\n        \"\"\"Parse diff lines data.\n\n        Return list of line numbers with change type \"self.change_type\" and list of all lines in file\n            in original order(replaced all lines not mentioned in diff file with blank line)\n\n        Args:\n            change_type: set added or deleted file data to scan\n            lines_data: data of all rows mentioned in diff file\n\n        Return:\n            tuple of line numbers with change type \"self.change_type\" and all file lines\n            in original order(replaced all lines not mentioned in diff file with blank line)\n\n        \"\"\"\n        change_numbs = []\n        all_lines = []\n        for line_data in lines_data:\n            if line_data.line_type == change_type:\n                change_numbs.append(line_data.line_numb)\n                all_lines.append(line_data.line)\n        return change_numbs, all_lines\n\n    @staticmethod\n    def patch2files_diff(raw_patch: List[str], change_type: DiffRowType) -> Dict[str, List[DiffDict]]:\n        \"\"\"Generate files changes from patch for added or deleted filepaths.\n\n        Args:\n            raw_patch: git patch file content\n            change_type: change type to select, DiffRowType.ADDED or DiffRowType.DELETED\n\n        Return:\n            return dict with ``{file paths: list of file row changes}``, where\n            elements of list of file row changes represented as::\n\n                {\n                    \"old\": line number before diff,\n                    \"new\": line number after diff,\n                    \"line\": line text,\n                    \"hunk\": diff hunk number\n                }\n\n        \"\"\"\n        if not raw_patch:\n            return {}\n\n        added_files: Dict[str, List[DiffDict]] = {}\n        deleted_files: Dict[str, List[DiffDict]] = {}\n        try:\n            for patch in whatthepatch.parse_patch(raw_patch):\n                if patch.changes is None:\n                    logger.warning(\"Patch '%s' cannot be scanned\", str(patch.header))\n                    continue\n                changes: List[DiffDict] = []\n                for change in patch.changes:\n                    change_dict = cast(DiffDict, change._asdict())\n                    changes.append(change_dict)\n                if patch.header:\n                    added_files[patch.header.new_path] = changes\n                    deleted_files[patch.header.old_path] = changes\n            if change_type == DiffRowType.ADDED:\n                return added_files\n            if change_type == DiffRowType.DELETED:\n                return deleted_files\n            logger.error(\"Change type should be one of: '%s', '%s'; but received %s\", DiffRowType.ADDED,\n                         DiffRowType.DELETED, change_type)\n        except Exception as exc:\n            logger.warning(exc)\n        return {}\n\n    @staticmethod\n    def preprocess_diff_rows(\n            added_line_number: Optional[int],  #\n            deleted_line_number: Optional[int],  #\n            line: str) -> List[DiffRowData]:\n        \"\"\"Auxiliary function to extend diff changes.\n\n        Args:\n            added_line_number: number of added line or None\n            deleted_line_number: number of deleted line or None\n            line: the text line\n\n        Return:\n            diff rows data with as list of row change type, line number, row content\n\n        \"\"\"\n        rows_data: List[DiffRowData] = []\n        if isinstance(added_line_number, int):\n            # indicates line was inserted\n            rows_data.append(DiffRowData(DiffRowType.ADDED, added_line_number, line))\n        if isinstance(deleted_line_number, int):\n            # indicates line was removed\n            rows_data.append(DiffRowData(DiffRowType.DELETED, deleted_line_number, line))\n        return rows_data\n\n    @staticmethod\n    def wrong_change(change: DiffDict) -> bool:\n        \"\"\"Returns True if the change is wrong\"\"\"\n        for i in [\"line\", \"new\", \"old\"]:\n            if i not in change:\n                logger.warning(\"Skipping wrong change %s\", change)\n                return True\n        return False\n\n    @staticmethod\n    def preprocess_file_diff(changes: List[DiffDict]) -> List[DiffRowData]:\n        \"\"\"Generate changed file rows from diff data with changed lines (e.g. marked + or - in diff).\n\n        Args:\n            changes: git diff by file rows data\n\n        Return:\n            diff rows data with as list of row change type, line number, row content\n\n        \"\"\"\n        if not changes:\n            return []\n\n        rows_data = []\n        # process diff to restore lines and their positions\n        for change in changes:\n            if DiffContentProvider.wrong_change(change):\n                continue\n            if text := change[\"line\"]:\n                if isinstance(text, str):\n                    diff_rows = DiffContentProvider.preprocess_diff_rows(change.get(\"new\"), change.get(\"old\"), text)\n                    rows_data.extend(diff_rows)\n                elif isinstance(text, (bytes, bytearray)):\n                    logger.warning(\"The feature is available with the deep scan option\")\n                else:\n                    logger.warning(\"Unknown type of line %s\", type(text))\n            else:\n                logger.debug(\"Change has no valuable text %s\", change)\n\n        return rows_data\n\n    def yield_analysis_target(self, min_len: int) -> Generator[AnalysisTarget, None, None]:\n        \"\"\"Preprocess file diff data to scan.\n\n        Args:\n            min_len: minimal line length to scan\n\n        Return:\n            list of analysis targets of every row of file diff corresponding to change type \"self.change_type\"\n\n        \"\"\"\n        lines_data = DiffContentProvider.preprocess_file_diff(self.__diff)\n        change_numbs, all_lines = self.parse_lines_data(self.__change_type, lines_data)\n        return self.lines_to_targets(min_len, all_lines, change_numbs)\n"
  },
  {
    "path": "credsweeper/file_handler/file_path_extractor.py",
    "content": "import io\nimport logging\nimport os\nfrom pathlib import Path\nfrom typing import List, Dict, Union, Tuple\n\nfrom git import InvalidGitRepositoryError, NoSuchPathError, Repo\n\nfrom credsweeper.common.constants import MIN_DATA_LEN\nfrom credsweeper.config.config import Config\nfrom credsweeper.utils.util import Util\n\nlogger = logging.getLogger(__name__)\n\n\nclass FilePathExtractor:\n    \"\"\"Util class to browse files in directories\"\"\"\n\n    FIND_BY_EXT_RULE = \"Suspicious File Extension\"\n    located_repos: Dict[Path, Repo] = {}\n\n    @staticmethod\n    def apply_gitignore(detected_files: List[str]) -> List[str]:\n        \"\"\"Apply gitignore rules for each file.\n\n        Args:\n            detected_files: list of files to be checked\n\n        Return:\n            List of files with all files ignored by git removed\n\n        \"\"\"\n        filtered_files = [file_path for file_path in detected_files if FilePathExtractor.is_valid_path(file_path)]\n\n        return filtered_files\n\n    @staticmethod\n    def get_file_paths(config: Config, path: Union[str, Path]) -> List[str]:\n        \"\"\"Get all files in the directory. Automatically exclude files non-code or data files (such as .jpg).\n\n        Args:\n            config: credsweeper configuration\n            path: path to the file or directory to be scanned\n\n        Return:\n            List all non-excluded files in the directory\n\n        \"\"\"\n        path = os.path.expanduser(path)  # Replace ~ character with a full path to the home directory\n        if not os.path.exists(path):\n            logger.warning(\"Path '%s' does not exist\", path)\n        file_paths = []\n        if os.path.isfile(path):\n            # suppose, the file is located outside and should be scanned\n            if not FilePathExtractor.check_exclude_file(config, path):\n                file_paths.append(path)\n        elif os.path.isdir(path):\n            for dirpath, _, filenames in os.walk(path):\n                for filename in filenames:\n                    file_path = os.path.join(f\"{dirpath}\", f\"{filename}\")\n                    if FilePathExtractor.check_exclude_file(config, file_path) or os.path.islink(file_path):\n                        continue\n                    if os.path.isfile(file_path) and not FilePathExtractor.check_file_size(config, file_path):\n                        file_paths.append(file_path)\n        else:\n            pass  # symbolic links and so on\n        return file_paths\n\n    @classmethod\n    def is_valid_path(cls, path: str) -> bool:\n        \"\"\"Locate nearest .git directory to the path and check if path is ignored.\n\n        Args:\n            path: path to the file or directory to check\n\n        Return:\n            False if file is ignored by git. True otherwise\n\n        \"\"\"\n        parent_directory = Path(path).parent\n\n        # Iterate over file path to find nearest \".git\" directory\n        while True:\n            try:\n                if parent_directory in cls.located_repos:\n                    repo = cls.located_repos[parent_directory]\n                else:\n                    # The directory must have \".git\" in it. If not it occurs error.\n                    repo = Repo(parent_directory)\n\n                    # Cache already located repositories, so we would not need to load it for each new file\n                    cls.located_repos[parent_directory] = repo\n\n                # Return True if there is no ignored file in 'path' and False if any.\n                return len(repo.ignored(path)) == 0\n\n            except (InvalidGitRepositoryError, NoSuchPathError):\n                new_parent = parent_directory.parent\n                # If we encountered root and cannot move further: no .git directory located in the entire path\n                if new_parent == parent_directory:\n                    return True\n                parent_directory = new_parent\n\n    @staticmethod\n    def is_find_by_ext_file(config: Config, extension: str) -> bool:\n        \"\"\"\n        Checks whether file has suspicious extension\n\n        Args:\n            config: Config\n            extension: str - may be only file name with extension\n\n        Return:\n            True when the feature is configured and the file extension matches\n        \"\"\"\n        return config.find_by_ext and extension in config.find_by_ext_list\n\n    @staticmethod\n    def check_exclude_file(config: Config, path: str) -> bool:\n        \"\"\"\n        Checks whether file should be excluded\n\n        Args:\n            config: Config\n            path: str - full path preferred\n\n        Return:\n            True when the file full path should be excluded according config\n        \"\"\"\n        if config.pedantic:\n            return False\n        path = path.replace('\\\\', '/')\n        lower_path = path.lower()\n        if config.not_allowed_path_pattern.match(lower_path):\n            return True\n        for exclude_pattern in config.exclude_patterns:\n            if exclude_pattern.match(lower_path):\n                return True\n        for exclude_path in config.exclude_paths:\n            # must be case-sensitive\n            if exclude_path in path:\n                return True\n        file_extension = Util.get_extension(lower_path, lower=False)\n        if file_extension in config.exclude_extensions:\n            return True\n        if not config.depth and file_extension in config.exclude_containers:\n            return True\n        # --depth or --doc enables scan for all documents extensions\n        if not (config.depth or config.doc) and file_extension in config.exclude_documents:\n            return True\n        return False\n\n    @staticmethod\n    def check_file_size(config: Config, reference: Union[str, Path, io.BytesIO, Tuple[Union[str, Path],\n                                                                                      io.BytesIO]]) -> bool:\n        \"\"\"\n        Checks whether the file is over the size limit from configuration or less MIN_DATA_LEN\n\n        Args:\n            config: Config\n            reference: various types of a file reference\n\n        Return:\n            True when the file is oversize or less than MIN_DATA_LEN, or unsupported\n        \"\"\"\n        path = reference[1] if isinstance(reference, tuple) else reference\n        if isinstance(path, (str, Path)):\n            file_size = os.path.getsize(path)\n        elif isinstance(path, io.BytesIO):\n            current_pos = path.tell()\n            path.seek(0, io.SEEK_END)\n            file_size = path.tell() - current_pos\n            path.seek(current_pos, io.SEEK_SET)\n        else:\n            logger.error(\"Unknown path type: %s\", path)\n            return True\n\n        if MIN_DATA_LEN > file_size:\n            logger.debug(\"Size (%s) of the file '%s' is too small\", file_size, path)\n            return True\n        if isinstance(config.size_limit, int) and config.size_limit < file_size:\n            logger.warning(\"Size (%s) of the file '%s' is over limit (%s)\", file_size, path, config.size_limit)\n            return True\n\n        return False\n"
  },
  {
    "path": "credsweeper/file_handler/files_provider.py",
    "content": "import io\nimport logging\nfrom pathlib import Path\nfrom typing import List, Optional, Union, Tuple, Sequence\n\nfrom credsweeper.config.config import Config\nfrom credsweeper.file_handler.abstract_provider import AbstractProvider\nfrom credsweeper.file_handler.content_provider import ContentProvider\nfrom credsweeper.file_handler.file_path_extractor import FilePathExtractor\nfrom credsweeper.file_handler.text_content_provider import TextContentProvider\n\nlogger = logging.getLogger(__name__)\n\n\nclass FilesProvider(AbstractProvider):\n    \"\"\"Provider of plain os files to be analysed.\"\"\"\n\n    def __init__(self,\n                 paths: Sequence[Union[str, Path, io.BytesIO, Tuple[Union[str, Path], io.BytesIO]]],\n                 skip_ignored: Optional[bool] = None) -> None:\n        \"\"\"Initialize Files Text Provider for files from 'paths'.\n\n        Args:\n            paths: list of parent paths of files to scan\n                   OR tuple of path (info purpose) and io.BytesIO (reads the data from current pos)\n            skip_ignored: boolean variable, Checking the directory to the list\n                          of ignored directories from the gitignore file\n\n        \"\"\"\n        super().__init__(paths)\n        self.skip_ignored = skip_ignored\n\n    def get_scannable_files(self, config: Config) -> Sequence[ContentProvider]:\n        \"\"\"Get list of full text file object for analysis of files with parent paths from \"paths\".\n\n        Args:\n            config: dict of credsweeper configuration\n\n        Return:\n            preprocessed file objects for analysis\n\n        \"\"\"\n        text_content_provider_list: List[ContentProvider] = []\n        for path in self.paths:\n            if isinstance(path, (str, Path)):\n                new_files = FilePathExtractor.get_file_paths(config, path)\n                if self.skip_ignored:\n                    new_files = FilePathExtractor.apply_gitignore(new_files)\n                for _file in new_files:\n                    text_content_provider_list.append(TextContentProvider(_file))\n            elif isinstance(path, io.BytesIO):\n                text_content_provider_list.append(TextContentProvider((\":memory:\", path)))\n            elif isinstance(path, tuple) and (isinstance(path[0], (str, Path))) and isinstance(path[1], io.BytesIO):\n                # suppose, all the files must be scanned\n                text_content_provider_list.append(TextContentProvider(path))\n            else:\n                logger.error(\"Unknown path type: %s\", path)\n\n        return text_content_provider_list\n"
  },
  {
    "path": "credsweeper/file_handler/patches_provider.py",
    "content": "import io\nimport logging\nfrom pathlib import Path\nfrom typing import List, Union, Tuple, Sequence\n\nfrom credsweeper.common.constants import DiffRowType\nfrom credsweeper.config.config import Config\nfrom credsweeper.file_handler.abstract_provider import AbstractProvider\nfrom credsweeper.file_handler.content_provider import ContentProvider\nfrom credsweeper.file_handler.diff_content_provider import DiffContentProvider\nfrom credsweeper.file_handler.file_path_extractor import FilePathExtractor\nfrom credsweeper.utils.util import Util\n\nlogger = logging.getLogger(__name__)\n\n\nclass PatchesProvider(AbstractProvider):\n    \"\"\"Provide data from a list of `.patch` files.\n    \"\"\"\n\n    def __init__(self, paths: Sequence[Union[str, Path, io.BytesIO, Tuple[Union[str, Path], io.BytesIO]]],\n                 change_type: DiffRowType) -> None:\n        \"\"\"Initialize Files Patch Provider for patch files from 'paths'.\n\n        Args:\n            paths: file paths list to scan. All files should be in `.patch` format\n            change_type: DiffRowType, type of analyses changes in patch (added or deleted)\n              of ignored directories from the gitignore file\n\n        \"\"\"\n        super().__init__(paths)\n        self.change_type = change_type\n\n    def load_patch_data(self, config: Config) -> List[List[str]]:\n        \"\"\"Loads data from patch\"\"\"\n        raw_patches = []\n        for file_path in self.paths:\n            if FilePathExtractor.check_file_size(config, file_path):\n                continue\n            if isinstance(file_path, (str, Path)):\n                raw_patches.append(Util.read_file(file_path))\n            elif isinstance(file_path, io.BytesIO):\n                the_patch = Util.decode_bytes(file_path.read())\n                raw_patches.append(the_patch)\n            elif isinstance(file_path, tuple) and 1 < len(file_path) and isinstance(file_path[1], io.BytesIO):\n                the_patch = Util.decode_bytes(file_path[1].read())\n                raw_patches.append(the_patch)\n            else:\n                logger.error(\"Unknown path type: %s\", file_path)\n\n        return raw_patches\n\n    def get_files_sequence(self, raw_patches: List[List[str]]) -> Sequence[ContentProvider]:\n        \"\"\"Returns sequence of files\"\"\"\n        files: List[ContentProvider] = []\n        for raw_patch in raw_patches:\n            files_data = DiffContentProvider.patch2files_diff(raw_patch, self.change_type)\n            for file_path, file_diff in files_data.items():\n                files.append(DiffContentProvider(file_path=file_path, change_type=self.change_type, diff=file_diff))\n        return files\n\n    def get_scannable_files(self, config: Config) -> Sequence[ContentProvider]:\n        \"\"\"Get files to scan. Output based on the `paths` field.\n\n        Args:\n            config: dict of credsweeper configuration\n\n        Return:\n            file objects for analysing\n\n        \"\"\"\n        diff_data = self.load_patch_data(config)\n        files = self.get_files_sequence(diff_data)\n        return files\n"
  },
  {
    "path": "credsweeper/file_handler/string_content_provider.py",
    "content": "from functools import cached_property\nfrom typing import List, Optional, Generator\n\nfrom credsweeper.file_handler.analysis_target import AnalysisTarget\nfrom credsweeper.file_handler.content_provider import ContentProvider\n\n\nclass StringContentProvider(ContentProvider):\n    \"\"\"Provider performs scan simple text lines\"\"\"\n\n    def __init__(\n            self,  #\n            lines: List[str],  #\n            line_numbers: Optional[List[int]] = None,  #\n            file_path: Optional[str] = None,  #\n            file_type: Optional[str] = None,  #\n            info: Optional[str] = None) -> None:\n        \"\"\"\n        Parameters:\n            lines: text lines to be processed\n            line_numbers: matched line numbers for lines if the order is not natural.\n                Otherwise, it will be filled with natural order from 1.\n\n        \"\"\"\n        super().__init__(file_path=file_path, file_type=file_type, info=info)\n        self.__lines = lines\n        # fill line numbers only when amounts are equal\n        if line_numbers is None or len(lines) != len(line_numbers):\n            self.__line_numbers = None\n        else:\n            self.__line_numbers = line_numbers\n\n    @cached_property\n    def data(self) -> bytes:\n        \"\"\"data getter for StringContentProvider\"\"\"\n        raise NotImplementedError(__name__)\n\n    def free(self) -> None:\n        \"\"\"free data after scan to reduce memory usage\"\"\"\n        self.__lines = []\n        if \"lines\" in self.__dict__:\n            delattr(self, \"lines\")\n        self.__line_numbers = []\n        if \"line_numbers\" in self.__dict__:\n            delattr(self, \"line_numbers\")\n\n    @cached_property\n    def lines(self) -> List[str]:\n        \"\"\"line_numbers RO getter for StringContentProvider\"\"\"\n        return self.__lines\n\n    @cached_property\n    def line_numbers(self) -> List[int]:\n        \"\"\"line_numbers RO getter for StringContentProvider\"\"\"\n        if self.__line_numbers is None or len(self.__lines) != len(self.__line_numbers):\n            self.__line_numbers = list(range(1, 1 + len(self.__lines))) if self.__lines else []\n        return self.__line_numbers\n\n    def yield_analysis_target(self, min_len: int) -> Generator[AnalysisTarget, None, None]:\n        \"\"\"Return lines to scan.\n\n        Args:\n            min_len: minimal line length to scan\n\n        Return:\n            list of analysis targets based on every row in file\n\n        \"\"\"\n        return self.lines_to_targets(min_len, self.lines, self.line_numbers)\n"
  },
  {
    "path": "credsweeper/file_handler/struct_content_provider.py",
    "content": "import logging\nfrom functools import cached_property\nfrom typing import Optional, Any, Generator\n\nfrom credsweeper.file_handler.analysis_target import AnalysisTarget\nfrom credsweeper.file_handler.content_provider import ContentProvider\n\nlogger = logging.getLogger(__name__)\n\n\nclass StructContentProvider(ContentProvider):\n    \"\"\"Content provider to keep structured data\"\"\"\n\n    def __init__(\n            self,  #\n            struct: Any,  #\n            file_path: Optional[str] = None,  #\n            file_type: Optional[str] = None,  #\n            info: Optional[str] = None) -> None:\n        \"\"\"\n        Parameters:\n            struct: Various structure (string, dictionary, list)\n\n        \"\"\"\n        super().__init__(file_path=file_path, file_type=file_type, info=info)\n        self.__struct = struct\n\n    @cached_property\n    def data(self) -> bytes:\n        \"\"\"data getter for StructContentProvider\"\"\"\n        raise NotImplementedError(__name__)\n\n    @cached_property\n    def struct(self) -> Any:\n        \"\"\"struct getter for StructContentProvider\"\"\"\n        return self.__struct\n\n    def free(self) -> None:\n        \"\"\"free data after scan to reduce memory usage\"\"\"\n        self.__struct = None\n        if \"struct\" in self.__dict__:\n            delattr(self, \"struct\")\n\n    def yield_analysis_target(self, min_len: int) -> Generator[AnalysisTarget, None, None]:\n        \"\"\"Return nothing. The class provides only data storage.\n\n        Args:\n            min_len: minimal line length to scan\n\n        Raise:\n            NotImplementedError\n\n        \"\"\"\n        raise NotImplementedError()\n"
  },
  {
    "path": "credsweeper/file_handler/text_content_provider.py",
    "content": "import io\nimport logging\nfrom functools import cached_property\nfrom pathlib import Path\nfrom typing import List, Optional, Union, Tuple, Generator\n\nfrom credsweeper.file_handler.analysis_target import AnalysisTarget\nfrom credsweeper.file_handler.content_provider import ContentProvider\nfrom credsweeper.utils.util import Util\n\nlogger = logging.getLogger(__name__)\n\n\nclass TextContentProvider(ContentProvider):\n    \"\"\"Provide access to analysis targets for full-text file scanning.\n\n    Parameters:\n        file_path: string, path to file\n\n    \"\"\"\n\n    def __init__(self,\n                 file_path: Union[str, Path, Tuple[Union[str, Path], io.BytesIO]],\n                 file_type: Optional[str] = None,\n                 info: Optional[str] = None) -> None:\n        _path = str(file_path[0]) if isinstance(file_path, tuple) else str(file_path)\n        self.__io = file_path[1] if isinstance(file_path, tuple) else None\n        self.__data: Optional[bytes] = None\n        self.__lines: Optional[List[str]] = None\n        super().__init__(file_path=_path, file_type=file_type, info=info)\n\n    @cached_property\n    def data(self) -> Optional[bytes]:\n        \"\"\"data RO getter for TextContentProvider\"\"\"\n        if self.__data is None:\n            if isinstance(self.__io, io.BytesIO) and self.__io:\n                self.__data = self.__io.read()\n            else:\n                self.__data = Util.read_data(self.file_path)\n        return self.__data\n\n    def free(self) -> None:\n        \"\"\"free data after scan to reduce memory usage\"\"\"\n        self.__data = None\n        if \"data\" in self.__dict__:\n            delattr(self, \"data\")\n        self.__lines = None\n        if \"lines\" in self.__dict__:\n            delattr(self, \"lines\")\n        if isinstance(self.__io, io.BytesIO) and self.__io and not self.__io.closed:\n            self.__io.close()\n\n    @cached_property\n    def lines(self) -> Optional[List[str]]:\n        \"\"\"lines getter for TextContentProvider\"\"\"\n        if self.__lines is None:\n            text = Util.decode_text(self.data)\n            if isinstance(text, str):\n                self.__lines = Util.split_text(text)\n            elif isinstance(self.__data, bytes):\n                logger.warning(\"Binary file detected %s %s %s\", self.file_path, self.info,\n                               repr(self.__data[:32]) if isinstance(self.__data, bytes) else \"NONE\")\n                self.__lines = []\n        return self.__lines if self.__lines is not None else []\n\n    def yield_analysis_target(self, min_len: int) -> Generator[AnalysisTarget, None, None]:\n        \"\"\"Load and preprocess file content to scan.\n\n        Args:\n            min_len: minimal line length to scan\n\n        Return:\n            list of analysis targets based on every row in file\n\n        \"\"\"\n        lines: Optional[List[str]] = None\n        line_nums: Optional[List[int]] = None\n\n        if Util.get_extension(self.file_path) == \".xml\":\n            try:\n                # append line ending for correct xml line numeration\n                xml_lines = [f\"{line}\\n\" for line in self.lines]\n                lines, line_nums = Util.get_xml_from_lines(xml_lines)\n            except Exception as exc:\n                logger.warning(\"Cannot parse to xml %s\", exc)\n\n        if lines is None:\n            lines = self.lines\n\n        return self.lines_to_targets(min_len, lines, line_nums)\n"
  },
  {
    "path": "credsweeper/filters/__init__.py",
    "content": "from credsweeper.filters.line_git_binary_check import LineGitBinaryCheck\nfrom credsweeper.filters.line_specific_key_check import LineSpecificKeyCheck\nfrom credsweeper.filters.line_uue_part_check import LineUUEPartCheck\nfrom credsweeper.filters.value_allowlist_check import ValueAllowlistCheck\nfrom credsweeper.filters.value_array_dictionary_check import ValueArrayDictionaryCheck\nfrom credsweeper.filters.value_atlassian_token_check import ValueAtlassianTokenCheck\nfrom credsweeper.filters.value_azure_token_check import ValueAzureTokenCheck\nfrom credsweeper.filters.value_base32_data_check import ValueBase32DataCheck\nfrom credsweeper.filters.value_base64_data_check import ValueBase64DataCheck\nfrom credsweeper.filters.value_base64_encoded_pem_check import ValueBase64EncodedPem\nfrom credsweeper.filters.value_base64_key_check import ValueBase64KeyCheck\nfrom credsweeper.filters.value_base64_part_check import ValueBase64PartCheck\nfrom credsweeper.filters.value_basic_auth_check import ValueBasicAuthCheck\nfrom credsweeper.filters.value_blocklist_check import ValueBlocklistCheck\nfrom credsweeper.filters.value_camel_case_check import ValueCamelCaseCheck\nfrom credsweeper.filters.value_dictionary_keyword_check import ValueDictionaryKeywordCheck\nfrom credsweeper.filters.value_discord_bot_check import ValueDiscordBotCheck\nfrom credsweeper.filters.value_entropy_base32_check import ValueEntropyBase32Check\nfrom credsweeper.filters.value_entropy_base36_check import ValueEntropyBase36Check\nfrom credsweeper.filters.value_entropy_base64_check import ValueEntropyBase64Check\nfrom credsweeper.filters.value_file_path_check import ValueFilePathCheck\nfrom credsweeper.filters.value_github_check import ValueGitHubCheck\nfrom credsweeper.filters.value_grafana_check import ValueGrafanaCheck\nfrom credsweeper.filters.value_grafana_service_check import ValueGrafanaServiceCheck\nfrom credsweeper.filters.value_hex_number_check import ValueHexNumberCheck\nfrom credsweeper.filters.value_jfrog_token_check import ValueJfrogTokenCheck\nfrom credsweeper.filters.value_json_web_key_check import ValueJsonWebKeyCheck\nfrom credsweeper.filters.value_json_web_token_check import ValueJsonWebTokenCheck\nfrom credsweeper.filters.value_last_word_check import ValueLastWordCheck\nfrom credsweeper.filters.value_length_check import ValueLengthCheck\nfrom credsweeper.filters.value_method_check import ValueMethodCheck\nfrom credsweeper.filters.value_morphemes_check import ValueMorphemesCheck\nfrom credsweeper.filters.value_not_allowed_pattern_check import ValueNotAllowedPatternCheck\nfrom credsweeper.filters.value_not_part_encoded_check import ValueNotPartEncodedCheck\nfrom credsweeper.filters.value_number_check import ValueNumberCheck\nfrom credsweeper.filters.value_pattern_check import ValuePatternCheck\nfrom credsweeper.filters.value_sealed_secret_check import ValueSealedSecretCheck\nfrom credsweeper.filters.value_search_check import ValueSearchCheck\nfrom credsweeper.filters.value_similarity_check import ValueSimilarityCheck\nfrom credsweeper.filters.value_split_keyword_check import ValueSplitKeywordCheck\nfrom credsweeper.filters.value_string_type_check import ValueStringTypeCheck\nfrom credsweeper.filters.value_token_base32_check import ValueTokenBase32Check\nfrom credsweeper.filters.value_token_base36_check import ValueTokenBase36Check\nfrom credsweeper.filters.value_token_base64_check import ValueTokenBase64Check\nfrom credsweeper.filters.value_token_check import ValueTokenCheck\n"
  },
  {
    "path": "credsweeper/filters/filter.py",
    "content": "from abc import abstractmethod, ABC\nfrom typing import Optional\n\nfrom credsweeper.config.config import Config\nfrom credsweeper.credentials.line_data import LineData\nfrom credsweeper.file_handler.analysis_target import AnalysisTarget\n\n\nclass Filter(ABC):\n    \"\"\"Base class for all filters that operates on 'line_data' objects.\"\"\"\n\n    @abstractmethod\n    def __init__(self, config: Optional[Config], *args):\n        \"\"\"Config is optional for a filter\"\"\"\n        raise NotImplementedError()\n\n    @abstractmethod\n    def run(self, line_data: LineData, target: AnalysisTarget) -> bool:\n        \"\"\"Run filter checks on received credential candidate data 'line_data'.\n\n        Args:\n            line_data: credential candidate data\n            target: multiline target from which line data was obtained\n\n        Return:\n            True, if need to filter candidate and False if left\n\n        \"\"\"\n        raise NotImplementedError()\n"
  },
  {
    "path": "credsweeper/filters/group/__init__.py",
    "content": "from credsweeper.filters.group.general_keyword import GeneralKeyword\nfrom credsweeper.filters.group.general_pattern import GeneralPattern\nfrom credsweeper.filters.group.password_keyword import PasswordKeyword\nfrom credsweeper.filters.group.token_pattern import TokenPattern\nfrom credsweeper.filters.group.url_credentials_group import UrlCredentialsGroup\nfrom credsweeper.filters.group.weird_base36_token import WeirdBase36Token\nfrom credsweeper.filters.group.weird_base64_token import WeirdBase64Token\n"
  },
  {
    "path": "credsweeper/filters/group/general_keyword.py",
    "content": "from credsweeper.common.constants import GroupType\nfrom credsweeper.config.config import Config\nfrom credsweeper.filters import ValueDictionaryKeywordCheck, ValueSealedSecretCheck\nfrom credsweeper.filters.group.group import Group\n\n\nclass GeneralKeyword(Group):\n    \"\"\"GeneralKeyword\"\"\"\n\n    def __init__(self, config: Config) -> None:\n        super().__init__(config, GroupType.KEYWORD)\n        self.filters.extend([ValueDictionaryKeywordCheck(), ValueSealedSecretCheck()])\n"
  },
  {
    "path": "credsweeper/filters/group/general_pattern.py",
    "content": "from credsweeper.common.constants import GroupType\nfrom credsweeper.config.config import Config\nfrom credsweeper.filters.group.group import Group\n\n\nclass GeneralPattern(Group):\n    \"\"\"GeneralPattern\"\"\"\n\n    def __init__(self, config: Config) -> None:\n        super().__init__(config, GroupType.PATTERN)\n"
  },
  {
    "path": "credsweeper/filters/group/group.py",
    "content": "from abc import ABC\nfrom typing import List\n\nfrom credsweeper.common.constants import GroupType\nfrom credsweeper.config.config import Config\nfrom credsweeper.filters.filter import Filter\nfrom credsweeper.filters.line_specific_key_check import LineSpecificKeyCheck\nfrom credsweeper.filters.value_allowlist_check import ValueAllowlistCheck\nfrom credsweeper.filters.value_array_dictionary_check import ValueArrayDictionaryCheck\nfrom credsweeper.filters.value_blocklist_check import ValueBlocklistCheck\nfrom credsweeper.filters.value_camel_case_check import ValueCamelCaseCheck\nfrom credsweeper.filters.value_file_path_check import ValueFilePathCheck\nfrom credsweeper.filters.value_hex_number_check import ValueHexNumberCheck\nfrom credsweeper.filters.value_last_word_check import ValueLastWordCheck\nfrom credsweeper.filters.value_method_check import ValueMethodCheck\nfrom credsweeper.filters.value_not_allowed_pattern_check import ValueNotAllowedPatternCheck\nfrom credsweeper.filters.value_pattern_check import ValuePatternCheck\nfrom credsweeper.filters.value_similarity_check import ValueSimilarityCheck\nfrom credsweeper.filters.value_string_type_check import ValueStringTypeCheck\nfrom credsweeper.filters.value_token_check import ValueTokenCheck\n\n\nclass Group(ABC):\n    \"\"\"Abstract Group class\"\"\"\n\n    def __init__(self, config: Config, rule_type: GroupType = GroupType.DEFAULT) -> None:\n        \"\"\"Config is required for filter group\"\"\"\n        if rule_type == GroupType.KEYWORD:\n            self.__filters = [  #\n                ValueAllowlistCheck(),  #\n                ValueArrayDictionaryCheck(),  #\n                ValueBlocklistCheck(),  #\n                ValueCamelCaseCheck(),  #\n                ValueFilePathCheck(),  #\n                ValueHexNumberCheck(),  #\n                ValueLastWordCheck(),  #\n                ValueMethodCheck(),  #\n                ValueSimilarityCheck(),  #\n                ValueStringTypeCheck(check_for_literals=config.check_for_literals),  #\n                ValueTokenCheck(),  #\n            ]\n            if not config.doc:\n                self.__filters.extend([ValuePatternCheck(), ValueNotAllowedPatternCheck()])\n        elif rule_type == GroupType.PATTERN:\n            self.__filters = [  #\n                LineSpecificKeyCheck(),  #\n                ValuePatternCheck(),  #\n            ]\n        else:\n            # GroupType.DEFAULT\n            self.__filters = []\n\n    @property\n    def filters(self) -> List[Filter]:\n        \"\"\"property getter\"\"\"\n        return self.__filters\n\n    @filters.setter\n    def filters(self, filters: List[Filter]) -> None:\n        \"\"\"property setter\"\"\"\n        self.__filters = filters\n"
  },
  {
    "path": "credsweeper/filters/group/password_keyword.py",
    "content": "from credsweeper.common.constants import GroupType\nfrom credsweeper.config.config import Config\nfrom credsweeper.filters import ValueLengthCheck, LineGitBinaryCheck, ValueSealedSecretCheck\nfrom credsweeper.filters import ValueSplitKeywordCheck\nfrom credsweeper.filters.group.group import Group\nfrom credsweeper.filters.line_uue_part_check import LineUUEPartCheck\n\n\nclass PasswordKeyword(Group):\n    \"\"\"PasswordKeyword\"\"\"\n\n    def __init__(self, config: Config) -> None:\n        super().__init__(config, GroupType.KEYWORD)\n        self.filters.extend([\n            ValueLengthCheck(max_len=config.max_password_value_length),\n            ValueSplitKeywordCheck(),\n            ValueSealedSecretCheck(),\n            LineGitBinaryCheck(),\n            LineUUEPartCheck()\n        ])\n"
  },
  {
    "path": "credsweeper/filters/group/token_pattern.py",
    "content": "from credsweeper.common.constants import GroupType\nfrom credsweeper.config.config import Config\nfrom credsweeper.filters import ValueMorphemesCheck, ValueCamelCaseCheck, ValueNumberCheck, ValuePatternCheck\nfrom credsweeper.filters.group.group import Group\n\n\nclass TokenPattern(Group):\n    \"\"\"Token Pattern\"\"\"\n\n    def __init__(self, config: Config) -> None:\n        super().__init__(config, GroupType.DEFAULT)\n        self.filters = [\n            ValueMorphemesCheck(),\n            ValueNumberCheck(),\n            ValueCamelCaseCheck(),\n            ValuePatternCheck(),\n        ]\n"
  },
  {
    "path": "credsweeper/filters/group/url_credentials_group.py",
    "content": "from credsweeper.common.constants import GroupType\nfrom credsweeper.config.config import Config\nfrom credsweeper.filters import (ValueAllowlistCheck, ValueArrayDictionaryCheck, ValueBlocklistCheck,\n                                 ValueCamelCaseCheck, ValueLengthCheck, ValueFilePathCheck, ValueLastWordCheck,\n                                 ValueMethodCheck, ValueNotAllowedPatternCheck, ValuePatternCheck, ValueStringTypeCheck,\n                                 ValueTokenCheck)\nfrom credsweeper.filters.group.group import Group\n\n\nclass UrlCredentialsGroup(Group):\n    \"\"\"UrlCredentialsGroup\"\"\"\n\n    def __init__(self, config: Config) -> None:\n        \"\"\"URL credentials group class.\n\n        Similar to PasswordKeyword, but exclude all checks dependent on the variable name, as URL credentials have no\n        explicitly defined variable\n        \"\"\"\n        super().__init__(config, GroupType.DEFAULT)\n        self.filters = [\n            ValueAllowlistCheck(),\n            ValueArrayDictionaryCheck(),\n            ValueBlocklistCheck(),\n            ValueCamelCaseCheck(),\n            ValueFilePathCheck(),\n            ValueLastWordCheck(),\n            ValueMethodCheck(),\n            ValueStringTypeCheck(check_for_literals=config.check_for_literals),\n            ValueNotAllowedPatternCheck(),\n            ValueTokenCheck(),\n            ValueLengthCheck(max_len=config.max_url_cred_value_length),\n            ValuePatternCheck()\n        ]\n"
  },
  {
    "path": "credsweeper/filters/group/weird_base36_token.py",
    "content": "from credsweeper.common.constants import GroupType\nfrom credsweeper.config.config import Config\nfrom credsweeper.filters import ValueMorphemesCheck, ValuePatternCheck, ValueNumberCheck, ValueEntropyBase36Check, \\\n    ValueTokenBase36Check\nfrom credsweeper.filters.group.group import Group\n\n\nclass WeirdBase36Token(Group):\n    \"\"\"Structured Token\"\"\"\n\n    def __init__(self, config: Config) -> None:\n        super().__init__(config, GroupType.DEFAULT)\n        self.filters = [\n            ValueMorphemesCheck(threshold=1),\n            ValuePatternCheck(),\n            ValueNumberCheck(),\n            ValueTokenBase36Check(),\n            ValueEntropyBase36Check(),\n        ]\n"
  },
  {
    "path": "credsweeper/filters/group/weird_base64_token.py",
    "content": "from credsweeper.common.constants import GroupType\nfrom credsweeper.config.config import Config\nfrom credsweeper.filters import ValueMorphemesCheck, ValueNotPartEncodedCheck, \\\n    ValueBase64DataCheck, ValueEntropyBase64Check, ValuePatternCheck, ValueNumberCheck, ValueTokenBase64Check, \\\n    ValueBase64PartCheck\nfrom credsweeper.filters.group.group import Group\n\n\nclass WeirdBase64Token(Group):\n    \"\"\"Structured Token\"\"\"\n\n    def __init__(self, config: Config) -> None:\n        super().__init__(config, GroupType.DEFAULT)\n        self.filters = [\n            ValueMorphemesCheck(threshold=1),\n            ValueNumberCheck(),\n            ValueBase64DataCheck(),\n            ValueTokenBase64Check(),\n            ValueEntropyBase64Check(),\n            ValuePatternCheck(),\n            ValueNotPartEncodedCheck(),\n            ValueBase64PartCheck(),\n        ]\n"
  },
  {
    "path": "credsweeper/filters/line_git_binary_check.py",
    "content": "import base64\nimport contextlib\nimport re\nfrom typing import Optional\n\nfrom credsweeper.config.config import Config\nfrom credsweeper.credentials.line_data import LineData\nfrom credsweeper.file_handler.analysis_target import AnalysisTarget\nfrom credsweeper.filters.filter import Filter\n\n\nclass LineGitBinaryCheck(Filter):\n    \"\"\"Checks that line is not a part of git binary patch\"\"\"\n    base85string = re.compile(r\"^[A-Za-z][0-9A-Za-z!#$%&()*+;<=>?@^_`{|}~-]{6,65}$\")\n\n    def __init__(self, config: Optional[Config] = None) -> None:\n        pass\n\n    def run(self, line_data: LineData, target: AnalysisTarget) -> bool:\n        \"\"\"Run filter checks on received credential candidate data 'line_data'.\n\n        Args:\n            line_data: credential candidate data\n            target: multiline target from which line data was obtained\n\n        Return:\n            True, if need to filter candidate and False if left\n\n        \"\"\"\n        if not line_data.line:\n            return True\n        if 66 < target.line_strip_len:\n            return False\n        line = target.line_strip\n        len_line = len(line)\n\n        # https://github.com/git/git/blob/master/base85.c\n\n        if 6 <= len_line and 0 == ((len_line - 1) % 5) and LineGitBinaryCheck.base85string.match(line):\n            size = ord(line[0])\n            if 65 <= size <= 90:  # A-Z\n                size -= 64\n            elif 97 <= size <= 122:  # a-z\n                size -= 70\n            else:\n                return False\n            with contextlib.suppress(Exception):\n                decoded = base64.b85decode(line[1:])\n                return len(decoded) == size\n\n        return False\n"
  },
  {
    "path": "credsweeper/filters/line_specific_key_check.py",
    "content": "import re\nfrom typing import Optional\n\nfrom credsweeper.common.constants import ML_HUNK\nfrom credsweeper.config.config import Config\nfrom credsweeper.credentials.line_data import LineData\nfrom credsweeper.file_handler.analysis_target import AnalysisTarget\nfrom credsweeper.filters.filter import Filter\nfrom credsweeper.utils.util import Util\n\n\nclass LineSpecificKeyCheck(Filter):\n    \"\"\"Check that values from list below is not in candidate line.\"\"\"\n\n    NOT_ALLOWED = [r\"example\", r\"\\benc[\\(\\[]\", r\"\\btrue\\b\", r\"\\bfalse\\b\"]\n    NOT_ALLOWED_PATTERN = re.compile(Util.get_regex_combine_or(NOT_ALLOWED), re.IGNORECASE)\n\n    def __init__(self, config: Optional[Config] = None) -> None:\n        pass\n\n    def run(self, line_data: LineData, target: AnalysisTarget) -> bool:\n        \"\"\"Run filter checks on received credential candidate data 'line_data'.\n\n        Args:\n            line_data: credential candidate data\n            target: multiline target from which line data was obtained\n\n        Return:\n            True, if need to filter candidate and False if left\n\n        \"\"\"\n        if line_data.line is None:\n            return True\n        if 0 <= line_data.variable_start:\n            # variable may be defined too\n            sub_line_start = 0 if ML_HUNK >= line_data.variable_start else line_data.variable_start - ML_HUNK\n        else:\n            sub_line_start = 0 if ML_HUNK >= line_data.value_start else line_data.value_start - ML_HUNK\n\n        if self.NOT_ALLOWED_PATTERN.search(line_data.line, sub_line_start, line_data.value_end + ML_HUNK):\n            return True\n\n        return False\n"
  },
  {
    "path": "credsweeper/filters/line_uue_part_check.py",
    "content": "import re\nfrom typing import Optional\n\nfrom credsweeper.config.config import Config\nfrom credsweeper.credentials.line_data import LineData\nfrom credsweeper.file_handler.analysis_target import AnalysisTarget\nfrom credsweeper.filters.filter import Filter\n\n\nclass LineUUEPartCheck(Filter):\n    \"\"\"Checks that line is not a part of UU encoding only for maximal line\"\"\"\n    uue_string = re.compile(r\"^M[!-`]{60}$\")\n\n    def __init__(self, config: Optional[Config] = None) -> None:\n        pass\n\n    def run(self, line_data: LineData, target: AnalysisTarget) -> bool:\n        \"\"\"Run filter checks on received credential candidate data 'line_data'.\n\n        Args:\n            line_data: credential candidate data\n            target: multiline target from which line data was obtained\n\n        Return:\n            True, if need to filter candidate and False if left\n\n        \"\"\"\n        if not line_data.line:\n            return True\n        if 61 != target.line_len:\n            return False\n        line = target.line\n        if LineUUEPartCheck.uue_string.match(line):\n            # to be sure - check two lines: before and/or after\n            if 0 < line_data.line_pos:\n                previous_line = target.lines[line_data.line_pos - 1]\n                if LineUUEPartCheck.uue_string.match(previous_line):\n                    return True\n\n            if len(target.lines) > 1 + line_data.line_pos:\n                next_line = target.lines[line_data.line_pos + 1]\n                if LineUUEPartCheck.uue_string.match(next_line):\n                    return True\n\n        return False\n"
  },
  {
    "path": "credsweeper/filters/value_allowlist_check.py",
    "content": "import re\nfrom typing import Optional\n\nfrom credsweeper.config.config import Config\nfrom credsweeper.credentials.line_data import LineData\nfrom credsweeper.file_handler.analysis_target import AnalysisTarget\nfrom credsweeper.filters.filter import Filter\nfrom credsweeper.utils.util import Util\n\n\nclass ValueAllowlistCheck(Filter):\n    \"\"\"Check that the patterns do not MATCH the candidate value.\"\"\"\n\n    ALLOWED = [\n        r\"ENC\\(.*\\)\",  #\n        r\"ENC\\[.*\\]\",  #\n        r\"\\$\\{(\\*|[0-9]+|[a-z_].*)\\}\",  #\n        r\"\\$[0-9]+(\\s|$)\",  #\n        r\"\\$\\$[a-z_]+(\\^%[0-9a-z_]+)?\",  #\n        r\"#\\{.+\\}\",  # Ruby: String Interpolation\n        r\"\\{\\{.+\\}\\}\",  #\n        r\".*@@@hl@@@(암호|비번|PW|PASS)@@@endhl@@@\",  #\n    ]\n\n    ALLOWED_PATTERN = re.compile(Util.get_regex_combine_or(ALLOWED), flags=re.IGNORECASE)\n\n    ALLOWED_QUOTED = [\n        r\"\\$[a-z_][0-9a-z_]+((::|->|\\.)[a-z_]|\\[|$)\",  #\n        r\"\\$\\([^)]+\\)\",  #\n        r\".*\\*\\*\\*\",  #\n    ]\n\n    ALLOWED_QUOTED_PATTERN = re.compile(Util.get_regex_combine_or(ALLOWED_QUOTED), flags=re.IGNORECASE)\n\n    ALLOWED_UNQUOTED = [\n        r\"[~a-z0-9_]+((\\.|->)[a-z0-9_]+)+\\(.*$\",  #\n        r\"\\$[a-z_][0-9a-z_]+((::|->|\\.)[a-z_]|\\[|$)\",  #\n        r\"\\$\\([.0-9a-z_-]+\",  #\n        r\".*\\*\\*\\*\\*\\*\",  #\n    ]\n\n    ALLOWED_UNQUOTED_PATTERN = re.compile(Util.get_regex_combine_or(ALLOWED_UNQUOTED), flags=re.IGNORECASE)\n\n    def __init__(self, config: Optional[Config] = None) -> None:\n        pass\n\n    def run(self, line_data: LineData, target: AnalysisTarget) -> bool:\n        \"\"\"Run filter checks on received credential candidate data 'line_data'.\n\n        Args:\n            line_data: credential candidate data\n            target: multiline target from which line data was obtained\n\n        Return:\n            True, if need to filter candidate and False if left\n\n        \"\"\"\n        if line_data.is_well_quoted_value:\n            if self.ALLOWED_PATTERN.match(line_data.value) or self.ALLOWED_QUOTED_PATTERN.match(line_data.value):\n                return True\n        else:\n            value = line_data.wrap + line_data.value if line_data.wrap else line_data.value\n            if self.ALLOWED_PATTERN.match(value) or self.ALLOWED_UNQUOTED_PATTERN.match(value):\n                return True\n        return False\n"
  },
  {
    "path": "credsweeper/filters/value_array_dictionary_check.py",
    "content": "import re\nfrom typing import Optional\n\nfrom credsweeper.config.config import Config\nfrom credsweeper.credentials.line_data import LineData\nfrom credsweeper.file_handler.analysis_target import AnalysisTarget\nfrom credsweeper.filters.filter import Filter\n\n\nclass ValueArrayDictionaryCheck(Filter):\n    \"\"\"Match call to dictionary or array element.\n\n    This filter checks only calls, not declarations:\n        `token = values[i]` would be filtered\n        `token = {'root'}` would be kept\n    \"\"\"\n\n    PATTERN = re.compile(r\"\\[['\\\"]?[^,]+['\\\"]?]\")\n\n    def __init__(self, config: Optional[Config] = None) -> None:\n        pass\n\n    def run(self, line_data: LineData, target: AnalysisTarget) -> bool:\n        \"\"\"Run filter checks on received credential candidate data 'line_data'.\n\n        Args:\n            line_data: credential candidate data\n            target: multiline target from which line data was obtained\n\n        Return:\n            True, if need to filter candidate and False if left\n\n        \"\"\"\n        if line_data.is_well_quoted_value:\n            return False\n        # not well quoted value\n        if line_data.wrap and \"byte\" in line_data.wrap.lower():\n            return False\n        if self.PATTERN.search(line_data.value):\n            return True\n        if line_data.wrap and (line_data.wrap.endswith('[') or line_data.wrap.endswith('(')):\n            return True\n\n        return False\n"
  },
  {
    "path": "credsweeper/filters/value_atlassian_token_check.py",
    "content": "import binascii\nimport contextlib\nfrom typing import Optional\n\nfrom credsweeper.common.constants import LATIN_1, ASCII\nfrom credsweeper.config.config import Config\nfrom credsweeper.credentials.line_data import LineData\nfrom credsweeper.file_handler.analysis_target import AnalysisTarget\nfrom credsweeper.filters.filter import Filter\nfrom credsweeper.utils.util import Util\n\n\nclass ValueAtlassianTokenCheck(Filter):\n    \"\"\"Check that candidate have a known structure\"\"\"\n\n    def __init__(self, config: Optional[Config] = None) -> None:\n        pass\n\n    def run(self, line_data: LineData, target: AnalysisTarget) -> bool:\n        \"\"\"Run filter checks on received token which might be structured.\n\n        Args:\n            line_data: credential candidate data\n            target: multiline target from which line data was obtained\n\n        Return:\n            True, if need to filter candidate and False if left\n\n        \"\"\"\n        value = line_data.value\n        with contextlib.suppress(Exception):\n            # atlassian integer:bytes from base64\n            if value.startswith(\"BBDC-\"):\n                # Bitbucket HTTP Access Token\n                return ValueAtlassianTokenCheck.check_atlassian_struct(value[5:])\n            if value.startswith(\"AT\"):\n                # Bitbucket App password\n                while \"\\\\=\" in value or \"%3d\" in value or \"%3D\" in value:\n                    # = sign may be escaped in URL https://www.rfc-editor.org/rfc/rfc3986\n                    value = value.replace('\\\\', '')\n                    value = value.replace('%3d', '=')\n                    value = value.replace('%3D', '=')\n                return ValueAtlassianTokenCheck.check_crc32_struct(value)\n            # Jira / Confluence PAT token\n            return ValueAtlassianTokenCheck.check_atlassian_struct(value)\n        return True\n\n    @staticmethod\n    def check_crc32_struct(value: str) -> bool:\n        \"\"\"Returns False if value is valid for bitbucket app password structure 'payload:crc32'\"\"\"\n        crc32 = int(value[-8:], 16)\n        data = value[:-8].encode(ASCII)\n        data_crc32 = binascii.crc32(data)\n        if crc32 == data_crc32:\n            return False\n        return True\n\n    @staticmethod\n    def check_atlassian_struct(value: str) -> bool:\n        \"\"\"Returns False if value is valid for atlassian structure 'integer:bytes'\"\"\"\n        decoded = Util.decode_base64(value, padding_safe=True, urlsafe_detect=True)\n        delimiter_pos = decoded.find(b':')\n        # there is limit for big integer value: math.log10(1<<64) = 19.265919722494797\n        if 0 < delimiter_pos <= 20:\n            val = decoded[:delimiter_pos].decode(LATIN_1)\n            # at least 4 digits in the token\n            if 1000 <= int(val):\n                # test for ascii and Shannon entropy - there should be random data\n                data = decoded[delimiter_pos + 1:]\n                return Util.is_ascii_entropy_validate(data)\n        return True\n"
  },
  {
    "path": "credsweeper/filters/value_azure_token_check.py",
    "content": "import contextlib\nimport json\nfrom typing import Optional\n\nfrom credsweeper.config.config import Config\nfrom credsweeper.credentials.line_data import LineData\nfrom credsweeper.file_handler.analysis_target import AnalysisTarget\nfrom credsweeper.filters.filter import Filter\nfrom credsweeper.filters.value_entropy_base64_check import ValueEntropyBase64Check\nfrom credsweeper.utils.util import Util\n\n\nclass ValueAzureTokenCheck(Filter):\n    \"\"\"\n    Azure tokens contains header, payload and signature\n    https://learn.microsoft.com/en-us/azure/active-directory-b2c/access-tokens\n    \"\"\"\n\n    def __init__(self, config: Optional[Config] = None) -> None:\n        pass\n\n    def run(self, line_data: LineData, target: AnalysisTarget) -> bool:\n        \"\"\"Run filter checks on received token which might be structured.\n\n        Args:\n            line_data: credential candidate data\n            target: multiline target from which line data was obtained\n\n        Return:\n            True, when need to filter candidate and False if left\n\n        \"\"\"\n        with contextlib.suppress(Exception):\n            parts = line_data.value.split('.')\n            if 3 != len(parts):\n                return True\n            hdr = Util.decode_base64(parts[0], padding_safe=True, urlsafe_detect=True)\n            header = json.loads(hdr)\n            if not (\"alg\" in header and \"typ\" in header and \"kid\" in header):\n                # must be all parts in header\n                return True\n            pld = Util.decode_base64(parts[1], padding_safe=True, urlsafe_detect=True)\n            payload = json.loads(pld)\n            if not (\"iss\" in payload and \"exp\" in payload and \"iat\" in payload):\n                # must be all parts in payload\n                return True\n            min_entropy = ValueEntropyBase64Check.get_min_data_entropy(len(parts[2]))\n            entropy = Util.get_shannon_entropy(parts[2])\n            # good signature has to be like random bytes\n            return entropy < min_entropy\n\n        return True\n"
  },
  {
    "path": "credsweeper/filters/value_base32_data_check.py",
    "content": "import base64\nimport contextlib\nimport string\nfrom typing import Optional\n\nfrom credsweeper.config.config import Config\nfrom credsweeper.credentials.line_data import LineData\nfrom credsweeper.file_handler.analysis_target import AnalysisTarget\nfrom credsweeper.filters.filter import Filter\nfrom credsweeper.utils.util import Util\n\n\nclass ValueBase32DataCheck(Filter):\n    \"\"\"\n    Check that candidate is NOT an ascii encoded string with entropy check\n    \"\"\"\n\n    def __init__(self, config: Optional[Config] = None) -> None:\n        pass\n\n    def run(self, line_data: LineData, target: AnalysisTarget) -> bool:\n        \"\"\"Run filter checks on received weird base32 token which must be a random string\n\n        Args:\n            line_data: credential candidate data\n            target: multiline target from which line data was obtained\n\n        Return:\n            True, when need to filter candidate and False if left\n\n        \"\"\"\n        value = line_data.value\n        # check whether digits and upper cases present\n        for string_set in [string.digits, string.ascii_uppercase]:\n            for digit in string_set:\n                if digit in value:\n                    break\n            else:\n                return True\n        # check whether decoded bytes have enough entropy\n        with contextlib.suppress(Exception):\n            if pad_remain := len(value) % 8:\n                value += '=' * (8 - pad_remain)\n            decoded = base64.b32decode(value)\n            return Util.is_ascii_entropy_validate(decoded)\n        return True\n"
  },
  {
    "path": "credsweeper/filters/value_base64_data_check.py",
    "content": "import contextlib\nimport string\nfrom typing import Optional\n\nfrom credsweeper.config.config import Config\nfrom credsweeper.credentials.line_data import LineData\nfrom credsweeper.file_handler.analysis_target import AnalysisTarget\nfrom credsweeper.filters.filter import Filter\nfrom credsweeper.utils.util import Util\n\n\nclass ValueBase64DataCheck(Filter):\n    \"\"\"\n    Check that candidate is NOT an ascii encoded string with entropy check\n    \"\"\"\n\n    def __init__(self, config: Optional[Config] = None) -> None:\n        pass\n\n    def run(self, line_data: LineData, target: AnalysisTarget) -> bool:\n        \"\"\"Run filter checks on received weird base64 token which must be a random string\n\n        Args:\n            line_data: credential candidate data\n            target: multiline target from which line data was obtained\n\n        Return:\n            True, when need to filter candidate and False if left\n\n        \"\"\"\n        value = line_data.value\n        # check whether digits, lower and upper cases present\n        for string_set in [string.digits, string.ascii_lowercase, string.ascii_uppercase]:\n            for digit in string_set:\n                if digit in value:\n                    break\n            else:\n                return True\n        # check whether decoded bytes have enough entropy\n        with contextlib.suppress(Exception):\n            decoded = Util.decode_base64(value, padding_safe=True, urlsafe_detect=True)\n            return Util.is_ascii_entropy_validate(decoded)\n        return True\n"
  },
  {
    "path": "credsweeper/filters/value_base64_encoded_pem_check.py",
    "content": "import logging\nfrom typing import Optional\n\nfrom credsweeper.common.constants import ASCII, PEM_BEGIN_PATTERN, MAX_LINE_LENGTH, PEM_END_PATTERN\nfrom credsweeper.config.config import Config\nfrom credsweeper.credentials.line_data import LineData\nfrom credsweeper.file_handler.analysis_target import AnalysisTarget\nfrom credsweeper.filters.filter import Filter\nfrom credsweeper.utils.pem_key_detector import PemKeyDetector\nfrom credsweeper.utils.util import Util\n\nlogger = logging.getLogger(__name__)\n\n\nclass ValueBase64EncodedPem(Filter):\n    \"\"\"Check that candidate contains base64 encoded pem private key\"\"\"\n\n    def __init__(self, config: Optional[Config] = None) -> None:\n        self.config = config\n\n    def run(self, line_data: LineData, target: AnalysisTarget) -> bool:\n        \"\"\"Run filter checks on received token which might be structured.\n\n        Args:\n            line_data: credential candidate data\n            target: multiline target from which line data was obtained\n\n        Return:\n            True, if need to filter candidate and False if left\n\n        \"\"\"\n\n        try:\n            text = Util.decode_base64(line_data.value, padding_safe=True, urlsafe_detect=True).decode(ASCII)\n            pem_text = ''\n            pem_end_found = False\n            for line in text.splitlines():\n                if pem_text:\n                    pem_text += f\"\\n{line}\"\n                    if PEM_END_PATTERN in line:\n                        pem_end_found = True\n                else:\n                    if PEM_BEGIN_PATTERN in line:\n                        if PemKeyDetector.RE_PEM_BEGIN.search(line, 0, MAX_LINE_LENGTH):\n                            pem_text = line\n                            if PEM_END_PATTERN in line:\n                                pem_end_found = True\n                if pem_end_found:\n                    new_target = AnalysisTarget(0, [pem_text], [1], target.descriptor)\n                    first_line = LineData(self.config, pem_text, 0, 1, target.file_path, target.file_type, target.info,\n                                          PemKeyDetector.RE_PEM_BEGIN)\n                    if PemKeyDetector(self.config).detect_pem_key(first_line, new_target):\n                        # obtained candidates are not used because not match text\n                        return False\n                    # drop the candidate and continue search\n                    pem_text = ''\n                    pem_end_found = False\n        except Exception as exc:\n            logger.warning(exc)\n        return True\n"
  },
  {
    "path": "credsweeper/filters/value_base64_key_check.py",
    "content": "import contextlib\nfrom typing import Optional\n\nfrom credsweeper.config.config import Config\nfrom credsweeper.credentials.line_data import LineData\nfrom credsweeper.file_handler.analysis_target import AnalysisTarget\nfrom credsweeper.filters.filter import Filter\nfrom credsweeper.utils.util import Util\n\n\nclass ValueBase64KeyCheck(Filter):\n    \"\"\"Check that candidate contains base64 encoded private key\"\"\"\n\n    EXTRA_TRANS_TABLE = str.maketrans('', '', \"\\\",'\\\\\")\n\n    def __init__(self, config: Optional[Config] = None) -> None:\n        self.config = config\n\n    def run(self, line_data: LineData, target: AnalysisTarget) -> bool:\n        \"\"\"Run filter checks on received token which might be structured.\n\n        Args:\n            line_data: credential candidate data\n            target: multiline target from which line data was obtained\n\n        Return:\n            True, if need to filter candidate and False if left\n\n        \"\"\"\n\n        with contextlib.suppress(Exception):\n            # remove backslash escaping sequences\n            text = Util.PEM_CLEANING_PATTERN.sub(r'', line_data.value)\n            # remove whitespaces\n            text = text.translate(Util.WHITESPACE_TRANS_TABLE)\n            # clean sequence concatenation case:\n            text = text.replace(\"'+'\", '')\n            text = text.replace('\"+\"', '')\n            # possibly url based escaping:\n            text = text.replace('%2B', '+')\n            text = text.replace('%2F', '/')\n            text = text.replace('%3D', '=')\n            # clean any other chars which should not appear\n            text = text.translate(ValueBase64KeyCheck.EXTRA_TRANS_TABLE)\n            # only PEM standard encoding supported in regex pattern to cut off ending of the key\n            key = Util.decode_base64(text, padding_safe=True, urlsafe_detect=False)\n            private_key = Util.load_pk(key, password=None)\n            if Util.check_pk(private_key):\n                return False\n        return True\n"
  },
  {
    "path": "credsweeper/filters/value_base64_part_check.py",
    "content": "import contextlib\nimport re\nimport statistics\nfrom itertools import takewhile\nfrom typing import Optional\n\nfrom credsweeper.common.constants import Chars\nfrom credsweeper.config.config import Config\nfrom credsweeper.credentials.line_data import LineData\nfrom credsweeper.file_handler.analysis_target import AnalysisTarget\nfrom credsweeper.filters.filter import Filter\nfrom credsweeper.filters.value_entropy_base64_check import ValueEntropyBase64Check\nfrom credsweeper.utils.util import Util\n\n\nclass ValueBase64PartCheck(Filter):\n    \"\"\"\n    Check that candidate is NOT a part of base64 long line\n    \"\"\"\n\n    base64_pattern = re.compile(r\"^(\\\\{1,8}[0abfnrtv]|[0-9A-Za-z+/=]){1,4000}$\")\n    base64_char_set = set(Chars.BASE64STDPAD_CHARS.value + '\\\\')\n\n    def __init__(self, config: Optional[Config] = None) -> None:\n        pass\n\n    def run(self, line_data: LineData, target: AnalysisTarget) -> bool:\n        \"\"\"Run filter checks on received weird base64 token which must be a random string\n\n        Args:\n            line_data: credential candidate data\n            target: multiline target from which line data was obtained\n\n        Return:\n            True, when need to filter candidate and False if left\n\n        \"\"\"\n\n        with contextlib.suppress(Exception):\n            line = line_data.line\n            len_line = len(line)\n            value = line_data.value\n            len_value = len(value)\n            if 0 == line_data.value_start and len_line >= 2 * len_value \\\n                    or 0 < line_data.value_start and line[line_data.value_start - 1] in ('/', '+', '\\\\', '%') \\\n                    or 0 < line_data.value_end < len_line and line[line_data.value_end] in ('/', '+', '\\\\', '%'):\n\n                if '-' in value or '_' in value:\n                    # the value contains url-safe chars, so '/' or '+' is a delimiter\n                    return False\n\n                left_start = line_data.value_start - len_value\n                if 0 > left_start:\n                    left_start = 0\n                right_end = line_data.value_end + len_value\n                if len_line < right_end:\n                    right_end = len_line\n\n                hunk_size = right_end - left_start\n\n                if hunk_size == 3 * len_value:\n                    # simple analysis for maximal data size\n                    if self.base64_pattern.match(line[left_start:right_end]):\n                        # obvious case: all characters are base64 standard\n                        return True\n                elif right_end - left_start >= 2 * len_value:\n                    # simple analysis for data too large to yield sensible insights\n                    part_set = set(line[left_start:right_end])\n                    if not part_set.difference(ValueBase64PartCheck.base64_char_set):\n                        # obvious case: all characters are base64 standard\n                        return True\n\n                left_part = ''.join(\n                    takewhile(lambda x: x in ValueBase64PartCheck.base64_char_set,\n                              reversed(line[left_start:line_data.value_start])))\n\n                right_part = ''.join(\n                    takewhile(lambda x: x in ValueBase64PartCheck.base64_char_set, line[line_data.value_end:right_end]))\n\n                min_entropy_value = ValueEntropyBase64Check.get_min_data_entropy(len_value)\n\n                left_entropy = Util.get_shannon_entropy(left_part)\n                value_entropy = Util.get_shannon_entropy(value)\n                right_entropy = Util.get_shannon_entropy(right_part)\n                common = left_part + value + right_part\n                common_entropy = Util.get_shannon_entropy(common)\n                min_entropy_common = ValueEntropyBase64Check.get_min_data_entropy(len(common))\n                if min_entropy_common < common_entropy:\n                    return True\n\n                if left_entropy and right_entropy:\n                    data = [left_entropy, value_entropy, right_entropy, min_entropy_value, common_entropy]\n                elif left_entropy and not right_entropy:\n                    data = [left_entropy, value_entropy, min_entropy_value, min_entropy_value, common_entropy]\n                elif not left_entropy and right_entropy:\n                    data = [value_entropy, right_entropy, min_entropy_value, min_entropy_value, common_entropy]\n                else:\n                    return False\n\n                avg = statistics.mean(data)\n                stdev = statistics.stdev(data, avg)\n                avg_min = avg - 1.1 * stdev\n                if (0. == left_entropy or avg_min < left_entropy or left_entropy < value_entropy < right_entropy) \\\n                        and (\n                        0. == right_entropy or avg_min < right_entropy or right_entropy < value_entropy < left_entropy):\n                    # high entropy of bound parts looks like a part of base64 long line\n                    return True\n                return False\n\n        return False\n"
  },
  {
    "path": "credsweeper/filters/value_basic_auth_check.py",
    "content": "import contextlib\nfrom typing import Optional\n\nfrom credsweeper.common.constants import DEFAULT_PATTERN_LEN, UTF_8\nfrom credsweeper.config.config import Config\nfrom credsweeper.credentials.line_data import LineData\nfrom credsweeper.file_handler.analysis_target import AnalysisTarget\nfrom credsweeper.filters.filter import Filter\nfrom credsweeper.utils.util import Util\n\n\nclass ValueBasicAuthCheck(Filter):\n    \"\"\"Check that candidate have a known structure\"\"\"\n\n    def __init__(self, config: Optional[Config] = None) -> None:\n        pass\n\n    def run(self, line_data: LineData, target: AnalysisTarget) -> bool:\n        \"\"\"Run filter checks on received token which might be structured.\n\n        Args:\n            line_data: credential candidate data\n            target: multiline target from which line data was obtained\n\n        Return:\n            True, if need to filter candidate and False if left\n\n        \"\"\"\n        value = line_data.value\n        with contextlib.suppress(Exception):\n            # Basic encoding -> login:password\n            decoded = Util.decode_base64(value, padding_safe=True, urlsafe_detect=True)\n            delimiter_pos = decoded.find(b':')\n            # check whether the delimiter exists and all chars are decoded\n            if 0 < delimiter_pos < len(decoded) - DEFAULT_PATTERN_LEN and decoded.decode(UTF_8):\n                return False\n        return True\n"
  },
  {
    "path": "credsweeper/filters/value_blocklist_check.py",
    "content": "from typing import Optional\n\nfrom credsweeper.config.config import Config\nfrom credsweeper.credentials.line_data import LineData\nfrom credsweeper.file_handler.analysis_target import AnalysisTarget\nfrom credsweeper.filters.filter import Filter\n\n\nclass ValueBlocklistCheck(Filter):\n    \"\"\"Check that words from block list is lest that 70% of candidate value length.\"\"\"\n\n    NOT_ALLOWED = [\n        \"true\",\n        \"false\",\n        \"null\",\n        \"none\",\n        \"bearer\",\n        \"string\",\n        \"value\",\n        \"undefined\",\n        \"uuid\",\n    ]\n\n    def __init__(self, config: Optional[Config] = None) -> None:\n        pass\n\n    def run(self, line_data: LineData, target: AnalysisTarget) -> bool:\n        \"\"\"Run filter checks on received credential candidate data 'line_data'.\n\n        Args:\n            line_data: credential candidate data\n            target: multiline target from which line data was obtained\n\n        Return:\n            True, if need to filter candidate and False if left\n\n        \"\"\"\n\n        value = line_data.value.lower()\n        for not_allowed in self.NOT_ALLOWED:\n            if not_allowed in value and len(not_allowed) / len(value) >= 0.7:\n                return True\n\n        return False\n"
  },
  {
    "path": "credsweeper/filters/value_camel_case_check.py",
    "content": "import re\nfrom typing import Optional\n\nfrom credsweeper.common import static_keyword_checklist\nfrom credsweeper.config.config import Config\nfrom credsweeper.credentials.line_data import LineData\nfrom credsweeper.file_handler.analysis_target import AnalysisTarget\nfrom credsweeper.filters.filter import Filter\nfrom credsweeper.utils.util import Util\n\n\nclass ValueCamelCaseCheck(Filter):\n    \"\"\"Check that candidate is not written in camel case.\"\"\"\n\n    CAMEL_CASE = [\"[a-z]+([A-Z][a-z]+)+\", \"[A-Z][a-z]+([A-Z][a-z]+)+\"]\n    CAMEL_CASE_PATTERN = re.compile(Util.get_regex_combine_or(CAMEL_CASE))\n\n    def __init__(self, config: Optional[Config] = None) -> None:\n        pass\n\n    def run(self, line_data: LineData, target: AnalysisTarget) -> bool:\n        \"\"\"Run filter checks on received credential candidate data 'line_data'.\n\n        Args:\n            line_data: credential candidate data\n            target: multiline target from which line data was obtained\n\n        Return:\n            True, if need to filter candidate and False if left\n\n        \"\"\"\n        if line_data.is_well_quoted_value:\n            return False\n        if self.CAMEL_CASE_PATTERN.fullmatch(line_data.value):\n            return static_keyword_checklist.check_morphemes(line_data.value.lower(), 1)\n\n        return False\n"
  },
  {
    "path": "credsweeper/filters/value_dictionary_keyword_check.py",
    "content": "from typing import Optional\n\nfrom credsweeper.common import static_keyword_checklist\nfrom credsweeper.config.config import Config\nfrom credsweeper.credentials.line_data import LineData\nfrom credsweeper.file_handler.analysis_target import AnalysisTarget\nfrom credsweeper.filters.filter import Filter\n\n\nclass ValueDictionaryKeywordCheck(Filter):\n    \"\"\"Check that no word from dictionary present in the candidate value.\"\"\"\n\n    def __init__(self, config: Optional[Config] = None) -> None:\n        pass\n\n    def run(self, line_data: LineData, target: AnalysisTarget) -> bool:\n        \"\"\"Run filter checks on received credential candidate data 'line_data'.\n\n        Args:\n            line_data: credential candidate data\n            target: multiline target from which line data was obtained\n\n        Return:\n            True, if need to filter candidate and False if left\n\n        \"\"\"\n        line_data_value_lower = line_data.value.lower()\n        for keyword in static_keyword_checklist.keyword_list:\n            if keyword in line_data_value_lower:\n                line_data_value_lower = line_data_value_lower.replace(keyword, '\\x7F' * len(keyword))\n                ratio = line_data_value_lower.count('\\x7F') / len(line_data_value_lower)\n                if 0.33 < ratio:\n                    return True\n        return False\n"
  },
  {
    "path": "credsweeper/filters/value_discord_bot_check.py",
    "content": "import contextlib\nfrom typing import Optional\n\nfrom credsweeper.config.config import Config\nfrom credsweeper.credentials.line_data import LineData\nfrom credsweeper.file_handler.analysis_target import AnalysisTarget\nfrom credsweeper.filters.filter import Filter\nfrom credsweeper.filters.value_entropy_base64_check import ValueEntropyBase64Check\nfrom credsweeper.utils.util import Util\n\n\nclass ValueDiscordBotCheck(Filter):\n    \"\"\"Discord bot Token\"\"\"\n\n    def __init__(self, config: Optional[Config] = None) -> None:\n        pass\n\n    def run(self, line_data: LineData, target: AnalysisTarget) -> bool:\n        \"\"\"Run filter checks on received token which might be structured.\n\n        Args:\n            line_data: credential candidate data\n            target: multiline target from which line data was obtained\n\n        Return:\n            True, when need to filter candidate and False if left\n\n        \"\"\"\n        with contextlib.suppress(Exception):\n            # . must be in value according regex\n            dot_separator_index = line_data.value.index('.')\n            id_part = line_data.value[:dot_separator_index]\n            discord_id = int(Util.decode_base64(id_part, padding_safe=True, urlsafe_detect=True))\n            entropy_part = line_data.value[dot_separator_index:]\n            entropy = Util.get_shannon_entropy(entropy_part)\n            min_entropy = ValueEntropyBase64Check.get_min_data_entropy(len(entropy_part))\n            if 1000 <= discord_id and min_entropy <= entropy:\n                return False\n        return True\n"
  },
  {
    "path": "credsweeper/filters/value_entropy_base32_check.py",
    "content": "import math\nfrom functools import cache\n\nfrom credsweeper.filters.value_entropy_base_check import ValueEntropyBaseCheck\n\n\nclass ValueEntropyBase32Check(ValueEntropyBaseCheck):\n    \"\"\"Base32 entropy check\"\"\"\n\n    @staticmethod\n    @cache\n    def get_min_data_entropy(x: int) -> float:\n        \"\"\"Returns average entropy for size of random data. Precalculated data is applied for speedup\"\"\"\n        if 8 <= x < 17:\n            y = 0.80569236 * math.log2(x) + 0.13439734\n        elif 17 <= x < 33:\n            y = 0.66350481 * math.log2(x) + 0.71143862\n        elif 33 <= x:\n            y = 4.04\n        else:\n            y = 0\n        return y\n"
  },
  {
    "path": "credsweeper/filters/value_entropy_base36_check.py",
    "content": "import math\nfrom functools import cache\n\nfrom credsweeper.filters.value_entropy_base_check import ValueEntropyBaseCheck\n\n\nclass ValueEntropyBase36Check(ValueEntropyBaseCheck):\n    \"\"\"Base36 entropy check\"\"\"\n\n    @staticmethod\n    @cache\n    def get_min_data_entropy(x: int) -> float:\n        \"\"\"Returns minimal entropy for size of random data. Precalculated data is applied for speedup\"\"\"\n        if 15 == x:\n            # workaround for Dropbox App secret\n            y = 3.374\n        elif 10 <= x < 26:\n            y = 0.731566857 * math.log2(x) + 0.474132\n        elif 26 <= x:\n            y = 3.9\n        else:\n            y = 0\n        return y\n"
  },
  {
    "path": "credsweeper/filters/value_entropy_base64_check.py",
    "content": "import math\nfrom functools import cache\n\nfrom credsweeper.filters.value_entropy_base_check import ValueEntropyBaseCheck\n\n\nclass ValueEntropyBase64Check(ValueEntropyBaseCheck):\n    \"\"\"Base64 entropy check\"\"\"\n\n    @staticmethod\n    @cache\n    def get_min_data_entropy(x: int) -> float:\n        \"\"\"Returns minimal average entropy for size of random data. Precalculated round data is applied for speedup\"\"\"\n        if 12 <= x < 18:\n            y = 0.915 * math.log2(x) - 0.047\n        elif 18 <= x < 35:\n            y = 0.767 * math.log2(x) + 0.5677\n        elif 35 <= x < 65:\n            y = 0.944 * math.log2(x) - 0.009 * x - 0.04\n        elif 65 <= x < 256:\n            y = 0.621 * math.log2(x) - 0.003 * x + 1.54\n        elif 256 <= x:\n            y = 6 - 64 / x\n        else:\n            y = 0\n        return y\n"
  },
  {
    "path": "credsweeper/filters/value_entropy_base_check.py",
    "content": "from abc import abstractmethod\nfrom typing import Optional\n\nfrom credsweeper.config.config import Config\nfrom credsweeper.credentials.line_data import LineData\nfrom credsweeper.file_handler.analysis_target import AnalysisTarget\nfrom credsweeper.filters.filter import Filter\nfrom credsweeper.utils.util import Util\n\n\nclass ValueEntropyBaseCheck(Filter):\n    \"\"\"Check that candidate value has minimal Shanon Entropy for appropriated base\"\"\"\n\n    def __init__(self, config: Optional[Config] = None) -> None:\n        pass\n\n    @staticmethod\n    @abstractmethod\n    def get_min_data_entropy(x: int) -> float:\n        \"\"\"Returns minimal entropy for size of data\"\"\"\n        raise NotImplementedError()\n\n    def run(self, line_data: LineData, target: AnalysisTarget) -> bool:\n        \"\"\"Run filter checks on received credential candidate data 'line_data'.\n\n        Args:\n            line_data: credential candidate data\n            target: multiline target from which line data was obtained\n\n        Return:\n            True, when need to filter candidate and False if left\n\n        \"\"\"\n        entropy = Util.get_shannon_entropy(line_data.value)\n        min_entropy = self.get_min_data_entropy(len(line_data.value))\n        if min_entropy > entropy or 0 == min_entropy:\n            return True\n        return False\n"
  },
  {
    "path": "credsweeper/filters/value_file_path_check.py",
    "content": "from typing import Optional\n\nfrom credsweeper.common import static_keyword_checklist\nfrom credsweeper.common.constants import Chars\nfrom credsweeper.config.config import Config\nfrom credsweeper.credentials.line_data import LineData\nfrom credsweeper.file_handler.analysis_target import AnalysisTarget\nfrom credsweeper.filters.filter import Filter\nfrom credsweeper.filters.value_entropy_base64_check import ValueEntropyBase64Check\nfrom credsweeper.utils.util import Util\n\n\nclass ValueFilePathCheck(Filter):\n    \"\"\"Check that candidate value is a path or not.\n\n    Check if a value contains either '/' or ':\\' separators (but not both)\n    and do not have any special characters ( !$@`&*()+)\n    \"\"\"\n    base64stdpad_possible_set = set(Chars.BASE64STDPAD_CHARS.value)\n    unusual_windows_symbols_in_path = \"\\t\\n\\r!$@`&*(){}<>+=;,~^\"\n    unusual_linux_symbols_in_path = \"\\t\\n\\r!@`&*<>+=;,~^:\\\\\"\n\n    def __init__(self, config: Optional[Config] = None) -> None:\n        pass\n\n    def run(self, line_data: LineData, target: AnalysisTarget) -> bool:\n        \"\"\"Run filter checks on received credential candidate data 'line_data'.\n\n        Args:\n            line_data: credential candidate data\n            target: multiline target from which line data was obtained\n\n        Return:\n            True, if need to filter candidate and False if left\n\n        \"\"\"\n        value = line_data.value\n        bit_length = len(value).bit_length()\n        morpheme_threshold = 1 if 6 > bit_length else bit_length - 4\n        contains_unix_separator = '/' in value\n        if contains_unix_separator:\n            if (\"://\" in value  #\n                    or value.startswith(\"~/\")  #\n                    or value.startswith(\"./\")  #\n                    or \"../\" in value  #\n                    or \"/..\" in value  #\n                    or value.startswith(\"//\") and ':' == line_data.separator):\n                # common case for url definition or aliases\n                # or _keyword_://example.com where : is the separator\n                return static_keyword_checklist.check_morphemes(value.lower(), morpheme_threshold)\n            # base64 encoded data might look like linux path\n            min_entropy = ValueEntropyBase64Check.get_min_data_entropy(len(value))\n            # get minimal entropy to compare with shannon entropy of found value\n            # min_entropy == 0 means that the value cannot be checked with the entropy due high variance\n            for i in value:\n                if i not in self.base64stdpad_possible_set:\n                    # value contains wrong BASE64STDPAD_CHARS symbols like -_.\n                    break\n            else:\n                # all symbols are from base64 alphabet\n                entropy = Util.get_shannon_entropy(value)\n                if 0 == min_entropy or min_entropy > entropy:\n                    contains_unix_separator = 1 < value.count('/')\n                else:\n                    # high entropy means base64 encoded data\n                    contains_unix_separator = False\n\n            # low shannon entropy points that the value maybe not a high randomized value in base64\n        contains_windows_separator = ':\\\\' in value\n        if contains_unix_separator or contains_windows_separator:\n            unusual_symbols_in_path = self.unusual_linux_symbols_in_path if contains_unix_separator \\\n                else self.unusual_windows_symbols_in_path\n            for i in unusual_symbols_in_path:\n                if i in value:\n                    # the symbols which not passed in a path usually\n                    break\n            else:\n                if contains_unix_separator ^ contains_windows_separator:\n                    return static_keyword_checklist.check_morphemes(value.lower(), morpheme_threshold)\n        return False\n"
  },
  {
    "path": "credsweeper/filters/value_github_check.py",
    "content": "import binascii\nimport contextlib\nfrom typing import Optional\n\nimport base62\n\nfrom credsweeper.common.constants import ASCII\nfrom credsweeper.config.config import Config\nfrom credsweeper.credentials.line_data import LineData\nfrom credsweeper.file_handler.analysis_target import AnalysisTarget\nfrom credsweeper.filters.filter import Filter\n\n\nclass ValueGitHubCheck(Filter):\n    \"\"\"NPM or GitHub Classic Token validation\"\"\"\n\n    def __init__(self, config: Optional[Config] = None) -> None:\n        pass\n\n    def run(self, line_data: LineData, target: AnalysisTarget) -> bool:\n        \"\"\"Run filter checks on received token which might be structured.\n\n        Args:\n            line_data: credential candidate data\n            target: multiline target from which line data was obtained\n\n        Return:\n            True, when need to filter candidate and False if left\n\n        \"\"\"\n        # https://github.blog/2021-04-05-behind-githubs-new-authentication-token-formats/\n        # https://github.blog/security/announcing-npms-new-access-token-format/\n        with contextlib.suppress(Exception):\n            if (line_data.value.startswith(\"gh\") and '_' == line_data.value[3]) or line_data.value.startswith(\"npm_\"):\n                token = line_data.value[4:-6]\n                data = token.encode(ASCII, errors=\"strict\")\n                crc32sum = binascii.crc32(data)\n                base62_crc32 = line_data.value[-6:]\n                sign_b = base62.decodebytes(base62_crc32)\n                crc32sign = int.from_bytes(sign_b, \"big\")\n                if crc32sign == crc32sum:\n                    return False\n        return True\n"
  },
  {
    "path": "credsweeper/filters/value_grafana_check.py",
    "content": "import contextlib\nimport json\nfrom typing import Optional\n\nfrom credsweeper.config.config import Config\nfrom credsweeper.credentials.line_data import LineData\nfrom credsweeper.file_handler.analysis_target import AnalysisTarget\nfrom credsweeper.filters.filter import Filter\nfrom credsweeper.utils.util import Util\n\n\nclass ValueGrafanaCheck(Filter):\n    \"\"\"Grafana Provisioned API Key and Access Policy Token\"\"\"\n\n    def __init__(self, config: Optional[Config] = None) -> None:\n        pass\n\n    def run(self, line_data: LineData, target: AnalysisTarget) -> bool:\n        \"\"\"Run filter checks on received token which might be structured.\n\n        Args:\n            line_data: credential candidate data\n            target: multiline target from which line data was obtained\n\n        Return:\n            True, when need to filter candidate and False if left\n\n        \"\"\"\n        with contextlib.suppress(Exception):\n            if line_data.value.startswith(\"glc_\"):\n                # Grafana Access Policy Token\n                decoded = Util.decode_base64(line_data.value[4:], padding_safe=True, urlsafe_detect=True)\n                keys = [\"o\", \"n\", \"k\", \"m\"]\n            else:\n                # Grafana Provisioned API Key\n                decoded = Util.decode_base64(line_data.value, padding_safe=True, urlsafe_detect=True)\n                keys = [\"n\", \"k\", \"id\"]\n            if payload := json.loads(decoded):\n                for key in keys:\n                    if key not in payload:\n                        return True\n                return False\n        return True\n"
  },
  {
    "path": "credsweeper/filters/value_grafana_service_check.py",
    "content": "import binascii\nimport contextlib\nimport struct\nfrom typing import Optional\n\nfrom credsweeper.common.constants import ASCII\nfrom credsweeper.config.config import Config\nfrom credsweeper.credentials.line_data import LineData\nfrom credsweeper.file_handler.analysis_target import AnalysisTarget\nfrom credsweeper.filters.filter import Filter\n\n\nclass ValueGrafanaServiceCheck(Filter):\n    \"\"\"Check that candidate have a known structure\"\"\"\n\n    def __init__(self, config: Optional[Config] = None) -> None:\n        pass\n\n    def run(self, line_data: LineData, target: AnalysisTarget) -> bool:\n        \"\"\"Run filter checks on received token which might be structured.\n\n        Args:\n            line_data: credential candidate data\n            target: multiline target from which line data was obtained\n\n        Return:\n            True, if need to filter candidate and False if left\n\n        \"\"\"\n        with contextlib.suppress(Exception):\n            checksum = struct.unpack(\"<I\", bytes.fromhex(line_data.value[38:]))[0]\n            data = line_data.value[:37].encode(ASCII)\n            crc32 = binascii.crc32(data)\n            if checksum == crc32:\n                return False\n        return True\n"
  },
  {
    "path": "credsweeper/filters/value_hex_number_check.py",
    "content": "import re\nfrom typing import Optional\n\nfrom credsweeper.config.config import Config\nfrom credsweeper.credentials.line_data import LineData\nfrom credsweeper.file_handler.analysis_target import AnalysisTarget\nfrom credsweeper.filters.filter import Filter\n\n\nclass ValueHexNumberCheck(Filter):\n    \"\"\"Check value if it is a value up to 64 bits hex representation\"\"\"\n\n    HEX_08_64_VALUE_REGEX = re.compile(r\"^0x[0-9a-f]{1,16}$\")\n\n    def __init__(self, config: Optional[Config] = None) -> None:\n        pass\n\n    def run(self, line_data: LineData, target: AnalysisTarget) -> bool:\n        \"\"\"Run filter checks on received credential candidate data 'line_data'.\n\n        Args:\n            line_data: credential candidate data\n            target: multiline target from which line data was obtained\n\n        Return:\n            True, if need to filter candidate and False if left\n\n        \"\"\"\n        value = line_data.value.lower()\n        if ValueHexNumberCheck.HEX_08_64_VALUE_REGEX.match(value):\n            return True\n        return False\n"
  },
  {
    "path": "credsweeper/filters/value_jfrog_token_check.py",
    "content": "import contextlib\nimport re\nfrom typing import Optional\n\nimport base58\n\nfrom credsweeper.common.constants import ASCII\nfrom credsweeper.config.config import Config\nfrom credsweeper.credentials.line_data import LineData\nfrom credsweeper.file_handler.analysis_target import AnalysisTarget\nfrom credsweeper.filters.filter import Filter\nfrom credsweeper.utils.util import Util\n\n\nclass ValueJfrogTokenCheck(Filter):\n    \"\"\"Check that candidate have a known structure JFROG token\"\"\"\n\n    def __init__(self, config: Optional[Config] = None) -> None:\n        # reftkn:01:0123456789:abcdefGhijklmnoPqrstuVwxyz0\n        self._pattern = re.compile(r\"reftkn:\\d+:\\d+:[\\w_/+-]+\")\n\n    def run(self, line_data: LineData, target: AnalysisTarget) -> bool:\n        \"\"\"Run filter checks on received token which might be structured.\n\n        Args:\n            line_data: credential candidate data\n            target: multiline target from which line data was obtained\n\n        Return:\n            True, if need to filter candidate and False if left\n\n        \"\"\"\n        value = line_data.value\n        with contextlib.suppress(Exception):\n            if value.startswith(\"cmVmdGtuO\"):\n                decoded = Util.decode_base64(value, padding_safe=True, urlsafe_detect=True)\n                if self._pattern.match(decoded.decode(ASCII)):\n                    # identity token\n                    return False\n            if value.startswith(\"AKCp\"):\n                decoded = base58.b58decode(value)\n                # the check only for correct size decoding\n                if 54 == len(decoded):\n                    # API key (deprecated) - a good integrity check solution was not found\n                    return False\n        return True\n"
  },
  {
    "path": "credsweeper/filters/value_json_web_key_check.py",
    "content": "import contextlib\nfrom typing import Optional\n\nfrom credsweeper.config.config import Config\nfrom credsweeper.credentials.line_data import LineData\nfrom credsweeper.file_handler.analysis_target import AnalysisTarget\nfrom credsweeper.filters.filter import Filter\nfrom credsweeper.utils.util import Util\n\n\nclass ValueJsonWebKeyCheck(Filter):\n    \"\"\"\n    Check that candidate is JWK which starts usually from 'e'\n    and have private parts of the key\n    https://datatracker.ietf.org/doc/html/rfc7517\n    https://datatracker.ietf.org/doc/html/rfc7518\n    \"\"\"\n\n    def __init__(self, config: Optional[Config] = None) -> None:\n        pass\n\n    def run(self, line_data: LineData, target: AnalysisTarget) -> bool:\n        \"\"\"Run filter checks on received key which might be structured.\n\n        Args:\n            line_data: credential candidate data\n            target: multiline target from which line data was obtained\n\n        Return:\n            True, when need to filter candidate and False if left\n\n        \"\"\"\n        with contextlib.suppress(Exception):\n            if data := Util.decode_base64(line_data.value, padding_safe=True, urlsafe_detect=True):\n                if b'\"kty\":' in data and (b'\"oct\"' in data and b'\"k\":' in data or\n                                          (b'\"EC\"' in data or b'\"RSA\"' in data) and b'\"d\":' in data):\n                    return False\n        return True\n"
  },
  {
    "path": "credsweeper/filters/value_json_web_token_check.py",
    "content": "import contextlib\nimport json\nfrom typing import Optional\n\nfrom credsweeper.config.config import Config\nfrom credsweeper.credentials.line_data import LineData\nfrom credsweeper.file_handler.analysis_target import AnalysisTarget\nfrom credsweeper.filters.filter import Filter\nfrom credsweeper.utils.util import Util\n\n\nclass ValueJsonWebTokenCheck(Filter):\n    \"\"\"\n    Check that candidate is JWT which starts usually from 'eyJ'\n    registered keys are checked to be in the JWT parts\n    https://www.iana.org/assignments/jose/jose.xhtml\n    \"\"\"\n    header_keys = {\n        \"kid\", \"x5u\", \"x5t\", \"x5t#S256\", \"typ\", \"cty\", \"crit\", \"alg\", \"enc\", \"zip\", \"jku\", \"jwk\", \"x5c\", \"epk\", \"apu\",\n        \"apv\", \"iv\", \"tag\", \"p2s\", \"p2c\", \"iss\", \"sub\", \"aud\", \"b64\", \"ppt\", \"url\", \"nonce\", \"svt\"\n    }\n    payload_keys = {\n        \"iss\", \"sub\", \"aud\", \"exp\", \"nbf\", \"iat\", \"jti\", \"kty\", \"use\", \"key_ops\", \"alg\", \"enc\", \"zip\", \"jku\", \"jwk\",\n        \"kid\", \"x5u\", \"x5c\", \"x5t\", \"x5t#S256\", \"x\", \"y\", \"d\", \"n\", \"e\", \"p\", \"q\", \"dp\", \"dq\", \"qi\", \"oth\", \"k\", \"crv\",\n        \"ext\", \"crit\", \"keys\", \"id\", \"role\", \"token\", \"secret\", \"password\", \"nonce\"\n    }\n\n    def __init__(self, config: Optional[Config] = None) -> None:\n        pass\n\n    def run(self, line_data: LineData, target: AnalysisTarget) -> bool:\n        \"\"\"Run filter checks on received token which might be structured.\n\n        Args:\n            line_data: credential candidate data\n            target: multiline target from which line data was obtained\n\n        Return:\n            True, when need to filter candidate and False if left\n\n        \"\"\"\n        header_check = False\n        payload_check = False\n        signature_check = False\n        with contextlib.suppress(Exception):\n            jwt_parts = line_data.value.split('.')\n            for part in jwt_parts:\n                data = Util.decode_base64(part, padding_safe=True, urlsafe_detect=True)\n                if part.startswith(\"eyJ\"):\n                    # open part - just base64 encoded\n                    json_keys = json.loads(data).keys()\n                    # header will be checked first\n                    if not header_check:\n                        header_check = bool(ValueJsonWebTokenCheck.header_keys.intersection(json_keys))\n                    # payload follows the header\n                    elif not payload_check:\n                        payload_check = bool(ValueJsonWebTokenCheck.payload_keys.intersection(json_keys))\n                        # any other payloads are allowed\n                elif header_check and payload_check and not signature_check:\n                    # signature check or skip encrypted part\n                    signature_check = not Util.is_ascii_entropy_validate(data)\n                else:\n                    break\n        if header_check and payload_check and signature_check:\n            return False\n        return True\n"
  },
  {
    "path": "credsweeper/filters/value_last_word_check.py",
    "content": "from typing import Optional\n\nfrom credsweeper.config.config import Config\nfrom credsweeper.credentials.line_data import LineData\nfrom credsweeper.file_handler.analysis_target import AnalysisTarget\nfrom credsweeper.filters.filter import Filter\n\n\nclass ValueLastWordCheck(Filter):\n    \"\"\"Check that secret is not short value that ends with `:`.\"\"\"\n\n    def __init__(self, config: Optional[Config] = None) -> None:\n        pass\n\n    def run(self, line_data: LineData, target: AnalysisTarget) -> bool:\n        \"\"\"Run filter checks on received credential candidate data 'line_data'.\n\n        Args:\n            line_data: credential candidate data\n            target: multiline target from which line data was obtained\n\n        Return:\n            True, if need to filter candidate and False if left\n\n        \"\"\"\n        if 16 > len(line_data.value) and not line_data.is_well_quoted_value and line_data.value.endswith(':'):\n            return True\n        return False\n"
  },
  {
    "path": "credsweeper/filters/value_length_check.py",
    "content": "from typing import Optional\n\nfrom credsweeper.common.constants import MIN_VALUE_LENGTH, MAX_LINE_LENGTH\nfrom credsweeper.config.config import Config\nfrom credsweeper.credentials.line_data import LineData\nfrom credsweeper.file_handler.analysis_target import AnalysisTarget\nfrom credsweeper.filters.filter import Filter\n\n\nclass ValueLengthCheck(Filter):\n    \"\"\"Check that candidate value length is between MIN and MAX.\"\"\"\n\n    def __init__(self,\n                 config: Optional[Config] = None,\n                 min_len: int = MIN_VALUE_LENGTH,\n                 max_len: int = MAX_LINE_LENGTH) -> None:\n        self.min_len = min_len\n        self.max_len = max_len\n\n    def run(self, line_data: LineData, target: AnalysisTarget) -> bool:\n        \"\"\"Run filter checks on received credential candidate data 'line_data'.\n\n        Args:\n            line_data: credential candidate data\n            target: multiline target from which line data was obtained\n\n        Return:\n            True, if need to filter candidate and False if left\n\n        \"\"\"\n        if self.min_len <= len(line_data.value) <= self.max_len:\n            return False\n        return True\n"
  },
  {
    "path": "credsweeper/filters/value_method_check.py",
    "content": "import re\nfrom typing import Optional\n\nfrom credsweeper.config.config import Config\nfrom credsweeper.credentials.line_data import LineData\nfrom credsweeper.file_handler.analysis_target import AnalysisTarget\nfrom credsweeper.filters.filter import Filter\n\n\nclass ValueMethodCheck(Filter):\n    \"\"\"Check if potential candidate value is a function.\n\n    Check if potential candidate value is a function by looking for '(', ')' or 'function' sub-strings in it\n    \"\"\"\n\n    PATTERN = re.compile(r\"^[~.\\->:0-9A-Za-z_]+\\(.*\\)\")\n\n    def __init__(self, config: Optional[Config] = None) -> None:\n        pass\n\n    def run(self, line_data: LineData, target: AnalysisTarget) -> bool:\n        \"\"\"Run filter checks on received credential candidate data 'line_data'.\n\n        Args:\n            line_data: credential candidate data\n            target: multiline target from which line data was obtained\n\n        Return:\n            True, if need to filter candidate and False if left\n\n        \"\"\"\n        if line_data.is_well_quoted_value:\n            return False\n        if \"function\" in line_data.value or self.PATTERN.search(line_data.value):\n            return True\n        return False\n"
  },
  {
    "path": "credsweeper/filters/value_morphemes_check.py",
    "content": "from typing import Optional\n\nfrom credsweeper.common import static_keyword_checklist\nfrom credsweeper.common.constants import MAX_LINE_LENGTH\nfrom credsweeper.config.config import Config\nfrom credsweeper.credentials.line_data import LineData\nfrom credsweeper.file_handler.analysis_target import AnalysisTarget\nfrom credsweeper.filters.filter import Filter\n\n\nclass ValueMorphemesCheck(Filter):\n    \"\"\"Check value for a threshold of morphemes count\"\"\"\n\n    THRESHOLDS_X3 = int(MAX_LINE_LENGTH).bit_length()\n    # one morpheme is very likely to be random generated even for 3 symbols\n    MAX_MORPHEMES_LIMIT = max(1, THRESHOLDS_X3 - 4)\n\n    def __init__(self, config: Optional[Config] = None, threshold: Optional[int] = None) -> None:\n        # threshold - minimum morphemes number in a value\n        if threshold is None:\n            # use dynamic thresholds\n            self.thresholds = [max(1, x - 4) for x in range(ValueMorphemesCheck.THRESHOLDS_X3)]\n        elif isinstance(threshold, int) and 0 <= threshold:\n            # constant thresholds for any pattern\n            self.thresholds = [threshold] * ValueMorphemesCheck.THRESHOLDS_X3\n        else:\n            raise ValueError(f\"Wrong type of pattern length {type(threshold)} = {repr(threshold)}\")\n\n    def run(self, line_data: LineData, target: AnalysisTarget) -> bool:\n        \"\"\"Run filter checks on received credential candidate data 'line_data'.\n\n        Args:\n            line_data: credential candidate data\n            target: multiline target from which line data was obtained\n\n        Return:\n            True, if need to filter candidate and False if left\n\n        \"\"\"\n        threshold_id = len(line_data.value).bit_length()\n        # use the last (max) threshold in very huge value\n        threshold = self.thresholds[threshold_id] if len(self.thresholds) > threshold_id else self.thresholds[-1]\n        return static_keyword_checklist.check_morphemes(line_data.value.lower(), threshold)\n"
  },
  {
    "path": "credsweeper/filters/value_not_allowed_pattern_check.py",
    "content": "import re\nfrom typing import Optional\n\nfrom credsweeper.config.config import Config\nfrom credsweeper.credentials.line_data import LineData\nfrom credsweeper.file_handler.analysis_target import AnalysisTarget\nfrom credsweeper.filters.filter import Filter\nfrom credsweeper.utils.util import Util\n\n\nclass ValueNotAllowedPatternCheck(Filter):\n    \"\"\"Check that secret doesn't open or closes brackets or a new line.\"\"\"\n\n    NOT_ALLOWED = [r\"[<>\\[\\]{}]\\s+\", r\"\\\\u00(26|3c)gt;?(\\s|\\\\+[nrt])?\", r\"^\\s*\\\\\", r\"^\\s*\\\\n\\s*\"]\n    NOT_ALLOWED_PATTERN = re.compile(  #\n        f\"{Util.get_regex_combine_or(NOT_ALLOWED)}$\",  #\n        flags=re.IGNORECASE)\n\n    def __init__(self, config: Optional[Config] = None) -> None:\n        pass\n\n    def run(self, line_data: LineData, target: AnalysisTarget) -> bool:\n        \"\"\"Run filter checks on received credential candidate data 'line_data'.\n\n        Args:\n            line_data: credential candidate data\n            target: multiline target from which line data was obtained\n\n        Return:\n            True, if need to filter candidate and False if left\n\n        \"\"\"\n        if not line_data.is_well_quoted_value and self.NOT_ALLOWED_PATTERN.search(line_data.value):\n            return True\n        return False\n"
  },
  {
    "path": "credsweeper/filters/value_not_part_encoded_check.py",
    "content": "import re\nfrom typing import Optional\n\nfrom credsweeper.common import static_keyword_checklist\nfrom credsweeper.config.config import Config\nfrom credsweeper.credentials.line_data import LineData\nfrom credsweeper.file_handler.analysis_target import AnalysisTarget\nfrom credsweeper.filters.filter import Filter\n\n\nclass ValueNotPartEncodedCheck(Filter):\n    \"\"\"Check that token is not a part of encoded data.\"\"\"\n\n    BASE64_ENCODED_DATA_PATTERN_BEFORE = re.compile(\n        r\"(^|[^A-Za-z0-9]+)(?P<val>(([A-Za-z0-9_-]{4}){16,64})|(([A-Za-z0-9+/]{4}){16,64}))([^=A-Za-z0-9+/|_-]+|$)\")\n    BASE64_ENCODED_DATA_PATTERN_AFTER = re.compile(\n        r\"(^|[^A-Za-z0-9]+)(?P<val>(([A-Za-z0-9=_-]{4}){4,64})|(([A-Za-z0-9=+/]{4}){4,64}))([^=A-Za-z0-9+/|_-]+|$)\")\n\n    def __init__(self, config: Optional[Config] = None) -> None:\n        pass\n\n    @staticmethod\n    def check_line_target_fit(line_data: LineData, target: AnalysisTarget) -> bool:\n        \"\"\"Verifies whether line data fit to be a part of many lines\"\"\"\n        return line_data.line_num == target.line_num \\\n            and len(line_data.line) == target.line_len \\\n            and line_data.line == target.line \\\n            and 0 < target.line_num <= target.lines_len \\\n            and line_data.line == target.lines[target.line_num - 1]\n\n    @staticmethod\n    def check_val(line: str, pattern: re.Pattern) -> Optional[bool]:\n        \"\"\"Verifies whether the line looks like a base64 pattern\"\"\"\n        if match_obj := pattern.match(line):\n            val = match_obj.group(\"val\")\n            # not a path-like\n            if not val.startswith('/') \\\n                    or not static_keyword_checklist.check_morphemes(val.lower(), 2) \\\n                    or '=' == val[-1]:\n                # padding char is a marker too\n                return True\n        return None\n\n    def run(self, line_data: LineData, target: AnalysisTarget) -> bool:\n        \"\"\"Run filter checks on received credential candidate data 'line_data'.\n\n        Args:\n            line_data: credential candidate data\n            target: multiline target from which line data was obtained\n\n        Return:\n            True, if need to filter candidate and False if left\n\n        \"\"\"\n\n        if ValueNotPartEncodedCheck.check_line_target_fit(line_data, target):\n            # suppose, there is plain lines order\n            if 1 < target.line_num:\n                result = ValueNotPartEncodedCheck.check_val(target.lines[line_data.line_num - 2],\n                                                            ValueNotPartEncodedCheck.BASE64_ENCODED_DATA_PATTERN_BEFORE)\n                if result is not None:\n                    return result\n            if target.lines_len > target.line_num:\n                result = ValueNotPartEncodedCheck.check_val(target.lines[line_data.line_num],\n                                                            ValueNotPartEncodedCheck.BASE64_ENCODED_DATA_PATTERN_AFTER)\n                if result is not None:\n                    return result\n        else:\n            # otherwise - need to iterate for all lines\n            for i in range(target.lines_len):\n                if line_data.line == target.lines[i]:\n                    if 0 < i:\n                        result = ValueNotPartEncodedCheck.check_val(\n                            target.lines[i - 1], ValueNotPartEncodedCheck.BASE64_ENCODED_DATA_PATTERN_BEFORE)\n                        if result is not None:\n                            return result\n                    i += 1\n                    if target.lines_len > i:\n                        result = ValueNotPartEncodedCheck.check_val(\n                            target.lines[i], ValueNotPartEncodedCheck.BASE64_ENCODED_DATA_PATTERN_AFTER)\n                        if result is not None:\n                            return result\n                    break\n        return False\n"
  },
  {
    "path": "credsweeper/filters/value_number_check.py",
    "content": "import re\nfrom typing import Optional\n\nfrom credsweeper.config.config import Config\nfrom credsweeper.credentials.line_data import LineData\nfrom credsweeper.file_handler.analysis_target import AnalysisTarget\nfrom credsweeper.filters.filter import Filter\n\n\nclass ValueNumberCheck(Filter):\n    \"\"\"Check value if it a value in hex or decimal representation\"\"\"\n\n    HEX_VALUE_REGEX = re.compile(\"^(0x)?[0-9a-f]{1,128}[ul]{0,3}$\")\n    DEC_VALUE_REGEX = re.compile(\"^-?[0-9]{1,20}[ul]{0,3}$\")\n\n    def __init__(self, config: Optional[Config] = None) -> None:\n        pass\n\n    def run(self, line_data: LineData, target: AnalysisTarget) -> bool:\n        \"\"\"Run filter checks on received credential candidate data 'line_data'.\n\n        Args:\n            line_data: credential candidate data\n            target: multiline target from which line data was obtained\n\n        Return:\n            True, if need to filter candidate and False if left\n\n        \"\"\"\n        value = line_data.value.lower()\n        if 22 > len(value) and ValueNumberCheck.HEX_VALUE_REGEX.match(value):\n            return True\n        if ValueNumberCheck.DEC_VALUE_REGEX.match(value):\n            return True\n        return False\n"
  },
  {
    "path": "credsweeper/filters/value_pattern_check.py",
    "content": "import re\nfrom typing import Optional\n\nfrom credsweeper.common.constants import DEFAULT_PATTERN_LEN, MAX_LINE_LENGTH, MIN_DATA_LEN\nfrom credsweeper.config.config import Config\nfrom credsweeper.credentials.line_data import LineData\nfrom credsweeper.file_handler.analysis_target import AnalysisTarget\nfrom credsweeper.filters.filter import Filter\n\n\nclass ValuePatternCheck(Filter):\n    \"\"\"Check if candidate value contain specific pattern.\n\n    Similar to linguistic sequences of characters, random strings shouldn't contain math sequences of\n    characters. Based on \"How Bad Can It Git? Characterizing Secret Leakage in Public GitHub Repositories\", details:\n    https://www.ndss-symposium.org/ndss-paper/how-bad-can-it-git-characterizing-secret-leakage-in-public-github-repositories/\n    PatternCheck checks the occurrence in \"line_data.value\" of three types of sequence:\n\n    - N or more identical characters in sequence, example: \"AAAA\", \"1111\" ...\n    - N or more increasing characters sequentially, example: \"abcd\", \"1234\" ...\n    - N or more decreasing characters sequentially, example: \"dcba\", \"4321\" ...\n\n    Default pattern LEN is 4\n    \"\"\"\n\n    MAX_PATTERN_LENGTH = int(MAX_LINE_LENGTH).bit_length()\n\n    def __init__(self, config: Optional[Config] = None, pattern_len: Optional[int] = None):\n        \"\"\"Create ValuePatternCheck with a specific pattern_len to check.\n\n        Args:\n            config: pattern len to use during check. DEFAULT_PATTERN_LEN by default\n            pattern_len: size of constant pattern length for any value size or None for dynamic pattern size\n\n        \"\"\"\n        patterns_count = 1 + ValuePatternCheck.MAX_PATTERN_LENGTH\n        if pattern_len is None:\n            self.pattern_len = -1\n            # pattern length depends on value length\n            self.pattern_lengths = [max(x, DEFAULT_PATTERN_LEN) for x in range(patterns_count)]\n            self.patterns = [ValuePatternCheck.get_pattern(x) for x in range(patterns_count)]\n        elif isinstance(pattern_len, int) and DEFAULT_PATTERN_LEN <= pattern_len:\n            self.pattern_len = pattern_len\n            # constant pattern for any value length\n            self.pattern_lengths = [pattern_len] * patterns_count\n            self.patterns = [ValuePatternCheck.get_pattern(pattern_len)] * patterns_count\n        else:\n            raise ValueError(f\"Wrong type of pattern length {type(pattern_len)} = {repr(pattern_len)}\")\n\n    @staticmethod\n    def get_pattern(pattern_len: int) -> re.Pattern:\n        \"\"\"Creates regex pattern to find N or more identical characters in sequence\"\"\"\n        pattern_length = max(DEFAULT_PATTERN_LEN, pattern_len)\n        if MIN_DATA_LEN <= pattern_length:\n            # base64 long sequences may contain 0x00 or 0xFF inside\n            pattern = fr\"([^\\sA/_])\\1{{{str(pattern_length-1)},}}\"\n        else:\n            # up to 256 symbols length\n            pattern = fr\"(\\S)\\1{{{str(pattern_length-1)},}}\"\n        return re.compile(pattern)\n\n    def equal_pattern_check(self, value: str, bit_length: int) -> bool:\n        \"\"\"Check if candidate value contain 4 and more same chars or numbers sequences.\n\n        Args:\n            value: string variable, credential candidate value\n            bit_length: speedup for len(value).bit_length()\n\n        Return:\n            True if contain and False if not\n\n        \"\"\"\n        if self.patterns[bit_length].search(value):\n            return True\n        return False\n\n    def ascending_pattern_check(self, value: str, bit_length: int) -> bool:\n        \"\"\"Check if candidate value contain 4 and more ascending chars or numbers sequences.\n\n        Arg:\n            value: credential candidate value\n            bit_length: speedup for len(value).bit_length()\n\n        Return:\n            True if contain and False if not\n\n        \"\"\"\n        count = 1\n        for key in range(len(value) - 1):\n            if ord(value[key + 1]) - ord(value[key]) == 1:\n                count += 1\n            else:\n                count = 1\n                continue\n            if count == self.pattern_lengths[bit_length]:\n                return True\n        return False\n\n    def descending_pattern_check(self, value: str, bit_length: int) -> bool:\n        \"\"\"Check if candidate value contain 4 and more descending chars or numbers sequences.\n\n        Arg:\n            value: string variable, credential candidate value\n            bit_length: speedup for len(value).bit_length()\n\n        Return:\n            boolean variable. True if contain and False if not\n\n        \"\"\"\n        count = 1\n        for key in range(len(value) - 1):\n            if ord(value[key]) - ord(value[key + 1]) == 1:\n                count += 1\n            else:\n                count = 1\n                continue\n            if count == self.pattern_lengths[bit_length]:\n                return True\n        return False\n\n    def check_val(self, value: str, bit_length: int) -> bool:\n        \"\"\"Cumulative value check.\n\n        Arg:\n            value: string variable, credential candidate value\n            bit_length: speedup for len(value).bit_length()\n\n        Return:\n            boolean variable. True if contain and False if not\n\n        \"\"\"\n        if self.equal_pattern_check(value, bit_length):\n            return True\n        if self.ascending_pattern_check(value, bit_length):\n            return True\n        if self.descending_pattern_check(value, bit_length):\n            return True\n        return False\n\n    def duple_pattern_check(self, value: str, bit_length: int) -> bool:\n        \"\"\"Check if candidate value is a duplet value with possible patterns.\n\n        Arg:\n            value: string variable, credential candidate value\n            bit_length: speedup for len(value).bit_length()\n\n        Return:\n            boolean variable. True if contain and False if not\n\n        \"\"\"\n        even_value = value[0::2]\n        if self.check_val(even_value, bit_length):\n            odd_value = value[1::2]\n            if self.check_val(odd_value, bit_length):\n                return True\n        return False\n\n    def run(self, line_data: LineData, target: AnalysisTarget) -> bool:\n        \"\"\"Run filter checks on received credential candidate data 'line_data'.\n\n        Arg:\n            line_data: LineData object, credential candidate data\n            target: multiline target from which line data was obtained\n\n        Return:\n            boolean variable. True, if need to filter candidate and False if left\n\n        \"\"\"\n        value_length = len(line_data.value)\n        bit_length = max(DEFAULT_PATTERN_LEN, value_length.bit_length())\n\n        if ValuePatternCheck.MAX_PATTERN_LENGTH < bit_length:\n            # huge values may contain anything\n            return False\n\n        if 0 <= value_length < self.pattern_len or value_length < self.pattern_lengths[bit_length]:\n            # too short value\n            return True\n\n        if self.check_val(line_data.value, bit_length):\n            return True\n\n        if 2 * self.pattern_lengths[bit_length] <= value_length \\\n                and self.duple_pattern_check(line_data.value, bit_length):\n            return True\n\n        return False\n"
  },
  {
    "path": "credsweeper/filters/value_sealed_secret_check.py",
    "content": "from typing import Optional\n\nfrom credsweeper.common.constants import MAX_LINE_LENGTH\nfrom credsweeper.config.config import Config\nfrom credsweeper.credentials.line_data import LineData\nfrom credsweeper.file_handler.analysis_target import AnalysisTarget\nfrom credsweeper.filters.filter import Filter\n\n\nclass ValueSealedSecretCheck(Filter):\n    \"\"\"\n    Check that candidate may be a sealed secret\n    https://github.com/bitnami-labs/sealed-secrets/blob/main/docs/developer/crypto.md\n    \"\"\"\n    MAX_SEARCH_MARGIN = 100\n\n    def __init__(self, config: Optional[Config] = None) -> None:\n        pass\n\n    def run(self, line_data: LineData, target: AnalysisTarget) -> bool:\n        \"\"\"Run filter checks on received value and check context for sealed secret markers.\n        Can be applied effective for plain scan when the value is full and the target has lines around.\n\n        Args:\n            line_data: credential candidate data\n            target: multiline target from which line data was obtained\n\n        Return:\n            True, when need to filter candidate and False if left\n\n        \"\"\"\n\n        if (value := line_data.value) and (value.startswith('Ag') and 700 < len(value) and 'A' <= value[2] <= 'D'\n                                           or value.startswith('AQ') and 350 < len(value) and 'A' <= value[2] <= 'D'):\n            from_line = max(0, line_data.line_pos - ValueSealedSecretCheck.MAX_SEARCH_MARGIN)\n            to_line = min(len(target.lines), line_data.line_pos + ValueSealedSecretCheck.MAX_SEARCH_MARGIN)\n            sealed_secret_marker = encrypted_data_marker = bitnami_marker = False\n            for line in target.lines[from_line:to_line]:\n                if not sealed_secret_marker and 0 <= line.find(\"SealedSecret\", 0, MAX_LINE_LENGTH):\n                    sealed_secret_marker = True\n                if not encrypted_data_marker and 0 <= line.find(\"encryptedData\", 0, MAX_LINE_LENGTH):\n                    encrypted_data_marker = True\n                if not bitnami_marker and 0 <= line.find(\"bitnami\", 0, MAX_LINE_LENGTH):\n                    bitnami_marker = True\n                if sealed_secret_marker and encrypted_data_marker and bitnami_marker:\n                    return True\n        return False\n"
  },
  {
    "path": "credsweeper/filters/value_search_check.py",
    "content": "from typing import Optional\n\nfrom credsweeper.config.config import Config\nfrom credsweeper.credentials.line_data import LineData\nfrom credsweeper.file_handler.analysis_target import AnalysisTarget\nfrom credsweeper.filters.filter import Filter\n\n\nclass ValueSearchCheck(Filter):\n    \"\"\"Check whether a candidate value contains a pattern - useful for multi rules\"\"\"\n\n    def __init__(self, config: Optional[Config] = None, pattern: Optional[str] = None) -> None:\n        self.pattern = pattern\n\n    def run(self, line_data: LineData, target: AnalysisTarget) -> bool:\n        \"\"\"Run filter checks on received credential candidate data 'line_data'.\n\n        Args:\n            line_data: credential candidate data\n            target: multiline target from which line data was obtained\n\n        Return:\n            True, if need to filter candidate and False if left\n\n        \"\"\"\n        if self.pattern and line_data.value:\n            if len(self.pattern) < len(line_data.value):\n                if self.pattern in line_data.value:\n                    return True\n            else:\n                if line_data.value in self.pattern:\n                    return True\n        return False\n"
  },
  {
    "path": "credsweeper/filters/value_similarity_check.py",
    "content": "from difflib import SequenceMatcher\nfrom typing import Optional\n\nfrom credsweeper.common.constants import MIN_VALUE_LENGTH\nfrom credsweeper.config.config import Config\nfrom credsweeper.credentials.line_data import LineData\nfrom credsweeper.file_handler.analysis_target import AnalysisTarget\nfrom credsweeper.filters.filter import Filter\n\n\nclass ValueSimilarityCheck(Filter):\n    \"\"\"Check if candidate value is over 75% similarity as candidate variable. Like: `secret = \"mysecret\"` (0.8571).\"\"\"\n\n    def __init__(self, config: Optional[Config] = None) -> None:\n        pass\n\n    def run(self, line_data: LineData, target: AnalysisTarget) -> bool:\n        \"\"\"Run filter checks on received credential candidate data 'line_data'.\n\n        Args:\n            line_data: credential candidate data\n            target: multiline target from which line data was obtained\n\n        Return:\n            True, if need to filter candidate and False if left\n\n        \"\"\"\n        if line_data.variable and line_data.value:\n            variable_lower = line_data.variable.lower()\n            value_lower = line_data.value.lower()\n            if len(value_lower) <= len(variable_lower):\n                if value_lower in variable_lower:\n                    return True\n            elif MIN_VALUE_LENGTH <= len(variable_lower):\n                # `api` and `key` may be in the value\n                if variable_lower in value_lower:\n                    return True\n            if 0.75 < SequenceMatcher(None, variable_lower, value_lower).ratio():\n                return True\n        return False\n"
  },
  {
    "path": "credsweeper/filters/value_split_keyword_check.py",
    "content": "from typing import Optional\nfrom typing import Union\n\nfrom credsweeper.common import static_keyword_checklist\nfrom credsweeper.config.config import Config\nfrom credsweeper.credentials.line_data import LineData\nfrom credsweeper.file_handler.analysis_target import AnalysisTarget\nfrom credsweeper.filters.filter import Filter\n\n\nclass ValueSplitKeywordCheck(Filter):\n    \"\"\"Check value by splitting with standard whitespace separators and any word is not matched in checklist.\"\"\"\n\n    def __init__(self, config: Optional[Config] = None) -> None:\n        pass\n\n    def run(self, line_data: LineData, target: AnalysisTarget) -> bool:\n        \"\"\"Run filter checks on received credential candidate data 'line_data'.\n\n        Args:\n            line_data: credential candidate data\n            target: multiline target from which line data was obtained\n\n        Return:\n            True, if need to filter candidate and False if left\n\n        \"\"\"\n        words: Union[set, list] = line_data.value.lower().split()\n        keyword_set = static_keyword_checklist.keyword_set\n        for word in words:\n            if word in keyword_set:\n                return True\n        return False\n"
  },
  {
    "path": "credsweeper/filters/value_string_type_check.py",
    "content": "import re\nfrom typing import Optional\n\nfrom credsweeper.config.config import Config\nfrom credsweeper.credentials.line_data import LineData\nfrom credsweeper.file_handler.analysis_target import AnalysisTarget\nfrom credsweeper.filters.filter import Filter\n\n\nclass ValueStringTypeCheck(Filter):\n    r\"\"\"Check if line_data is in source code file that require quotes for string declaration.\n\n    If it is, then checks if line_data really have string literal declaration.\n    Comment rows in source files (start with //, /\\*, etc) ignored.\n    Multiple bytes scenario allowed [123,23,54,67,78,89] or {0xae, 0x54, 0x55, 0xff}\n\n    True if:\n\n    - line_data have no value\n    - line_data have no path\n    - line_data is in source code file (.cpp, .py, etc.) and is not comment\n      and contain no quotes (so no string literal declared)\n\n    False otherwise\n    \"\"\"\n\n    MULTIBYTE_PATTERN = re.compile(r\"((0x)?[0-9a-f]{1,16}[UL]*)(\\s*,\\s*((0x)?[0-9a-f]{1,16}[UL]*)){3}\",\n                                   flags=re.IGNORECASE)\n\n    def __init__(self, config: Optional[Config] = None, check_for_literals=True) -> None:\n        self.check_for_literals = check_for_literals\n\n    def run(self, line_data: LineData, target: AnalysisTarget) -> bool:\n        \"\"\"Run filter checks on received credential candidate data 'line_data'.\n\n        Args:\n            line_data: credential candidate data\n            target: multiline target from which line data was obtained\n\n        Return:\n            True, if need to filter candidate and False if left\n\n        \"\"\"\n        if not self.check_for_literals or line_data.url_part:\n            return False\n\n        if ValueStringTypeCheck.MULTIBYTE_PATTERN.search(line_data.value):\n            return False\n\n        if line_data.is_source_file_with_quotes() \\\n                and not line_data.is_comment() \\\n                and not line_data.is_well_quoted_value \\\n                and not line_data.is_quoted \\\n                and not '0' <= line_data.value[0] <= '9' \\\n                and line_data.separator and '=' in line_data.separator:\n            # heterogeneous code e.g. YAML in Python uses colon sign instead equals\n            return True\n\n        return False\n"
  },
  {
    "path": "credsweeper/filters/value_token_base32_check.py",
    "content": "from typing import Tuple\n\nfrom credsweeper.filters.value_token_base_check import ValueTokenBaseCheck\n\n\nclass ValueTokenBase32Check(ValueTokenBaseCheck):\n    \"\"\"Check that candidate have good randomization\"\"\"\n\n    RANGE_DICT = {\n        8: ((3.480934, 0.8482364556537906), (1.9280820731422028, 0.5833143826506801)),\n        10: ((3.4801753333333334, 0.7508676237320747), (1.9558544090983234, 0.5119385414964345)),\n        15: ((3.4803549285714284, 0.603220270918794), (1.9896690734372564, 0.40640877687972476)),\n        16: ((3.4798649333333334, 0.5837818960141307), (1.9938368543943692, 0.392547066949958)),\n        20: ((3.4809878947368422, 0.518785674729997), (2.0058661928593517, 0.34692788889724946)),\n        24: ((3.480511086956522, 0.4726670109337228), (2.0131379532992537, 0.31476354168931936)),\n        25: ((3.480877375, 0.4626150412368404), (2.0147828593929953, 0.3075894753390553)),\n        32: ((3.4809023548387095, 0.4072672632996217), (2.0231609118646867, 0.2700344059876962)),\n        40: ((3.4801929743589746, 0.36361457820793436), (2.027858606807074, 0.2401498396303172)),\n        50: ((3.4798551224489795, 0.323708167297437), (2.0318808048208794, 0.2138098551294688)),\n        64: ((3.4805990476190476, 0.28572156450556774), (2.035756800745673, 0.18815721535870078)),\n    }\n\n    @staticmethod\n    def get_stat_range(size: int) -> Tuple[Tuple[float, float], Tuple[float, float]]:\n        \"\"\"Returns minimal, maximal for hop and deviation. Precalculated data is applied for speedup\"\"\"\n        if result := ValueTokenBase32Check.RANGE_DICT.get(size):\n            ppf = ValueTokenBaseCheck.get_ppf(size)\n            return ((result[0][0] - ppf * result[0][1], result[0][0] + ppf * result[0][1]),\n                    (result[1][0] - ppf * result[1][1], result[1][0] + ppf * result[1][1]))\n        # not calculated\n        raise ValueError(f\"Not calculated for {size}\")\n"
  },
  {
    "path": "credsweeper/filters/value_token_base36_check.py",
    "content": "from typing import Tuple\n\nfrom credsweeper.filters.value_token_base_check import ValueTokenBaseCheck\n\n\nclass ValueTokenBase36Check(ValueTokenBaseCheck):\n    \"\"\"Check that candidate have good randomization\"\"\"\n\n    RANGE_DICT = {\n        8: ((3.7190542428571427, 0.8995506118495411), (2.066095086865182, 0.609210293352161)),\n        10: ((3.719109611111111, 0.7956463384852813), (2.0946299036665494, 0.5322004874842623)),\n        15: ((3.719274257142857, 0.6401989313894239), (2.129437216268589, 0.42108786288993155)),\n        16: ((3.7192072666666665, 0.6188627491757901), (2.1336109506109366, 0.4064699817331141)),\n        20: ((3.719249815789474, 0.5506473627709657), (2.145293932511567, 0.3591543917048417)),\n        24: ((3.7191934304347827, 0.50051922802262), (2.152858549996053, 0.3252064160191062)),\n        25: ((3.7192351583333334, 0.4904181410613897), (2.1543202565038735, 0.31823801389315026)),\n        32: ((3.7190408419354837, 0.4315967526660196), (2.1620321219700767, 0.2788634701820312)),\n        40: ((3.7191682666666668, 0.3852248727988986), (2.16746680811131, 0.24802261318501675)),\n        50: ((3.718913744897959, 0.3436564880405547), (2.1715676118603806, 0.22070510537297627)),\n        64: ((3.7190009761904763, 0.30325954360127116), (2.1751172797904093, 0.1942582237461476)),\n    }\n\n    @staticmethod\n    def get_stat_range(size: int) -> Tuple[Tuple[float, float], Tuple[float, float]]:\n        \"\"\"Returns minimal, maximal for hop and deviation. Precalculated data is applied for speedup\"\"\"\n        if result := ValueTokenBase36Check.RANGE_DICT.get(size):\n            ppf = ValueTokenBaseCheck.get_ppf(size)\n            return ((result[0][0] - ppf * result[0][1], result[0][0] + ppf * result[0][1]),\n                    (result[1][0] - ppf * result[1][1], result[1][0] + ppf * result[1][1]))\n        # not calculated\n        raise ValueError(f\"Not calculated for {size}\")\n"
  },
  {
    "path": "credsweeper/filters/value_token_base64_check.py",
    "content": "from typing import Tuple\n\nfrom credsweeper.filters.value_token_base_check import ValueTokenBaseCheck\n\n\nclass ValueTokenBase64Check(ValueTokenBaseCheck):\n    \"\"\"Check that candidate have good randomization\"\"\"\n\n    RANGE_DICT = {\n        8: ((3.7627115714285715, 0.9413431166706269), (2.1378378843992736, 0.6394596814295781)),\n        10: ((3.7617393333333333, 0.8327986018456262), (2.168873183866972, 0.5605393324056347)),\n        15: ((3.7619624285714286, 0.6698092646328063), (2.2080058406286702, 0.4447698491992352)),\n        16: ((3.7618573333333334, 0.6471500119793832), (2.2116826642934453, 0.4288377928263507)),\n        20: ((3.7618887368421055, 0.575813792926031), (2.224384985667721, 0.37985781543221253)),\n        24: ((3.7621449565217393, 0.5243297908608613), (2.2326041329976607, 0.34397389723600613)),\n        25: ((3.762616791666667, 0.5137934920050976), (2.234571917211925, 0.3366547036535176)),\n        32: ((3.761885838709677, 0.4521158322065318), (2.2426375800006153, 0.29506039075960255)),\n        40: ((3.7622649487179487, 0.4031261511824518), (2.2485911621253574, 0.2622954601051068)),\n        50: ((3.762087693877551, 0.3597404118023357), (2.2533774423872956, 0.23384524947332655)),\n        64: ((3.7625271746031745, 0.31733579704946846), (2.257532519514275, 0.20571908142867643)),\n    }\n\n    @staticmethod\n    def get_stat_range(size: int) -> Tuple[Tuple[float, float], Tuple[float, float]]:\n        \"\"\"Returns minimal, maximal for hop and deviation. Precalculated data is applied for speedup\"\"\"\n        if result := ValueTokenBase64Check.RANGE_DICT.get(size):\n            ppf = ValueTokenBaseCheck.get_ppf(size)\n            return ((result[0][0] - ppf * result[0][1], result[0][0] + ppf * result[0][1]),\n                    (result[1][0] - ppf * result[1][1], result[1][0] + ppf * result[1][1]))\n        # not calculated\n        raise ValueError(f\"Not calculated for {size}\")\n"
  },
  {
    "path": "credsweeper/filters/value_token_base_check.py",
    "content": "import contextlib\nfrom abc import abstractmethod\nfrom typing import Optional\nfrom typing import Tuple\n\nfrom credsweeper.config.config import Config\nfrom credsweeper.credentials.line_data import LineData\nfrom credsweeper.file_handler.analysis_target import AnalysisTarget\nfrom credsweeper.filters.filter import Filter\nfrom credsweeper.utils.hop_stat import HopStat\n\n\nclass ValueTokenBaseCheck(Filter):\n    \"\"\"Check that candidate have good randomization\"\"\"\n\n    MUL_DICT = {\n        8: 2.61619746,\n        10: 2.48685659,\n        15: 2.34025271,\n        16: 2.32370290,\n        20: 2.27614996,\n        24: 2.24609586,\n        25: 2.24023515,\n        32: 2.21025277,\n        40: 2.18961571,\n        50: 2.17355282,\n        64: 2.15981241,\n    }\n\n    def __init__(self, config: Optional[Config] = None) -> None:\n        self.__hop_stat = HopStat()\n\n    @staticmethod\n    @abstractmethod\n    def get_stat_range(size: int) -> Tuple[Tuple[float, float], Tuple[float, float]]:\n        \"\"\"Returns minimal strength. Precalculated data is applied for speedup\"\"\"\n        raise NotImplementedError\n\n    @staticmethod\n    def get_ppf(n: int) -> float:\n        \"\"\"Code used to produce the values\"\"\"\n        # from scipy.stats import t\n        # print('\\n'.join(f'{n}: {t.ppf(0.9827, n-1):.8f},' for n in [8,10,15,16,20,24,25,32,40,50,64]))\n        return ValueTokenBaseCheck.MUL_DICT[n]\n\n    def run(self, line_data: LineData, target: AnalysisTarget) -> bool:\n        \"\"\"Run filter checks on received credential candidate data 'line_data'.\n\n        Args:\n            line_data: credential candidate data\n            target: multiline target from which line data was obtained\n\n        Return:\n            True, if need to filter candidate and False if left\n\n        \"\"\"\n        with contextlib.suppress(Exception):\n            hop, dev = self.__hop_stat.stat(line_data.value)\n            (min_hop, max_hop), (min_dev, max_dev) = self.get_stat_range(len(line_data.value))\n            if not (min_hop <= hop <= max_hop and min_dev <= dev <= max_dev):\n                return True\n        return False\n"
  },
  {
    "path": "credsweeper/filters/value_token_check.py",
    "content": "import re\nfrom typing import Optional\n\nfrom credsweeper.config.config import Config\nfrom credsweeper.credentials.line_data import LineData\nfrom credsweeper.file_handler.analysis_target import AnalysisTarget\nfrom credsweeper.filters.filter import Filter\n\n\nclass ValueTokenCheck(Filter):\n    \"\"\"Check if first substring of token is shorter than 5.\n\n    Split candidate value into substrings using ` ;`{})(<>[]` separators. Check if first substring is shorter than 5\n\n    Examples:\n        \"my password\"\n        \"12);password\"\n\n    \"\"\"\n\n    SPLIT_PATTERN = re.compile(r\"(?<!\\W) (?!\\W)|[;(){}<>[\\]`]\")\n\n    def __init__(self, config: Optional[Config] = None) -> None:\n        pass\n\n    def run(self, line_data: LineData, target: AnalysisTarget) -> bool:\n        \"\"\"Run filter checks on received credential candidate data 'line_data'.\n\n        Args:\n            line_data: credential candidate data\n            target: multiline target from which line data was obtained\n\n        Return:\n            True, if need to filter candidate and False if left\n\n        \"\"\"\n        if line_data.is_well_quoted_value:\n            return False\n        tokens = re.split(self.SPLIT_PATTERN, line_data.value, maxsplit=1)\n        # If tokens have length of 1 - pattern is not present in the value and original value returned from `.split(`\n        if len(tokens) < 2:\n            return False\n\n        token = tokens[0]\n        if len(token) < 5:\n            return True\n\n        return False\n"
  },
  {
    "path": "credsweeper/logger/__init__.py",
    "content": ""
  },
  {
    "path": "credsweeper/logger/logger.py",
    "content": "import logging\nimport logging.config\nfrom pathlib import Path\nfrom typing import Optional\n\nfrom credsweeper.app import APP_PATH\nfrom credsweeper.utils.util import Util\n\n\nclass Logger:\n    \"\"\"Class that used to configure logging in CredSweeper.\"\"\"\n\n    SILENCE = 60\n\n    LEVELS = {\n        \"DEBUG\": logging.DEBUG,\n        \"INFO\": logging.INFO,\n        \"WARN\": logging.WARNING,\n        \"WARNING\": logging.WARNING,\n        \"ERROR\": logging.ERROR,\n        \"FATAL\": logging.CRITICAL,\n        \"CRITICAL\": logging.CRITICAL,\n        \"SILENCE\": SILENCE\n    }\n\n    @staticmethod\n    def init_logging(log_level: str, file_path: Optional[str] = None) -> None:\n        \"\"\"Init logger.\n\n        Init logging with configuration from file 'credsweeper_path/secret/log.yaml'. For configure log level of\n            console output used 'log_level' args\n\n        Args:\n            log_level: log level for console output\n            file_path: path of custom log config\n\n        \"\"\"\n        try:\n            level = Logger.LEVELS.get(log_level.upper())\n            if level is None:\n                raise ValueError(f\"log level given: {log_level} -- must be one of: {' | '.join(Logger.LEVELS.keys())}\")\n            logging_config = Util.yaml_load(file_path) if file_path else None\n            if not logging_config:\n                logging_config = Util.yaml_load(APP_PATH / \"secret\" / \"log.yaml\")\n            log_dir = Path(logging_config[\"handlers\"][\"logfile\"][\"filename\"]).resolve().parent\n            log_dir.mkdir(exist_ok=True)\n            logging_config[\"handlers\"][\"console\"][\"level\"] = level\n            logging.config.dictConfig(logging_config)\n            for module in logging_config[\"ignore\"]:\n                logging.getLogger(module).setLevel(logging.ERROR)\n        except OSError:\n            logging.basicConfig(level=logging.WARNING)\n"
  },
  {
    "path": "credsweeper/main.py",
    "content": "import binascii\nimport contextlib\nimport logging\nimport os\nimport sys\nimport time\nfrom argparse import ArgumentParser, ArgumentTypeError, Namespace, BooleanOptionalAction\nfrom pathlib import Path\nfrom typing import Any, Union, Dict, Tuple, Sequence\n\nfrom git import Repo, Commit\n\nfrom credsweeper import __version__\nfrom credsweeper.app import APP_PATH, CredSweeper\nfrom credsweeper.common.constants import ThresholdPreset, Severity, RuleType, DiffRowType, ML_HUNK\nfrom credsweeper.file_handler.abstract_provider import AbstractProvider\nfrom credsweeper.file_handler.byte_content_provider import ByteContentProvider\nfrom credsweeper.file_handler.files_provider import FilesProvider\nfrom credsweeper.file_handler.patches_provider import PatchesProvider\nfrom credsweeper.logger.logger import Logger\nfrom credsweeper.utils.util import Util\n\nEXIT_SUCCESS = 0\nEXIT_FAILURE = 1\n\nlogger = logging.getLogger(__name__)\n\n\ndef positive_int(value: Any) -> int:\n    \"\"\"Check if number of parallel processes is not a positive number.\"\"\"\n    int_value = int(value)\n    if int_value <= 0:\n        logger.error(\"Number of parallel processes should be a positive number: %s\", value)\n        raise ArgumentTypeError(f\"{value} should be greater than 0\")\n    return int_value\n\n\ndef threshold_or_float_or_zero(arg: str) -> Union[int, float, ThresholdPreset]:\n    \"\"\"Return ThresholdPreset or a float from the input string\n\n    Args:\n        arg: string that either a float or one of allowed values in ThresholdPreset\n\n    Returns:\n        int = 0 to disable ML validator, float if arg convertible to float, ThresholdPreset if one of the allowed values\n\n    Raises:\n        ArgumentTypeError: if arg cannot be interpreted as float or ThresholdPreset\n\n    \"\"\"\n    allowed_presents = [e.value for e in ThresholdPreset]\n    if '0' == arg:\n        return 0\n    with contextlib.suppress(ValueError):\n        return float(arg)  # try convert to float\n    if arg in allowed_presents:\n        return ThresholdPreset[arg]\n    raise ArgumentTypeError(f\"value must be a float or one of {allowed_presents}\")\n\n\ndef logger_levels(log_level: str) -> str:\n    \"\"\"Logger level correctness verification and transformation\n\n    Args:\n        log_level: string with level\n\n    Returns True if log_level UPPERCASE is one of keys\n    \"\"\"\n    val = log_level.upper()\n    if val in Logger.LEVELS:\n        return val\n    raise ArgumentTypeError(f\"Log level provided: {log_level} -- must be one of: {' | '.join(Logger.LEVELS.keys())}\")\n\n\ndef severity_levels(severity_level: str) -> Severity:\n    \"\"\"Severity level correctness verification and transformation\n\n    Args:\n        severity_level: string with level\n\n    Returns Severity matched provided string or throws ArgumentTypeError exception\n    \"\"\"\n\n    if severity := Severity.get(severity_level):\n        return severity\n    raise ArgumentTypeError(\n        f\"Severity level provided: {severity_level} -- must be one of: {' | '.join([i.value for i in Severity])}\")\n\n\ndef check_integrity() -> int:\n    \"\"\"Calculates CRC32 of program files\n\n    Returns CRC32 of files in integer\n    \"\"\"\n    crc32 = 0\n    for root, _dirs, files in os.walk(APP_PATH):\n        for file_name in files:\n            if Util.get_extension(file_name) in [\".py\", \".json\", \".txt\", \".yaml\", \".onnx\"]:\n                file_path = Path(root) / file_name\n                if data := Util.read_data(file_path):\n                    crc32 ^= binascii.crc32(data)\n    return crc32\n\n\ndef get_arguments() -> Namespace:\n    \"\"\"All CLI arguments are defined here\"\"\"\n    parser = ArgumentParser(prog=\"python -m credsweeper\")\n    single_banner_argument = 2 == len(sys.argv) and \"--banner\" == sys.argv[1]\n    group = parser.add_mutually_exclusive_group(required=not single_banner_argument)\n    group.add_argument(\"--path\", nargs=\"+\", help=\"file or directory to scan\", dest=\"path\", metavar=\"PATH\")\n    group.add_argument(\"--diff_path\", nargs=\"+\", help=\"git diff file to scan\", dest=\"diff_path\", metavar=\"PATH\")\n    group.add_argument(\"--export_config\",\n                       nargs=\"?\",\n                       help=\"exporting default config to file (default: config.json)\",\n                       const=\"config.json\",\n                       dest=\"export_config\",\n                       metavar=\"PATH\")\n    group.add_argument(\"--export_log_config\",\n                       nargs=\"?\",\n                       help=\"exporting default logger config to file (default: log.yaml)\",\n                       const=\"log.yaml\",\n                       dest=\"export_log_config\",\n                       metavar=\"PATH\")\n    group.add_argument(\"--git\", help=\"git repo to scan\", dest=\"git\", metavar=\"PATH\")\n    parser.add_argument(\"--ref\",\n                        help=\"scan git repo from the ref, otherwise - all branches were scanned (slow)\",\n                        dest=\"ref\",\n                        type=str)\n    parser.add_argument(\"--rules\",\n                        help=\"path of rule config file (default: credsweeper/rules/config.yaml). \"\n                        f\"severity:{[i.value for i in Severity]} \"\n                        f\"type:{[i.value for i in RuleType]}\",\n                        default=None,\n                        dest=\"rule_path\",\n                        metavar=\"PATH\")\n    parser.add_argument(\"--severity\",\n                        help=f\"set minimum level for rules to apply {[i.value for i in Severity]}\"\n                        f\"(default: '{Severity.INFO}', case insensitive)\",\n                        default=Severity.INFO,\n                        dest=\"severity\",\n                        type=severity_levels)\n    parser.add_argument(\"--config\",\n                        help=\"use custom config (default: built-in)\",\n                        default=None,\n                        dest=\"config_path\",\n                        metavar=\"PATH\")\n    parser.add_argument(\"--log_config\",\n                        help=\"use custom log config (default: built-in)\",\n                        default=None,\n                        dest=\"log_config_path\",\n                        metavar=\"PATH\")\n    parser.add_argument(\"--denylist\",\n                        help=\"path to a plain text file with lines or secrets to ignore\",\n                        default=None,\n                        dest=\"denylist_path\",\n                        metavar=\"PATH\")\n    parser.add_argument(\"--find-by-ext\",\n                        help=\"find files by predefined extension\",\n                        dest=\"find_by_ext\",\n                        action=\"store_true\")\n    parser.add_argument(\"--pedantic\",\n                        help=\"process files without extension\",\n                        action=BooleanOptionalAction,\n                        default=False)\n    parser.add_argument(\"--depth\",\n                        help=\"additional recursive search in data (experimental)\",\n                        type=positive_int,\n                        dest=\"depth\",\n                        default=0,\n                        required=False,\n                        metavar=\"POSITIVE_INT\")\n    parser.add_argument(\"--no-filters\", help=\"disable filters\", dest=\"no_filters\", action=\"store_false\")\n    parser.add_argument(\"--doc\", help=\"document-specific scanning\", dest=\"doc\", action=\"store_true\")\n    parser.add_argument(\"--ml_threshold\",\n                        help=\"setup threshold for the ml model. \"\n                        \"The lower the threshold - the more credentials will be reported. \"\n                        f\"Allowed values: float between 0 and 1, or any of {[e.value for e in ThresholdPreset]} \"\n                        \"(default: medium)\",\n                        type=threshold_or_float_or_zero,\n                        default=ThresholdPreset.medium,\n                        dest=\"ml_threshold\",\n                        required=False,\n                        metavar=\"THRESHOLD_OR_FLOAT_OR_ZERO\")\n    parser.add_argument(\"--ml_batch_size\",\n                        \"-b\",\n                        help=\"batch size for model inference (default: 16)\",\n                        type=positive_int,\n                        dest=\"ml_batch_size\",\n                        default=16,\n                        required=False,\n                        metavar=\"POSITIVE_INT\")\n    parser.add_argument(\"--ml_config\",\n                        help=\"use external config for ml model\",\n                        type=str,\n                        default=None,\n                        dest=\"ml_config\",\n                        required=False,\n                        metavar=\"PATH\")\n    parser.add_argument(\"--ml_model\",\n                        help=\"use external ml model\",\n                        type=str,\n                        default=None,\n                        dest=\"ml_model\",\n                        required=False,\n                        metavar=\"PATH\")\n    parser.add_argument(\"--ml_providers\",\n                        help=\"comma separated list of providers for onnx (CPUExecutionProvider is used by default)\",\n                        type=str,\n                        default=None,\n                        dest=\"ml_providers\",\n                        required=False,\n                        metavar=\"STR\")\n    parser.add_argument(\"--jobs\",\n                        \"-j\",\n                        help=\"number of parallel processes to use (default: 1)\",\n                        type=positive_int,\n                        dest=\"jobs\",\n                        default=1,\n                        metavar=\"POSITIVE_INT\")\n    parser.add_argument(\"--thrifty\",\n                        help=\"clear objects after scan to reduce memory consumption\",\n                        action=BooleanOptionalAction,\n                        default=True)\n    parser.add_argument(\"--skip_ignored\",\n                        help=\"parse .gitignore files and skip credentials from ignored objects\",\n                        dest=\"skip_ignored\",\n                        action=\"store_true\")\n    parser.add_argument(\"--error\",\n                        help=\"produce error code if credentials are found\",\n                        action=BooleanOptionalAction,\n                        default=False)\n    parser.add_argument(\"--save-json\",\n                        nargs=\"?\",\n                        help=\"save result to json file (default: output.json)\",\n                        const=\"output.json\",\n                        dest=\"json_filename\",\n                        metavar=\"PATH\")\n    parser.add_argument(\"--save-xlsx\",\n                        nargs=\"?\",\n                        help=\"save result to xlsx file (default: output.xlsx)\",\n                        const=\"output.xlsx\",\n                        dest=\"xlsx_filename\",\n                        metavar=\"PATH\")\n    parser.add_argument(\"--stdout\", help=\"print results to stdout\", action=BooleanOptionalAction, default=True)\n    parser.add_argument(\"--color\", help=\"print results with colorization\", action=BooleanOptionalAction, default=False)\n    parser.add_argument(\"--hashed\",\n                        help=\"line, variable, value will be hashed in output\",\n                        action=BooleanOptionalAction,\n                        default=False)\n    parser.add_argument(\"--subtext\",\n                        help=f\"line text will be stripped in {2 * ML_HUNK} symbols but value and variable are kept\",\n                        action=BooleanOptionalAction,\n                        default=False)\n    parser.add_argument(\"--sort\",\n                        help=\"enable output sorting\",\n                        dest=\"sort_output\",\n                        action=BooleanOptionalAction,\n                        default=False)\n    parser.add_argument(\"--log\",\n                        \"-l\",\n                        help=(f\"provide logging level of {list(Logger.LEVELS.keys())}\"\n                              f\" (default: 'warning', case insensitive)\"),\n                        default=\"warning\",\n                        dest=\"log\",\n                        metavar=\"LOG_LEVEL\",\n                        type=logger_levels)\n    parser.add_argument(\"--size_limit\",\n                        help=\"set size limit of files that for scanning (eg. 1GB / 10MiB / 1000)\",\n                        dest=\"size_limit\",\n                        default=None)\n    parser.add_argument(\"--banner\",\n                        help=\"show version and crc32 sum of CredSweeper files at start\",\n                        action=\"store_const\",\n                        const=True)\n    parser.add_argument(\"--version\",\n                        \"-V\",\n                        help=\"show program's version number and exit\",\n                        action=\"version\",\n                        version=f\"CredSweeper {__version__}\")\n    return parser.parse_args()\n\n\ndef get_credsweeper(args: Namespace) -> CredSweeper:\n    \"\"\"Common function to create the instance\"\"\"\n    if args.denylist_path is not None:\n        denylist = [line for line in Util.read_file(args.denylist_path) if line]\n    else:\n        denylist = []\n    return CredSweeper(rule_path=args.rule_path,\n                       config_path=args.config_path,\n                       json_filename=args.json_filename,\n                       xlsx_filename=args.xlsx_filename,\n                       stdout=args.stdout,\n                       color=args.color,\n                       hashed=args.hashed,\n                       subtext=args.subtext,\n                       sort_output=args.sort_output,\n                       use_filters=args.no_filters,\n                       pool_count=args.jobs,\n                       ml_batch_size=args.ml_batch_size,\n                       ml_threshold=args.ml_threshold,\n                       ml_config=args.ml_config,\n                       ml_model=args.ml_model,\n                       ml_providers=args.ml_providers,\n                       find_by_ext=args.find_by_ext,\n                       pedantic=args.pedantic,\n                       depth=args.depth,\n                       doc=args.doc,\n                       severity=args.severity,\n                       size_limit=args.size_limit,\n                       exclude_lines=denylist,\n                       exclude_values=denylist,\n                       thrifty=args.thrifty,\n                       log_level=args.log)\n\n\ndef scan(args: Namespace, content_provider: AbstractProvider) -> int:\n    \"\"\"Scan content_provider data, print results or save them to json_filename is not None\n\n    Args:\n        args: arguments of the application\n        content_provider: FilesProvider instance to scan data from\n\n    Returns:\n        Number of detected credentials\n\n    Warnings:\n         DeprecationWarning: Using 'json_filename' and/or 'xlsx_filename' will issue a warning.\n\n    \"\"\"\n    try:\n        credsweeper = get_credsweeper(args)\n        return credsweeper.run(content_provider=content_provider)\n    except Exception as exc:\n        logger.critical(exc, exc_info=True)\n        logger.exception(exc)\n    return -1\n\n\ndef get_commit_providers(commit: Commit, repo: Repo) -> Sequence[ByteContentProvider]:\n    \"\"\"Process a commit and for providers\"\"\"\n    result = {}\n    # use the hardcoded sha1 until sha256 objects are not supported by GitPython\n    ancestors = commit.parents or [repo.tree(\"4b825dc642cb6eb9a060e54bf8d69288fbee4904\")]\n    for parent in ancestors:\n        for diff in parent.diff(commit):\n            # only result files\n            blob_b = diff.b_blob\n            if blob_b and blob_b.path not in result:\n                try:\n                    result[blob_b.path] = ByteContentProvider(content=blob_b.data_stream.read(),\n                                                              file_path=str(blob_b.path),\n                                                              info=DiffRowType.ADDED.value)\n                except Exception as exc:\n                    logger.warning(\"A submodule was not properly initialized or commit was removed: %s\", exc)\n    return list(result.values())\n\n\ndef drill(args: Namespace) -> Tuple[int, int]:\n    \"\"\"Scan repository for branches and commits\n\n    Args:\n        args: arguments of the application\n\n    Returns:\n        total credentials found\n        total scanned commits\n\n    \"\"\"\n    total_credentials = 0\n    total_commits = 0\n    try:\n        # repo init first\n        repo = Repo(args.git)\n        if args.ref:\n            commits_sha1 = set(x.commit.hexsha for x in repo.refs if x.name == args.ref)\n            if not commits_sha1:\n                commits_sha1 = {args.ref}  # single commit sha1 reference\n        else:\n            commits_sha1 = set(x.commit.hexsha for x in repo.refs\n                               if x.name.startswith('origin/') or x.name.startswith('refs/heads/'))\n        logger.info(\"Git repository %s with commits: %s\", args.git, commits_sha1)\n        # then - credsweeper\n        credsweeper = get_credsweeper(args)\n        # use flat iterations to avoid recursive limits\n        to_scan = set(commits_sha1)\n        # local speedup for already scanned commits - avoid file system interactive\n        scanned = set()\n        # to avoid double-check\n        skipped = set()\n        while to_scan:\n            commit_sha1 = to_scan.pop()\n            if commit_sha1 in scanned:\n                # the commit was scanned in this launch\n                continue\n            commit = repo.commit(commit_sha1)\n            if commit.parents:\n                # add parents only when they were not skipped or scanned previously\n                to_scan.update(x.hexsha for x in commit.parents if x.hexsha not in skipped and x.hexsha not in scanned)\n            # check whether the commit has been checked and the report is present\n            skip_already_scanned = False\n            if args.json_filename:\n                json_path = Path(args.json_filename)\n                json_path = json_path.with_suffix(f\".{commit_sha1}{json_path.suffix}\")\n                if json_path.exists():\n                    skip_already_scanned = True\n                else:\n                    credsweeper.json_filename = json_path\n            if args.xlsx_filename:\n                xlsx_path = Path(args.xlsx_filename)\n                xlsx_path = xlsx_path.with_suffix(f\".{commit_sha1}{xlsx_path.suffix}\")\n                if xlsx_path.exists():\n                    skip_already_scanned = True\n                else:\n                    credsweeper.xlsx_filename = xlsx_path\n            if skip_already_scanned:\n                skipped.add(commit_sha1)\n                logger.info(\"Skip already scanned commit: %s %s\", commit_sha1, commit.committed_datetime.isoformat())\n                continue\n            logger.info(\"Scan commit: %s %s\", commit_sha1, commit.committed_datetime.isoformat())\n            # prepare all files to scan in the commit with bytes->IO transformation to avoid a multiprocess issue\n            if providers := get_commit_providers(commit, repo):\n                credsweeper.credential_manager.candidates.clear()\n                credsweeper.scan(providers)\n                credsweeper.post_processing()\n                credsweeper.export_results()\n                total_credentials += credsweeper.credential_manager.len_credentials()\n            total_commits += 1\n            scanned.add(commit_sha1)\n    except Exception as exc:\n        logger.critical(exc, exc_info=True)\n        return -1, total_commits\n    return total_credentials, total_commits\n\n\ndef main() -> int:\n    \"\"\"Main function\"\"\"\n    start_time = time.perf_counter()\n    result = EXIT_FAILURE\n    credentials_number = 0\n    args = get_arguments()\n    if args.banner:\n        print(f\"CredSweeper {__version__} crc32:{check_integrity():08x}\")\n    Logger.init_logging(args.log, args.log_config_path)\n    logger.info(\"Init CredSweeper object with arguments: %s CWD: %s\", args, os.getcwd())\n    summary: Dict[str, int] = {}\n    if args.path:\n        logger.info(\"Run analyzer on path: %s\", args.path)\n        content_provider: AbstractProvider = FilesProvider(args.path, skip_ignored=args.skip_ignored)\n        credentials_number = scan(args, content_provider)\n        summary[\"Detected Credentials\"] = credentials_number\n        if 0 <= credentials_number:\n            result = EXIT_SUCCESS\n    elif args.diff_path:\n        # Analyze added data\n        logger.info(\"Run analyzer on added rows from patch files: %s\", args.diff_path)\n        content_provider = PatchesProvider(args.diff_path, change_type=DiffRowType.ADDED)\n        add_credentials_number = scan(args, content_provider)\n        summary[\"Added File Credentials\"] = add_credentials_number\n        # Analyze deleted data\n        logger.info(\"Run analyzer on deleted rows from patch files: %s\", args.diff_path)\n        content_provider = PatchesProvider(args.diff_path, change_type=DiffRowType.DELETED)\n        del_credentials_number = scan(args, content_provider)\n        summary[\"Deleted File Credentials\"] = del_credentials_number\n        if 0 <= add_credentials_number and 0 <= del_credentials_number:\n            # it means the scan was successful done\n            result = EXIT_SUCCESS\n            # collect number of all found credential to produce error code when necessary\n            credentials_number = add_credentials_number + del_credentials_number\n    elif args.git:\n        logger.info(\"Run analyzer on GIT: %s\", args.git)\n        credentials_number, commits_number = drill(args)\n        summary[f\"Detected Credentials in {args.git} for {commits_number} commits \"] = credentials_number\n        if 0 <= credentials_number:\n            result = EXIT_SUCCESS\n    elif args.export_config:\n        logger.info(\"Exporting default config to file: %s\", args.export_config)\n        config_dict = Util.json_load(APP_PATH / \"secret\" / \"config.json\")\n        Util.json_dump(config_dict, args.export_config)\n        result = EXIT_SUCCESS\n    elif args.export_log_config:\n        logger.info(\"Exporting default logger config to file: %s\", args.export_log_config)\n        config_dict = Util.yaml_load(APP_PATH / \"secret\" / \"log.yaml\")\n        Util.yaml_dump(config_dict, args.export_log_config)\n        result = EXIT_SUCCESS\n    elif args.banner and 2 == len(sys.argv):\n        # only extend version invocation\n        result = EXIT_SUCCESS\n    else:\n        logger.error(\"Not specified 'path' or 'diff_path'\")\n\n    if EXIT_SUCCESS == result and len(summary):\n        for k, v in summary.items():\n            print(f\"{k}: {v}\")\n        print(f\"Time Elapsed: {time.perf_counter() - start_time}\")\n\n    if args.error and EXIT_SUCCESS == result and 0 < credentials_number:\n        # override result when credentials were found with the requirement\n        result = EXIT_FAILURE\n\n    return result\n"
  },
  {
    "path": "credsweeper/ml_model/__init__.py",
    "content": ""
  },
  {
    "path": "credsweeper/ml_model/features/__init__.py",
    "content": "from credsweeper.ml_model.features.entropy_evaluation import EntropyEvaluation\nfrom credsweeper.ml_model.features.file_extension import FileExtension\nfrom credsweeper.ml_model.features.has_html_tag import HasHtmlTag\nfrom credsweeper.ml_model.features.is_secret_numeric import IsSecretNumeric\nfrom credsweeper.ml_model.features.length_of_attribute import LengthOfAttribute\nfrom credsweeper.ml_model.features.morpheme_dense import MorphemeDense\nfrom credsweeper.ml_model.features.rule_name import RuleName\nfrom credsweeper.ml_model.features.rule_severity import RuleSeverity\nfrom credsweeper.ml_model.features.search_in_attribute import SearchInAttribute\nfrom credsweeper.ml_model.features.word_in_path import WordInPath\nfrom credsweeper.ml_model.features.word_in_postamble import WordInPostamble\nfrom credsweeper.ml_model.features.word_in_preamble import WordInPreamble\nfrom credsweeper.ml_model.features.word_in_transition import WordInTransition\nfrom credsweeper.ml_model.features.word_in_value import WordInValue\nfrom credsweeper.ml_model.features.word_in_variable import WordInVariable\n"
  },
  {
    "path": "credsweeper/ml_model/features/entropy_evaluation.py",
    "content": "import math\nfrom typing import Dict, List, Set\n\nimport numpy as np\n\nfrom credsweeper.common.constants import Chars, ML_HUNK\nfrom credsweeper.credentials.candidate import Candidate\nfrom credsweeper.file_handler.data_content_provider import MIN_DATA_LEN\nfrom credsweeper.ml_model.features.feature import Feature\n\n\nclass EntropyEvaluation(Feature):\n    \"\"\"\n    Renyi, Shannon entropy evaluation with Hartley entropy normalization.\n    Augmentation with possible set of chars (hex, base64, etc.)\n    Analyse only begin of the value\n\n    See next link for details:\n    https://digitalassets.lib.berkeley.edu/math/ucb/text/math_s4_v1_article-27.pdf\n\n    \"\"\"\n\n    # Max size of ML analyzed value is ML_HUNK but value may be bigger\n    HUNK_SIZE = 4 * ML_HUNK\n    LOG2_CACHE: Dict[int, float] = {x: math.log2(x) for x in range(4, 4 * ML_HUNK + 1)}\n    CHAR_SET: List[Set[str]] = [set(x.value) for x in Chars]\n    RESULT_SIZE = 3 + len(Chars)\n\n    def extract(self, candidate: Candidate) -> np.ndarray:\n        \"\"\"Returns real entropy and possible sets of characters\"\"\"\n        # only head of value will be analyzed\n        result: np.ndarray = np.zeros(shape=EntropyEvaluation.RESULT_SIZE, dtype=np.float32)\n        value = candidate.line_data_list[0].value[:EntropyEvaluation.HUNK_SIZE]\n        size = len(value)\n        uniq, counts = np.unique(list(value), return_counts=True)\n        if MIN_DATA_LEN <= size:\n            # evaluate the entropy for a value of at least 4\n            probabilities = counts / size\n            hartley_entropy = EntropyEvaluation.LOG2_CACHE.get(size, -1.0)\n\n            # renyi_entropy alpha=0.5\n            sum_prob_05 = np.sum(probabilities**0.5)\n            renyi_entropy_05 = 2 * np.log2(sum_prob_05)\n            result[0] = renyi_entropy_05 / hartley_entropy\n\n            # shannon_entropy or renyi_entropy alpha=1\n            shannon_entropy = -np.sum(probabilities * np.log2(probabilities))\n            result[1] = shannon_entropy / hartley_entropy\n\n            # renyi_entropy alpha=2\n            sum_prob_2 = np.sum(probabilities**2)\n            renyi_entropy_2 = -1 * np.log2(sum_prob_2)\n            result[2] = renyi_entropy_2 / hartley_entropy\n\n        if 0 < size:\n            # check charset for non-zero value\n            # use the new variable to deal with mypy\n            uniq_set = set(uniq)\n            for n, i in enumerate(EntropyEvaluation.CHAR_SET, start=3):\n                if not uniq_set.difference(i):\n                    result[n] = 1.0\n\n        return result\n"
  },
  {
    "path": "credsweeper/ml_model/features/feature.py",
    "content": "from abc import ABC, abstractmethod\nfrom typing import List, Any\n\nimport numpy as np\n\nfrom credsweeper.credentials.candidate import Candidate\n\n\nclass Feature(ABC):\n    \"\"\"Base class for features.\"\"\"\n\n    def __init__(self):\n        pass\n\n    def __call__(self, candidates: List[Candidate]) -> np.ndarray:\n        \"\"\"Call base class for features.\n\n        Args:\n            candidates: list of candidates to extract features\n\n        \"\"\"\n        return np.array([self.extract(candidate) for candidate in candidates])\n\n    @abstractmethod\n    def extract(self, candidate: Candidate) -> Any:\n        \"\"\"Abstract method of base class\"\"\"\n        raise NotImplementedError\n"
  },
  {
    "path": "credsweeper/ml_model/features/file_extension.py",
    "content": "from typing import List, Any\n\nimport numpy as np\n\nfrom credsweeper.credentials.candidate import Candidate\nfrom credsweeper.ml_model.features.word_in import WordIn\n\n\nclass FileExtension(WordIn):\n    \"\"\"Categorical feature of file type.\n\n    Parameters:\n        extensions: extension labels\n\n    \"\"\"\n\n    def __init__(self, extensions: List[str]) -> None:\n        super().__init__(words=extensions)\n\n    def __call__(self, candidates: List[Candidate]) -> np.ndarray:\n        extension_set = set(candidate.line_data_list[0].file_type.lower() for candidate in candidates)\n        return self.word_in_(extension_set)\n\n    def extract(self, candidate: Candidate) -> Any:\n        raise NotImplementedError\n"
  },
  {
    "path": "credsweeper/ml_model/features/has_html_tag.py",
    "content": "from credsweeper.common.constants import CHUNK_SIZE\nfrom credsweeper.credentials.candidate import Candidate\nfrom credsweeper.ml_model.features.word_in import WordIn\nfrom credsweeper.utils.util import Util\n\n\nclass HasHtmlTag(WordIn):\n    \"\"\"Feature is true if line has HTML tags (HTML file).\"\"\"\n\n    HTML_WORDS = [\n        '< img', '<img', '< script', '<script', '< p', '<p', '< link', '<link', '< meta', '<meta', '< a', '<a'\n    ]\n\n    def __init__(self) -> None:\n        super().__init__(HasHtmlTag.HTML_WORDS)\n\n    def extract(self, candidate: Candidate) -> float:\n        subtext = Util.subtext(candidate.line_data_list[0].line, candidate.line_data_list[0].value_start, CHUNK_SIZE)\n        candidate_line_data_list_0_line_lower = subtext.lower()\n        if '<' not in candidate_line_data_list_0_line_lower:\n            # early check\n            return -1.0\n        for i in self.words:\n            if i in candidate_line_data_list_0_line_lower:\n                return 1.0\n        if \"/>\" in candidate_line_data_list_0_line_lower or \"</\" in candidate_line_data_list_0_line_lower:\n            # possible closed tag\n            return 1.0\n        return -1.0\n"
  },
  {
    "path": "credsweeper/ml_model/features/is_secret_numeric.py",
    "content": "import contextlib\n\nfrom credsweeper.credentials.candidate import Candidate\nfrom credsweeper.ml_model.features.feature import Feature\n\n\nclass IsSecretNumeric(Feature):\n    \"\"\"Feature is true if candidate value is a numerical value.\"\"\"\n\n    def extract(self, candidate: Candidate) -> float:\n        with contextlib.suppress(ValueError):\n            float(candidate.line_data_list[0].value)\n            return 1.0\n        return -1.0\n"
  },
  {
    "path": "credsweeper/ml_model/features/length_of_attribute.py",
    "content": "import numpy as np\n\nfrom credsweeper.common.constants import ML_HUNK\nfrom credsweeper.credentials.candidate import Candidate\nfrom credsweeper.ml_model.features.feature import Feature\n\n\nclass LengthOfAttribute(Feature):\n    \"\"\"Abstract class for obtain a normalized value of length with max size of hunk\"\"\"\n\n    def __init__(self, attribute: str):\n        super().__init__()\n        if \"line\" == attribute:\n            self.hunk_plus = 2 * ML_HUNK + 1\n        elif \"value\" == attribute or \"variable\" == attribute:\n            self.hunk_plus = ML_HUNK + 1\n        else:\n            raise ValueError(f\"Not supported attribute '{attribute}'\")\n        self.attribute = attribute\n\n    def extract(self, candidate: Candidate) -> np.ndarray:\n        \"\"\"Returns boolean for first LineData member\"\"\"\n        if attribute := getattr(candidate.line_data_list[0], self.attribute, None):\n            if len(attribute) < self.hunk_plus:\n                # should be in (0, 1)\n                return np.array([len(attribute) / self.hunk_plus])\n            # 1.0 means the attribute is oversize\n            return np.array([1.0])\n        # the attribute is empty\n        return np.array([0.0])\n"
  },
  {
    "path": "credsweeper/ml_model/features/morpheme_dense.py",
    "content": "from credsweeper.common import static_keyword_checklist\nfrom credsweeper.credentials.candidate import Candidate\nfrom credsweeper.ml_model.features.feature import Feature\n\n\nclass MorphemeDense(Feature):\n    \"\"\"Feature calculates morphemes density for a value\"\"\"\n\n    def extract(self, candidate: Candidate) -> float:\n        density = 0.0\n        if value := candidate.line_data_list[0].value.lower():\n            morphemes_length = 0\n            for morpheme in static_keyword_checklist.morpheme_set:\n                morpheme_pos = value.find(morpheme)\n                if 0 <= morpheme_pos:\n                    morpheme_len = len(morpheme)\n                    while 0 <= morpheme_pos:\n                        morphemes_length += morpheme_len\n                        morpheme_pos += morpheme_len\n                        morpheme_pos = value.find(morpheme, morpheme_pos)\n            # normalization: minimal morpheme length is 3\n            density = morphemes_length / len(value)\n            if 1.0 < density:\n                # overlap morpheme case\n                density = 1.0\n        return density\n"
  },
  {
    "path": "credsweeper/ml_model/features/rule_name.py",
    "content": "from typing import List, Any\n\nimport numpy as np\n\nfrom credsweeper.credentials.candidate import Candidate\nfrom credsweeper.ml_model.features.word_in import WordIn\n\n\nclass RuleName(WordIn):\n    \"\"\"Categorical feature that corresponds to rule name.\n\n    Parameters:\n        rule_names: rule name labels\n\n    \"\"\"\n\n    def __init__(self, rule_names: List[str]) -> None:\n        super().__init__(words=rule_names)\n\n    def __call__(self, candidates: List[Candidate]) -> np.ndarray:\n        candidate_rule_set = set(x.rule_name for x in candidates)\n        return self.word_in_(candidate_rule_set)\n\n    def extract(self, candidate: Candidate) -> Any:\n        raise NotImplementedError\n"
  },
  {
    "path": "credsweeper/ml_model/features/rule_severity.py",
    "content": "from credsweeper.common.constants import Severity\nfrom credsweeper.credentials.candidate import Candidate\nfrom credsweeper.ml_model.features.feature import Feature\n\n\nclass RuleSeverity(Feature):\n    \"\"\"Categorical feature that corresponds to rule name.\"\"\"\n\n    def extract(self, candidate: Candidate) -> float:\n        if Severity.CRITICAL == candidate.severity:\n            return 1.0\n        if Severity.HIGH == candidate.severity:\n            return 0.75\n        if Severity.MEDIUM == candidate.severity:\n            return 0.5\n        if Severity.LOW == candidate.severity:\n            return 0.25\n        if Severity.INFO == candidate.severity:\n            return 0.0\n        raise ValueError(f\"Unknown type of severity: {candidate.severity}\")\n"
  },
  {
    "path": "credsweeper/ml_model/features/search_in_attribute.py",
    "content": "import re\n\nfrom credsweeper.credentials.candidate import Candidate\nfrom credsweeper.ml_model.features.feature import Feature\n\n\nclass SearchInAttribute(Feature):\n    \"\"\"Abstract feature returns boolean for matched pattern in member of first LineData\"\"\"\n\n    def __init__(self, pattern: str, attribute: str):\n        super().__init__()\n        self.pattern = re.compile(pattern)\n        self.attribute = attribute\n\n    def extract(self, candidate: Candidate) -> float:\n        \"\"\"Returns boolean for first LineData member\"\"\"\n        if attribute := getattr(candidate.line_data_list[0], self.attribute, None):\n            if self.pattern.search(attribute):\n                return 1.0\n        return -1.0\n"
  },
  {
    "path": "credsweeper/ml_model/features/word_in.py",
    "content": "from abc import abstractmethod\nfrom typing import List, Any, Set, Union\n\nimport numpy as np\n\nfrom credsweeper.credentials.candidate import Candidate\nfrom credsweeper.ml_model.features.feature import Feature\n\n\nclass WordIn(Feature):\n    \"\"\"Abstract feature returns array with all matched words in a string\"\"\"\n\n    def __init__(self, words: List[str]):\n        super().__init__()\n        self.dimension = len(words)\n        self.words = sorted(list(set(words)))\n        self.enumerated_words = list(enumerate(self.words))\n        if len(self.enumerated_words) != self.dimension:\n            raise RuntimeError(f\"Check duplicates:{words}\")\n\n    @abstractmethod\n    def extract(self, candidate: Candidate) -> Any:\n        raise NotImplementedError\n\n    @property\n    def zero(self) -> np.ndarray:\n        \"\"\"Returns zero filled array for case of empty input\"\"\"\n        return np.zeros(shape=[self.dimension], dtype=np.int8)\n\n    def word_in_(self, iterable_data: Union[str, List[str], Set[str]]) -> np.ndarray:\n        \"\"\"Returns array with words included in a string\"\"\"\n        result: np.ndarray = self.zero\n        for i, word in self.enumerated_words:\n            if word in iterable_data:\n                result[i] = 1\n        return np.array([result])\n"
  },
  {
    "path": "credsweeper/ml_model/features/word_in_path.py",
    "content": "import os.path\nfrom pathlib import Path\nfrom typing import List, Any\n\nimport numpy as np\n\nfrom credsweeper.credentials.candidate import Candidate\nfrom credsweeper.ml_model.features.word_in import WordIn\n\n\nclass WordInPath(WordIn):\n    \"\"\"Categorical feature that corresponds to words in path (POSIX, lowercase)\"\"\"\n\n    def __call__(self, candidates: List[Candidate]) -> np.ndarray:\n        # actually there must be one path because the candidates are grouped before\n        if file_path := candidates[0].line_data_list[0].path:\n            path = Path(file_path)\n            # apply ./ for normalised path to detect \"/src\" for relative path\n            posix_lower_path = path.as_posix().lower() if path.is_absolute() else f\"./{path.as_posix().lower()}\"\n            # prevent extra confusion from the same word in extension\n            path_without_extension, _ = os.path.splitext(posix_lower_path)\n            return self.word_in_(path_without_extension)\n        return np.array([self.zero])\n\n    def extract(self, candidate: Candidate) -> Any:\n        raise NotImplementedError\n"
  },
  {
    "path": "credsweeper/ml_model/features/word_in_postamble.py",
    "content": "import numpy as np\n\nfrom credsweeper.common.constants import ML_HUNK\nfrom credsweeper.credentials.candidate import Candidate\nfrom credsweeper.ml_model.features.word_in import WordIn\n\n\nclass WordInPostamble(WordIn):\n    \"\"\"Feature is true if line contains at least one word from predefined list.\"\"\"\n\n    def extract(self, candidate: Candidate) -> np.ndarray:\n        \"\"\"Returns true if any words in a part of line after value\"\"\"\n        postamble_end = len(candidate.line_data_list[0].line) \\\n            if len(candidate.line_data_list[0].line) < candidate.line_data_list[0].value_end + ML_HUNK \\\n            else candidate.line_data_list[0].value_end + ML_HUNK\n        postamble = candidate.line_data_list[0].line[candidate.line_data_list[0].value_end:postamble_end].strip()\n\n        return self.word_in_(postamble.lower()) if postamble else np.array([self.zero])\n"
  },
  {
    "path": "credsweeper/ml_model/features/word_in_preamble.py",
    "content": "import numpy as np\n\nfrom credsweeper.common.constants import ML_HUNK\nfrom credsweeper.credentials.candidate import Candidate\nfrom credsweeper.ml_model.features.word_in import WordIn\n\n\nclass WordInPreamble(WordIn):\n    \"\"\"Feature is true if line contains at least one word from predefined list.\"\"\"\n\n    def extract(self, candidate: Candidate) -> np.ndarray:\n        \"\"\"Returns true if any words in line before variable or value\"\"\"\n        if 0 <= candidate.line_data_list[0].variable_start:\n            preamble_start = 0 if ML_HUNK >= candidate.line_data_list[0].variable_start \\\n                else candidate.line_data_list[0].variable_start - ML_HUNK\n            preamble = candidate.line_data_list[0].line[preamble_start:candidate.line_data_list[0].\n                                                        variable_start].strip()\n        else:\n            preamble_start = 0 if ML_HUNK >= candidate.line_data_list[0].value_start \\\n                else candidate.line_data_list[0].value_start - ML_HUNK\n            preamble = candidate.line_data_list[0].line[preamble_start:candidate.line_data_list[0].value_start].strip()\n\n        return self.word_in_(preamble.lower()) if preamble else np.array([self.zero])\n"
  },
  {
    "path": "credsweeper/ml_model/features/word_in_transition.py",
    "content": "import numpy as np\n\nfrom credsweeper.credentials.candidate import Candidate\nfrom credsweeper.ml_model.features.word_in import WordIn\n\n\nclass WordInTransition(WordIn):\n    \"\"\"Feature is true if line contains at least one word from predefined list.\"\"\"\n\n    def extract(self, candidate: Candidate) -> np.ndarray:\n        \"\"\"Returns true if any words between variable and value\"\"\"\n        if 0 <= candidate.line_data_list[0].variable_end < candidate.line_data_list[0].value_start:\n            transition = candidate.line_data_list[0].line[candidate.line_data_list[0].variable_end:candidate.\n                                                          line_data_list[0].value_start].strip()\n        else:\n            transition = ''\n\n        return self.word_in_(transition.lower()) if transition else np.array([self.zero])\n"
  },
  {
    "path": "credsweeper/ml_model/features/word_in_value.py",
    "content": "import numpy as np\n\nfrom credsweeper.credentials.candidate import Candidate\nfrom credsweeper.ml_model.features.word_in import WordIn\n\n\nclass WordInValue(WordIn):\n    \"\"\"Feature returns true if candidate value contains at least one word from predefined list.\"\"\"\n\n    def extract(self, candidate: Candidate) -> np.ndarray:\n        \"\"\"Returns array of matching words for first line\"\"\"\n        if value := candidate.line_data_list[0].value:\n            return self.word_in_(value.lower())\n        return np.array([self.zero])\n"
  },
  {
    "path": "credsweeper/ml_model/features/word_in_variable.py",
    "content": "import numpy as np\n\nfrom credsweeper.credentials.candidate import Candidate\nfrom credsweeper.ml_model.features.word_in import WordIn\n\n\nclass WordInVariable(WordIn):\n    \"\"\"Feature returns array of words matching in variable\"\"\"\n\n    def extract(self, candidate: Candidate) -> np.ndarray:\n        \"\"\"Returns array of matching words for first line\"\"\"\n        if variable := candidate.line_data_list[0].variable:\n            return self.word_in_(variable.lower())\n        return np.array([self.zero])\n"
  },
  {
    "path": "credsweeper/ml_model/ml_config.json",
    "content": "{\n    \"char_set\": \"\\u001b\\t\\n\\r !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~\",\n    \"thresholds\": {\n        \"lowest\": 0.22917,\n        \"low\": 0.35739,\n        \"medium\": 0.62204,\n        \"high\": 0.79791,\n        \"highest\": 0.92996\n    },\n    \"features\": [\n        {\n            \"type\": \"RuleSeverity\",\n            \"comment\": \"INFO=0.0, LOW=0.25, MEDIUM=0.5, HIGH=0.75, CRITICAL=1.0\",\n            \"kwargs\": {}\n        },\n        {\n            \"type\": \"EntropyEvaluation\",\n            \"kwargs\": {}\n        },\n        {\n            \"type\": \"LengthOfAttribute\",\n            \"kwargs\": {\n                \"attribute\": \"line\"\n            }\n        },\n        {\n            \"type\": \"LengthOfAttribute\",\n            \"kwargs\": {\n                \"attribute\": \"variable\"\n            }\n        },\n        {\n            \"type\": \"LengthOfAttribute\",\n            \"kwargs\": {\n                \"attribute\": \"value\"\n            }\n        },\n        {\n            \"type\": \"SearchInAttribute\",\n            \"comment\": \"Bash variable\",\n            \"kwargs\": {\n                \"pattern\": \"^\\\\$([A-Za-z_][0-9A-Za-z_]*|\\\\{[A-Za-z_][0-9A-Za-z_]*\\\\})\",\n                \"attribute\": \"value\"\n            }\n        },\n        {\n            \"type\": \"SearchInAttribute\",\n            \"comment\": \"PossibleComment replacing\",\n            \"kwargs\": {\n                \"pattern\": \"^\\\\s*(#|\\\\*|/\\\\*|//|--\\\\s)\",\n                \"attribute\": \"value\"\n            }\n        },\n        {\n            \"type\": \"SearchInAttribute\",\n            \"comment\": \"Example pattern\",\n            \"kwargs\": {\n                \"pattern\": \"^<[\\\\w\\\\s.-]*>\",\n                \"attribute\": \"value\"\n            }\n        },\n        {\n            \"type\": \"SearchInAttribute\",\n            \"comment\": \"Repeated symbol\",\n            \"kwargs\": {\n                \"pattern\": \"(?:(\\\\S)(\\\\S))((\\\\1.)|(.\\\\2)){7,}\",\n                \"attribute\": \"value\"\n            }\n        },\n        {\n            \"type\": \"SearchInAttribute\",\n            \"comment\": \"SHA marker\",\n            \"kwargs\": {\n                \"pattern\": \"(?i:sha)[_-]?(224|256|384|512)\",\n                \"attribute\": \"value\"\n            }\n        },\n        {\n            \"type\": \"SearchInAttribute\",\n            \"comment\": \"ASN1 prefix for PEM keys\",\n            \"kwargs\": {\n                \"pattern\": \"\\\\b(MII|LS0t)\",\n                \"attribute\": \"value\"\n            }\n        },\n        {\n            \"type\": \"SearchInAttribute\",\n            \"comment\": \"camelStyle naming detection\",\n            \"kwargs\": {\n                \"pattern\": \"^[a-z][a-z]{1,16}[0-9]*([A-Z]([a-z]{1,16}[0-9]*|[0-9]{1,16})){1,8}$\",\n                \"attribute\": \"value\"\n            }\n        },\n        {\n            \"type\": \"SearchInAttribute\",\n            \"comment\": \"PascalStyle naming detection\",\n            \"kwargs\": {\n                \"pattern\": \"^([A-Z]([a-z]{1,16}[0-9]*|[0-9]{1,16})){1,8}$\",\n                \"attribute\": \"value\"\n            }\n        },\n        {\n            \"type\": \"SearchInAttribute\",\n            \"comment\": \"UPPERCASE naming detection\",\n            \"kwargs\": {\n                \"pattern\": \"^(_+[0-9]{1,16}|_*[A-Z]{1,16}[0-9]*)(_+([0-9]{1,16}|[A-Z]{1,16}[0-9]*)){1,8}_*$\",\n                \"attribute\": \"value\"\n            }\n        },\n        {\n            \"type\": \"SearchInAttribute\",\n            \"comment\": \"lowercase naming detection\",\n            \"kwargs\": {\n                \"pattern\": \"^(_+[0-9]{1,16}|_*[a-z]{1,16}[0-9]*)(_+([0-9]{1,16}|[a-z]{1,16}[0-9]*)){1,8}_*$\",\n                \"attribute\": \"value\"\n            }\n        },\n        {\n            \"type\": \"SearchInAttribute\",\n            \"comment\": \"VariableNotAllowedPatternCheck\",\n            \"kwargs\": {\n                \"pattern\": \"(^(@|<|\\\\{\\\\{))|([!><+*/^|)](\\\\s)?$)\",\n                \"attribute\": \"variable\"\n            }\n        },\n        {\n            \"type\": \"SearchInAttribute\",\n            \"comment\": \"VariableNotAllowedNameCheck - hash mentioned\",\n            \"kwargs\": {\n                \"pattern\": \"(?i:( h1$|md5|sha[_-]?(224|256|384|512)))\",\n                \"attribute\": \"variable\"\n            }\n        },\n        {\n            \"type\": \"SearchInAttribute\",\n            \"comment\": \"VariableNotAllowedNameCheck - ID detect\",\n            \"kwargs\": {\n                \"pattern\": \"(guid|[^a-z](?i:u?id)|([^A-Z](G?U)?I[dD])s?)$\",\n                \"attribute\": \"variable\"\n            }\n        },\n        {\n            \"type\": \"SearchInAttribute\",\n            \"comment\": \"AWS Key ID - true ID\",\n            \"kwargs\": {\n                \"pattern\": \"^A[0-9A-Z]{19,20}$\",\n                \"attribute\": \"value\"\n            }\n        },\n        {\n            \"type\": \"SearchInAttribute\",\n            \"comment\": \"UUID pattern\",\n            \"kwargs\": {\n                \"pattern\": \"^(?i:[0-9a-f]{8}(-[0-9a-f]{4}){3}-[0-9a-f]{12})$\",\n                \"attribute\": \"value\"\n            }\n        },\n        {\n            \"type\": \"SearchInAttribute\",\n            \"comment\": \"VariableNotAllowedNameCheck - key rule\",\n            \"kwargs\": {\n                \"pattern\": \"(?i:(?:uniq(?:ue)?|escap(?:e|ing)|resources?|projects?|filters?|pub(?:lic)?)_?keys?)\",\n                \"attribute\": \"variable\"\n            }\n        },\n        {\n            \"type\": \"SearchInAttribute\",\n            \"comment\": \"VariableNotAllowedNameCheck - word at end\",\n            \"kwargs\": {\n                \"pattern\": \"(?i:(icon|label|mode|field|format|number|sum|size|len(gth)?|name|type|manager|algorithm|pattern|view|error|date(time)?|time(stamp)?|tag|version|hash|rate|code|fingerprint)s?$)\",\n                \"attribute\": \"variable\"\n            }\n        },\n        {\n            \"type\": \"SearchInAttribute\",\n            \"comment\": \"PWD invocation\",\n            \"kwargs\": {\n                \"pattern\": \"(?i:(^\\\\$pwd$)|(^\\\\$\\\\{#?pwd[^}]*\\\\}$)|(^\\\\$\\\\(pwd\\\\)$)|(^`pwd`$))\",\n                \"attribute\": \"variable\"\n            }\n        },\n        {\n            \"type\": \"WordInVariable\",\n            \"kwargs\": {\n                \"words\": [\n                    \" \",\n                    \".\",\n                    \",\",\n                    \"]\",\n                    \"#\",\n                    \"@\",\n                    \"/\",\n                    \"\\\\\",\n                    \"!!!\",\n                    \"_at\",\n                    \"_len\",\n                    \"256\",\n                    \"512\",\n                    \"access\",\n                    \"assert\",\n                    \"cache\",\n                    \"client\",\n                    \"control\",\n                    \"crypt\",\n                    \"crypted\",\n                    \"decrypt\",\n                    \"encrypt\",\n                    \"dummy\",\n                    \"disable\",\n                    \"example\",\n                    \"expect\",\n                    \"expir\",\n                    \"fake\",\n                    \"file\",\n                    \"filter\",\n                    \"fingerprint\",\n                    \"guid\",\n                    \"hash\",\n                    \"keyguid\",\n                    \"keyid\",\n                    \"key_id\",\n                    \"label\",\n                    \"length\",\n                    \"md5\",\n                    \"manager\",\n                    \"mock\",\n                    \"name\",\n                    \"native\",\n                    \"obj\",\n                    \"opt\",\n                    \"p/w\",\n                    \"param\",\n                    \"pass\",\n                    \"path\",\n                    \"project\",\n                    \"public\",\n                    \"pw\",\n                    \"query\",\n                    \"secret\",\n                    \"size\",\n                    \"sha\",\n                    \"space\",\n                    \"status\",\n                    \"sword\",\n                    \"temp\",\n                    \"test\",\n                    \"thumbprint\",\n                    \"time\",\n                    \"timestamp\",\n                    \"title\",\n                    \"token\",\n                    \"type\",\n                    \"uniq\",\n                    \"valid\",\n                    \"version\",\n                    \"view\"\n                ]\n            }\n        },\n        {\n            \"type\": \"WordInValue\",\n            \"kwargs\": {\n                \"words\": [\n                    \"%\",\n                    \" \",\n                    \":\",\n                    \"=\",\n                    \"$(\",\n                    \"${\",\n                    \"{$\",\n                    \"(\",\n                    \"->\",\n                    \".\",\n                    \"...\",\n                    \"123\",\n                    \"141592653\",\n                    \"718281828\",\n                    \"<\",\n                    \">\",\n                    \"[\",\n                    \"_id\",\n                    \"abc\",\n                    \"aaaa\",\n                    \"asdf\",\n                    \"allow\",\n                    \"arn:aws:\",\n                    \"bar\",\n                    \"disable\",\n                    \"changeme\",\n                    \"crypt\",\n                    \"crypted\",\n                    \"decrypt\",\n                    \"edited\",\n                    \"encrypt\",\n                    \"example\",\n                    \"expir\",\n                    \"fake\",\n                    \"file\",\n                    \"foo\",\n                    \"hash\",\n                    \"hex\",\n                    \"key\",\n                    \"min\",\n                    \"mock\",\n                    \"my\",\n                    \"nil\",\n                    \"oprst\",\n                    \"other\",\n                    \"pass\",\n                    \"public\",\n                    \"pwd\",\n                    \"redacted\",\n                    \"rsa\",\n                    \"salt\",\n                    \"secret\",\n                    \"sha\",\n                    \"ssh\",\n                    \"test\",\n                    \"word\",\n                    \"xxx\",\n                    \"xyz\"\n                ]\n            }\n        },\n        {\n            \"type\": \"WordInPreamble\",\n            \"kwargs\": {\n                \"words\": [\n                    \"$\",\n                    \"%2\",\n                    \"%3\",\n                    \"&\",\n                    \"&amp;\",\n                    \"(\",\n                    \"->\",\n                    \".\",\n                    \"://\",\n                    \"?\",\n                    \"@\",\n                    \"[\",\n                    \"approval\",\n                    \"arn:aws:\",\n                    \"assert\",\n                    \"case\",\n                    \"circle\",\n                    \"color\",\n                    \"e.g.\",\n                    \"equal\",\n                    \"example\",\n                    \"expect\",\n                    \"fake\",\n                    \"false\",\n                    \"height\",\n                    \"image\",\n                    \"line\",\n                    \"media\",\n                    \"nil\",\n                    \"none\",\n                    \"null\",\n                    \"pass\",\n                    \"path\",\n                    \"pwd\",\n                    \"sqa\",\n                    \"test\",\n                    \"true\",\n                    \"undefined\",\n                    \"unit\",\n                    \"where\",\n                    \"width\",\n                    \"word\"\n                ]\n            }\n        },\n        {\n            \"type\": \"WordInTransition\",\n            \"kwargs\": {\n                \"words\": [\n                    \"%2\",\n                    \"%3\",\n                    \"&\",\n                    \"(\",\n                    \"->\",\n                    \"=>\",\n                    \"'\",\n                    \"\\\"\",\n                    \".\",\n                    \",\",\n                    \"?\",\n                    \"@\",\n                    \"[\",\n                    \"{\",\n                    \"basic\",\n                    \"bearer\",\n                    \"get\",\n                    \"e.g.\",\n                    \"equal\",\n                    \"env\",\n                    \"example\",\n                    \"expect\",\n                    \"line\",\n                    \"media\",\n                    \"pass\",\n                    \"password\",\n                    \"path\",\n                    \"test\",\n                    \"unit\"\n                ]\n            }\n        },\n        {\n            \"type\": \"WordInPostamble\",\n            \"kwargs\": {\n                \"words\": [\n                    \"$\",\n                    \"%2\",\n                    \"%3\",\n                    \"&\",\n                    \"&amp;\",\n                    \"(\",\n                    \"->\",\n                    \"'\",\n                    \"\\\"\",\n                    \".\",\n                    \"://\",\n                    \"?\",\n                    \"@\",\n                    \"[\",\n                    \"]\",\n                    \"}\",\n                    \"\\\\\",\n                    \"assert\",\n                    \"case\",\n                    \"circle\",\n                    \"color\",\n                    \"e.g.\",\n                    \"equal\",\n                    \"example\",\n                    \"expect\",\n                    \"fake\",\n                    \"false\",\n                    \"height\",\n                    \"image\",\n                    \"line\",\n                    \"media\",\n                    \"nil\",\n                    \"none\",\n                    \"null\",\n                    \"pass\",\n                    \"path\",\n                    \"pwd\",\n                    \"sqa\",\n                    \"test\",\n                    \"true\",\n                    \"undefined\",\n                    \"unit\",\n                    \"width\",\n                    \"word\"\n                ]\n            }\n        },\n        {\n            \"type\": \"WordInPath\",\n            \"kwargs\": {\n                \"words\": [\n                    \"test\",\n                    \"mock\",\n                    \"/src\",\n                    \"code\",\n                    \"/include\",\n                    \"internal\",\n                    \"tool\",\n                    \"util\",\n                    \"example\",\n                    \"sample\",\n                    \"conf\",\n                    \"secret\",\n                    \"setting\",\n                    \"security\",\n                    \"secure\",\n                    \"resource\",\n                    \"fixture\",\n                    \"docker\",\n                    \"/docs\",\n                    \"/doc/\",\n                    \"document\",\n                    \"/lang\",\n                    \"/local/\",\n                    \"/locale\",\n                    \"/lib\",\n                    \"/spec\",\n                    \"/pkg\",\n                    \"/api\",\n                    \"/rest\",\n                    \"/opt\",\n                    \"/sys\",\n                    \"kube\",\n                    \"kafka\",\n                    \"cluster\",\n                    \"template\",\n                    \"other\",\n                    \"public\",\n                    \"init\",\n                    \"client\",\n                    \"server\",\n                    \"/model\",\n                    \"/modul\",\n                    \"browser\",\n                    \"/env/\",\n                    \"/app\",\n                    \"/assets/\",\n                    \"vendor\",\n                    \"readme\",\n                    \"build\",\n                    \"/dist-packages\",\n                    \"/record\",\n                    \"/script\",\n                    \"/site-packages\",\n                    \"python\",\n                    \"/usr\",\n                    \"/etc\",\n                    \"/fuzz\"\n                ]\n            }\n        },\n        {\n            \"type\": \"MorphemeDense\"\n        },\n        {\n            \"type\": \"HasHtmlTag\"\n        },\n        {\n            \"type\": \"IsSecretNumeric\"\n        },\n        {\n            \"type\": \"FileExtension\",\n            \"kwargs\": {\n                \"extensions\": [\n                    \"\",\n                    \".04\",\n                    \".1\",\n                    \".adoc\",\n                    \".asciidoc\",\n                    \".axaml\",\n                    \".bash\",\n                    \".bat\",\n                    \".bats\",\n                    \".bazel\",\n                    \".bin\",\n                    \".build\",\n                    \".bundle\",\n                    \".bzl\",\n                    \".c\",\n                    \".cast\",\n                    \".cc\",\n                    \".cf\",\n                    \".cjs\",\n                    \".cljc\",\n                    \".cmd\",\n                    \".cnf\",\n                    \".coffee\",\n                    \".conf\",\n                    \".config\",\n                    \".cpp\",\n                    \".crt\",\n                    \".cs\",\n                    \".csp\",\n                    \".csv\",\n                    \".dart\",\n                    \".dist\",\n                    \".dockerfile\",\n                    \".edited\",\n                    \".eex\",\n                    \".env\",\n                    \".erb\",\n                    \".erl\",\n                    \".ex\",\n                    \".example\",\n                    \".exs\",\n                    \".ext\",\n                    \".fsproj\",\n                    \".g4\",\n                    \".gml\",\n                    \".go\",\n                    \".golden\",\n                    \".gradle\",\n                    \".graphql\",\n                    \".groovy\",\n                    \".gtpl\",\n                    \".h\",\n                    \".haml\",\n                    \".har\",\n                    \".hpp\",\n                    \".hs\",\n                    \".html\",\n                    \".idl\",\n                    \".iml\",\n                    \".in\",\n                    \".inc\",\n                    \".ini\",\n                    \".ipynb\",\n                    \".j\",\n                    \".j2\",\n                    \".java\",\n                    \".jenkinsfile\",\n                    \".js\",\n                    \".json\",\n                    \".jsp\",\n                    \".jsx\",\n                    \".ks\",\n                    \".kt\",\n                    \".kts\",\n                    \".las\",\n                    \".ldif\",\n                    \".ldml\",\n                    \".less\",\n                    \".libsonnet\",\n                    \".lkml\",\n                    \".lock\",\n                    \".log\",\n                    \".lua\",\n                    \".m\",\n                    \".manifest\",\n                    \".markdown\",\n                    \".markerb\",\n                    \".md\",\n                    \".mdx\",\n                    \".mjs\",\n                    \".mk\",\n                    \".ml\",\n                    \".mlir\",\n                    \".mod\",\n                    \".moo\",\n                    \".ndjson\",\n                    \".nolint\",\n                    \".odd\",\n                    \".onnx\",\n                    \".oracle\",\n                    \".original\",\n                    \".pan\",\n                    \".patch\",\n                    \".php\",\n                    \".pl\",\n                    \".pm\",\n                    \".po\",\n                    \".pod\",\n                    \".postinst\",\n                    \".pp\",\n                    \".ppk\",\n                    \".proj\",\n                    \".properties\",\n                    \".proto\",\n                    \".ps1\",\n                    \".purs\",\n                    \".pxd\",\n                    \".py\",\n                    \".pyi\",\n                    \".pyx\",\n                    \".r\",\n                    \".rake\",\n                    \".rb\",\n                    \".re\",\n                    \".response\",\n                    \".resx\",\n                    \".rexx\",\n                    \".rrc\",\n                    \".rs\",\n                    \".rsa\",\n                    \".rsp\",\n                    \".rst\",\n                    \".rules\",\n                    \".sample\",\n                    \".sbt\",\n                    \".scala\",\n                    \".secrets\",\n                    \".sh\",\n                    \".snap\",\n                    \".sql\",\n                    \".storyboard\",\n                    \".strings\",\n                    \".sty\",\n                    \".swift\",\n                    \".t\",\n                    \".td\",\n                    \".tdf\",\n                    \".template\",\n                    \".test\",\n                    \".testsettings\",\n                    \".tf\",\n                    \".tfstate\",\n                    \".tfvars\",\n                    \".tl\",\n                    \".tmpl\",\n                    \".token\",\n                    \".toml\",\n                    \".travis\",\n                    \".ts\",\n                    \".tsx\",\n                    \".txt\",\n                    \".var\",\n                    \".vsmdi\",\n                    \".vue\",\n                    \".xaml\",\n                    \".xib\",\n                    \".xml\",\n                    \".yaml\",\n                    \".yml\",\n                    \".zsh\"\n                ]\n            }\n        },\n        {\n            \"type\": \"RuleName\",\n            \"kwargs\": {\n                \"rule_names\": [\n                    \"API\",\n                    \"Auth\",\n                    \"CMD ConvertTo-SecureString\",\n                    \"CMD Password\",\n                    \"CMD Secret\",\n                    \"CMD Token\",\n                    \"CURL User Password\",\n                    \"Credential\",\n                    \"Key\",\n                    \"Nonce\",\n                    \"Password\",\n                    \"SQL Password\",\n                    \"Salt\",\n                    \"Secret\",\n                    \"Token\",\n                    \"URL Credentials\"\n                ]\n            }\n        }\n    ]\n}\n"
  },
  {
    "path": "credsweeper/ml_model/ml_validator.py",
    "content": "import hashlib\nimport json\nimport logging\nfrom pathlib import Path\nfrom typing import List, Tuple, Union, Optional, Dict\n\nimport numpy as np\nfrom onnxruntime import InferenceSession\n\nfrom credsweeper.common.constants import ThresholdPreset, ML_HUNK\nfrom credsweeper.credentials.candidate import Candidate\nfrom credsweeper.credentials.candidate_key import CandidateKey\nfrom credsweeper.ml_model import features\nfrom credsweeper.utils.util import Util\n\nlogger = logging.getLogger(__name__)\n\n\nclass MlValidator:\n    \"\"\"ML validation class\"\"\"\n    MAX_LEN = 2 * ML_HUNK  # for whole line limit\n    # used for initial fill\n    ZERO_CHAR = '\\x00'\n    # applied for unknown characters\n    FAKE_CHAR = '\\x01'\n\n    _dir_path = Path(__file__).parent\n\n    def __init__(\n            self,  #\n            threshold: Union[float, ThresholdPreset],  #\n            ml_config: Union[None, str, Path] = None,  #\n            ml_model: Union[None, str, Path] = None,  #\n            ml_providers: Optional[str] = None) -> None:\n        \"\"\"Init\n\n        Args:\n            threshold: decision threshold\n            ml_config: path to ml config\n            ml_model: path to ml model\n            ml_providers: coma separated list of providers https://onnxruntime.ai/docs/execution-providers/\n        \"\"\"\n        self.__session: Optional[InferenceSession] = None\n\n        if ml_config:\n            ml_config_path = Path(ml_config)\n        else:\n            ml_config_path = MlValidator._dir_path / \"ml_config.json\"\n        with open(ml_config_path, \"rb\") as f:\n            __ml_config_data = f.read()\n\n        model_config = json.loads(__ml_config_data)\n\n        if ml_model:\n            ml_model_path = Path(ml_model)\n        else:\n            ml_model_path = MlValidator._dir_path / \"ml_model.onnx\"\n        with open(ml_model_path, \"rb\") as f:\n            self.__ml_model_data = f.read()\n\n        if ml_providers:\n            self.providers = ml_providers.split(',')\n        else:\n            self.providers = [\"CPUExecutionProvider\"]\n\n        if isinstance(threshold, float):\n            self.threshold = threshold\n        elif isinstance(threshold, ThresholdPreset) and \"thresholds\" in model_config:\n            self.threshold = model_config[\"thresholds\"][threshold.value]\n        else:\n            self.threshold = 0.5\n            logger.warning(\"Use fallback threshold value: %s\", self.threshold)\n\n        char_set = set(model_config[\"char_set\"])\n        if len(char_set) != len(model_config[\"char_set\"]):\n            logger.warning('Duplicated symbols in \"char_set\"?')\n        if self.ZERO_CHAR in char_set or self.FAKE_CHAR in char_set:\n            raise ValueError(f'Unacceptable symbols 0x00 or 0x01 in \"char_set\"={char_set}')\n        self.char_dict = {self.ZERO_CHAR: 0, self.FAKE_CHAR: 1}\n        self.char_dict.update({\n            char: index\n            for index, char in enumerate(sorted(list(char_set)), start=len(self.char_dict))\n        })\n        self.num_classes = len(self.char_dict)\n\n        self.common_feature_list = []\n        self.unique_feature_list = []\n        if logger.isEnabledFor(logging.INFO):\n            config_md5 = hashlib.md5(__ml_config_data).hexdigest()\n            model_md5 = hashlib.md5(self.__ml_model_data).hexdigest()\n            logger.info(\"Init ML validator with providers: '%s' ; model:'%s' md5:%s ; config:'%s' md5:%s\",\n                        self.providers, ml_config_path, config_md5, ml_model_path, model_md5)\n            logger.debug(str(model_config))\n        for feature_definition in model_config[\"features\"]:\n            feature_class = feature_definition[\"type\"]\n            kwargs = feature_definition.get(\"kwargs\", {})\n            feature_constructor = getattr(features, feature_class, None)\n            if feature_constructor is None:\n                raise ValueError(f\"Error while parsing model details. Cannot create feature '{feature_class}'\"\n                                 f\" from {feature_definition}\")\n            try:\n                feature = feature_constructor(**kwargs)\n            except TypeError:\n                logger.error(\"Error while parsing model details. Cannot create feature '%s' from %s\", feature_class,\n                             feature_definition)\n                raise\n            if feature_definition[\"type\"] in [\"RuleName\"]:\n                self.unique_feature_list.append(feature)\n            else:\n                self.common_feature_list.append(feature)\n\n    def __reduce__(self):\n        # TypeError: cannot pickle 'onnxruntime.capi.onnxruntime_pybind11_state.InferenceSession' object\n        self.__session = None\n        return super().__reduce__()\n\n    @property\n    def session(self) -> InferenceSession:\n        \"\"\"session getter to prevent pickle error\"\"\"\n        if not self.__session:\n            self.__session = InferenceSession(self.__ml_model_data, providers=self.providers)\n        if not self.__session:\n            raise RuntimeError(\"InferenceSession was not initialized!\")\n        return self.__session\n\n    def encode(self, text: str, limit: int) -> np.ndarray:\n        \"\"\"Encodes prepared text to array\"\"\"\n        result_array: np.ndarray = np.zeros(shape=(limit, self.num_classes), dtype=np.float32)\n        if text is None:\n            return result_array\n        for i, c in enumerate(text):\n            if i >= limit:\n                break\n            if c in self.char_dict:\n                result_array[i, self.char_dict[c]] = 1.0\n            else:\n                result_array[i, self.char_dict[MlValidator.FAKE_CHAR]] = 1.0\n        return result_array\n\n    def encode_line(self, text: str, position: int):\n        \"\"\"Encodes line with balancing for position\"\"\"\n        offset = len(text) - len(text.lstrip())\n        pos = position - offset\n        stripped = text.strip()\n        if MlValidator.MAX_LEN < len(stripped):\n            stripped = Util.subtext(stripped, pos, ML_HUNK)\n        return self.encode(stripped, MlValidator.MAX_LEN)\n\n    def encode_value(self, text: str) -> np.ndarray:\n        \"\"\"Encodes line with balancing for position\"\"\"\n        stripped = text.strip()\n        return self.encode(stripped[:ML_HUNK], ML_HUNK)\n\n    def _call_model(self, line_input: np.ndarray, variable_input: np.ndarray, value_input: np.ndarray,\n                    feature_input: np.ndarray) -> np.ndarray:\n        input_feed: Dict[str, np.ndarray] = {\n            \"line_input\": line_input.astype(np.float32),\n            \"variable_input\": variable_input.astype(np.float32),\n            \"value_input\": value_input.astype(np.float32),\n            \"feature_input\": feature_input.astype(np.float32),\n        }\n        result = self.session.run(output_names=None, input_feed=input_feed)\n        if result and isinstance(result[0], np.ndarray):\n            return result[0]\n        raise RuntimeError(f\"Unexpected type {type(result[0])}\")\n\n    def extract_common_features(self, candidates: List[Candidate]) -> np.ndarray:\n        \"\"\"Extract features that are guaranteed to be the same for all candidates on the same line with same value.\"\"\"\n        feature_array: np.ndarray = np.array([], dtype=np.float32)\n        # Extract features from credential candidate\n        default_candidate = candidates[0]\n        for feature in self.common_feature_list:\n            new_feature = feature([default_candidate])[0]\n            if not isinstance(new_feature, np.ndarray):\n                new_feature = np.array([new_feature])\n            feature_array = np.append(feature_array, new_feature)\n        return feature_array\n\n    def extract_unique_features(self, candidates: List[Candidate]) -> np.ndarray:\n        \"\"\"Extract features that can be different between candidates. Join them with or operator.\"\"\"\n        feature_array: np.ndarray = np.array([], dtype=np.int8)\n        default_candidate = candidates[0]\n        for feature in self.unique_feature_list:\n            new_feature = feature([default_candidate])[0]\n            if not isinstance(new_feature, np.ndarray):\n                new_feature = np.array([new_feature])\n            feature_array = np.append(feature_array, new_feature)\n        for candidate in candidates[1:]:\n            for feature in self.unique_feature_list:\n                new_feature = feature([candidate])[0]\n                if not isinstance(new_feature, np.ndarray):\n                    new_feature = np.array([new_feature])\n                feature_array = feature_array | new_feature\n        return feature_array\n\n    def get_group_features(self, candidates: List[Candidate]) -> Tuple[np.ndarray, np.ndarray, np.ndarray, np.ndarray]:\n        \"\"\"\n        `np.newaxis` used to add new dimension if front, so input will be treated as a batch\n        \"\"\"\n        # all candidates are from the same line\n        default_candidate = candidates[0]\n        line_input = self.encode_line(default_candidate.line_data_list[0].line,\n                                      default_candidate.line_data_list[0].value_start)[np.newaxis]\n        variable = ''\n        value = ''\n        for candidate in candidates:\n            if not variable and candidate.line_data_list[0].variable:\n                variable = candidate.line_data_list[0].variable\n            if not value and candidate.line_data_list[0].value:\n                value = candidate.line_data_list[0].value\n            if variable and value:\n                break\n        variable_input = self.encode_value(variable)[np.newaxis]\n        value_input = self.encode_value(value)[np.newaxis]\n        feature_array = self.extract_features(candidates)\n        return line_input, variable_input, value_input, feature_array\n\n    def extract_features(self, candidates: List[Candidate]) -> np.ndarray:\n        \"\"\"extracts common and unique features from list of candidates\"\"\"\n        common_features = self.extract_common_features(candidates)\n        unique_features = self.extract_unique_features(candidates)\n        feature_hstack = np.hstack([common_features, unique_features])\n        feature_array = np.array([feature_hstack])\n        return feature_array\n\n    def _batch_call_model(self, line_input_list, variable_input_list, value_input_list, features_list) -> np.ndarray:\n        \"\"\"auxiliary method to invoke twice\"\"\"\n        line_inputs_vstack = np.vstack(line_input_list)\n        variable_inputs_vstack = np.vstack(variable_input_list)\n        value_inputs_vstack = np.vstack(value_input_list)\n        feature_array_vstack = np.vstack(features_list)\n        result_call = self._call_model(line_inputs_vstack, variable_inputs_vstack, value_inputs_vstack,\n                                       feature_array_vstack)\n        result = result_call[:, 0]\n        return result\n\n    def validate_groups(self, group_list: List[Tuple[CandidateKey, List[Candidate]]],\n                        batch_size: int) -> Tuple[np.ndarray, np.ndarray]:\n        \"\"\"Use ml model on list of candidate groups.\n\n        Args:\n            group_list: List of tuples (value, group)\n            batch_size: ML model batch\n\n        Return:\n            Boolean numpy array with decision based on the threshold,\n            and numpy array with probability predicted by the model\n\n        \"\"\"\n        line_input_list = []\n        variable_input_list = []\n        value_input_list = []\n        features_list = []\n        probability: np.ndarray = np.zeros(len(group_list), dtype=np.float32)\n        head = tail = 0\n        for _group_key, candidates in group_list:\n            line_input, variable_input, value_input, feature_array = self.get_group_features(candidates)\n            line_input_list.append(line_input)\n            variable_input_list.append(variable_input)\n            value_input_list.append(value_input)\n            features_list.append(feature_array)\n            tail += 1\n            if 0 == tail % batch_size:\n                # use the approach to reduce memory consumption for huge candidates list\n                probability[head:tail] = self._batch_call_model(line_input_list, variable_input_list, value_input_list,\n                                                                features_list)\n                head = tail\n                line_input_list.clear()\n                variable_input_list.clear()\n                value_input_list.clear()\n                features_list.clear()\n        if head != tail:\n            probability[head:tail] = self._batch_call_model(line_input_list, variable_input_list, value_input_list,\n                                                            features_list)\n        is_cred = self.threshold <= probability\n        if logger.isEnabledFor(logging.DEBUG):\n            for i, decision in enumerate(is_cred):\n                logger.debug(\"ML decision: %s with prediction: %s for value: %s\", decision, probability[i],\n                             group_list[i][0])\n        # apply cast to float to avoid json export issue\n        return is_cred, probability.astype(float)\n"
  },
  {
    "path": "credsweeper/py.typed",
    "content": ""
  },
  {
    "path": "credsweeper/rules/__init__.py",
    "content": ""
  },
  {
    "path": "credsweeper/rules/config.yaml",
    "content": "- name: DOC_GET\n  severity: medium\n  confidence: moderate\n  type: pattern\n  values:\n    - (?P<variable>(\\w*(?i:비밀번호|비번|패스워드|키|암호화?|토큰|(?<!by)pass(?!e[dns]|ing|ion|age)|\\bpwd?\\b|token(?!ize)|secret|key(?!word|board|pad)|cred)\\w*)\\s*(설정은|[=:!]{1,3}))?\\s*([._0-9A-Za-z\\[\\]]*get(env)?\\s*\\(\\s*(?(variable)[^,]+|[\\\"'\\\\]*(\\\\*([\\\"']|&(quot|apos|#3[49]);)){0,4}(\\w*(?i:(?<!by)pass(?!e[dns]|ing|ion|age|\\s+[a-z]{3,64})|\\bpwd?\\b|token|secret|key|cred)\\w*))(\\\\*([\\\"']|&(quot|apos|#3[49]);)){0,4})\\s*(,(\\s*default\\s*=)?|\\)\\s*or)\\s*([brufl@]{1,2}(?=\\\\*[\\\"'&]))?(?P<lq>(\\\\*([\\\"']|&(quot|apos|#3[49]);)){1,4})(?P<value>(.(?!(?P=lq))){4,8000}.?)\n  filter_type:\n    - ValueAllowlistCheck\n    - ValueBlocklistCheck\n    - LineGitBinaryCheck\n    - LineUUEPartCheck\n    - ValueFilePathCheck\n    - ValuePatternCheck(5)\n  min_line_len: 8\n  required_substrings:\n    - pass\n    - pw\n    - token\n    - secret\n    - key\n    - cred\n    - 비밀번호\n    - 비번\n    - 패스워드\n    - 암호\n    - 키\n    - 토큰\n  target:\n    - doc\n  use_ml: true\n\n- name: DOC_CREDENTIALS\n  severity: medium\n  confidence: moderate\n  type: pattern\n  values:\n    - (?P<wrap>[\\\"'`(])?\\s*(?P<variable>(\\w*(?i:(?<!by)passw?o?r?d?s?(?!e[dns]|ing|ion|age)|pwd?\\b|\\bp/w\\b|token(?!ize)|secret|key(?!word|board|pad)|credential)\\w*|비밀번호|비번|패스워드|키|암호화?|토큰))[\\\"'`]*(\\s+(?i:is|are|was|were)(\\s*[:-])?\\s+|\\s*(?P<separator>설정은|:=|:(?!:)|=(>|&gt;|(\\\\\\\\*u00|%)26gt;)|!==|!=|===|==|=~|=|%3[Dd])\\s*)(?P<quote>[\\\"'`]{1,6})?(?P<value>(?(quote)(?(wrap)[^\\\"'`)]{4,8000}|[^\\\"'`]{4,8000})|(?(wrap)[^\\\"'`)]{4,8000}|\\S{4,8000})))\n  filter_type:\n    - ValueAllowlistCheck\n    - ValueBlocklistCheck\n    - LineGitBinaryCheck\n    - LineUUEPartCheck\n    - ValueFilePathCheck\n    - ValuePatternCheck(5)\n    - ValueSealedSecretCheck\n  min_line_len: 8\n  required_substrings:\n    - pass\n    - sword\n    - pw\n    - p/w\n    - paasw\n    - 비밀번호\n    - 비번\n    - 패스워드\n    - 암호\n    - token\n    - secret\n    - key\n    - credential\n    - 키\n    - 토큰\n  target:\n    - doc\n  use_ml: true\n\n- name: SECRET_PAIR\n  severity: medium\n  confidence: moderate\n  type: pattern\n  values:\n    - (?P<variable>[\\\"'`]?(?i:token|secret|key|키|암호화?|토큰)[\\\"'`]?)((\\s)*(?P<separator>설정은|:=|:(?!:)|=(>|&gt;|(\\\\\\\\*u00|%)26gt;)|!==|!=|===|==|=~|=|%3[Dd])(\\s)*)(?P<quote>[\\\"'`(])?(?P<value>(?-i:(?P<a>[A-Z])|(?P<b>[a-z])|(?P<c>[0-9/_+=~!@#$%^&*;:?-])){8,80}(?(a)(?(b)(?(c)((?(quote)[^)\\\"'`]{1,8000}|([0-9A-Za-z/_+=~!@#$%^&*;:?-]{1,8000}|\\b))|$)|(?!x)x)|(?!x)x)|(?!x)x))(?(quote)[)\\\"'`])\n  filter_type:\n    - ValueAllowlistCheck\n    - ValuePatternCheck(4)\n    - ValueEntropyBase64Check\n    - ValueMorphemesCheck\n    - ValueSealedSecretCheck\n  min_line_len: 16\n  required_substrings:\n    - token\n    - secret\n    - key\n    - 키\n    - 암호\n    - 토큰\n  target:\n    - doc\n  use_ml: true\n\n- name: PASSWD_PAIR\n  severity: medium\n  confidence: moderate\n  type: pattern\n  values:\n    - (?P<variable>[\\\"'`]?(?i:(?<!id[ :/])pa[as]swo?r?ds?|pwd?|p/w|비밀번호|비번|패스워드|암호)[\\\"'`]?)((\\s)*(?P<separator>설정은|:=|:(?!:)|=(>|&gt;|(\\\\\\\\*u00|%)26gt;)|!==|!=|===|==|=~|=|%3[Dd])(\\s)*)(?P<quote>[\\\"'`(])?(?P<value>(?-i:(?P<a>[A-Z])|(?P<b>[a-z])|(?P<c>[0-9/_+=~!@#$%^&*;:?-])){8,64}(?(a)(?(b)(?(c)((?(quote)[^)\\\"'`]{1,8000}|([0-9A-Za-z/_+=~!@#$%^&*;:?-]{1,8000}|\\b))|$)|(?!x)x)|(?!x)x)|(?!x)x))(?(quote)[)\\\"'`])\n  filter_type:\n    - ValueAllowlistCheck\n    - ValuePatternCheck(4)\n    - ValueDictionaryKeywordCheck\n    - LineGitBinaryCheck\n    - LineUUEPartCheck\n    - ValueFilePathCheck\n    - ValueHexNumberCheck\n    - ValueSealedSecretCheck\n  min_line_len: 10\n  required_substrings:\n    - pass\n    - sword\n    - pw\n    - p/w\n    - paasw\n    - 비밀번호\n    - 비번\n    - 패스워드\n    - 암호\n  target:\n    - doc\n  use_ml: true\n\n- name: IP_ID_PASSWORD_TRIPLE\n  severity: medium\n  confidence: moderate\n  type: pattern\n  values:\n    - (^|\\s|(?P<variable>(?i:\\bip[\\s/]{1,80}id[\\s/]{1,80}pw[\\s/:]{0,80}))|(?P<url>://))(?P<ip>(?<![0-9.])[0-2]?[0-9]{1,2}\\.[0-2]?[0-9]{1,2}\\.[0-2]?[0-9]{1,2}\\.[0-2]?[0-9]{1,2}(?![0-9.]))((\\s*[(])?|(?(variable)[\\s,/]{1,80}|(?(url)[,]|[,/])))\\s*\\w[\\w.-]{3,80}[\\s,/]{1,80}(?P<value>(?(url)(?-i:(?P<a>[A-Z])|(?P<b>[a-z])|(?P<c>[0-9_+=~!@#$%^&*;?-])){7,64}(?(a)(?(b)(?(c)(\\S|$)|(?!x)x)|(?!x)x)|(?!x)x)|(?-i:(?P<e>[A-Z])|(?P<f>[a-z])|(?P<g>[0-9/_+=~!@#$%^&*;?-])){7,64}(?(e)(?(f)(?(g)(\\S|$)|(?!x)x)|(?!x)x)|(?!x)x)))(?:\\s|[^/]|$)\n  filter_type:\n    - ValueAllowlistCheck\n    - ValuePatternCheck(4)\n    - ValueDictionaryKeywordCheck\n  min_line_len: 10\n  required_substrings:\n    - \".\"\n  target:\n    - doc\n  use_ml: true\n\n- name: ID_PAIR_PASSWD_PAIR\n  severity: medium\n  confidence: moderate\n  type: pattern\n  values:\n    - (?P<ddash>--)?(?P<variable>\\w*(?i:pa[as]swords?|passwd?|pwd|\\bp/w|\\bpw|비밀번호|비번|패스워드|암호))\\s*?(?(ddash)[ =]|[:=/>-]{1,2})\\s*(?P<quote>[\\\"'`]{1,8})?(?P<value>(?-i:(?P<a>[A-Z])|(?P<b>[a-z])|(?P<c>[0-9/_+=~!@#$%^&*;:?-])){4,64}(?(a)(?(b)(?(c)(\\S|$)|(?!x)x)|(?!x)x)|(?!x)x))(?(quote)(?P=quote)|(\\s|$))\n    - (?P<ddash>--)?(?P<variable>(?i:user\\s*)?(?i:id|login|account|root|admin|user|name|wifi|role|host|default|계정|아이디))\\s*?(?(ddash)[ =]|[ :=])\\s*?(?P<value>\\S+)\n  filter_type:\n    - ValueAllowlistCheck\n    - ValuePatternCheck(4)\n  min_line_len: 10\n  required_substrings:\n    - pass\n    - sword\n    - p/w\n    - pw\n    - 비밀번호\n    - 비번\n    - 패스워드\n    - 암호\n  target:\n    - doc\n  use_ml: true\n\n- name: ID_PASSWD_PAIR\n  severity: medium\n  confidence: moderate\n  type: pattern\n  values:\n    - (?P<variable>[\\w.-]{0,80}(?i:(?P<id>\\bid\\b)|id\\b|user|name|계정|아이디)[\\w.-]{0,80}(?(id)[ :(/]{1,80}|[:(/]{1,80})(?i:pa[as]swo?r?ds?|pwd?|비밀번호|비번|패스워드|암호))\\)?(\\s*->\\s*|[ =:)(/]{1,80}|\\s+is\\s+|\\s+are\\s+|\\s*는\\s*|\\s*은\\s*|\\s*설정은\\s*)\\(?(?P<id_value>[\\w.-]{2,64})[ :\\(/\\\"',]{1,80}(?P<value>(?-i:(?P<a>[A-Z])|(?P<b>[a-z])|(?P<c>[0-9/_+=~!@#$%^&*;:?-])){4,64}(?(a)(?(b)(?(c)(\\S|$)|(?!x)x)|(?!x)x)|(?!x)x))\n  filter_type:\n    - ValueAllowlistCheck\n    - ValuePatternCheck(4)\n    - ValueDictionaryKeywordCheck\n  min_line_len: 10\n  required_substrings:\n    - pw\n    - pass\n    - sword\n    - 비밀번호\n    - 비번\n    - 패스워드\n    - 암호\n  target:\n    - doc\n  use_ml: true\n\n- name: UUID\n  severity: info\n  confidence: strong\n  type: pattern\n  values:\n    - (?:^|/|[^\\\\0-9A-Za-z+_-]|\\\\[0abfnrtv]|(?:%|\\\\x)[0-9A-Fa-f]{2}|\\\\[0-7]{3}|\\\\[Uu][0-9A-Fa-f]{4}|\\x1B\\[[0-9;]{0,80}m)(?P<value>[0-9A-F]{8}(-[0-9A-F]{4}){3}-[0-9A-F]{12}|[0-9a-f]{8}(-[0-9a-f]{4}){3}-[0-9a-f]{12})(?![0-9A-Za-z_+-])\n  min_line_len: 36\n  required_substrings:\n    - \"-\"\n  filter_type:\n    - ValuePatternCheck(4)\n  use_ml: false\n  target:\n    - code\n    - doc\n\n- name: Akamai Credentials\n  severity: high\n  confidence: strong\n  type: pattern\n  values:\n    - (?P<value>akab-[0-9a-z]{16}-[0-9a-z]{16})(?!\\.[0-9a-z-]{1,80}\\.akamaiapis\\.net)\n  filter_type: GeneralPattern\n  required_substrings:\n    - akab-\n  min_line_len: 38\n  target:\n    - code\n    - doc\n\n- name: Amazon Bedrock API Key\n  severity: high\n  confidence: moderate\n  type: pattern\n  values:\n    - (?:^|/|[^\\\\0-9A-Za-z+_-]|\\\\[0abfnrtv]|(?:%|\\\\x)[0-9A-Fa-f]{2}|\\\\[0-7]{3}|\\\\[Uu][0-9A-Fa-f]{4}|\\x1B\\[[0-9;]{0,80}m)(?P<value>(ABSK|bedrock-api-key-)[0-9A-Za-z/+]{28,800})(?![0-9A-Za-z/+])\n  filter_type: GeneralPattern\n  required_substrings:\n    - ABSK\n    - bedrock-api-key-\n  min_line_len: 44\n  target:\n    - code\n    - doc\n\n- name: AWS Client ID\n  severity: high\n  confidence: moderate\n  type: pattern\n  values:\n    - (?:^|/|[^\\\\0-9A-Za-z+_-]|\\\\[0abfnrtv]|(?:%|\\\\x)[0-9A-Fa-f]{2}|\\\\[0-7]{3}|\\\\[Uu][0-9A-Fa-f]{4}|\\x1B\\[[0-9;]{0,80}m)(?P<value>(A3T[0-9A-Z]|ABIA|ACCA|AGPA|AIDA|AIPA|AKIA|ANPA|ANVA|AROA|APKA|ASCA|ASIA)[0-9A-Z]{16,17})(?![0-9A-Za-z_+-])\n  filter_type: GeneralPattern\n  required_substrings:\n    - A3T\n    - ABIA\n    - ACCA\n    - AGPA\n    - AIDA\n    - AIPA\n    - AKIA\n    - ANPA\n    - ANVA\n    - AROA\n    - APKA\n    - ASCA\n    - ASIA\n  min_line_len: 20\n  required_regex: \"[0-9A-Za-z_/+-]{15}\"\n  target:\n    - code\n    - doc\n\n- name: AWS Multi\n  severity: high\n  confidence: moderate\n  type: multi\n  values:\n    - (?:^|/|[^\\\\0-9A-Za-z+_-]|\\\\[0abfnrtv]|(?:%|\\\\x)[0-9A-Fa-f]{2}|\\\\[0-7]{3}|\\\\[Uu][0-9A-Fa-f]{4}|\\x1B\\[[0-9;]{0,80}m)(?P<value>A(KIA|SIA)[0-9A-Z]{16})(?![0-9A-Za-z_])\n    - (?:^|/|[^\\\\0-9A-Za-z+_-]|\\\\[0abfnrtv]|(?:%|\\\\x)[0-9A-Fa-f]{2}|\\\\[0-7]{3}|\\\\[Uu][0-9A-Fa-f]{4}|\\x1B\\[[0-9;]{0,80}m)(?P<value>((?P<a>[A-Z])|(?P<b>[a-z])|(?P<c>[0-9/+])){40,44}(?(a)(?(b)(?(c)\\b|(?!x)x)|(?!x)x)|(?!x)x))(?![0-9A-Za-z/+])\n  filter_type:\n    - LineSpecificKeyCheck\n    - ValuePatternCheck\n    - ValueBase64PartCheck\n    - ValueMorphemesCheck\n  required_substrings:\n    - AKIA\n    - ASIA\n  min_line_len: 20\n  required_regex: \"[0-9A-Za-z_/+-]{15}\"\n  target:\n    - code\n    - doc\n\n- name: AWS MWS Key\n  severity: high\n  confidence: strong\n  type: pattern\n  values:\n    - (?P<value>amzn\\.mws\\.[0-9a-z]{8}-[0-9a-z]{4}-[0-9a-z]{4}-[0-9a-z]{4}-[0-9a-z]{12})(?![0-9A-Za-z_-])\n  filter_type: GeneralPattern\n  required_substrings:\n    - amzn.mws.\n  min_line_len: 30\n  target:\n    - code\n    - doc\n\n- name: Dynatrace API Token\n  severity: high\n  confidence: moderate\n  type: pattern\n  values:\n    - (?:^|/|[^\\\\0-9A-Za-z+_-]|\\\\[0abfnrtv]|(?:%|\\\\x)[0-9A-Fa-f]{2}|\\\\[0-7]{3}|\\\\[Uu][0-9A-Fa-f]{4}|\\x1B\\[[0-9;]{0,80}m)(?P<value>dt0[A-Za-z]{1}[0-9]{2}\\.[0-9A-Z]{24}\\.[0-9A-Z]{64})(?![0-9A-Za-z_-])\n  filter_type: TokenPattern\n  required_substrings:\n    - dt0\n  min_line_len: 90\n  target:\n    - code\n    - doc\n\n- name: Facebook Access Token\n  severity: high\n  confidence: moderate\n  type: pattern\n  values:\n    - (?:^|/|[^\\\\0-9A-Za-z+_-]|\\\\[0abfnrtv]|(?:%|\\\\x)[0-9A-Fa-f]{2}|\\\\[0-7]{3}|\\\\[Uu][0-9A-Fa-f]{4}|\\x1B\\[[0-9;]{0,80}m)(?P<value>EAA[0-9A-Za-z]{80,800})\n  filter_type:\n    - ValuePatternCheck\n    - ValueBase64PartCheck\n    - ValueNotPartEncodedCheck\n  required_substrings:\n    - EAA\n  min_line_len: 80\n  target:\n    - code\n    - doc\n\n- name: Facebook App Token\n  severity: high\n  confidence: moderate\n  type: pattern\n  values:\n    - (?:^|/|[^\\\\0-9A-Za-z+_-]|\\\\[0abfnrtv]|(?:%|\\\\x)[0-9A-Fa-f]{2}|\\\\[0-7]{3}|\\\\[Uu][0-9A-Fa-f]{4}|\\x1B\\[[0-9;]{0,80}m)(?P<value>[0-9]{12,18}\\|[0-9A-Za-z_-]{24,28})(?![0-9A-Za-z_+-])\n  filter_type: TokenPattern\n  required_substrings:\n    - \"|\"\n  required_regex: \"[0-9A-Za-z_/+-]{15}\"\n  min_line_len: 33\n  target:\n    - code\n    - doc\n\n- name: Google API Key\n  severity: high\n  confidence: moderate\n  type: pattern\n  values:\n    - (?:^|/|[^\\\\0-9A-Za-z+_-]|\\\\[0abfnrtv]|(?:%|\\\\x)[0-9A-Fa-f]{2}|\\\\[0-7]{3}|\\\\[Uu][0-9A-Fa-f]{4}|\\x1B\\[[0-9;]{0,80}m)(?P<value>AIza[0-9A-Za-z_-]{35})\n  filter_type: TokenPattern\n  required_substrings:\n    - AIza\n  min_line_len: 39\n  target:\n    - code\n    - doc\n\n- name: Google Multi\n  severity: high\n  confidence: moderate\n  type: multi\n  values:\n    - (?P<value>[0-9]{3,80}-[0-9a-z_]{32}\\.apps\\.googleusercontent\\.com)\n    - \\b(?P<value>GOCSPX-[0-9A-Za-z_-]{28}|((?P<a>[A-Z])|(?P<b>[a-z])|(?P<c>[0-9_-])){24,80}(?(a)(?(b)(?(c)\\b|(?!x)x)|(?!x)x)|(?!x)x))\n  filter_type: GeneralPattern\n  required_substrings:\n    - .apps.googleusercontent.com\n  min_line_len: 40\n  target:\n    - code\n    - doc\n\n- name: Google OAuth Secret\n  severity: high\n  confidence: strong\n  type: pattern\n  values:\n    - (?P<value>GOCSPX-[0-9A-Za-z_-]{28})(?![0-9A-Za-z_-])\n  filter_type: TokenPattern\n  required_substrings:\n    - GOCSPX-\n  min_line_len: 40\n  target:\n    - code\n    - doc\n\n- name: Google OAuth Access Token\n  severity: high\n  confidence: moderate\n  type: pattern\n  values:\n    - (?P<value>ya29\\.[0-9A-Za-z_-]{22,8000})\n  filter_type: TokenPattern\n  required_substrings:\n    - ya29.\n  min_line_len: 27\n  target:\n    - code\n    - doc\n\n- name: Google OAuth Refresh Token\n  severity: medium\n  confidence: weak\n  type: pattern\n  values:\n    - (?:^|/|[^\\\\0-9A-Za-z+_-]|\\\\[0abfnrtv]|(?:%|\\\\x)[0-9A-Fa-f]{2}|\\\\[0-7]{3}|\\\\[Uu][0-9A-Fa-f]{4}|\\x1B\\[[0-9;]{0,80}m)(?P<value>1//0[0-9A-Za-z_-]{80,8000})\n  filter_type: TokenPattern\n  required_substrings:\n    - 1//0\n  min_line_len: 84\n  target:\n    - code\n    - doc\n\n- name: Heroku Credentials\n  severity: high\n  confidence: strong\n  type: pattern\n  values:\n    - (?P<value>HRKU-([0-9A-Za-z_-]{60}|[0-9A-Fa-f]{8}(-[0-9A-Fa-f]{4}){3}-[0-9A-Fa-f]{12}))\n  filter_type: TokenPattern\n  required_substrings:\n    - HRKU-\n  min_line_len: 41\n  target:\n    - code\n    - doc\n\n- name: Instagram Access Token\n  severity: high\n  confidence: strong\n  type: pattern\n  values:\n    - (?P<value>IGQVJ[=0-9A-Za-z_-]{100,8000})(?![=0-9A-Za-z_-])\n  filter_type: TokenPattern\n  required_substrings:\n    - IGQVJ\n  min_line_len: 105\n  target:\n    - code\n    - doc\n\n- name: JSON Web Token\n  severity: medium\n  confidence: strong\n  type: pattern\n  values:\n    - (?P<value>eyJ[=0-9A-Za-z_+/-]{15,8000}(\\.[=0-9A-Za-z_+/-]{0,8000}){2,16})(?![=0-9A-Za-z_-])\n  filter_type:\n    - ValueJsonWebTokenCheck\n  required_substrings:\n    - eyJ\n  min_line_len: 64\n  target:\n    - code\n    - doc\n\n- name: JSON Web Key\n  severity: medium\n  confidence: strong\n  type: pattern\n  values:\n    - (?P<value>\\b(e(yJ|yAi|woi|wog|w0K)|W(yJ|3si|wp7|wog|w0K|3sK))[0-9A-Za-z_+/-]{60,8000})\n  filter_type:\n    - ValueJsonWebKeyCheck\n  required_substrings:\n    - eyJ\n    - eyAi\n    - ewoi\n    - ewog\n    - ew0K\n    - WyJ\n    - W3si\n    - Wwp7\n    - Wwog\n    - Ww0K\n    - W3sK\n  min_line_len: 64\n  target:\n    - code\n    - doc\n\n- name: JWK\n  severity: medium\n  confidence: moderate\n  type: multi\n  values:\n    - (?P<value>['\"]?\\b(?P<variable>kty)[^0-9A-Za-z_-]{1,8}(RSA|EC|oct)\\b['\"]?)\n    - (?P<variable>\\b[dk])[^0-9A-Za-z_-]{1,8}(?P<value>[0-9A-Za-z_-]{22,8000})(?![=0-9A-Za-z_-])\n  filter_type:\n    - ValuePatternCheck\n    - ValueMorphemesCheck\n  required_substrings:\n    - kty\n  min_line_len: 8\n  target:\n    - code\n    - doc\n\n- name: MailChimp API Key\n  severity: high\n  confidence: moderate\n  type: pattern\n  values:\n    - (?:^|/|[^\\\\0-9A-Za-z+_-]|\\\\[0abfnrtv]|(?:%|\\\\x)[0-9A-Fa-f]{2}|\\\\[0-7]{3}|\\\\[Uu][0-9A-Fa-f]{4}|\\x1B\\[[0-9;]{0,80}m)(?P<value>[0-9A-Za-z_-]{32}-us[0-9]{1,2})(?![0-9A-Za-z_-])\n  filter_type: TokenPattern\n  required_substrings:\n    - -us\n  min_line_len: 35\n  target:\n    - code\n    - doc\n\n- name: MailGun API Key\n  severity: high\n  confidence: moderate\n  type: pattern\n  values:\n    - (?:^|/|[^\\\\0-9A-Za-z+_-]|\\\\[0abfnrtv]|(?:%|\\\\x)[0-9A-Fa-f]{2}|\\\\[0-7]{3}|\\\\[Uu][0-9A-Fa-f]{4}|\\x1B\\[[0-9;]{0,80}m)(?P<value>key-[0-9a-z]{32}|[0-9a-f]{32}-[0-9a-f]{8}-[0-9a-f]{8})(?![0-9A-Za-z_-])\n  filter_type: TokenPattern\n  required_regex: \"[0-9A-Za-z_/+-]{15}\"\n  min_line_len: 36\n  target:\n    - code\n    - doc\n\n- name: PayPal Braintree Access Token\n  severity: high\n  confidence: strong\n  type: pattern\n  values:\n    - (?P<value>access_token\\$production\\$[0-9a-z]{16}\\$[0-9a-z]{32})(?![0-9A-Za-z_-])\n  filter_type: GeneralPattern\n  required_substrings:\n    - access_token$production$\n  min_line_len: 72\n  target:\n    - code\n    - doc\n\n- name: PEM Private Key\n  severity: high\n  confidence: strong\n  type: pem_key\n  values:\n    - (?P<value>-----BEGIN(?![^-]*ENCRYPTED)[^-]*PRIVATE[^-]*KEY[^-]*-----)\n  min_line_len: 27\n  target:\n    - code\n    - doc\n\n- name: BASE64 encoded PEM Private Key\n  severity: high\n  confidence: strong\n  type: pattern\n  values:\n    - (?P<value>[0-9A-Za-z_/+-]{0,8000}LS0t(LS1CRUdJTiB|LUJFR0lOI|QkVHSU4g)[0-9A-Za-z_/+-]{0,11}(UFJJVkFURSBLRVkt|QUklWQVRFIEtFWS0t|FBSSVZBVEUgS0VZ)[0-9A-Za-z_/+-]{1,8000}LS0t[0-9A-Za-z_/+-]{1,8000})\n  filter_type:\n    - ValueBase64EncodedPem\n  min_line_len: 300\n  required_substrings:\n    - UFJJVkFURSBLRVkt\n    - QUklWQVRFIEtFWS0t\n    - FBSSVZBVEUgS0VZ\n  target:\n    - code\n    - doc\n\n- name: BASE64 Private Key\n  severity: high\n  confidence: strong\n  type: pattern\n  values:\n    - (?P<value>MII[A-Za-f][0-9A-Za-z/+]{8}(?s:[^!#$&()*\\-.:;<=>?@\\[\\]^_{|}~]{8,8000}))\n  filter_type:\n    - ValueBase64KeyCheck\n  min_line_len: 160\n  required_substrings:\n    - MII\n  target:\n    - code\n    - doc\n\n- name: Picatic API Key\n  severity: high\n  confidence: strong\n  type: pattern\n  values:\n    - (?P<value>sk_live_[0-9a-z]{32})(?![0-9A-Za-z_-])\n  filter_type: GeneralPattern\n  required_substrings:\n    - sk_live_\n  min_line_len: 40\n  target:\n    - code\n    - doc\n\n- name: SendGrid API Key\n  severity: high\n  confidence: moderate\n  type: pattern\n  values:\n    - (?:^|/|[^\\\\0-9A-Za-z+_-]|\\\\[0abfnrtv]|(?:%|\\\\x)[0-9A-Fa-f]{2}|\\\\[0-7]{3}|\\\\[Uu][0-9A-Fa-f]{4}|\\x1B\\[[0-9;]{0,80}m)(?P<value>SG\\.[0-9A-Za-z_-]{16,32}\\.[0-9A-Za-z_-]{16,64})\n  filter_type: TokenPattern\n  required_substrings:\n    - SG.\n  min_line_len: 34\n  target:\n    - code\n    - doc\n\n- name: Shopify Token\n  severity: high\n  confidence: strong\n  type: pattern\n  values:\n    - (?P<value>shp(at|ca|pa|ss|tka)_[0-9A-Fa-f]{32})(?![0-9A-Za-z_-])\n  filter_type: TokenPattern\n  required_substrings:\n    - shp\n  min_line_len: 38\n  target:\n    - code\n    - doc\n\n- name: Slack Token\n  severity: high\n  confidence: strong\n  type: pattern\n  values:\n    - (?P<value>(xapp|xox[a-z])\\-[0-9A-Za-z-]{10,250})(?![0-9A-Za-z_-])\n  filter_type: TokenPattern\n  required_substrings:\n    - xox\n    - xapp\n  min_line_len: 15\n  target:\n    - code\n    - doc\n\n- name: Slack Webhook\n  severity: medium\n  confidence: strong\n  type: pattern\n  values:\n    - (?P<variable>hooks\\.slack\\.com/services)(?P<value>/T[0-9A-Z]{8,16}/B[0-9A-Z]{8,16}/[0-9A-Za-z_]{24})\n  filter_type: GeneralPattern\n  required_substrings:\n    - hooks.slack.com/services/T\n  min_line_len: 61\n  target:\n    - code\n    - doc\n\n- name: Stripe Credentials\n  severity: high\n  confidence: strong\n  type: pattern\n  values:\n    - (?P<value>(whsec|[prs]k_(test|live))_[0-9A-Za-z]{24,160})\n  filter_type: GeneralPattern\n  required_substrings:\n    - k_live_\n    - k_test_\n    - whsec_\n  min_line_len: 32\n  target:\n    - code\n    - doc\n\n- name: Square Access Token\n  severity: high\n  confidence: moderate\n  type: pattern\n  values:\n    - (?:^|/|[^\\\\0-9A-Za-z+_-]|\\\\[0abfnrtv]|(?:%|\\\\x)[0-9A-Fa-f]{2}|\\\\[0-7]{3}|\\\\[Uu][0-9A-Fa-f]{4}|\\x1B\\[[0-9;]{0,80}m)(?P<value>EAAA[0-9A-Za-z_-]{60})(?![0-9A-Za-z_-])\n  filter_type:\n    - ValuePatternCheck\n    - ValueBase64PartCheck\n  required_substrings:\n    - EAAA\n  min_line_len: 64\n  target:\n    - code\n    - doc\n\n- name: Square Credentials\n  severity: medium\n  confidence: strong\n  type: pattern\n  values:\n    - (?:^|/|[^\\\\0-9A-Za-z+_-]|\\\\[0abfnrtv]|(?:%|\\\\x)[0-9A-Fa-f]{2}|\\\\[0-7]{3}|\\\\[Uu][0-9A-Fa-f]{4}|\\x1B\\[[0-9;]{0,80}m)(?P<value>sq0[a-z]{3}-[0-9A-Za-z_-]{22}([0-9A-Za-z_-]{21})?)(?![0-9A-Za-z_-])\n  filter_type: TokenPattern\n  required_substrings:\n    - sq0\n  min_line_len: 29\n  target:\n    - code\n    - doc\n\n- name: Twilio Credentials\n  severity: high\n  confidence: moderate\n  type: pattern\n  values:\n    - (?:^|/|[^\\\\0-9A-Za-z+_-]|\\\\[0abfnrtv]|(?:%|\\\\x)[0-9A-Fa-f]{2}|\\\\[0-7]{3}|\\\\[Uu][0-9A-Fa-f]{4}|\\x1B\\[[0-9;]{0,80}m)(?P<value>(AC|AD|AL|CA|CF|CL|CN|CR|FW|IP|KS|MM|NO|PK|PN|QU|RE|SC|SD|SK|SM|TR|UT|XE|XR)[0-9A-Fa-f]{32})(?![0-9A-Za-z_+-])\n  filter_type: TokenPattern\n  required_substrings:\n    - AC\n    - AD\n    - AL\n    - CA\n    - CF\n    - CL\n    - CN\n    - CR\n    - FW\n    - IP\n    - KS\n    - MM\n    - \"NO\"\n    - PK\n    - PN\n    - QU\n    - RE\n    - SC\n    - SD\n    - SK\n    - SM\n    - TR\n    - UT\n    - XE\n    - XR\n  min_line_len: 34\n  target:\n    - code\n    - doc\n\n- name: Telegram Bot API Token\n  severity: high\n  confidence: moderate\n  type: pattern\n  values:\n    - (?:^|/|[^\\\\0-9A-Za-z+_-]|\\\\[0abfnrtv]|(?:%|\\\\x)[0-9A-Fa-f]{2}|\\\\[0-7]{3}|\\\\[Uu][0-9A-Fa-f]{4}|\\x1B\\[[0-9;]{0,80}m)(?P<value>[0-9]{8,10}:[0-9A-Za-z_-]{35})(?![0-9A-Za-z_-])\n  filter_type: TokenPattern\n  required_substrings:\n    - :AA\n  min_line_len: 45\n  target:\n    - code\n    - doc\n\n- name: PyPi API Token\n  severity: high\n  confidence: strong\n  type: pattern\n  values:\n    - (?P<value>pypi-[0-9A-Za-z_-]{150,255})\n  filter_type: TokenPattern\n  required_substrings:\n    - pypi-\n  min_line_len: 155\n  target:\n    - code\n    - doc\n\n- name: NPM Token\n  severity: high\n  confidence: strong\n  type: pattern\n  values:\n    - (?:^|/|[^\\\\0-9A-Za-z+_-]|\\\\[0abfnrtv]|(?:%|\\\\x)[0-9A-Fa-f]{2}|\\\\[0-7]{3}|\\\\[Uu][0-9A-Fa-f]{4}|\\x1B\\[[0-9;]{0,80}m)(?P<value>npm_[0-9A-Za-z_-]{36,255})\n  filter_type:\n    - ValueGitHubCheck\n  required_substrings:\n    - npm_\n  min_line_len: 40\n  target:\n    - code\n    - doc\n\n- name: Github Classic Token\n  severity: high\n  confidence: strong\n  type: pattern\n  values:\n    - (?:^|/|[^\\\\0-9A-Za-z+_-]|\\\\[0abfnrtv]|(?:%|\\\\x)[0-9A-Fa-f]{2}|\\\\[0-7]{3}|\\\\[Uu][0-9A-Fa-f]{4}|\\x1B\\[[0-9;]{0,80}m)(?P<value>gh[pousr]_[0-9A-Za-z_-]{36,255})\n  filter_type:\n    - ValueGitHubCheck\n  required_substrings:\n    - ghp_\n    - gho_\n    - ghu_\n    - ghs_\n    - ghr_\n  min_line_len: 40\n  target:\n    - code\n    - doc\n\n- name: Github Fine-granted Token\n  severity: high\n  confidence: strong\n  type: pattern\n  values:\n    - (?P<value>github_pat_[0-9A-Za-z_]{80,255})\n  filter_type: GeneralPattern\n  required_substrings:\n    - github_pat_\n  min_line_len: 90\n  target:\n    - code\n    - doc\n\n- name: Firebase Domain\n  severity: info\n  confidence: moderate\n  type: pattern\n  values:\n    - (?:^|/|[^\\\\0-9A-Za-z+_-]|\\\\[0abfnrtv]|(?:%|\\\\x)[0-9A-Fa-f]{2}|\\\\[0-7]{3}|\\\\[Uu][0-9A-Fa-f]{4}|\\x1B\\[[0-9;]{0,80}m)(?P<value>[a-z0-9.-]{1,80}\\.firebaseio\\.com|[a-z0-9.-]{1,80}\\.firebaseapp\\.com)\n  filter_type: GeneralPattern\n  required_substrings:\n    - .firebase\n  min_line_len: 16\n  target:\n    - code\n    - doc\n\n- name: AWS S3 Bucket\n  severity: info\n  confidence: moderate\n  type: pattern\n  values:\n    - (?:^|/|[^\\\\0-9A-Za-z+_-]|\\\\[0abfnrtv]|(?:%|\\\\x)[0-9A-Fa-f]{2}|\\\\[0-7]{3}|\\\\[Uu][0-9A-Fa-f]{4}|\\x1B\\[[0-9;]{0,80}m)(?P<value>[a-z0-9.-]{3,63}\\.s3\\.amazonaws\\.com|[a-z0-9.-]{3,63}\\.s3-website[.-](eu|ap|us|ca|sa|cn))\n  filter_type: GeneralPattern\n  required_substrings:\n    - .s3-website\n    - .s3.amazonaws.com\n  min_line_len: 14\n  target:\n    - code\n    - doc\n\n- name: Jfrog Token\n  severity: high\n  confidence: strong\n  type: pattern\n  values:\n    - (?P<value>(cmVmdGtuO[0-9A-Za-z_-]{55}|AKCp[0-9A-Za-z_-]{69}))(?![0-9A-Za-z_-])\n  filter_type:\n    - ValueJfrogTokenCheck\n  required_substrings:\n    - cmVmdGtuO\n    - AKCp\n  min_line_len: 64\n  target:\n    - code\n    - doc\n\n- name: Azure Access Token\n  severity: high\n  confidence: strong\n  type: pattern\n  values:\n    - (?P<value>eyJ[=0-9A-Za-z_-]{50,500}\\.eyJ[=0-9A-Za-z_-]{8,8000}\\.[=0-9A-Za-z_-]{18,800})\n  filter_type:\n    - ValueAzureTokenCheck\n  required_substrings:\n    - eyJ\n  min_line_len: 148\n  target:\n    - code\n    - doc\n\n- name: Azure Secret Value\n  severity: high\n  confidence: moderate\n  type: pattern\n  values:\n    - (?:^|/|[^\\\\0-9A-Za-z+_-]|\\\\[0abfnrtv]|(?:%|\\\\x)[0-9A-Fa-f]{2}|\\\\[0-7]{3}|\\\\[Uu][0-9A-Fa-f]{4}|\\x1B\\[[0-9;]{0,80}m)(?P<value>[0-9A-Za-z_~.-]{3}8Q~[0-9A-Za-z_~.-]{34})(?![0-9A-Za-z_-])\n  filter_type: TokenPattern\n  min_line_len: 40\n  required_substrings:\n    - 8Q~\n  target:\n    - code\n    - doc\n\n- name: Azure Storage Account Key\n  severity: high\n  confidence: moderate\n  type: pattern\n  values:\n    - (?:^|/|[^\\\\0-9A-Za-z+_-]|\\\\[0abfnrtv]|(?:%|\\\\x)[0-9A-Fa-f]{2}|\\\\[0-7]{3}|\\\\[Uu][0-9A-Fa-f]{4}|\\x1B\\[[0-9;]{0,80}m)(?P<value>[0-9A-Za-z]{52}JQQJ9[9DH][0-9A-Za-z]{26}([0-9A-Za-z=]{4})?)(?![0-9A-Za-z_/+-])\n  min_line_len: 80\n  filter_type:\n    - ValuePatternCheck(17)\n  required_substrings:\n    - JQQJ99\n    - JQQJ9D\n    - JQQJ9H\n  target:\n    - code\n    - doc\n\n- name: Bitbucket App Password\n  severity: high\n  confidence: strong\n  type: pattern\n  values:\n    - (?P<value>ATBB[0-9A-Za-z]{24}[A-F0-9]{8})(?![0-9A-Za-z_])\n  filter_type:\n    - ValueAtlassianTokenCheck\n  min_line_len: 28\n  required_substrings:\n    - ATBB\n  target:\n    - code\n    - doc\n\n- name: Bitbucket Repository Access Token\n  severity: high\n  confidence: strong\n  type: pattern\n  values:\n    - (?P<value>ATCTT3xFfGN0[0-9A-Za-z_-]{80,800}(\\\\?=|%3[dD])[A-F0-9]{8})\n  filter_type:\n    - ValueAtlassianTokenCheck\n  min_line_len: 160\n  required_substrings:\n    - ATCTT3xFfGN0\n  target:\n    - code\n    - doc\n\n- name: Bitbucket HTTP Access Token\n  severity: high\n  confidence: strong\n  type: pattern\n  values:\n    - (?P<value>BBDC-[MNO][ADQTgjwz][AEIMQUYcgk][012345wxyz][0-9A-Za-z_-]{40})\n  filter_type:\n    - ValueAtlassianTokenCheck\n  min_line_len: 49\n  required_substrings:\n    - BBDC-\n  target:\n    - code\n    - doc\n\n- name: Jira / Confluence PAT token\n  severity: high\n  confidence: strong\n  type: pattern\n  values:\n    - (?<!BBDC-)(?P<value>[MNO][ADQTgjwz][AEIMQUYcgk][012345wxyz][0-9A-Za-z_-]{40})(?![0-9A-Za-z_-])\n  filter_type:\n    - ValueAtlassianTokenCheck\n  min_line_len: 44\n  required_substrings:\n    - M\n    - N\n    - O\n  required_regex: \"[0-9A-Za-z_/+-]{15}\"\n  target:\n    - code\n    - doc\n\n- name: Atlassian PAT token\n  severity: high\n  confidence: strong\n  type: pattern\n  values:\n    - (?P<value>ATATT3xFfGF0[0-9A-Za-z_-]{80,800}(\\\\?=|%3[dD])[A-F0-9]{8})\n  filter_type:\n    - ValueAtlassianTokenCheck\n  min_line_len: 160\n  required_substrings:\n    - ATATT3xFfGF0\n  target:\n    - code\n    - doc\n\n- name: Digital Ocean Token\n  severity: high\n  confidence: strong\n  type: pattern\n  values:\n    - (?P<value>do[opr]_v1_[a-f0-9]{64})(?![0-9A-Za-z_-])\n  filter_type: TokenPattern\n  min_line_len: 71\n  required_substrings:\n    - doo_v1_\n    - dop_v1_\n    - dor_v1_\n  target:\n    - code\n    - doc\n\n- name: Dropbox OAuth2 API Access Token\n  severity: high\n  confidence: moderate\n  type: pattern\n  values:\n    - (?:^|/|[^\\\\0-9A-Za-z+_-]|\\\\[0abfnrtv]|(?:%|\\\\x)[0-9A-Fa-f]{2}|\\\\[0-7]{3}|\\\\[Uu][0-9A-Fa-f]{4}|\\x1B\\[[0-9;]{0,80}m)(?P<value>sl\\.(u\\.)?[0-9A-Za-z_-]{77,177})(?![0-9A-Za-z_-])\n  filter_type: TokenPattern\n  min_line_len: 80\n  required_substrings:\n    - sl.\n  target:\n    - code\n    - doc\n\n- name: NuGet API key\n  severity: high\n  confidence: moderate\n  type: pattern\n  values:\n    - (?:^|/|[^\\\\0-9A-Za-z+_-]|\\\\[0abfnrtv]|(?:%|\\\\x)[0-9A-Fa-f]{2}|\\\\[0-7]{3}|\\\\[Uu][0-9A-Fa-f]{4}|\\x1B\\[[0-9;]{0,80}m)(?P<value>oy2[a-z0-9]{43})(?![0-9A-Za-z_-])\n  filter_type: TokenPattern\n  min_line_len: 46\n  required_substrings:\n    - oy2\n  target:\n    - code\n    - doc\n\n- name: Gitlab Prefix Token\n  severity: high\n  confidence: strong\n  type: pattern\n  values:\n    - (?P<value>(_gitlab_session=|GR1348941|gl(agent|soat|ffct|p[at]t|oas|cbt|imt|rtr|[dfrw]t)-)[0-9A-Za-z_-]{20,64}(\\.[0-9A-Za-z_-]{2,16}){0,2})(?![0-9A-Za-z_-])\n  filter_type:\n    - ValuePatternCheck\n  min_line_len: 25\n  required_substrings:\n    - _gitlab_session=\n    - GR1348941\n    - glagent-\n    - glsoat-\n    - glffct-\n    - glpat-\n    - gloas-\n    - glptt-\n    - glcbt-\n    - glimt-\n    - gldt-\n    - glft-\n    - glrt-\n    - glrtr-\n    - glwt-\n  target:\n    - code\n    - doc\n\n- name: Grafana Provisioned API Key\n  severity: high\n  confidence: strong\n  type: pattern\n  values:\n    - (?P<value>eyJ[=0-9A-Za-z_-]{64,360})(?![=0-9A-Za-z_-])\n  filter_type:\n    - ValueGrafanaCheck\n  min_line_len: 67\n  required_substrings:\n    - eyJ\n  target:\n    - code\n    - doc\n\n- name: Grafana Access Policy Token\n  severity: high\n  confidence: strong\n  type: pattern\n  values:\n    - (?P<value>glc_eyJ[0-9A-Za-z_-]{80,360})(?![0-9A-Za-z_-])\n  filter_type:\n    - ValueGrafanaCheck\n  min_line_len: 87\n  required_substrings:\n    - glc_eyJ\n  target:\n    - code\n    - doc\n\n- name: Grafana Service Account Token\n  severity: high\n  confidence: strong\n  type: pattern\n  values:\n    - (?P<value>glsa_[0-9A-Za-z_-]{32}_[0-9A-Fa-f]{8})\n  min_line_len: 46\n  filter_type:\n    - ValueGrafanaServiceCheck\n  required_substrings:\n    - glsa_\n  target:\n    - code\n    - doc\n\n- name: Dropbox API secret (long term)\n  severity: high\n  confidence: weak\n  type: pattern\n  values:\n    - (?:^|/|[^\\\\0-9A-Za-z+_-]|\\\\[0abfnrtv]|(?:%|\\\\x)[0-9A-Fa-f]{2}|\\\\[0-7]{3}|\\\\[Uu][0-9A-Fa-f]{4}|\\x1B\\[[0-9;]{0,80}m)(?=[0-9A-Za-z]{64})(?P<value>[0-9A-Za-z]{10,12}[B-Za-z0-9]A{10,12}[B-Za-z0-9][0-9A-Za-z]{40,44})(?![=0-9A-Za-z_/+-])\n  filter_type: [ ]\n  min_line_len: 43\n  required_substrings:\n    - AAAAAAAAAA\n  target:\n    - code\n    - doc\n\n- name: Dropbox App secret\n  severity: info\n  confidence: weak\n  type: pattern\n  values:\n    - (?:^|/|[^\\\\0-9A-Za-z+_-]|\\\\[0abfnrtv]|(?:%|\\\\x)[0-9A-Fa-f]{2}|\\\\[0-7]{3}|\\\\[Uu][0-9A-Fa-f]{4}|\\x1B\\[[0-9;]{0,80}m)(?P<value>[a-z0-9]{15})(?![=0-9A-Za-z_/+-])\n  filter_type: WeirdBase36Token\n  min_line_len: 15\n  required_regex: \"[0-9A-Za-z_/+-]{15}\"\n  target:\n    - code\n    - doc\n\n- name: Hashicorp Vault Token\n  severity: high\n  confidence: strong\n  type: pattern\n  values:\n    - (?:^|/|[^\\\\0-9A-Za-z+_-]|\\\\[0abfnrtv]|(?:%|\\\\x)[0-9A-Fa-f]{2}|\\\\[0-7]{3}|\\\\[Uu][0-9A-Fa-f]{4}|\\x1B\\[[0-9;]{0,80}m)(?P<value>hv[brs]\\.[0-9A-Za-z_-]{80,160})\n  filter_type:\n    - ValuePatternCheck\n    - ValueEntropyBase64Check\n  min_line_len: 90\n  required_substrings:\n    - hvb.\n    - hvr.\n    - hvs.\n  target:\n    - code\n    - doc\n\n- name: Hashicorp Terraform Token\n  severity: high\n  confidence: strong\n  type: pattern\n  values:\n    - (?P<value>[0-9A-Za-z_-]{14}\\.atlasv1\\.[0-9A-Za-z_-]{67})(?![0-9A-Za-z_-])\n  filter_type:\n    - ValuePatternCheck\n    - ValueMorphemesCheck\n  min_line_len: 90\n  required_substrings:\n    - .atlasv1.\n  target:\n    - code\n    - doc\n\n- name: NKEY Seed\n  severity: high\n  confidence: weak\n  type: pattern\n  values:\n    - (?:^|/|[^\\\\0-9A-Za-z+_-]|\\\\[0abfnrtv]|(?:%|\\\\x)[0-9A-Fa-f]{2}|\\\\[0-7]{3}|\\\\[Uu][0-9A-Fa-f]{4}|\\x1B\\[[0-9;]{0,80}m)(?P<value>S[ACNOPUX][A-Z2-7]{40,200})(?![=0-9A-Za-z_+-])\n  min_line_len: 42\n  filter_type:\n    - ValueMorphemesCheck\n    - ValuePatternCheck\n    - ValueEntropyBase32Check\n    - ValueBase32DataCheck\n    - ValueTokenBase32Check\n  required_substrings:\n    - SA\n    - SC\n    - SN\n    - SO\n    - SP\n    - SU\n    - SX\n  required_regex: \"[0-9A-Za-z_/+-]{15}\"\n  target:\n    - code\n    - doc\n\n- name: OTP / 2FA Secret\n  severity: info\n  confidence: weak\n  type: pattern\n  values:\n    - (?:^|/|[^\\\\0-9A-Za-z+_-]|\\\\[0abfnrtv]|(?:%|\\\\x)[0-9A-Fa-f]{2}|\\\\[0-7]{3}|\\\\[Uu][0-9A-Fa-f]{4}|\\x1B\\[[0-9;]{0,80}m)(?P<value>([A-Z2-7]{16}){1,2})(?![=0-9A-Za-z_+-])\n  filter_type:\n    - ValueMorphemesCheck\n    - ValuePatternCheck\n    - ValueEntropyBase32Check\n    - ValueBase32DataCheck\n    - ValueTokenBase32Check\n    - ValueBase64PartCheck\n  min_line_len: 16\n  required_regex: \"[0-9A-Za-z_/+-]{15}\"\n  target:\n    - code\n    - doc\n\n- name: OpenAI Token\n  severity: high\n  confidence: strong\n  type: pattern\n  values:\n    - (?P<value>sk-[0-9A-Za-z_-]{16,160}(T3BlbkFJ|9wZW5BS|PcGVuQU)[0-9A-Za-z_-]{16,160})\n  min_line_len: 51\n  filter_type:\n    - ValuePatternCheck\n    - ValueMorphemesCheck\n  required_substrings:\n    - T3BlbkFJ\n    - 9wZW5BS\n    - PcGVuQU\n  target:\n    - code\n    - doc\n\n- name: Docker Access Token\n  severity: high\n  confidence: strong\n  type: pattern\n  values:\n    - (?P<value>dckr_[op]at_[0-9A-Za-z_-]{27,32})\n  min_line_len: 36\n  filter_type:\n    - ValuePatternCheck\n    - ValueMorphemesCheck\n  required_substrings:\n    - dckr_pat_\n    - dckr_oat_\n  target:\n    - code\n    - doc\n\n- name: Docker Swarm Token\n  severity: high\n  confidence: strong\n  type: pattern\n  values:\n    - (?P<value>SWMTKN-1-[0-9a-z]{50}-[0-9a-z]{25})\n  min_line_len: 85\n  filter_type:\n    - ValuePatternCheck\n    - ValueMorphemesCheck\n  required_substrings:\n    - SWMTKN-1-\n  target:\n    - code\n    - doc\n\n- name: Docker Swarm Key\n  severity: high\n  confidence: strong\n  type: pattern\n  values:\n    - (?P<value>SWMKEY-1-[0-9A-Za-z]{43})\n  min_line_len: 52\n  filter_type:\n    - ValuePatternCheck\n    - ValueMorphemesCheck\n  required_substrings:\n    - SWMKEY-1-\n  target:\n    - code\n    - doc\n\n- name: Groq API Key\n  severity: high\n  confidence: strong\n  type: pattern\n  values:\n    - (?:^|/|[^\\\\0-9A-Za-z+_-]|\\\\[0abfnrtv]|(?:%|\\\\x)[0-9A-Fa-f]{2}|\\\\[0-7]{3}|\\\\[Uu][0-9A-Fa-f]{4}|\\x1B\\[[0-9;]{0,80}m)(?P<value>gsk_[0-9A-Za-z_-]{8,40}(WGdyb3FY|hncm9xW|YZ3JvcV)[0-9A-Za-z_-]{8,40})(?![0-9A-Za-z_-])\n  min_line_len: 56\n  filter_type:\n    - ValuePatternCheck\n  required_substrings:\n    - WGdyb3FY\n    - hncm9xW\n    - YZ3JvcV\n  target:\n    - code\n    - doc\n\n- name: X AI API Key\n  severity: high\n  confidence: moderate\n  type: pattern\n  values:\n    - (?:^|/|[^\\\\0-9A-Za-z+_-]|\\\\[0abfnrtv]|(?:%|\\\\x)[0-9A-Fa-f]{2}|\\\\[0-7]{3}|\\\\[Uu][0-9A-Fa-f]{4}|\\x1B\\[[0-9;]{0,80}m)(?P<value>xai-[0-9A-Za-z_-]{80})(?![0-9A-Za-z_-])\n  min_line_len: 84\n  filter_type:\n    - ValuePatternCheck\n    - ValueEntropyBase64Check\n  required_substrings:\n    - xai-\n  target:\n    - code\n    - doc\n\n- name: Notion Integration Token\n  severity: high\n  confidence: strong\n  type: pattern\n  values:\n    - (?:^|/|[^\\\\0-9A-Za-z+_-]|\\\\[0abfnrtv]|(?:%|\\\\x)[0-9A-Fa-f]{2}|\\\\[0-7]{3}|\\\\[Uu][0-9A-Fa-f]{4}|\\x1B\\[[0-9;]{0,80}m)(?P<value>ntn_[0-9]{9}[0-9A-Za-z_-]{36,255})\n  filter_type:\n    - ValuePatternCheck\n    - ValueEntropyBase64Check\n  required_substrings:\n    - ntn_\n  min_line_len: 50\n  target:\n    - code\n    - doc\n\n- name: Hugging Face User Access Token\n  severity: high\n  confidence: moderate\n  type: pattern\n  values:\n    - (?:^|/|[^\\\\0-9A-Za-z+_-]|\\\\[0abfnrtv]|(?:%|\\\\x)[0-9A-Fa-f]{2}|\\\\[0-7]{3}|\\\\[Uu][0-9A-Fa-f]{4}|\\x1B\\[[0-9;]{0,80}m)(?P<value>hf_[0-9A-Za-z_-]{34})(?![0-9A-Za-z_-])\n  min_line_len: 37\n  filter_type:\n    - ValuePatternCheck\n    - ValueEntropyBase64Check\n  required_substrings:\n    - hf_\n  target:\n    - code\n    - doc\n\n- name: Anthropic API Key\n  severity: high\n  confidence: strong\n  type: pattern\n  values:\n    - (?P<value>sk-ant-api03-[0-9A-Za-z_-]{64,128})(?![0-9A-Za-z_-])\n  min_line_len: 77\n  filter_type:\n    - ValuePatternCheck\n  required_substrings:\n    - sk-ant-api03-\n  target:\n    - code\n    - doc\n\n- name: Perplexity API Key\n  severity: high\n  confidence: strong\n  type: pattern\n  values:\n    - (?P<value>pplx-[0-9A-Za-z_-]{40,64})(?![0-9A-Za-z_-])\n  min_line_len: 45\n  filter_type:\n    - ValuePatternCheck\n  required_substrings:\n    - pplx-\n  target:\n    - code\n    - doc\n\n- name: DeepSeek API Key\n  severity: high\n  confidence: moderate\n  type: pattern\n  values:\n    - (?:^|/|[^\\\\0-9A-Za-z+_-]|\\\\[0abfnrtv]|(?:%|\\\\x)[0-9A-Fa-f]{2}|\\\\[0-7]{3}|\\\\[Uu][0-9A-Fa-f]{4}|\\x1B\\[[0-9;]{0,80}m)(?P<value>sk-[0-9a-f]{32,64})(?![0-9A-Za-z_-])\n  min_line_len: 35\n  filter_type:\n    - ValuePatternCheck\n  required_substrings:\n    - sk-\n  target:\n    - code\n    - doc\n\n- name: Tavily API Key\n  severity: high\n  confidence: strong\n  type: pattern\n  values:\n    - (?P<value>tvly-[0-9A-Za-z_-]{32,40})(?![0-9A-Za-z_-])\n  min_line_len: 37\n  filter_type:\n    - ValuePatternCheck\n  required_substrings:\n    - tvly-\n  target:\n    - code\n    - doc\n\n- name: Figma Personal Access Token\n  severity: high\n  confidence: strong\n  type: pattern\n  values:\n    - (?P<value>figd_[0-9A-Za-z_-]{40})(?![0-9A-Za-z_-])\n  min_line_len: 45\n  filter_type:\n    - ValuePatternCheck\n  required_substrings:\n    - figd_\n  target:\n    - code\n    - doc\n\n- name: 1Password Account Token\n  severity: high\n  confidence: strong\n  type: pattern\n  values:\n    - (?P<value>ops_eyJ[0-9A-Za-z_-]{168,8000})\n  min_line_len: 192\n  filter_type:\n    - ValuePatternCheck\n  required_substrings:\n    - InNlY3JldEtleSI6\n    - JzZWNyZXRLZXkiO\n    - ic2VjcmV0S2V5Ij\n  target:\n    - code\n    - doc\n\n- name: Brevo API Key\n  severity: high\n  confidence: strong\n  type: pattern\n  values:\n    - (?P<value>xkeysib-[0-9a-f]{64}-[0-9A-Za-z_-]{16})\n  min_line_len: 89\n  filter_type:\n    - ValuePatternCheck\n  required_substrings:\n    - xkeysib-\n  target:\n    - code\n    - doc\n\n- name: Together AI API Key\n  severity: high\n  confidence: strong\n  type: pattern\n  values:\n    - (?P<value>tgp_v1_[0-9A-Za-z_-]{43})\n  min_line_len: 50\n  filter_type:\n    - ValuePatternCheck\n  required_substrings:\n    - tgp_v1_\n  target:\n    - code\n    - doc\n\n- name: LLAMA API Key\n  severity: high\n  confidence: strong\n  type: pattern\n  values:\n    - (?:^|/|[^\\\\0-9A-Za-z+_-]|\\\\[0abfnrtv]|(?:%|\\\\x)[0-9A-Fa-f]{2}|\\\\[0-7]{3}|\\\\[Uu][0-9A-Fa-f]{4}|\\x1B\\[[0-9;]{0,80}m)(?P<value>llx-[0-9A-Za-z_-]{48})\n  min_line_len: 52\n  filter_type:\n    - ValuePatternCheck\n  required_substrings:\n    - llx-\n  target:\n    - code\n    - doc\n\n- name: SonarQube Credentials\n  severity: medium\n  confidence: moderate\n  type: pattern\n  values:\n    - (?P<value>sq[apu]_[0-9a-f]{40})(?![0-9A-Za-z_-])\n  min_line_len: 44\n  filter_type:\n    - ValuePatternCheck\n  required_substrings:\n    - sqa_\n    - sqp_\n    - squ_\n  target:\n    - code\n    - doc\n\n- name: Sentry Organization Auth Token\n  severity: high\n  confidence: strong\n  type: pattern\n  values:\n    - (?P<value>sntrys_eyJ[0-9A-Za-z_-]{80,8000}=*([0-9A-Za-z_-]{32,256})?)(?![0-9A-Za-z_-])\n  min_line_len: 37\n  filter_type:\n    - ValuePatternCheck\n  required_substrings:\n    - sntrys_eyJ\n  target:\n    - code\n    - doc\n\n- name: Sentry User Auth Token\n  severity: high\n  confidence: strong\n  type: pattern\n  values:\n    - (?P<value>sntryu_[0-9a-f]{64})(?![0-9A-Za-z_-])\n  min_line_len: 37\n  filter_type:\n    - ValuePatternCheck\n  required_substrings:\n    - sntryu_\n  target:\n    - code\n    - doc\n\n- name: Discord Bot Token\n  severity: high\n  confidence: strong\n  type: pattern\n  values:\n    - (?P<value>[MNO][ADQTgjwz][AEIMQUYcgk][012345wxyz][0-9A-Za-z_-]{20,24}\\.[0-9A-Za-z_-]{6}\\.[0-9A-Za-z_-]{30,40})(?![0-9A-Za-z_-])\n  min_line_len: 62\n  filter_type:\n    - ValueDiscordBotCheck\n  required_substrings:\n    - M\n    - N\n    - O\n  required_regex: \"[0-9A-Za-z_/+-]{15}\"\n  target:\n    - code\n    - doc\n\n- name: Discord Webhook\n  severity: medium\n  confidence: strong\n  type: pattern\n  values:\n    - (?P<variable>discord(?:app)?\\.com/api/webhooks)(?P<value>/[0-9]{16,22}/[0-9A-Za-z_-]{40,100})\n  filter_type:\n    - ValueMorphemesCheck\n  required_substrings:\n    - discordapp.com/api/webhooks\n    - discord.com/api/webhooks\n  min_line_len: 61\n  target:\n    - code\n    - doc\n\n- name: Vercel Token\n  severity: medium\n  confidence: weak\n  type: pattern\n  values:\n    - (?:^|/|[^\\\\0-9A-Za-z+_-]|\\\\[0abfnrtv]|(?:%|\\\\x)[0-9A-Fa-f]{2}|\\\\[0-7]{3}|\\\\[Uu][0-9A-Fa-f]{4}|\\x1B\\[[0-9;]{0,80}m)(?P<value>vcp_[0-9A-Za-z]{56})(?![0-9A-Za-z_-])\n  min_line_len: 60\n  filter_type: TokenPattern\n  required_substrings:\n    - vcp_\n  target:\n    - code\n    - doc\n\n- name: Netlify Token\n  severity: medium\n  confidence: weak\n  type: pattern\n  values:\n    - (?:^|/|[^\\\\0-9A-Za-z+_-]|\\\\[0abfnrtv]|(?:%|\\\\x)[0-9A-Fa-f]{2}|\\\\[0-7]{3}|\\\\[Uu][0-9A-Fa-f]{4}|\\x1B\\[[0-9;]{0,80}m)(?P<value>nfp_[0-9A-Za-z]{36})(?![0-9A-Za-z_-])\n  min_line_len: 40\n  filter_type: TokenPattern\n  required_substrings:\n    - nfp_\n  target:\n    - code\n    - doc\n\n- name: PostHog Credentials\n  severity: medium\n  confidence: weak\n  type: pattern\n  values:\n    - (?:^|/|[^\\\\0-9A-Za-z+_-]|\\\\[0abfnrtv]|(?:%|\\\\x)[0-9A-Fa-f]{2}|\\\\[0-7]{3}|\\\\[Uu][0-9A-Fa-f]{4}|\\x1B\\[[0-9;]{0,80}m)(?P<value>ph[acrsx]_[0-9A-Za-z]{40,60})(?![0-9A-Za-z_-])\n  min_line_len: 44\n  filter_type: TokenPattern\n  required_substrings:\n    - phx_\n    - phs_\n    - phr_\n    - pha_\n    - phc_\n  target:\n    - code\n    - doc\n\n- name: RubyGems API Key\n  severity: medium\n  confidence: strong\n  type: pattern\n  values:\n    - (?P<value>rubygems_[0-9a-f]{48})\n  min_line_len: 57\n  filter_type: TokenPattern\n  required_substrings:\n    - rubygems_\n  target:\n    - code\n    - doc\n\n- name: Tencent WeChat API App ID\n  severity: medium\n  confidence: weak\n  type: pattern\n  values:\n    - (?:^|/|[^\\\\0-9A-Za-z+_-]|\\\\[0abfnrtv]|(?:%|\\\\x)[0-9A-Fa-f]{2}|\\\\[0-7]{3}|\\\\[Uu][0-9A-Fa-f]{4}|\\x1B\\[[0-9;]{0,80}m)(?P<value>wx[0-9a-f]{16})(?![0-9A-Za-z_-])\n  min_line_len: 18\n  filter_type: TokenPattern\n  required_substrings:\n    - wx\n  target:\n    - code\n    - doc\n\n- name: Salesforce Credentials\n  severity: medium\n  confidence: weak\n  type: pattern\n  values:\n    - (?:^|/|[^\\\\0-9A-Za-z+_-]|\\\\[0abfnrtv]|(?:%|\\\\x)[0-9A-Fa-f]{2}|\\\\[0-7]{3}|\\\\[Uu][0-9A-Fa-f]{4}|\\x1B\\[[0-9;]{0,80}m)(?P<value>(3MVG[0-9A-Za-z_.]{24,200}|00D[0-9A-Za-z]{9,15}(![0-9A-Za-z_.]{24,200})?))(?![0-9A-Za-z_.])\n  min_line_len: 12\n  filter_type:\n    - ValuePatternCheck(9)\n    - ValueNumberCheck\n    - ValueBase64PartCheck\n  required_substrings:\n    - 00D\n    - 3MVG\n  target:\n    - code\n    - doc\n\n- name: Postman Credentials\n  severity: medium\n  confidence: moderate\n  type: pattern\n  values:\n    - (?P<value>(PMAK-[0-9a-f]{24}-[0-9a-f]{34}|PMAT-[0-9A-Z]{26}))\n  min_line_len: 29\n  filter_type:\n    - ValuePatternCheck\n  required_substrings:\n    - PMAK-\n    - PMAT-\n  target:\n    - code\n    - doc\n\n- name: NTLM Token\n  severity: medium\n  confidence: strong\n  type: pattern\n  values:\n    - (?P<value>TlRMTVNTUAADAAAA[=0-9A-Za-z_/+-]{8,8000})(?![0-9A-Za-z_/+-])\n  filter_type:\n    - ValueMorphemesCheck(2)\n    - ValuePatternCheck\n  min_line_len: 160\n  required_substrings:\n    - TlRMTVNTUAADAAAA\n  target:\n    - doc\n    - code\n\n- name: Basic Authorization\n  severity: medium\n  confidence: strong\n  type: pattern\n  values:\n    - (?P<variable>(?i:basic))(?P<separator>\\s+)(?P<value>[=0-9A-Za-z_/+-]{8,8000})(?![0-9A-Za-z_/+-])\n  min_line_len: 18\n  filter_type:\n    - ValueBasicAuthCheck\n  required_substrings:\n    - basic\n  target:\n    - code\n    - doc\n\n- name: Bearer Authorization\n  severity: medium\n  confidence: moderate\n  type: pattern\n  values:\n    - (?P<variable>(?i:bearer|ntlm))(?P<separator>\\s+)(?P<value>[.0-9A-Za-z_/+-]{32,8000}=*)(?![0-9A-Za-z_/+-])\n  min_line_len: 37\n  filter_type: GeneralKeyword\n  required_substrings:\n    - bearer\n    - ntlm\n  target:\n    - code\n    - doc\n\n- name: SQL Password\n  severity: medium\n  confidence: weak\n  type: pattern\n  values:\n    - (\\\\[nrt]|\\b)(?i:(?P<variable>(CREATE|ALTER|SET\\s{1,8}PASSWORD|INSERT(\\s{1,8}IGNORE)?|UPDATE\\s{1,8}[^\\s;]{1,80})\\s{1,8}(LOGIN|USER|ROLE|FOR|INTO|SET)\\s{1,8}((?!IDENTIFIED|PASSWORD)[^\\s;]{1,80}\\s{1,8}|VALUES\\s{0,8}\\(){1,8}(IDENTIFIED((\\s{1,8}WITH\\s{1,8}\\S{1,80})?\\s{1,8}(BY|AS))|(=|WITH)?\\s{0,8}PASSWORD\\b(\\s{0,8}=)?)))\\s{0,8}(?P<wrap>[(]\\s{0,8})?(?P<value_leftquote>((?P<esq>\\\\{1,8})?([\\\"'`]|&(quot|apos|#3[49]);)){1,4})?(?P<value>(?(value_leftquote)((?!(?P=value_leftquote))(?(esq)((?!(?P=esq)([\\\"'`]|&(quot|apos|#3[49]);)).)|((?!(?P=value_leftquote)).)))|(?!&(quot|apos|#3[49]);)(\\\\{1,8}([ tnr]|[^\\s\\\"'`])|[^\\s\\\"'`,;\\\\])){3,80})(?(value_leftquote)(?P<value_rightquote>(?<!\\\\)(?P=value_leftquote))|(?(wrap)[)]|[\\s\\\"'`,;]))\n  filter_type:\n    - ValueAllowlistCheck\n    - ValuePatternCheck\n  use_ml: true\n  min_line_len: 8\n  required_substrings:\n    - password\n    - identified\n  target:\n    - doc\n    - code\n\n- name: CURL User Password\n  severity: high\n  confidence: moderate\n  type: pattern\n  values:\n    - (?P<variable>curl)\\s.*(-[uU]|--(proxy-)?user)\\s\\s*(?P<value_leftquote>(\\\\*[\\\"']){1,3})?(?(value_leftquote)[^\\\"'\\\\:]|[^\\s\\\"'\\\\:]){0,64}:(?P<value>(?(value_leftquote)[^\\\"'\\\\]|[^\\s\\\"'\\\\]){4,64})(?(value_leftquote)(?P<value_rightquote>(\\\\?[\\\"']){1,3}))\n  filter_type: GeneralKeyword\n  use_ml: true\n  required_substrings:\n    - curl\n  min_line_len: 16\n  target:\n    - doc\n    - code\n\n- name: CMD ConvertTo-SecureString\n  severity: high\n  confidence: moderate\n  type: pattern\n  values:\n    - (?P<variable>ConvertTo-SecureString(\\s\\s*-(String|AsPlainText|Force))*)\\s\\s*(?P<value_leftquote>(\\\\?[\\\"']){1,3})?(?P<value>(?(value_leftquote)[^\\\"'\\\\]|[^\\s\\\"'\\\\]){4,800})(?(value_leftquote)(?P<value_rightquote>(\\\\?[\\\"']){1,3}))\n  filter_type: GeneralKeyword\n  use_ml: true\n  required_substrings:\n    - convertto-securestring\n  min_line_len: 27\n  target:\n    - doc\n    - code\n\n- name: CMD Password\n  severity: high\n  confidence: moderate\n  type: pattern\n  values:\n    - (^|\\W|\\\\[0abfnrtv]|(?:%|\\\\x)[0-9A-Fa-f]{2}|\\\\[0-7]{3}|\\\\[Uu][0-9A-Fa-f]{4}|\\x1B\\[[0-9;]{0,80}m)(?P<variable>-[A-Za-z_-]*(?i:pass(in|out|word|phrase)))(\\s|\\\\?[\\\"'],)\\s*(?!-)(?P<value_leftquote>(\\\\?[\\\"']){1,3})?(pass:)?(?!file:|env:|fd:)(?P<value>(?(value_leftquote)[^\\\"'\\\\]|[^\\s\\\"'\\\\]){4,80})(?(value_leftquote)(?P<value_rightquote>(\\\\?[\\\"']){1,3}))\n  filter_type: GeneralKeyword\n  use_ml: true\n  required_substrings:\n    - pass\n  min_line_len: 12\n  target:\n    - doc\n    - code\n\n- name: CMD Token\n  severity: high\n  confidence: moderate\n  type: pattern\n  values:\n    - (^|\\W|\\\\[0abfnrtv]|(?:%|\\\\x)[0-9A-Fa-f]{2}|\\\\[0-7]{3}|\\\\[Uu][0-9A-Fa-f]{4}|\\x1B\\[[0-9;]{0,80}m)(?P<variable>-[A-Za-z_-]*(?i:token|oauth2-bearer))(\\s|\\\\?[\\\"'],)\\s*(?!-)(?P<value_leftquote>(\\\\?[\\\"']){1,3})?(?P<value>(?(value_leftquote)[^\\\"'\\\\]|[^\\s\\\"'\\\\]){4,4000})(?(value_leftquote)(?P<value_rightquote>(\\\\?[\\\"']){1,3}))\n  filter_type: GeneralKeyword\n  use_ml: true\n  required_substrings:\n    - token\n    - oauth2-bearer\n  min_line_len: 12\n  target:\n    - doc\n    - code\n\n- name: CMD Secret\n  severity: high\n  confidence: moderate\n  type: pattern\n  values:\n    - (^|\\W|\\\\[0abfnrtv]|(?:%|\\\\x)[0-9A-Fa-f]{2}|\\\\[0-7]{3}|\\\\[Uu][0-9A-Fa-f]{4}|\\x1B\\[[0-9;]{0,80}m)(?P<variable>-[A-Za-z_-]*(?i:secret)[A-Za-z_-]*)(\\s|\\\\?[\\\"'],)\\s*(?!-)(?P<value_leftquote>(\\\\?[\\\"']){1,3})?(pass:)?(?!file:|env:|fd:)(?P<value>(?(value_leftquote)[^\\\"'\\\\]|[^\\s\\\"'\\\\]){4,4000})(?(value_leftquote)(?P<value_rightquote>(\\\\?[\\\"']){1,3}))\n  filter_type: GeneralKeyword\n  use_ml: true\n  required_substrings:\n    - secret\n  min_line_len: 12\n  target:\n    - doc\n    - code\n\n- name: URL Credentials\n  severity: high\n  confidence: moderate\n  type: pattern\n  values:\n    - (?P<value_leftquote>[\\\"'])?(?P<variable>[+0-9A-Za-z-]{2,80}://)([^\\s\\'\"<>\\[\\]^~`{|}:/]{0,80}:){1,3}(?P<value>[^\\s\\'\"<>\\[\\]^~`{|}@:/]{3,80})@[^\\s\\'\"<>\\[\\]^~`{|}@:/]{1,800}\\\\{0,8}(?P<value_rightquote>[\\\"'])?\n  filter_type: UrlCredentialsGroup\n  use_ml: true\n  required_substrings:\n    - ://\n  min_line_len: 10\n  target:\n    - doc\n    - code\n\n- name: API\n  severity: low\n  confidence: moderate\n  type: keyword\n  values:\n    - api(?!tal)\n  filter_type: GeneralKeyword\n  use_ml: true\n  min_line_len: 11\n  required_substrings:\n    - api\n  target:\n    - code\n\n- name: Auth\n  severity: medium\n  confidence: moderate\n  type: keyword\n  values:\n    - auth(?!ors?(?!i[tz]))\n  filter_type: GeneralKeyword\n  use_ml: true\n  min_line_len: 12\n  required_substrings:\n    - auth\n  target:\n    - code\n\n- name: Credential\n  severity: medium\n  confidence: moderate\n  type: keyword\n  values:\n    - credential\n  filter_type: GeneralKeyword\n  use_ml: true\n  min_line_len: 18\n  required_substrings:\n    - credential\n  target:\n    - code\n\n- name: Key\n  severity: high\n  confidence: moderate\n  type: keyword\n  values:\n    - key(?!word|board|pad|name)\n  filter_type: GeneralKeyword\n  use_ml: true\n  min_line_len: 11\n  required_substrings:\n    - key\n  target:\n    - code\n\n- name: Nonce\n  severity: low\n  confidence: moderate\n  type: keyword\n  values:\n    - (?<!\\\\)nonce\n  filter_type: GeneralKeyword\n  use_ml: true\n  min_line_len: 13\n  required_substrings:\n    - nonce\n  target:\n    - code\n\n- name: Password\n  severity: high\n  confidence: moderate\n  type: keyword\n  values:\n    - (?<!by)pass(?!e[dns]|ing|ion|age|\\s+[a-z]{3,80})|pw(d|\\b)\n  filter_type: PasswordKeyword\n  use_ml: true\n  min_line_len: 10\n  required_substrings:\n    - pass\n    - pw\n  target:\n    - code\n\n- name: Salt\n  severity: low\n  confidence: moderate\n  type: keyword\n  values:\n    - salt\n  filter_type: GeneralKeyword\n  use_ml: true\n  min_line_len: 12\n  required_substrings:\n    - salt\n  target:\n    - code\n\n- name: Secret\n  severity: medium\n  confidence: moderate\n  type: keyword\n  values:\n    - secret\n  filter_type: GeneralKeyword\n  use_ml: true\n  min_line_len: 14\n  required_substrings:\n    - secret\n  target:\n    - code\n\n- name: Token\n  severity: high\n  confidence: moderate\n  type: keyword\n  values:\n    - token(?!ize)\n  filter_type: GeneralKeyword\n  use_ml: true\n  min_line_len: 13\n  required_substrings:\n    - token\n  target:\n    - code\n"
  },
  {
    "path": "credsweeper/rules/rule.py",
    "content": "import contextlib\nimport logging\nimport re\nfrom functools import cached_property\nfrom typing import Dict, List, Optional, Union, Set\n\nfrom credsweeper import filters\nfrom credsweeper.common.constants import RuleType, Severity, MAX_LINE_LENGTH, Confidence\nfrom credsweeper.common.keyword_pattern import KeywordPattern\nfrom credsweeper.config.config import Config\nfrom credsweeper.filters import group\nfrom credsweeper.filters.filter import Filter\nfrom credsweeper.filters.group.group import Group\n\nlogger = logging.getLogger(__name__)\n\n\nclass Rule:\n    \"\"\"Regular expression to detect some credential type.\n\n    Class contains regular expression to detect some credential type, credential name, assumed severity\n        and details on how detection should be processed\n\n    Parameters:\n        rule_name: Name displayed if rule\n        rule_type: RuleType used for this rule\n        severity: critical/high/medium/low\n        filters: List of Filter OR _one_ filter Group that can be used to filters False detections based on rules\n        patterns: Regular expressions that can be used for detection\n        use_ml: Should ML work on this credential or not. If not prediction based on regular expression and filter only\n        validations: List of Validation objects that can check this credential using external API\n        required_substrings: Optional list of substrings. Scanner would only apply this rule if line contain at least\n          one of this substrings\n        min_line_len: Optional minimal line length. Scanner would only apply this rule if line is equal or longer\n        usage_list: List of analyze types. There are 2 different analyze type now (\"src\", \"doc\")\n\n    \"\"\"\n\n    # mandatory fields\n    NAME = \"name\"\n    SEVERITY = \"severity\"\n    CONFIDENCE = \"confidence\"\n    TYPE = \"type\"\n    VALUES = \"values\"\n    MIN_LINE_LEN = \"min_line_len\"\n    TARGET = \"target\"\n\n    mandatory_fields = {NAME, SEVERITY, CONFIDENCE, TYPE, VALUES, MIN_LINE_LEN, TARGET}\n\n    # auxiliary fields\n    FILTER_TYPE = \"filter_type\"\n    USE_ML = \"use_ml\"\n    REQUIRED_SUBSTRINGS = \"required_substrings\"\n    REQUIRED_REGEX = \"required_regex\"\n\n    all_fields = mandatory_fields | {FILTER_TYPE, USE_ML, REQUIRED_SUBSTRINGS, REQUIRED_REGEX}\n\n    def __init__(self, config: Config, rule_dict: Dict) -> None:\n        self.config = config\n        self._verify_rule_config(rule_dict)\n        # mandatory fields\n        self.__rule_name = str(rule_dict[Rule.NAME])\n        if severity := Severity.get(rule_dict[Rule.SEVERITY]):\n            self.__severity = severity\n        else:\n            self._malformed_rule_error(rule_dict, Rule.SEVERITY)\n        if confidence := Confidence.get(rule_dict[Rule.CONFIDENCE]):\n            self.__confidence = confidence\n        else:\n            self._malformed_rule_error(rule_dict, Rule.CONFIDENCE)\n        if rule_type := getattr(RuleType, str(rule_dict[Rule.TYPE]).upper(), None):\n            self.__rule_type: RuleType = rule_type\n        else:\n            self._malformed_rule_error(rule_dict, Rule.TYPE)\n        self.__patterns = self._init_patterns(rule_dict[Rule.VALUES])\n        self.__target: List[str] = rule_dict.get(Rule.TARGET, [])\n        if not self.__target or set(self.__target).difference({\"code\", \"doc\"}):\n            self._malformed_rule_error(rule_dict, Rule.TARGET)\n        # auxiliary fields\n        self.__filters = self._init_filters(rule_dict.get(Rule.FILTER_TYPE, []))\n        self.__use_ml = bool(rule_dict.get(Rule.USE_ML))\n        self.__required_substrings = set(i.strip().lower() for i in rule_dict.get(Rule.REQUIRED_SUBSTRINGS, []))\n        self.__has_required_substrings = bool(self.__required_substrings)\n        required_regex = rule_dict.get(Rule.REQUIRED_REGEX)\n        if required_regex and not isinstance(required_regex, str):\n            self._malformed_rule_error(rule_dict, Rule.REQUIRED_REGEX)\n        self.__required_regex = re.compile(required_regex) if required_regex else None\n        self.__min_line_len = int(rule_dict.get(Rule.MIN_LINE_LEN, MAX_LINE_LENGTH))\n\n    def _malformed_rule_error(self, rule_dict: Dict, field: str):\n        raise ValueError(f\"Malformed rule '{self.__rule_name}'.\"\n                         f\" field '{field}' has invalid value\"\n                         f\" '{rule_dict.get(field)}'\")\n\n    @cached_property\n    def rule_name(self) -> str:\n        \"\"\"rule_name getter\"\"\"\n        return self.__rule_name\n\n    @cached_property\n    def rule_type(self) -> RuleType:\n        \"\"\"rule_type getter\"\"\"\n        return self.__rule_type\n\n    @cached_property\n    def severity(self) -> Severity:\n        \"\"\"severity getter\"\"\"\n        return self.__severity\n\n    @cached_property\n    def confidence(self) -> Confidence:\n        \"\"\"confidence getter\"\"\"\n        return self.__confidence\n\n    @cached_property\n    def filters(self) -> List[Filter]:\n        \"\"\"filters getter\"\"\"\n        return self.__filters\n\n    @staticmethod\n    def _get_arg(arg: str) -> Union[int, float, str]:\n        \"\"\"Transform given string value to int, then float. In worst case - returns str\"\"\"\n        with contextlib.suppress(Exception):\n            return int(arg)\n        with contextlib.suppress(Exception):\n            return float(arg)\n        return str(arg)\n\n    def _init_filters(self, filter_type: Union[None, str, List[str]]) -> List[Filter]:\n        \"\"\"\n            filter_type: str - applies Group of filter\n                         list - creates specific set of Filters\n        \"\"\"\n        _filters: List[Filter] = []\n        if isinstance(filter_type, str):\n            # when string passed - (Group) of filters is applied\n            filter_group = getattr(group, filter_type, None)\n            if isinstance(filter_group, type) and issubclass(filter_group, Group):\n                return filter_group(self.config).filters  # type: ignore\n        elif isinstance(filter_type, list):\n            # list type means - list of (Filter)s is applied\n            for i in filter_type:\n                if '(' in i and ')' in i:\n                    left_pos = i.find('(')\n                    filter_parameters = [self._get_arg(x.strip()) for x in i[left_pos + 1:i.find(')')].split(',')]\n                    filter_name = i[:left_pos].strip()\n                else:\n                    filter_parameters = None\n                    filter_name = i\n                _filter = getattr(filters, filter_name, None)\n                if isinstance(_filter, type) and issubclass(_filter, Filter):\n                    if filter_parameters:\n                        _filters.append(_filter(self.config, *filter_parameters))\n                    else:\n                        _filters.append(_filter(self.config))\n                else:\n                    break\n            else:\n                return _filters\n        raise ValueError(f\"Malformed rule '{self.__rule_name}'.\"\n                         f\" field '{Rule.FILTER_TYPE}' has invalid value\"\n                         f\" '{filter_type}'\")\n\n    def _init_patterns(self, _values: List[str]) -> List[re.Pattern]:\n        \"\"\"Get pattern values for rule object.\n\n        Set the pattern value attribute of the rule object based on the passed values.\n        So, if the received rule type corresponds to the RuleType.KEYWORD type,\n        the \"patterns\" attribute is assigned the value of template keyword regex\n        with the corresponding value. Otherwise, if the received rule type corresponds\n        to the RuleType.PATTERN, RuleType.MULTI or RuleType.PEM_KEY types, the \"patterns\" attribute is\n        assigned the compile regex ov received value\n\n        Args:\n            _values: regular expressions\n\n        \"\"\"\n        _patterns: List[re.Pattern] = []\n        if RuleType.KEYWORD == self.rule_type and 0 < len(_values):\n            for value in _values:\n                _pattern = KeywordPattern.get_keyword_pattern(value)\n                _patterns.append(_pattern)\n        elif RuleType.MULTI == self.rule_type and 2 == len(_values) \\\n                or self.rule_type in (RuleType.PATTERN, RuleType.PEM_KEY) and 0 < len(_values):\n            for value in _values:\n                _patterns.append(re.compile(value))\n            if RuleType.PEM_KEY == self.rule_type and 1 < len(_values):\n                logger.warning(\"Rule %s has extra patterns. Only single pattern supported.\", self.rule_name)\n            elif RuleType.MULTI == self.rule_type and 2 < len(_values):\n                logger.warning(\"Rule %s has extra patterns. Only two patterns supported.\", self.rule_name)\n        else:\n            raise ValueError(f\"Malformed rule config file. Rule '{self.rule_name}' type '{self.rule_type}' is invalid.\")\n        return _patterns\n\n    @cached_property\n    def patterns(self) -> List[re.Pattern]:\n        \"\"\"patterns getter\"\"\"\n        return self.__patterns\n\n    @cached_property\n    def use_ml(self) -> bool:\n        \"\"\"use_ml getter\"\"\"\n        return self.__use_ml\n\n    @staticmethod\n    def _verify_rule_config(rule_config: Dict) -> None:\n        \"\"\"Checks all mandatory fields and wrong names\n\n        Args:\n            rule_config: dictionary loaded from the config file\n\n        Raises:\n            ValueError if missing fields is present\n\n        \"\"\"\n        if missing_fields := Rule.mandatory_fields.difference(rule_config.keys()):\n            raise ValueError(f\"Malformed rule config file. Contain rule with missing fields: {missing_fields}.\")\n        if extra_fields := set(rule_config.keys()).difference(Rule.all_fields):\n            raise ValueError(f\"Malformed rule config file. Extra fields: {extra_fields}.\")\n\n    @cached_property\n    def required_substrings(self) -> Set[str]:\n        \"\"\"required_substrings getter\"\"\"\n        return self.__required_substrings\n\n    @cached_property\n    def has_required_substrings(self) -> bool:\n        \"\"\"has_required_substrings getter for speedup\"\"\"\n        return self.__has_required_substrings\n\n    @cached_property\n    def required_regex(self) -> Optional[re.Pattern]:\n        \"\"\"required_regex getter\"\"\"\n        return self.__required_regex\n\n    @cached_property\n    def min_line_len(self) -> int:\n        \"\"\"min_line_len getter\"\"\"\n        return self.__min_line_len\n\n    @cached_property\n    def target(self) -> List[str]:\n        \"\"\"target getter\"\"\"\n        return self.__target\n"
  },
  {
    "path": "credsweeper/scanner/__init__.py",
    "content": ""
  },
  {
    "path": "credsweeper/scanner/scan_type/__init__.py",
    "content": ""
  },
  {
    "path": "credsweeper/scanner/scan_type/multi_pattern.py",
    "content": "import copy\nimport re\nfrom typing import List\n\nfrom credsweeper.common.constants import RuleType, MAX_LINE_LENGTH\nfrom credsweeper.config.config import Config\nfrom credsweeper.credentials.candidate import Candidate\nfrom credsweeper.file_handler.analysis_target import AnalysisTarget\nfrom credsweeper.filters import ValueSearchCheck\nfrom credsweeper.filters.filter import Filter\nfrom credsweeper.rules.rule import Rule\nfrom credsweeper.scanner.scan_type.scan_type import ScanType\n\n\nclass MultiPattern(ScanType):\n    \"\"\"Check if line is a part of a multi-line credential and second part is present within MAX_SEARCH_MARGIN lines.\n\n    Parameters:\n        MAX_SEARCH_MARGIN: Int constant. Number of lines around current to perform search for the second part\n\n    \"\"\"\n\n    MAX_SEARCH_MARGIN = 10\n\n    @classmethod\n    def run(cls, config: Config, rule: Rule, target: AnalysisTarget) -> List[Candidate]:\n        \"\"\"Check if multiline credential present if the file within MAX_SEARCH_MARGIN range from current line_num.\n\n        Args:\n            config: user configs\n            rule: Rule object to check current line. Should be a multi-pattern rule\n            target: Analysis target\n\n        Return:\n            List of Candidates if pattern defined in a rule is present in a line\n            and second part of multi-pattern rule is present within MAX_SEARCH_MARGIN from the line.\n            Empty list (False) - otherwise.\n\n        \"\"\"\n        if RuleType.MULTI != rule.rule_type:\n            raise ValueError(f\"Rule `{rule}` provided to `{cls.__name__}`.run \"\n                             f\"should have pattern_type equal to `{RuleType.MULTI.value}`\")\n\n        candidates = cls._get_candidates(config, rule, target)\n\n        for candidate in candidates:\n            # use additional filter to skip the value in first line_data and continues scan\n            filters = copy.deepcopy(rule.filters)\n            filters.append(ValueSearchCheck(config, candidate.line_data_list[0].value))\n            for line_pos in cls.get_line_positions(candidate.line_data_list[0].line_pos, target):\n                if cls._scan(config, candidate, line_pos, target, rule.patterns[1], filters):\n                    break\n\n        # return candidates with multi line_data_list only\n        return [x for x in candidates if 1 < len(x.line_data_list)]\n\n    @classmethod\n    def get_line_positions(cls, line_pos: int, target: AnalysisTarget) -> List[int]:\n        \"\"\"Returns list of line positions to be scanned for second part of multi-pattern rule in a priority order.\"\"\"\n        if 0 <= line_pos < target.lines_len:\n            # the same line is first\n            priority_positions = [(0, line_pos)]\n        else:\n            return []\n        # margin order is constant at start\n        priority_forward = priority_backward = cls.MAX_SEARCH_MARGIN\n        # backward lines are second priority\n        priority_backward += cls.MAX_SEARCH_MARGIN\n        line_pos_margin = 1\n        while line_pos_margin <= cls.MAX_SEARCH_MARGIN:\n            # forward\n            line_pos_forward = line_pos + line_pos_margin\n            if 0 <= line_pos_forward < target.lines_len:\n                if forward_curled_diff := target.lines[line_pos_forward].count('}', 0, MAX_LINE_LENGTH):\n                    forward_curled_diff -= target.lines[line_pos_forward].count('{', 0, MAX_LINE_LENGTH)\n                if 0 < forward_curled_diff:\n                    priority_forward += cls.MAX_SEARCH_MARGIN * (1 + forward_curled_diff)\n                else:\n                    priority_forward += cls.MAX_SEARCH_MARGIN\n                priority_positions.append((priority_forward, line_pos_forward))\n            # backward\n            line_pos_backward = line_pos - line_pos_margin\n            if 0 <= line_pos_backward < target.lines_len:\n                if backward_curled_diff := target.lines[line_pos_backward].count('{', 0, MAX_LINE_LENGTH):\n                    backward_curled_diff -= target.lines[line_pos_backward].count('}', 0, MAX_LINE_LENGTH)\n                if 0 < backward_curled_diff:\n                    priority_backward += cls.MAX_SEARCH_MARGIN * (1 + backward_curled_diff)\n                else:\n                    priority_backward += cls.MAX_SEARCH_MARGIN\n                priority_positions.append((priority_backward, line_pos_backward))\n            # increment the margin for next index\n            line_pos_margin += 1\n        # first item is priority, second - line_pos\n        priority_positions.sort()\n        return [x for _, x in priority_positions]\n\n    @classmethod\n    def _scan(cls, config: Config, candidate: Candidate, candi_line_pos: int, target: AnalysisTarget,\n              pattern: re.Pattern, filters: List[Filter]) -> bool:\n        \"\"\"Search for second pattern in multi-pattern rule.\n\n        Automatically update candidate with detected line if any.\n\n        Args:\n            config: dict, scanner configuration\n            candidate: Current credential candidate detected in the line\n            candi_line_pos: line position of lines around candidate to perform search\n            target: Analysis target\n            pattern: second pattern in a rule\n            filters: filters to be applied on candidate\n\n        Return:\n            Boolean. True if second part detected. False otherwise\n\n        \"\"\"\n        new_target = AnalysisTarget(candi_line_pos, target.lines, target.line_nums, target.descriptor)\n\n        line_data_list = cls.get_line_data_list(config=config, target=new_target, pattern=pattern, filters=filters)\n\n        if not line_data_list:\n            return False\n        candidate.line_data_list.extend(line_data_list)\n        return True\n"
  },
  {
    "path": "credsweeper/scanner/scan_type/pem_key_pattern.py",
    "content": "import logging\nfrom typing import List\n\nfrom credsweeper.common.constants import RuleType\nfrom credsweeper.config.config import Config\nfrom credsweeper.credentials.candidate import Candidate\nfrom credsweeper.file_handler.analysis_target import AnalysisTarget\nfrom credsweeper.rules.rule import Rule\nfrom credsweeper.scanner.scan_type.scan_type import ScanType\nfrom credsweeper.utils.pem_key_detector import PemKeyDetector\n\nlogger = logging.getLogger(__name__)\n\n\nclass PemKeyPattern(ScanType):\n    \"\"\"Scanner detects single PEM private key in target from current line\"\"\"\n\n    @classmethod\n    def run(cls, config: Config, rule: Rule, target: AnalysisTarget) -> List[Candidate]:\n        \"\"\"Check if target is a PEM key\n\n        Args:\n            config: user configs\n            rule: Rule object to check current line. Should be a pem-pattern rule\n            target: Analysis target\n\n        Return:\n            List of Candidate objects if pattern defined in a rule is present in a line\n            and filters defined in rule do not remove current line. Empty list - otherwise\n\n        \"\"\"\n        if RuleType.PEM_KEY != rule.rule_type:\n            raise ValueError(f\"Rule `{rule}` provided to `{cls.__name__}`.run \"\n                             f\"should have pattern_type equal to `{RuleType.PEM_KEY.value}`\")\n        for candidate in cls._get_candidates(config, rule, target):\n            if pem_lines := PemKeyDetector(config).detect_pem_key(candidate.line_data_list[0], target):\n                candidate.line_data_list = pem_lines\n                return [candidate]\n\n        return []\n"
  },
  {
    "path": "credsweeper/scanner/scan_type/scan_type.py",
    "content": "import logging\nimport re\nfrom abc import ABC, abstractmethod\nfrom typing import List\n\nfrom credsweeper.common.constants import RuleType, MIN_DATA_LEN\nfrom credsweeper.config.config import Config\nfrom credsweeper.credentials.candidate import Candidate, LineData\nfrom credsweeper.file_handler.analysis_target import AnalysisTarget\nfrom credsweeper.filters.filter import Filter\nfrom credsweeper.rules.rule import Rule\n\nlogger = logging.getLogger(__name__)\n\n\nclass ScanType(ABC):\n    \"\"\"Base class for all Scanners.\n\n    Scanner allow to check if regex pattern defined in a rule is present in a line.\n\n    \"\"\"\n\n    @classmethod\n    @abstractmethod\n    def run(cls, config: Config, rule: Rule, target: AnalysisTarget) -> List[Candidate]:\n        \"\"\"Check if regex pattern defined in a rule is present in a line.\n\n        Args:\n            config: user configs\n            rule: Rule object to check current line\n            target: Analysis target\n\n        Return:\n            List of Candidate objects if pattern defined in a rule is present in a line\n            and filters defined in rule do not remove current line. Empty list - otherwise\n\n        \"\"\"\n        raise NotImplementedError()\n\n    @classmethod\n    def filtering(cls, target: AnalysisTarget, line_data: LineData, filters: List[Filter]) -> bool:\n        \"\"\"Check if line data should be removed based on filters.\n\n        If `use_filters` option is false, always return False\n\n        Args:\n            target: AnalysisTarget from which `line_data` was obtained\n            line_data: Line data to check with `filters`\n            filters: Filters to use\n\n        Return:\n            boolean: True if line_data should be removed. False otherwise.\n            If `use_filters` option is false, always return False\n\n        \"\"\"\n        if not line_data.value:\n            logger.debug(\"Filtered line with empty value in file: %s:%d  in line: %s value: '%s'\", line_data.path,\n                         line_data.line_num, line_data.line, line_data.value)\n            return True\n        for filter_ in filters:\n            if filter_.run(line_data, target):\n                logger.debug(\"Filtered line with filter: %s in file: %s:%d  in line: %s value: %s\",\n                             filter_.__class__.__name__, line_data.path, line_data.line_num, line_data.line,\n                             line_data.value)\n                return True\n        return False\n\n    @classmethod\n    def get_line_data_list(\n            cls,  #\n            config: Config,  #\n            target: AnalysisTarget,  #\n            pattern: re.Pattern,  #\n            filters: List[Filter]) -> List[LineData]:\n        \"\"\"Check if regex pattern is present in line, and line should not be removed by filters.\n\n        Args:\n            config: dict of credsweeper configuration\n            target: AnalysisTarget with all necessary data\n            pattern: Compiled regex object to be searched in line\n            filters: Filters to use\n\n        Return:\n            List of LineData objects if pattern a line and filters do not remove current line. Empty otherwise\n\n        \"\"\"\n        line_data_list: List[LineData] = []\n        # start - end positions for continuously searching for overlapping pattern\n        offsets = [(0, target.line_len)]\n\n        while offsets:\n            offset_start, offset_end = offsets.pop()\n            bypass_start = bypass_end = None\n            for _match in pattern.finditer(target.line, pos=offset_start, endpos=offset_end):\n\n                logger.debug(\"Valid line for pattern: %s in file: %s:%d in line: %s\", pattern.pattern, target.file_path,\n                             target.line_num, target.line)\n                line_data = LineData(config, target.line, target.line_pos, target.line_num, target.file_path,\n                                     target.file_type, target.info, pattern, _match)\n                if bypass_start and bypass_end:\n                    if 0 < line_data.variable_start:\n                        bypass_end = line_data.variable_start\n                    elif 0 < line_data.value_start:\n                        bypass_end = line_data.value_start\n                    if bypass_start < bypass_end and bypass_end - bypass_start > MIN_DATA_LEN:\n                        offsets.append((bypass_start, bypass_end))\n                    bypass_start = bypass_end = None\n                elif MIN_DATA_LEN < line_data.value_end < _match.end() \\\n                        and MIN_DATA_LEN < _match.end() - line_data.value_end:\n                    # add bypass for valuable sanitized value\n                    bypass_start = line_data.value_end\n                    bypass_end = offset_end\n\n                if config.use_filters and cls.filtering(target, line_data, filters):\n                    if line_data.variable and 0 <= line_data.variable_start < line_data.variable_end:\n                        # may be next matched item will be not filtered - let search it after variable\n                        bypass_start = line_data.variable_end\n                        bypass_end = offset_end\n                    elif line_data.value and 0 <= line_data.value_start < line_data.value_end:\n                        # may be next matched item will be not filtered - let search it after variable\n                        bypass_start = line_data.value_end\n                        bypass_end = offset_end\n                    continue\n\n                if target.offset is not None:\n                    # the target line is a chunk of long line - offsets have to be corrected\n                    if 0 <= line_data.variable_start:\n                        line_data.variable_start += target.offset\n                    if 0 <= line_data.variable_end:\n                        line_data.variable_end += target.offset\n                    if 0 <= line_data.separator_start:\n                        line_data.separator_start += target.offset\n                    if 0 <= line_data.separator_end:\n                        line_data.separator_end += target.offset\n                    # value positions are mandatory\n                    line_data.value_start += target.offset\n                    line_data.value_end += target.offset\n                    # get the original line\n                    line_data.line = target.lines[target.line_pos]\n\n                line_data_list.append(line_data)\n            if bypass_start and bypass_end:\n                offsets.append((bypass_start, bypass_end))\n\n        return line_data_list\n\n    @classmethod\n    def _get_candidates(cls, config: Config, rule: Rule, target: AnalysisTarget) -> List[Candidate]:\n        \"\"\"Returns Candidate objects list.\n\n        Args:\n            config: user configs\n            rule: Rule object to check current line\n            target: Target for analysis\n\n        Return:\n            List of Candidate objects if pattern defined in a rule is present in a line\n            and filters defined in rule do not remove current line. Empty list - otherwise\n\n        \"\"\"\n        candidates: List[Candidate] = []\n        if config.exclude_lines and target.line_strip in config.exclude_lines:\n            return candidates\n\n        if line_data_list := cls.get_line_data_list(config=config,\n                                                    target=target,\n                                                    pattern=rule.patterns[0],\n                                                    filters=rule.filters):\n            for line_data in line_data_list:\n                if config.exclude_values and line_data.value.strip() in config.exclude_values:\n                    continue\n                candidate = Candidate(line_data_list=[line_data],\n                                      patterns=rule.patterns,\n                                      rule_name=rule.rule_name,\n                                      severity=rule.severity,\n                                      config=config,\n                                      use_ml=rule.use_ml,\n                                      confidence=rule.confidence)\n                # single pattern with multiple values means all the patterns must matched in target\n                if 1 < len(rule.patterns) and rule.rule_type in (RuleType.PATTERN, RuleType.KEYWORD):\n                    # additional check whether all patterns match\n                    if not cls._aux_scan(config, rule, target, candidate):\n                        # cannot find secondary values for the candidate\n                        continue\n                candidates.append(candidate)\n        return candidates\n\n    @classmethod\n    def _aux_scan(cls, config: Config, rule: Rule, target: AnalysisTarget, candidate: Candidate) -> bool:\n        \"\"\"check for all secondary patterns\"\"\"\n        for pattern in rule.patterns[1:]:\n            line_data_list = cls.get_line_data_list(config=config, target=target, pattern=pattern, filters=rule.filters)\n            pattern_matched = False\n\n            for line_data in line_data_list:\n                # standard filtering of values from config\n                if config.exclude_values and line_data.value.strip() in config.exclude_values:\n                    continue\n                candidate.line_data_list.append(line_data)\n                pattern_matched = True\n            if not pattern_matched:\n                return False\n\n        # all secondary patterns were matched and candidate is filled with the values\n        return True\n"
  },
  {
    "path": "credsweeper/scanner/scan_type/single_pattern.py",
    "content": "from typing import List\n\nfrom credsweeper.common.constants import RuleType\nfrom credsweeper.config.config import Config\nfrom credsweeper.credentials.candidate import Candidate\nfrom credsweeper.file_handler.analysis_target import AnalysisTarget\nfrom credsweeper.rules.rule import Rule\nfrom credsweeper.scanner.scan_type.scan_type import ScanType\n\n\nclass SinglePattern(ScanType):\n    \"\"\"Check if single line rule present in the line.\"\"\"\n\n    @classmethod\n    def run(cls, config: Config, rule: Rule, target: AnalysisTarget) -> List[Candidate]:\n        \"\"\"Check if regex pattern defined in a rule is present in a line.\n\n        Args:\n            config: config object of user configs\n            rule: Rule object to check current line\n            target: Analysis target\n\n        Return:\n            List of Candidate objects if pattern defined in a rule is present in a line\n            and filters defined in rule do not remove current line. Empty list - otherwise\n\n        \"\"\"\n\n        if RuleType.PATTERN != rule.rule_type and RuleType.KEYWORD != rule.rule_type:\n            raise ValueError(f\"Rule `{rule}` provided to `{cls.__name__}`.run \"\n                             f\"should have pattern_type equal to `{RuleType.PATTERN.value}`\")\n\n        return cls._get_candidates(config, rule, target)\n"
  },
  {
    "path": "credsweeper/scanner/scanner.py",
    "content": "import logging\nimport re\nfrom pathlib import Path\nfrom typing import List, Type, Tuple, Union, Dict, Generator, Set\n\nfrom credsweeper.app import APP_PATH\nfrom credsweeper.common.constants import RuleType, MIN_VARIABLE_LENGTH, MIN_SEPARATOR_LENGTH, MIN_VALUE_LENGTH, \\\n    MAX_LINE_LENGTH, PEM_BEGIN_PATTERN\nfrom credsweeper.config.config import Config\nfrom credsweeper.credentials.candidate import Candidate\nfrom credsweeper.file_handler.analysis_target import AnalysisTarget\nfrom credsweeper.file_handler.content_provider import ContentProvider\nfrom credsweeper.rules.rule import Rule\nfrom credsweeper.scanner.scan_type.multi_pattern import MultiPattern\nfrom credsweeper.scanner.scan_type.pem_key_pattern import PemKeyPattern\nfrom credsweeper.scanner.scan_type.scan_type import ScanType\nfrom credsweeper.scanner.scan_type.single_pattern import SinglePattern\nfrom credsweeper.utils.util import Util\n\nlogger = logging.getLogger(__name__)\n\nRULES_PATH = APP_PATH / \"rules\" / \"config.yaml\"\n\n\nclass Scanner:\n    \"\"\"Advanced Credential Scanner base class.\n\n    Parameters:\n        rules: list of rule objects to check\n        min_pattern_len: minimal length specified in all pattern rules\n        min_keyword_len: minimal possible length for a string to be matched by any keyword rule\n        min_len: Smallest between min_pattern_len and min_keyword_len\n        TargetGroup: Type for List[Tuple[AnalysisTarget, str, int]]\n\n    \"\"\"\n\n    TargetGroup = List[Tuple[AnalysisTarget, str, int]]\n\n    def __init__(self, config: Config, rule_path: Union[None, str, Path]) -> None:\n        self.config = config\n        # init with MAX_LINE_LENGTH before _set_rules\n        self.min_keyword_len = MAX_LINE_LENGTH\n        self.min_pattern_len = MAX_LINE_LENGTH\n        self.min_pem_key_len = MAX_LINE_LENGTH\n        self.min_multi_len = MAX_LINE_LENGTH\n        self.rules_scanners: List[Tuple[Rule, Type[ScanType]]] = []\n        self._set_rules_scanners(rule_path)\n        self.min_len = min(self.min_pattern_len, self.min_keyword_len, self.min_pem_key_len, self.min_multi_len,\n                           MIN_VARIABLE_LENGTH + MIN_SEPARATOR_LENGTH + MIN_VALUE_LENGTH)\n        self.__keyword_rules_required_substrings = self._get_required_substrings(RuleType.KEYWORD)\n\n    def keywords_required_substrings_check(self, text: str) -> bool:\n        \"\"\"check whether `text` has any required substring for all keyword type rules\"\"\"\n        return self._substring_check(self.__keyword_rules_required_substrings, text)\n\n    def _get_required_substrings(self, rule_type: RuleType) -> Set[str]:\n        \"\"\"init set of required substrings for custom rule type\"\"\"\n        required_substrings: Set[str] = set()\n        for rule in (x[0] for x in self.rules_scanners if rule_type == x[0].rule_type):\n            required_substrings.update(set(rule.required_substrings))\n        return required_substrings\n\n    @staticmethod\n    def _substring_check(substrings: Set[str], text: str) -> bool:\n        \"\"\"checks whether `text` has any required substring. Set is used to reduce extra transformations\"\"\"\n        for substring in substrings:\n            if substring in text:\n                return True\n        return False\n\n    def _set_rules_scanners(self, rules_path: Union[None, str, Path]) -> None:\n        \"\"\"Auxiliary method to fill rules, determine min_pattern_len and set scanners\"\"\"\n        if rules_path is None:\n            rules_path = RULES_PATH\n        rule_templates = Util.yaml_load(rules_path)\n        if rule_templates and isinstance(rule_templates, list):\n            rule_names = set()\n            for rule_template in rule_templates:\n                try:\n                    rule = Rule(self.config, rule_template)\n                except Exception as exc:\n                    logger.error(\"Rule creation error%s\", str(rule_template))\n                    raise exc\n                if not self._is_available(rule):\n                    continue\n                if rule.rule_name in rule_names:\n                    raise RuntimeError(f\"Duplicated rule name {rule.rule_name}\")\n                rule_names.add(rule.rule_name)\n                if 0 < rule.min_line_len:\n                    if rule.rule_type == RuleType.KEYWORD:\n                        self.min_keyword_len = min(self.min_keyword_len, rule.min_line_len)\n                    elif rule.rule_type == RuleType.PATTERN:\n                        self.min_pattern_len = min(self.min_pattern_len, rule.min_line_len)\n                    elif rule.rule_type == RuleType.PEM_KEY:\n                        self.min_pem_key_len = min(self.min_pem_key_len, rule.min_line_len)\n                    elif rule.rule_type == RuleType.MULTI:\n                        self.min_multi_len = min(self.min_multi_len, rule.min_line_len)\n                    else:\n                        logger.warning(\"Unknown rule type:%s\", rule.rule_type)\n                self.rules_scanners.append((rule, self.get_scanner(rule)))\n        else:\n            raise RuntimeError(f\"Wrong rules '{rule_templates}' were read from '{rules_path}'\")\n\n    def _is_available(self, rule: Rule) -> bool:\n        \"\"\"separate the method to reduce complexity\"\"\"\n        if rule.severity < self.config.severity:\n            return False\n        if self.config.doc:\n            if \"doc\" in rule.target:\n                return True\n        else:\n            if \"code\" in rule.target:\n                return True\n        return False\n\n    def yield_rule_scanner(\n            self,  #\n            line_len: int,  #\n            matched_pattern: bool,  #\n            matched_keyword: bool,  #\n            matched_pem_key: bool,  #\n            matched_multi: bool) -> Generator[Tuple[Rule, Type[ScanType]], None, None]:\n        \"\"\"returns generator for rules and according scanner\"\"\"\n        for rule, scanner in self.rules_scanners:\n            if line_len >= rule.min_line_len \\\n                    and (RuleType.PATTERN == rule.rule_type and matched_pattern\n                         or RuleType.KEYWORD == rule.rule_type and matched_keyword\n                         or RuleType.PEM_KEY == rule.rule_type and matched_pem_key\n                         or RuleType.MULTI == rule.rule_type and matched_multi):\n                yield rule, scanner\n\n    def scan(self, provider: ContentProvider) -> List[Candidate]:\n        \"\"\"Run scanning of list of target lines from 'targets' with set of rule from 'self.rules'.\n\n        Args:\n            provider: objects with data to analyze: line, line number,\n              filepath and all lines in file\n\n        Return:\n            list of all detected credential candidates in analyzed targets\n\n        \"\"\"\n        credentials: List[Candidate] = []\n\n        for target in provider.yield_analysis_target(self.min_len):\n            # Trim string from outer spaces to make future `x in str` checks faster\n            target_line_stripped = target.line_strip\n            target_line_stripped_len = target.line_strip_len\n            # use lower case for required substring\n            target_line_stripped_lower = target.line_lower_strip\n\n            # \"cache\" - YAPF and pycharm formatters ...\n            matched_keyword = \\\n                target_line_stripped_len >= self.min_keyword_len and (  #\n                        '=' in target_line_stripped\n                        or ':' in target_line_stripped\n                        or (\"define\" in target_line_stripped\n                            and ('(' in target_line_stripped and ',' in target_line_stripped\n                                 or \"#define\" in target_line_stripped\n                                 or \"%define\" in target_line_stripped)\n                            )\n                        or \"%global\" in target_line_stripped\n                        or \"set\" in target_line_stripped_lower\n                        or \"%3d\" in target_line_stripped_lower\n                )  #\n            matched_pem_key = \\\n                target_line_stripped_len >= self.min_pem_key_len \\\n                and PEM_BEGIN_PATTERN in target_line_stripped and \"PRIVATE\" in target_line_stripped\n            matched_pattern = target_line_stripped_len >= self.min_pattern_len\n            matched_multi = target_line_stripped_len >= self.min_multi_len\n\n            if not (matched_keyword or matched_pem_key or matched_pattern or matched_multi):\n                # target may be skipped only with length because not all rules have required_substrings\n                logger.debug(\"Skip too short (%d) line %s:%d\", target_line_stripped_len, target.file_path,\n                             target.line_num)\n                continue\n\n            # cached value to skip the same regex verifying\n            matched_regex: Dict[re.Pattern, bool] = {}\n\n            for rule, scanner in self.yield_rule_scanner(target_line_stripped_len, matched_pattern, matched_keyword,\n                                                         matched_pem_key, matched_multi):\n                if rule.has_required_substrings \\\n                        and not self._substring_check(rule.required_substrings, target_line_stripped_lower):\n                    continue\n\n                # common regex might be triggered for the same target\n                if rule.required_regex:\n                    if rule.required_regex in matched_regex:\n                        regex_result = matched_regex[rule.required_regex]\n                    else:\n                        regex_result = bool(rule.required_regex.search(target_line_stripped))\n                        matched_regex[rule.required_regex] = regex_result\n                    if not regex_result:\n                        continue\n\n                if new_credentials := scanner.run(self.config, rule, target):\n                    credentials.extend(new_credentials)\n                    logger.debug(\"Credential for rule: %s in file: %s:%d in line: %s\", rule.rule_name, target.file_path,\n                                 target.line_num, target.line)\n        return credentials\n\n    @staticmethod\n    def get_scanner(rule: Rule) -> Type[ScanType]:\n        \"\"\"Choose type of scanner base on rule affiliation.\n\n        Args:\n            rule: rule object used to scanning\n\n        Return:\n            depending on the rule type, returns the corresponding scanner class\n\n        \"\"\"\n        if rule.rule_type in (RuleType.PATTERN, RuleType.KEYWORD):\n            return SinglePattern\n        if RuleType.MULTI == rule.rule_type:\n            return MultiPattern\n        if RuleType.PEM_KEY == rule.rule_type:\n            return PemKeyPattern\n        raise ValueError(f\"Unknown pattern_type in rule: {rule.rule_type}\")\n"
  },
  {
    "path": "credsweeper/secret/config.json",
    "content": "{\n    \"exclude\": {\n        \"pattern\": [],\n        \"containers\": [\n            \".aar\",\n            \".apk\",\n            \".bz2\",\n            \".class\",\n            \".gz\",\n            \".jar\",\n            \".lzma\",\n            \".rpm\",\n            \".tar\",\n            \".war\",\n            \".whl\",\n            \".xz\",\n            \".zip\"\n        ],\n        \"documents\": [\n            \".doc\",\n            \".docx\",\n            \".odp\",\n            \".ods\",\n            \".odt\",\n            \".pdf\",\n            \".ppt\",\n            \".pptx\",\n            \".xls\",\n            \".xlsx\"\n        ],\n        \"extension\": [\n            \".3gp\",\n            \".7z\",\n            \".a\",\n            \".aac\",\n            \".avi\",\n            \".bin\",\n            \".bmp\",\n            \".css\",\n            \".dmg\",\n            \".ear\",\n            \".eot\",\n            \".elf\",\n            \".exe\",\n            \".gif\",\n            \".gmo\",\n            \".ico\",\n            \".img\",\n            \".info\",\n            \".jpeg\",\n            \".jpg\",\n            \".lib\",\n            \".map\",\n            \".m4a\",\n            \".m4b\",\n            \".m4p\",\n            \".m4r\",\n            \".mat\",\n            \".mo\",\n            \".mov\",\n            \".mp3\",\n            \".mp4\",\n            \".mpg\",\n            \".mkv\",\n            \".npy\",\n            \".npz\",\n            \".obj\",\n            \".oga\",\n            \".ogg\",\n            \".ogv\",\n            \".ops\",\n            \".pak\",\n            \".png\",\n            \".psd\",\n            \".pyc\",\n            \".pyd\",\n            \".pyo\",\n            \".rar\",\n            \".rc\",\n            \".rc2\",\n            \".realm\",\n            \".res\",\n            \".s7z\",\n            \".scss\",\n            \".so\",\n            \".sum\",\n            \".svg\",\n            \".swf\",\n            \".tif\",\n            \".tiff\",\n            \".tlb\",\n            \".ttf\",\n            \".vcxproj\",\n            \".vdproj\",\n            \".wav\",\n            \".webm\",\n            \".webp\",\n            \".wma\",\n            \".woff\",\n            \".woff2\",\n            \".yuv\"\n        ],\n        \"path\": [\n            \"/.git/\",\n            \"/.idea/\",\n            \"/.svn/\",\n            \"/__pycache__/\",\n            \"/node_modules/\",\n            \"/target/\",\n            \"/.venv/\",\n            \"/venv/\"\n        ],\n        \"lines\": [],\n        \"values\": []\n    },\n    \"source_ext\": [\n        \".aspx\",\n        \".cs\",\n        \".cshtml\",\n        \".ejs\",\n        \".erb\",\n        \".go\",\n        \".html\",\n        \".ipynb\",\n        \".jsp\",\n        \".jsx\",\n        \".php\",\n        \".phtml\",\n        \".rb\",\n        \".sh\",\n        \".swift\",\n        \".ts\",\n        \".twig\",\n        \".vue\",\n        \".xhtml\",\n        \".java\",\n        \".js\",\n        \".py\",\n        \".cpp\",\n        \".c\",\n        \".h\",\n        \".hpp\",\n        \".mm\",\n        \".cu\",\n        \".y\",\n        \".vb\",\n        \".m\",\n        \".cu\"\n    ],\n    \"source_quote_ext\": [\n        \".cs\",\n        \".cc\",\n        \".php\",\n        \".tf\",\n        \".kt\",\n        \".go\",\n        \".ipynb\",\n        \".ts\",\n        \".java\",\n        \".js\",\n        \".py\",\n        \".cpp\",\n        \".c\",\n        \".h\",\n        \".hpp\"\n    ],\n    \"find_by_ext_list\": [\n        \".pem\",\n        \".cer\",\n        \".csr\",\n        \".der\",\n        \".pfx\",\n        \".p12\",\n        \".key\",\n        \".jks\"\n    ],\n    \"bruteforce_list\": [\n        \"\",\n        \"changeit\",\n        \"changeme\",\n        \"tizen\"\n    ],\n    \"check_for_literals\": true,\n    \"max_password_value_length\": 64,\n    \"max_url_cred_value_length\": 80,\n    \"line_data_output\": [\n        \"line\",\n        \"line_num\",\n        \"path\",\n        \"info\",\n        \"variable\",\n        \"variable_start\",\n        \"variable_end\",\n        \"value\",\n        \"value_start\",\n        \"value_end\",\n        \"entropy\"\n    ],\n    \"candidate_output\": [\n        \"rule\",\n        \"severity\",\n        \"confidence\",\n        \"ml_probability\",\n        \"line_data_list\"\n    ]\n}\n"
  },
  {
    "path": "credsweeper/secret/log.yaml",
    "content": "---\n\nversion: 1\n\ndisable_existing_loggers: False\n\nignore: [git, pdfminer]\n\nformatters:\n    simple:\n        format: \"%(asctime)s | %(levelname)s | %(module)s:%(lineno)d | %(message)s\"\n    verbose:\n        format: \"%(asctime)s | %(levelname)s | %(module)s | %(processName)s:%(threadName)s | %(filename)s:%(lineno)s | %(message)s\"\n\nhandlers:\n    console:\n        class: logging.StreamHandler\n        level: INFO\n        formatter: simple\n        stream: ext://sys.stdout\n\n    logfile:\n        class: logging.handlers.RotatingFileHandler\n        level: DEBUG\n        formatter: simple\n        filename: ./log/credsweeper.log\n        maxBytes: 50485760\n        backupCount: 100\n        delay: True\n\n    error_log:\n        class: logging.handlers.RotatingFileHandler\n        level: ERROR\n        formatter: verbose\n        filename: ./log/error.log\n        maxBytes: 10485760\n        backupCount: 5\n\nroot:\n    level: DEBUG\n    handlers: [console, error_log]\n"
  },
  {
    "path": "credsweeper/utils/__init__.py",
    "content": ""
  },
  {
    "path": "credsweeper/utils/hop_stat.py",
    "content": "import statistics\nfrom typing import Tuple, Dict\n\n\nclass HopStat:\n    \"\"\"Statistical check distances between symbols sequence in a value on keyboard layout\"\"\"\n\n    KEYBOARD = (  #\n        \"`1234567890-=\",  #\n        \"\\0qwertyuiop[]\\\\\",  #\n        \"\\0\\0asdfghjkl;'\",  #\n        \"\\0\\0zxcvbnm,./\",  #\n    )\n    TRANSLATION = str.maketrans({\n        '~': '`',\n        '!': '1',\n        '@': '2',\n        '#': '3',\n        '$': '4',\n        '%': '5',\n        '^': '6',\n        '&': '7',\n        '*': '8',\n        '(': '9',\n        ')': '0',\n        '_': '-',\n        '+': '=',\n        'Q': 'q',\n        'W': 'w',\n        'E': 'e',\n        'R': 'r',\n        'T': 't',\n        'Y': 'y',\n        'U': 'u',\n        'I': 'i',\n        'O': 'o',\n        'P': 'p',\n        '{': '[',\n        '}': ']',\n        '|': '\\\\',\n        'A': 'a',\n        'S': 's',\n        'D': 'd',\n        'F': 'f',\n        'G': 'g',\n        'H': 'h',\n        'J': 'j',\n        'K': 'k',\n        'L': 'l',\n        ':': ';',\n        '\"': \"'\",\n        'Z': 'z',\n        'X': 'x',\n        'C': 'c',\n        'V': 'v',\n        'B': 'b',\n        'N': 'n',\n        'M': 'm',\n        '<': ',',\n        '>': '.',\n        '?': '/',\n    })\n\n    def __init__(self):\n        self.__hop_dict: Dict[Tuple[str, str], int] = {}\n        base = ''.join(x for x in HopStat.KEYBOARD)\n        for a in (x for x in base if '\\0' != x):\n            for b in (x for x in base if '\\0' != x):\n                if (b, a) in self.__hop_dict:\n                    self.__hop_dict[(a, b)] = self.__hop_dict[(b, a)]\n                    continue\n                if a == b:\n                    self.__hop_dict[(a, b)] = 0\n                else:\n                    x_a, y_a, z_a = self.__get_xyz(a)\n                    x_b, y_b, z_b = self.__get_xyz(b)\n                    d = (abs(x_a - x_b) + abs(y_a - y_b) + abs(z_a - z_b)) // 2\n                    self.__hop_dict[(a, b)] = d\n\n    @staticmethod\n    def __get_xyz(c: str) -> Tuple[int, int, int]:\n        \"\"\"Returns axial coordinates of a char on keyboad qwerty\"\"\"\n        x = y = z = 0\n        for i, _ in enumerate(HopStat.KEYBOARD):\n            x = HopStat.KEYBOARD[i].find(c)\n            if 0 <= x:\n                z = i\n                x = x - (i // 2)\n                y = -(z + x)\n                break\n        return x, y, z\n\n    def stat(self, value: str) -> Tuple[float, float]:\n        \"\"\"Calculates statistical distances between given symbols\n\n        Args:\n            value: string based on initial alphabet\n\n        Return:\n            Average distance, deviation or exception if a value is not in initial alphabet\n\n        \"\"\"\n        hops = []\n        value = value.translate(HopStat.TRANSLATION)\n        for a, b in zip(value[:-1], value[1:]):\n            hop = self.__hop_dict.get((a, b))\n            if hop is None:\n                raise ValueError(f\"Unknown char '{a}' or '{b}'\")\n            hops.append(hop)\n        avg = statistics.mean(hops)\n        dev = statistics.stdev(hops, avg)\n        return avg, dev\n"
  },
  {
    "path": "credsweeper/utils/pem_key_detector.py",
    "content": "import contextlib\nimport logging\nimport re\nimport string\nfrom typing import List\n\nfrom credsweeper.common.constants import PEM_BEGIN_PATTERN, PEM_END_PATTERN, Chars, MAX_LINE_LENGTH\nfrom credsweeper.config.config import Config\nfrom credsweeper.credentials.line_data import LineData\nfrom credsweeper.file_handler.analysis_target import AnalysisTarget\nfrom credsweeper.utils.util import Util\n\nlogger = logging.getLogger(__name__)\n\n\nclass PemKeyDetector:\n    \"\"\"Class to detect PEM PRIVATE keys only\"\"\"\n    BASE64_CHARS_SET = set(Chars.BASE64STDPAD_CHARS.value)\n    RE_BASE64_CHARS = re.compile(fr\"[{re.escape(Chars.BASE64STDPAD_CHARS.value)}]+\")\n\n    ENTROPY_LIMIT_BASE64 = 4.5\n\n    # the limit is huge with possible prefixes and escaping\n    MAX_PEM_LENGTH = 4 * MAX_LINE_LENGTH\n\n    IGNORE_STARTS = [PEM_BEGIN_PATTERN, \"Proc-Type\", \"Version\", \"DEK-Info\"]\n    WRAP_CHARACTERS = \"\\\\'\\\"`;,[]#*!\"\n    REMOVE_CHARACTERS = string.whitespace + WRAP_CHARACTERS\n    # last line contains 4 symbols, at least\n    RE_PEM_BEGIN = re.compile(r\"(?P<value>\" + PEM_BEGIN_PATTERN +\n                              r\"(?![^-]{1,80}ENCRYPTED)[^-]{0,80}PRIVATE[^-]{1,80}KEY[^-]{0,80}-----\"\n                              r\"(.{1,8000}\" + PEM_END_PATTERN + r\"[^-]{1,80}KEY[^-]{0,80}-----)?)\")\n    RE_PEM_VALUE = re.compile(fr\"(?P<value>.{{0,{MAX_PEM_LENGTH}}})\")\n\n    def __init__(self, config: Config):\n        self.__config = config\n        self._barrier_pos: int = -2\n        self._barrier_cut: int = -2\n        self._barrier: str = ''\n\n    def cut_barrier(self, line: str) -> str:\n        \"\"\"Cut off barrier if detected\"\"\"\n        if self._barrier and 0 <= self._barrier_pos < self._barrier_cut < len(line):\n            if line[self._barrier_pos] == self._barrier:\n                return line[self._barrier_cut:]\n            self._barrier = ''\n            self._barrier_pos = self._barrier_cut = -1\n        return line\n\n    def set_barrier(self, line: str, start=0, end=MAX_LINE_LENGTH):\n        \"\"\"Detects barrier with offset of RE_PEM_BEGIN\"\"\"\n        self._barrier = ''\n        self._barrier_cut = line.find(PEM_END_PATTERN, start, end)\n        self._barrier_pos = self._barrier_cut - 1\n        if 0 <= self._barrier_pos < self._barrier_cut < len(line):\n            barrier = line[self._barrier_pos]\n            if barrier not in PemKeyDetector.BASE64_CHARS_SET:\n                self._barrier = barrier\n\n    def detect_pem_key(self, first_line: LineData, target: AnalysisTarget) -> List[LineData]:\n        \"\"\"Detects PEM key in single line and with iterative for next lines according\n        https://www.rfc-editor.org/rfc/rfc7468\n\n        Args:\n            first_line: detected -----BEGIN from rule pattern\n            target: Analysis target\n\n        Return:\n            List of LineData with found PEM\n\n        \"\"\"\n        line_data_list: List[LineData] = []\n        key_data_list: List[str] = []\n        # escaped key in one line with prefixes\n        pem_end_limit = min(target.line_len, first_line.value_start + PemKeyDetector.MAX_PEM_LENGTH)\n        first_line_end_pattern_start = target.line.find(PEM_END_PATTERN, first_line.value_start, pem_end_limit)\n        first_line_end_pattern_end = (  #\n            target.line.find(\"-----\", first_line_end_pattern_start + 5, first_line_end_pattern_start + 80)  #\n            if 0 <= first_line_end_pattern_start else -2)\n        if first_line.value_start < first_line_end_pattern_start < first_line_end_pattern_end:\n            # the whole PEM in single line\n            pem_text = target.line[first_line.value_start:first_line_end_pattern_end + 5]\n            first_line.value = pem_text\n            first_line.value_end = first_line.value_start + len(pem_text)\n            line_data_list.append(first_line)\n        else:\n            line_data_list.append(first_line)\n            pem_text = first_line.line[first_line.value_start:first_line.value_start + PemKeyDetector.MAX_PEM_LENGTH]\n            # perhaps, in next lines\n            start_pos = max(0, target.line_pos) + 1\n            end_pos = min(start_pos + 200, target.lines_len)\n            for line_pos in range(start_pos, end_pos):\n                target_line = target.lines[line_pos]\n                end_pattern_start = target_line.find(PEM_END_PATTERN, 0, PemKeyDetector.MAX_PEM_LENGTH)\n                end_pattern_end = (5 + target_line.find(\"-----\", end_pattern_start + 5, end_pattern_start + 80)\n                                   if 0 <= end_pattern_start else -2)\n                if 0 <= end_pattern_start < end_pattern_end:\n                    pem_line = target_line[:end_pattern_end]\n                else:\n                    pem_line = target_line[:PemKeyDetector.MAX_PEM_LENGTH]\n                next_line = LineData(self.__config, target_line, line_pos, target.line_nums[line_pos], target.file_path,\n                                     target.file_type, target.info, PemKeyDetector.RE_PEM_VALUE)\n                line_data_list.append(next_line)\n                pem_text += f\"\\n{pem_line}\"\n                if PEM_END_PATTERN in pem_line:\n                    break\n                if PemKeyDetector.MAX_PEM_LENGTH < len(pem_text):\n                    logger.warning(\"PEM text oversize\")\n                    return []\n            else:\n                logger.warning(\"PEM end not found %s\", target.descriptor)\n                return []\n\n        while \"\\\\\\\\\" in pem_text:\n            # reduce JSON escaping sequences of backslash\n            pem_text = pem_text.replace(\"\\\\\\\\\", '\\\\')\n\n        # replace escaped line ends with real and process them - PEM does not contain '\\' sign\n        pem_text = pem_text.replace(\"\\\\r\\\\n\", '\\n').replace(\"\\\\r\", '\\n').replace(\"\\\\n\", '\\n').replace(\"\\\\t\", '\\t')\n        pem_lines = pem_text.splitlines()\n        self.set_barrier(pem_lines[-1])\n        for subline in pem_lines:\n            if PemKeyDetector.is_leading_config_line(subline):\n                continue\n            _subline = self.cut_barrier(subline)\n            if sanitized_line := PemKeyDetector.sanitize_line(_subline):\n                if PEM_END_PATTERN in sanitized_line:\n                    return PemKeyDetector.finalize(line_data_list, key_data_list, sanitized_line)\n                # the end is not reached - sanitize the data\n                # PEM key line should not contain spaces or . (and especially not ...)\n                if not PemKeyDetector.RE_BASE64_CHARS.fullmatch(sanitized_line):\n                    return []\n                key_data_list.append(sanitized_line)\n        return []\n\n    @staticmethod\n    def finalize(line_data_list: List[LineData], key_data_list: List[str], last_line: str) -> List[LineData]:\n        \"\"\"Checks collected key_data according the key type\"\"\"\n        if len(key_data_list) < len(line_data_list):\n            PemKeyDetector.sanitize_line_data_list(line_data_list, key_data_list, last_line)\n        key_data = ''.join(key_data_list)\n        if \"PGP\" in line_data_list[0].value:\n            # Check if entropy is high enough for base64 set with padding sign\n            entropy = Util.get_shannon_entropy(key_data)\n            if PemKeyDetector.ENTROPY_LIMIT_BASE64 <= entropy:\n                return line_data_list\n            logger.debug(\"Filtered with entropy %f '%s'\", entropy, key_data)\n        if \"OPENSSH\" in line_data_list[0].value:\n            # Check whether the key is encrypted\n            with contextlib.suppress(Exception):\n                decoded = Util.decode_base64(key_data, urlsafe_detect=True)\n                if 32 < len(decoded) and b\"bcrypt\" not in decoded:\n                    # 256 bits is the minimal size of Ed25519 keys\n                    # all OK - the key is not encrypted in this top level\n                    return line_data_list\n            logger.debug(\"Filtered with size or bcrypt '%s'\", key_data)\n        else:\n            with contextlib.suppress(Exception):\n                if decoded := Util.decode_base64(key_data, padding_safe=True, urlsafe_detect=True):\n                    if len(decoded) == Util.get_asn1_size(decoded):\n                        # all OK - the key is not encrypted in this top level\n                        return line_data_list\n            logger.debug(\"Filtered with non asn1 '%s'\", key_data)\n        return []\n\n    @staticmethod\n    def sanitize_line_data_list(line_data_list: List[LineData], key_data_list: List[str], last_line: str):\n        \"\"\"Sanitize line_data_list to keep only valuable values\"\"\"\n        for value in key_data_list:\n            if 64 <= len(value):\n                # normal value length should not have a collision\n                for line_data in line_data_list:\n                    if value == line_data.value:\n                        # plain case - no sanitize necessary\n                        break\n                    value_start = line_data.value.find(value)\n                    if 0 <= value_start:\n                        line_data.value = value\n                        line_data.value_start = value_start\n                        line_data.value_end = value_start + len(value)\n                        break\n            else:\n                # end of pem may be short and have collisions in long lines\n                value_pattern = re.compile(fr\".*[^0-9A-Za-z+/=]?({re.escape(value)})[^0-9A-Za-z+/=]?.*\")\n                for line_data in line_data_list:\n                    if value == line_data.value:\n                        # plain case - no sanitize necessary\n                        break\n                    if value_match := value_pattern.fullmatch(line_data.value):\n                        line_data.value = value_match.group(1)\n                        line_data.value_start, line_data.value_end = value_match.span(1)\n                        break\n        if last_line.startswith(PEM_END_PATTERN) and last_line.endswith(\"-----\"):\n            last_line_data = line_data_list[-1]\n            last_value_start = last_line_data.value.find(last_line, 0, PemKeyDetector.MAX_PEM_LENGTH)\n            if 0 <= last_line_data.value_start <= last_value_start:\n                # left barrier was sanitized\n                last_line_data.value = last_line\n                last_line_data.value_start = last_value_start\n                last_line_data.value_end = last_value_start + len(last_line)\n\n    @staticmethod\n    def sanitize_line(line: str, recurse_level: int = 5) -> str:\n        \"\"\"Remove common symbols that can surround PEM keys inside code.\n\n        Examples::\n\n            `# ZZAWarrA1`\n            `* ZZAWarrA1`\n            `  \"ZZAWarrA1\\\\n\" + `\n\n        Args:\n            line: Line to be cleaned\n            recurse_level: to avoid infinite loop in case when removed symbol inside base64 encoded\n\n        Return:\n            line with special characters removed from both ends\n\n        \"\"\"\n        recurse_level -= 1\n\n        if 0 > recurse_level:\n            return line\n\n        # Note that this strip would remove `\\n` but not `\\\\n`\n        line = line.strip(string.whitespace)\n        while line.startswith((\"// \", \"//\\t\")):\n            line = line[3:]\n        while line.startswith((\"/// \", \"///\\t\")):\n            line = line[4:]\n        while line.startswith(\"/*\"):\n            line = line[2:]\n        while line.endswith(\"*/\"):\n            line = line[:-2]\n        while line.endswith(\"\\\\\"):\n            # line carry in many languages\n            line = line[:-1]\n\n        # remove concatenation carefully only when it is not part of base64\n        if line.startswith('+') and 1 < len(line) and line[1] not in PemKeyDetector.BASE64_CHARS_SET:\n            line = line[1:]\n        if line.endswith('+') and 2 < len(line) and line[-2] not in PemKeyDetector.BASE64_CHARS_SET:\n            line = line[:-1]\n\n        line = line.strip(PemKeyDetector.REMOVE_CHARACTERS)\n        # check whether new iteration requires\n        for x in PemKeyDetector.WRAP_CHARACTERS:\n            if x in line:\n                return PemKeyDetector.sanitize_line(line, recurse_level=recurse_level)\n\n        return line\n\n    @staticmethod\n    def is_leading_config_line(line: str) -> bool:\n        \"\"\"Remove non-key lines from the beginning of a list.\n\n        Example lines with non-key leading lines:\n\n        .. code-block:: text\n\n            Proc-Type: 4,ENCRYPTED\n            DEK-Info: DEK-Info: AES-256-CBC,2AA219GG746F88F6DDA0D852A0FD3211\n\n            ZZAWarrA1...\n\n        Args:\n            line: Line to be checked\n\n        Return:\n            True if the line is not a part of encoded data but leading config\n\n        \"\"\"\n        if not line:\n            return True\n        for ignore_string in PemKeyDetector.IGNORE_STARTS:\n            if ignore_string in line:\n                return True\n        return False\n"
  },
  {
    "path": "credsweeper/utils/util.py",
    "content": "import ast\nimport base64\nimport contextlib\nimport json\nimport logging\nimport math\nimport os\nimport random\nimport re\nimport string\nimport warnings\nfrom pathlib import Path\nfrom typing import Any, Dict, List, Tuple, Optional, Union\n\nimport numpy as np\nimport yaml\nfrom cryptography.hazmat.primitives import hashes\nfrom cryptography.hazmat.primitives.asymmetric import padding\nfrom cryptography.hazmat.primitives.asymmetric.dh import DHPrivateKey, DHPublicKey\nfrom cryptography.hazmat.primitives.asymmetric.dsa import DSAPrivateKey, DSAPublicKey\nfrom cryptography.hazmat.primitives.asymmetric.ec import EllipticCurvePrivateKey, EllipticCurvePublicKey\nfrom cryptography.hazmat.primitives.asymmetric.ed25519 import Ed25519PrivateKey, Ed25519PublicKey\nfrom cryptography.hazmat.primitives.asymmetric.ed448 import Ed448PrivateKey, Ed448PublicKey\nfrom cryptography.hazmat.primitives.asymmetric.rsa import RSAPrivateKey\nfrom cryptography.hazmat.primitives.asymmetric.types import PrivateKeyTypes\nfrom cryptography.hazmat.primitives.asymmetric.x25519 import X25519PublicKey, X25519PrivateKey\nfrom cryptography.hazmat.primitives.asymmetric.x448 import X448PublicKey, X448PrivateKey\nfrom cryptography.hazmat.primitives.serialization import load_der_private_key\nfrom cryptography.hazmat.primitives.serialization.pkcs12 import load_key_and_certificates\nfrom lxml import etree\n\nfrom credsweeper.common.constants import AVAILABLE_ENCODINGS, \\\n    DEFAULT_ENCODING, LATIN_1, CHUNK_SIZE, MAX_LINE_LENGTH, CHUNK_STEP_SIZE, ASCII, UTF_16_LE, UTF_16_BE\n\nlogger = logging.getLogger(__name__)\n\n\nclass Util:\n    \"\"\"Class that contains different useful methods.\"\"\"\n\n    @staticmethod\n    def get_extension(file_path: str, lower=True) -> str:\n        \"\"\"Return extension of file in lower case by default e.g.: '.txt', '.JPG'\"\"\"\n        _, extension = os.path.splitext(str(file_path))\n        return extension.lower() if lower else extension\n\n    @staticmethod\n    def get_regex_combine_or(re_strs: List[str]) -> str:\n        \"\"\"Routine combination for regex 'or'\"\"\"\n        result = \"(?:\"\n\n        for elem in re_strs:\n            result += elem + \"|\"\n\n        if result[-1] == \"|\":\n            result = result[:-1]\n        result += \")\"\n\n        return result\n\n    @staticmethod\n    def get_shannon_entropy(data: Union[str, bytes]) -> float:\n        \"\"\"Borrowed from http://blog.dkbza.org/2007/05/scanning-data-for-entropy-anomalies.html.\"\"\"\n        if not data:\n            return 0.0\n        size = len(data)\n        _uniq, counts = np.unique(list(data), return_counts=True)\n        probabilities = counts / size\n        entropy = -float(np.sum(probabilities * np.log2(probabilities)))\n        return entropy\n\n    # Precalculated data for speedup\n    MIN_DATA_ENTROPY: Dict[int, float] = {\n        16: 1.66973671780348,\n        20: 2.07723544540831,\n        32: 3.25392803184602,\n        40: 3.64853567064867,\n        64: 4.57756933688035,\n        384: 7.39,\n        512: 7.55,\n    }\n\n    @staticmethod\n    def get_min_data_entropy(x: int) -> float:\n        \"\"\"Returns minimal entropy for size of random data. Precalculated data is applied for speedup\"\"\"\n        if x in Util.MIN_DATA_ENTROPY:\n            y = Util.MIN_DATA_ENTROPY[x]\n        elif 8 < x < 64:\n            # approximated for range 12 - 64\n            _x = x - 8\n            y = ((0.000016617804 * _x - 0.002695077) * _x + 0.170393) * _x + 0.4\n        elif 64 < x < 384:\n            # logarithm base 2 - slow, but precise\n            _x = x - 8\n            y = 1.095884 * math.log2(_x) - 1.90156\n        elif 384 < x < 512:\n            # solved for 384 - 512\n            y = -0.11215851 * math.log2(x)**2 + 2.34303484 * math.log2(x) - 4.4466237\n        else:\n            # less or equal to 8 bytes might have 0 entropy\n            y = 0\n        return y\n\n    @staticmethod\n    def is_ascii_entropy_validate(data: bytes) -> bool:\n        \"\"\"\n        Tests small data sequence (<256) for data randomness by testing for ascii and shannon entropy\n        Returns True when data is an ASCII symbols or have small entropy\n        \"\"\"\n        if not data:\n            return True\n        data_len = len(data)\n        if 9 > data_len:\n            # even random data may have 0 entropy for length of 8 bytes and less\n            return True\n        entropy = 0.\n        cells = [int(0)] * 256\n        ascii_test = True\n        # \"basket\" sorting approach\n        for x in data:\n            cells[x] += 1\n            if ascii_test and 0b10000000 & x:\n                ascii_test = False\n        if ascii_test:\n            # only ascii symbols found\n            return True\n        left = 0.\n        step = 256.0 / data_len\n        right = left + step\n        while left < 256:\n            cell_sum = 0\n            i = int(left)\n            r = int(right)\n            while i < r and i < 256:\n                cell_sum += cells[i]\n                i += 1\n            p_x = float(cell_sum) / data_len\n            if p_x > 0:\n                entropy += -p_x * math.log2(p_x)\n            left = right\n            right += step\n        min_entropy = Util.get_min_data_entropy(data_len)\n        return entropy < min_entropy\n\n    @staticmethod\n    def is_binary(data: Union[bytes, bytearray]) -> bool:\n        \"\"\"\n        Returns True when two zeroes sequence is found in begin of data.\n        The sequence never exists in text format (UTF-8, UTF-16). UTF-32 is not supported.\n        \"\"\"\n        if 0 <= data.find(b\"\\0\\0\", 0, MAX_LINE_LENGTH):\n            return True\n        return False\n\n    NOT_LATIN1_PRINTABLE_SET = set(range(0, 256)) \\\n        .difference(set(x for x in string.printable.encode(ASCII))) \\\n        .difference({0x1B}) \\\n        .difference(set(x for x in range(0xA0, 0x100)))\n\n    @staticmethod\n    def is_latin1(data: Union[bytes, bytearray]) -> bool:\n        \"\"\"Returns True when data looks like LATIN-1 for first MAX_LINE_LENGTH bytes.\"\"\"\n        result = False\n        if data:\n            non_latin1_cnt = sum(1 for x in data[:MAX_LINE_LENGTH] if x in Util.NOT_LATIN1_PRINTABLE_SET)\n            # experiment for 255217 binary files shown avg = 0.268264 ± 0.168767, so let choose minimal\n            chunk_len = min(MAX_LINE_LENGTH, len(data))\n            result = bool(0.1 > non_latin1_cnt / chunk_len)\n        return result\n\n    @staticmethod\n    def read_file(path: Union[str, Path], encodings: Optional[List[str]] = None) -> List[str]:\n        \"\"\"Read the file content using different encodings.\n\n        Try to read the contents of the file according to the list of encodings \"encodings\" as soon as reading\n        occurs without any exceptions, the data is returned in the current encoding\n\n        Args:\n            path: path to file\n            encodings: supported encodings\n\n        Return:\n            list of file rows in a suitable encoding from \"encodings\",\n            if none of the encodings match, an empty list will be returned\n\n        \"\"\"\n        if data := Util.read_data(path):\n            return Util.decode_bytes(data, encodings)\n        return []\n\n    @staticmethod\n    def decode_text(content: Optional[bytes], encodings: Optional[List[str]] = None) -> Optional[str]:\n        \"\"\"Decode content using different encodings.\n\n        Try to decode bytes according to the list of encodings \"encodings\"\n        occurs without any exceptions. UTF-16 requires BOM\n\n        Args:\n            content: raw data that might be text\n            encodings: supported encodings\n\n        Return:\n            Decoded text in str for any suitable encoding\n            or None when binary data detected\n\n        \"\"\"\n        if content is None:\n            return None\n        binary_suggest = False\n        if encodings:\n            # use exactly defined encodings\n            _encodings = encodings\n        elif content.startswith(b\"\\xFF\\xFE\") or 1 < len(content) and 0 == content[1]:\n            _encodings = [UTF_16_LE]\n        elif content.startswith(b\"\\xFE\\xFF\") or content.startswith(b'\\x00'):\n            _encodings = [UTF_16_BE]\n        else:\n            _encodings = AVAILABLE_ENCODINGS\n        for encoding in _encodings:\n            try:\n                if binary_suggest and LATIN_1 == encoding and (Util.is_binary(content) or not Util.is_latin1(content)):\n                    # LATIN_1 may convert data (bytes in range 0x80:0xFF are transformed)\n                    break\n                text = content.decode(encoding=encoding, errors=\"strict\")\n                if content != text.encode(encoding=encoding, errors=\"strict\"):\n                    # the refurbish test helps to detect a real encoding\n                    binary_suggest = True\n                    continue\n                # the case decoding is good\n                if UTF_16_LE == encoding or UTF_16_BE == encoding:\n                    return text.lstrip('\\uFEFF')\n                return text\n            except UnicodeError:\n                binary_suggest = True\n                logger.debug(\"UnicodeError: Can't decode content as %s.\", encoding)\n            except Exception as exc:\n                logger.error(\"Unexpected Error: Can't read content as %s. Error message: %s\", encoding, exc)\n        return None\n\n    @staticmethod\n    def split_text(text: str) -> List[str]:\n        \"\"\"Splits a text into lines, handling all common line endings (e.g., LF, CRLF, CR).\"\"\"\n        return text.replace(\"\\r\\n\", '\\n').replace('\\r', '\\n').split('\\n')\n\n    @staticmethod\n    def decode_bytes(content: Optional[bytes], encodings: Optional[List[str]] = None) -> List[str]:\n        \"\"\"Decode content using different encodings.\n\n        Try to decode bytes according to the list of encodings \"encodings\"\n        occurs without any exceptions. UTF-16 requires BOM\n\n        Args:\n            content: raw data that might be text\n            encodings: supported encodings\n\n        Return:\n            list of file rows in a suitable encoding from \"encodings\",\n            if none of the encodings match, an empty list will be returned\n            Also empty list will be returned after last encoding and 0 symbol is present in lines not at end\n\n        \"\"\"\n        if text := Util.decode_text(content, encodings):\n            return Util.split_text(text)\n        return []\n\n    @staticmethod\n    def get_asn1_size(data: Union[bytes, bytearray]) -> int:\n        \"\"\"Only sequence type 0x30 and size correctness are checked\n        Returns size of ASN1 data over 128 bytes or 0 if no interested data\n        \"\"\"\n        if isinstance(data, (bytes, bytearray)) and 2 <= len(data) and 0x30 == data[0]:\n            # https://www.oss.com/asn1/resources/asn1-made-simple/asn1-quick-reference/basic-encoding-rules.html#Lengths\n            length = data[1]\n            if 0x80 == length:\n                if data.endswith(b\"\\x00\\x00\"):\n                    # assume, all data are ASN1 of various size\n                    return len(data)\n                # else - skip the case where the ASN1 size is smaller than the actual data\n            elif 0x80 < length:\n                byte_len = 0x7F & length\n                len_limit = 2 + byte_len\n                if 4 >= byte_len and len(data) >= len_limit:\n                    length = 0\n                    for i in range(2, len_limit):\n                        length <<= 8\n                        length |= data[i]\n                    if len(data) >= length + len_limit:\n                        return length + len_limit\n                # else - unsupported huge size\n            else:\n                # length is less than 0x80\n                if len(data) >= length + 2:\n                    return length + 2\n        # fallback - unsupported\n        return 0\n\n    @staticmethod\n    def read_data(path: Union[str, Path]) -> Optional[bytes]:\n        \"\"\"Read the file bytes as is.\n\n        Try to read the data of the file.\n\n        Args:\n            path: path to file\n\n        Return:\n            list of file rows in a suitable encoding from \"encodings\",\n            if none of the encodings match, an empty list will be returned\n\n        \"\"\"\n\n        try:\n            with open(path, \"rb\") as file:\n                return file.read()\n        except Exception as exc:\n            logger.error(\"Unexpected Error: Can not read '%s'. Error message: '%s'\", path, exc)\n        return None\n\n    @staticmethod\n    def get_xml_from_lines(xml_lines: List[str]) -> Tuple[Optional[List[str]], Optional[List[int]]]:\n        \"\"\"Parse xml data from list of string and return List of str.\n\n        Args:\n            xml_lines: list of lines of xml data\n\n        Return:\n            List of formatted string(f\"{root.tag} : {root.text}\")\n\n        Raises:\n            xml exception\n\n        \"\"\"\n        lines = []\n        line_nums = []\n        tree = etree.fromstringlist(xml_lines)\n        for element in tree.iter():\n            tag = Util.extract_element_data(element, \"tag\")\n            text = Util.extract_element_data(element, \"text\")\n            lines.append(f\"{tag} : {text}\")\n            line_nums.append(element.sourceline)\n        return lines, line_nums\n\n    @staticmethod\n    def extract_element_data(element: Any, attr: str) -> str:\n        \"\"\"Extract xml element data to string.\n\n        Try to extract the xml data and strip() the string.\n\n        Args:\n            element: xml element\n            attr: attribute name\n\n        Return:\n            String xml data with strip()\n\n        \"\"\"\n        element_attr: Any = getattr(element, attr)\n        if element_attr is None or not isinstance(element_attr, str):\n            return ''\n        return str(element_attr).strip()\n\n    @staticmethod\n    def json_load(file_path: Union[str, Path], encoding=DEFAULT_ENCODING) -> Any:\n        \"\"\"Load dictionary from JSON file\"\"\"\n        try:\n            with open(file_path, \"r\", encoding=encoding) as f:\n                return json.load(f)\n        except Exception as exc:\n            logging.error(\"Failed to read: %s %s\", file_path, exc)\n        return None\n\n    @staticmethod\n    def json_dump(obj: Any, file_path: Union[str, Path], encoding=DEFAULT_ENCODING, indent=4) -> None:\n        \"\"\"Write dictionary to JSON file\"\"\"\n        try:\n            with open(file_path, \"w\", encoding=encoding) as f:\n                json.dump(obj, f, indent=indent)\n        except Exception as exc:\n            logging.error(\"Failed to write: %s %s\", file_path, exc)\n\n    @staticmethod\n    def yaml_load(file_path: Union[str, Path], encoding=DEFAULT_ENCODING) -> Any:\n        \"\"\"Load dictionary from YAML file\"\"\"\n        try:\n            with open(file_path, \"r\", encoding=encoding) as f:\n                return yaml.safe_load(f)\n        except Exception as exc:\n            logger.error(\"Failed to read %s %s\", file_path, exc)\n        return None\n\n    @staticmethod\n    def yaml_dump(obj: Any, file_path: Union[str, Path], encoding=DEFAULT_ENCODING) -> None:\n        \"\"\"Write dictionary to YAML file\"\"\"\n        try:\n            with open(file_path, \"w\", encoding=encoding) as f:\n                yaml.dump(obj, f)\n        except Exception as exc:\n            logging.error(\"Failed to write: %s %s\", file_path, exc)\n\n    @staticmethod\n    def parse_python(source: str) -> List[Any]:\n        \"\"\"Parse Python source and back to remove strings merge and line wrap\"\"\"\n        with warnings.catch_warnings(record=True):\n            warnings.simplefilter(\"error\", SyntaxWarning)\n            src = ast.parse(source)\n            result = ast.unparse(src).splitlines()\n            return result\n\n    PEM_CLEANING_PATTERN = re.compile(r\"\\\\[tnrvf]\")\n    WHITESPACE_TRANS_TABLE = str.maketrans('', '', string.whitespace)\n\n    @staticmethod\n    def decode_base64(text: str, padding_safe: bool = False, urlsafe_detect=False) -> bytes:\n        \"\"\"decode text to bytes with / without padding detect and urlsafe symbols\"\"\"\n        value = text.translate(Util.WHITESPACE_TRANS_TABLE)\n        if padding_safe:\n            # workaround for binascii.Error: Excess padding not allowed\n            value = value.rstrip('=')\n            pad_num = 0x3 & len(value)\n            if pad_num:\n                value += '=' * (4 - pad_num)\n        if urlsafe_detect and ('-' in value or '_' in value):\n            decoded = base64.b64decode(value, altchars=b\"-_\", validate=True)\n        else:\n            decoded = base64.b64decode(value, validate=True)\n        return decoded\n\n    @staticmethod\n    def load_pk(data: bytes, password: Optional[bytes] = None) -> Optional[PrivateKeyTypes]:\n        \"\"\"Try to load private key from PKCS1, PKCS8 and PKCS12 formats\"\"\"\n        with contextlib.suppress(Exception):\n            # PKCS1, PKCS8 probes\n            private_key = load_der_private_key(data, password)\n            return private_key\n        with contextlib.suppress(Exception):\n            # PKCS12 probe\n            private_key, _certificate, _additional_certificates = load_key_and_certificates(data, password)\n            return private_key\n        return None\n\n    RANDOM_DATA = random.randbytes(20)\n\n    @staticmethod\n    def check_pk(pkey: PrivateKeyTypes) -> bool:\n        \"\"\"Check private key with encrypt-decrypt random data\"\"\"\n        if not pkey or isinstance(pkey, (EllipticCurvePublicKey, DSAPublicKey, Ed448PublicKey, Ed25519PublicKey,\n                                         DHPublicKey, X448PublicKey, X25519PublicKey)):\n            # These aren't the keys we're looking for\n            return False\n        if isinstance(pkey, (EllipticCurvePrivateKey, DSAPrivateKey, Ed448PrivateKey, Ed25519PrivateKey, DHPrivateKey,\n                             X448PrivateKey, X25519PrivateKey)):\n            # One does not simply perform check the keys\n            return True\n        if isinstance(pkey, RSAPrivateKey):\n            pd = padding.OAEP(mgf=padding.MGF1(algorithm=hashes.SHA1()), algorithm=hashes.SHA1(), label=None)\n            ciphertext = pkey.public_key().encrypt(Util.RANDOM_DATA, padding=pd)\n            refurb = pkey.decrypt(ciphertext, padding=pd)\n            return bool(refurb == Util.RANDOM_DATA)\n        logger.warning(\"Unknown private key type: %s\", type(pkey))\n        return False\n\n    @staticmethod\n    def get_chunks(line_len: int) -> List[Tuple[int, int]]:\n        \"\"\"Returns chunks positions for given line length\"\"\"\n        # line length is over MAX_LINE_LENGTH already\n        chunks = [(0, CHUNK_SIZE)]\n        # case for oversize line\n        next_offset = CHUNK_STEP_SIZE\n        while line_len > next_offset:\n            # the target is too long for single \"finditer\" - it will be scanned by chunks\n            if line_len > next_offset + MAX_LINE_LENGTH:\n                # the chunk is not the before last\n                chunks.append((next_offset, next_offset + CHUNK_SIZE))\n                next_offset += CHUNK_STEP_SIZE\n            else:\n                # the tail of line is between CHUNK_SIZE and MAX_LINE_LENGTH\n                chunks.append((next_offset, line_len))\n                break\n        return chunks\n\n    @staticmethod\n    def subtext(text: str, pos: int, hunk_size: int) -> str:\n        \"\"\"cut text symmetrically for given position or use remained quota to be fitted in 2x hunk_size\"\"\"\n        # cut trailed whitespaces to obtain more informative data\n        text = text.rstrip()\n        if hunk_size <= pos:\n            left_quota = 0\n            left_pos = pos - hunk_size\n        else:\n            left_quota = hunk_size - pos\n            left_pos = 0\n        # skip leading whitespaces in result string\n        for i in range(left_pos, pos):\n            if text[i] in string.whitespace:\n                left_quota += 1\n                left_pos += 1\n            else:\n                break\n        right_remain = len(text) - pos\n        if hunk_size <= right_remain:\n            right_quota = 0\n            right_pos = pos + hunk_size + left_quota\n        else:\n            right_quota = hunk_size - right_remain\n            right_pos = pos + hunk_size + left_quota\n        if len(text) < right_pos:\n            right_pos = len(text)\n        if 0 < left_pos:\n            left_pos -= right_quota\n            if 0 > left_pos:\n                left_pos = 0\n        return text[left_pos:right_pos].rstrip()\n\n    @staticmethod\n    def get_excel_column_name(column_index: int) -> str:\n        \"\"\"Converts index based column position into Excel style column name\"\"\"\n        name = ''\n        if isinstance(column_index, int):\n            while 0 <= column_index:\n                column_index, remain = divmod(column_index, 26)\n                name = f\"{chr(ord('A') + remain)}{name}\"\n                column_index -= 1\n        return name\n"
  },
  {
    "path": "docs/Makefile",
    "content": "# Minimal makefile for Sphinx documentation\n#\n\n# You can set these variables from the command line, and also\n# from the environment for the first two.\nSPHINXOPTS    ?= -v -W\nSPHINXBUILD   ?= sphinx-build\nSOURCEDIR     = source\nBUILDDIR      = build\n\n# Put it first so that \"make\" without argument is like \"make help\".\nhelp:\n\t@$(SPHINXBUILD) -M help \"$(SOURCEDIR)\" \"$(BUILDDIR)\" $(SPHINXOPTS) $(O)\n\n.PHONY: help Makefile\n\n# Catch-all target: route all unknown targets to Sphinx using the new\n# \"make mode\" option.  $(O) is meant as a shortcut for $(SPHINXOPTS).\n%: Makefile\n\t@$(SPHINXBUILD) -M $@ \"$(SOURCEDIR)\" \"$(BUILDDIR)\" $(SPHINXOPTS) $(O)\n"
  },
  {
    "path": "docs/README.md",
    "content": "# Documentation of CredSweeper\n\nThe directory is used for documentation of CredSweeper with using [sphinx](https://www.sphinx-doc.org/en/master/),\n\n## Workflow\n\nThere is applied custom documentation, so auto-generation might fail. Please, use auto-generation as reference.\nWith the command new sources might be updated (in /docs directory):\n\n```bash\nsphinx-apidoc --force --full --ext-autodoc ../credsweeper -o source/\n```\n\nEdit, then check with command:\n\n```bash\nmake html\n```\n"
  },
  {
    "path": "docs/howto/how-to-contribute.md",
    "content": "# Contributing\n\nThank you for your interest in contributing to the CredSweeper tool!\n\nThe document covers the process for contributing to the CredSweeper code and documentation. Contributions may be as simple as typo corrections or as complex as new features.\n\n1. [Process for contributing](#process-for-contributing)\n\n    1. [Repository structure](#repository-structure)\n    2. [File Name](#file-name)\n    3. [Self Test & Verification](#self-test-and-verification)\n    \n2. [How to PR](#how-to-pr)\n\n3. [DOs and DON'Ts](#dos-and-donts)\n\n## Process for contributing\n\nYou need a basic understanding of [Git and GitHub.com](https://guides.github.com/activities/hello-world/).\n\n**Step 1:** You can skip this step for small changes such as typo corrections. Open an [new issue](https://github.com/Samsung/CredSweeper/issues/new) describing what you want to do, such as change an existing code, functionality or create a new one.\n\nYou can also look at our [issues](https://github.com/Samsung/CredSweeper/issues) list and volunteer to work on the ones you're interested in.\n\n**Step 2:** Fork the [Samsung/CredSweeper](https://github.com/Samsung/CredSweeper/fork) repo and create a branch for your changes.\n\nFor small changes, you can use GitHub's web interface. Simply click the **Edit the file in your fork of this project** on the file you'd like to change.\nGitHub creates the new branch for you when you submit the changes.\nVCS(git) requirement: the branch MUST be forked after latest release.\n\n**Step 3:** Make the changes on this new branch.\n\nBe sure to follow the proper Python syntax. For more information, see the [style guide](https://github.com/google/styleguide/blob/gh-pages/pyguide.md).\nUse pre-commit hook with [yapf config file](https://github.com/Samsung/CredSweeper/blob/main/.style.yapf).\n\n\n### Repository structure\n\nAll new filters or another feature should be located in the appropriate directories. Also, for all new functionality, you need to create new positive and negative tests in the appropriate file and directory in ./tests/\n\n### File name\n\nFile names use the following rules:\n- Contain only lowercase letters, numbers, and underlines.\n- No spaces or punctuation characters. Use the underlines to separate words and numbers in the file name.\n- Use action verbs that are specific, such as develop, buy, build, troubleshoot. No -ing words.\n- No small words - don't include a, and, the, in, or, etc.\n- Keep file names reasonably short.\n\n### Self Test and Verification\n\nAfter updating CredSweeper code, please verify your change doesn't break the library. We suggest unit-tests using the pytest. You can easily run it with:\n   ```bash\n   python -m pytest\n   ```\n\nPlease make it sure running all tests and no any fail case.\nRun all Actions in your fork before submitting the PR to the upstream and ensure all CI checks pass.\n\n**Step 4:** Submit a Pull Request (PR) from your branch to `Samsung/CredSweeper/main`.\n\nEach PR should usually address one issue at a time. The PR can modify one or multiple files. If you're addressing multiple fixes on different files, separate PRs are preferred.\n\nIf your PR is addressing an existing issue, add the `Fixes #Issue_Number` keyword to the commit message or PR description. That way, the issue is automatically closed when the PR is merged. For more information, see [Closing issues via commit messages](https://help.github.com/articles/closing-issues-via-commit-messages/).\n\nThe CredSweeper team will review your PR and let you know if there are any other updates/changes necessary in order to approve it.\n\n**Step 5:** Make any necessary updates to your branch as discussed with the team.\n\nThe maintainers will merge your PR into the main branch once feedback has been applied and your change is approved.\n\n\n### How to PR\n\n1. Fork form the original repository, https://github.com/Samsung/CredSweeper.\n   (Ref. https://help.github.com/articles/fork-a-repo/)\n\n2. Type `git clone`, and then paste the URL you copied in 1. It will look like this, with your GitHub username instead of `YOUR-USERNAME`:\n\n   ```bash\n   git clone https://github.com/YOUR-USERNAME/CredSweeper.git\n   ```\n   \n3. Set to synchronize the original repository and the forked repository.\n\n   ```bash\n   git remote -v\n   git remote add upstream https://github.com/Samsung/CredSweeper.git\n   git remote -v\n   ```\n   \n4. Create a new branch on the forked repository or the local repository,\n   and switch to the new branch.\n\n   ```bash\n   git checkout -b <new branch name>\n   ```\n   \n5. Install Yapf as a pre-commit hook with\n\n   ``` bash\n   pip install pre-commit\n   pre-commit install\n   ```\n   \n6. Create a local commit.\n\n   ```bash\n   git status\n   git add\n   git commit -a\n   ```\n\n7. Push the branch\n\n   ```bash\n   git push origin <new branch name>\n   ```\n\n8. Open a pull request on https://github.com/Samsung/CredSweeper.\n\n   All tests and checks MUST be passed\n   - Codestyle check\n   - Static analysis\n   - Unit tests\n     > - Development tests - use only linux and compatible version of packages. Code coverage is checked without test_app.py.\n     > - Release tests - use Linux, Mac, Windows platform without version limitation.\n   - Dynamic analysis (fuzzing)\n     > Used Atheris framework to fuzzing various input. Code coverage is checked. In case of unsatisfied coverage - need to do new fuzzing or refactor fuzzer.  \n   - Benchmark\n     > If your PR changes benchmark scores - the scores MUST be updated (cicd/benchmark.txt)\n   \n9. Verify ActionTest after merge.\n    > The test verifies integration CredSweeper to github action and points to main branch of main repo.\n\n## DOs and DON'Ts\n\nThe following list shows some guiding rules that you should keep in mind when you're contributing to the CredSweeper:\n\n- **DON'T** surprise us with large pull requests. Instead, file an issue and start a discussion so we can agree on a direction before you invest a large amount of time.\n- **DO** read the [style guide](https://github.com/google/styleguide/blob/gh-pages/pyguide.md) guideline.\n- **DO** create a separate branch on your fork before working on the changes.\n- **DO** follow the [GitHub Flow workflow](https://guides.github.com/introduction/flow/).\n- **DO** blog and tweet (or whatever) about your contributions, frequently!\n\n> **Note**\n>\n> you might notice that some of the topics are not currently following all the guidelines specified here and on the [style guide](https://github.com/google/styleguide/blob/gh-pages/pyguide.md) as well. We're working towards achieving consistency throughout the tool. Check the list of [open issues](https://github.com/Samsung/CredSweeper/issues?q=is%3Aissue+is%3Aopen) we're currently tracking for that specific goal.\n"
  },
  {
    "path": "docs/make.bat",
    "content": "@ECHO OFF\r\n\r\npushd %~dp0\r\n\r\nREM Command file for Sphinx documentation\r\n\r\nif \"%SPHINXBUILD%\" == \"\" (\r\n\tset SPHINXBUILD=sphinx-build\r\n)\r\nset SOURCEDIR=source\r\nset BUILDDIR=build\r\n\r\nif \"%1\" == \"\" goto help\r\n\r\n%SPHINXBUILD% >NUL 2>NUL\r\nif errorlevel 9009 (\r\n\techo.\r\n\techo.The 'sphinx-build' command was not found. Make sure you have Sphinx\r\n\techo.installed, then set the SPHINXBUILD environment variable to point\r\n\techo.to the full path of the 'sphinx-build' executable. Alternatively you\r\n\techo.may add the Sphinx directory to PATH.\r\n\techo.\r\n\techo.If you don't have Sphinx installed, grab it from\r\n\techo.https://www.sphinx-doc.org/\r\n\texit /b 1\r\n)\r\n\r\n%SPHINXBUILD% -M %1 %SOURCEDIR% %BUILDDIR% %SPHINXOPTS% %O%\r\ngoto end\r\n\r\n:help\r\n%SPHINXBUILD% -M help %SOURCEDIR% %BUILDDIR% %SPHINXOPTS% %O%\r\n\r\n:end\r\npopd\r\n"
  },
  {
    "path": "docs/requirements.txt",
    "content": "myst_parser[linkify]==4.0.1\nsphinx==8.1.3\nsphinx_rtd_theme==3.0.2\n"
  },
  {
    "path": "docs/source/api.rst",
    "content": "API\n===\n\nThis part of the documentation covers all the interfaces of CredSweeper.\n\n.. toctree::\n   :maxdepth: 2\n\n   credsweeper\n   credsweeper.common.rst\n   credsweeper.config.rst\n   credsweeper.credentials.rst\n   credsweeper.deep_scanner.rst\n   credsweeper.file_handler.rst\n   credsweeper.filters.group.rst\n   credsweeper.filters.rst\n   credsweeper.logger.rst\n   credsweeper.ml_model.rst\n   credsweeper.rules.rst\n   credsweeper.scanner.rst\n   credsweeper.scanner.scan_type.rst\n   credsweeper.utils.rst\n\n"
  },
  {
    "path": "docs/source/apps_config.rst",
    "content": "CredSweeper Credential Analyzer Configuration\n=============================================\n\n.. literalinclude:: ../../credsweeper/secret/config.json\n   :language: json\n   :linenos:\n"
  },
  {
    "path": "docs/source/conf.py",
    "content": "# Configuration file for the Sphinx documentation builder.\n#\n# For the full list of built-in configuration values, see the documentation:\n# https://www.sphinx-doc.org/en/master/usage/configuration.html\n\nimport os\nimport sys\n\nsys.path.insert(0, os.path.abspath('../..'))\ndi = os.path.abspath(os.pardir)\nremove_docs = di.strip('docs')\n\nfor r, d, f in os.walk(r\"{}credsweeper\".format(remove_docs)):\n    sys.path.append(r)\n\n# -- Project information -----------------------------------------------------\n# https://www.sphinx-doc.org/en/master/usage/configuration.html#project-information\n\nproject = 'CredSweeper'\ncopyright = '2026, Samsung CredTeam'\nauthor = 'CredTeam'\n\nfrom credsweeper import __version__ as credsweeper_version\n\n# The short X.Y version\nversion = '.'.join(credsweeper_version.split('.')[0:2])\n\n# The full version, including alpha/beta/rc tags\nrelease = credsweeper_version\n\n# The master toctree document.\nmaster_doc = 'index'\n\n# -- General configuration ---------------------------------------------------\n# https://www.sphinx-doc.org/en/master/usage/configuration.html#general-configuration\n\n# Add any Sphinx extension module names here, as strings. They can be\n# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom ones.\nextensions = [\n    'sphinx.ext.autodoc',\n    'sphinx.ext.intersphinx',\n    'sphinx.ext.viewcode',\n    'sphinx.ext.todo',\n    'sphinx.ext.napoleon',\n    'myst_parser',\n]\n\nintersphinx_mapping = {\n    'python': ('https://docs.python.org/3/', None),\n    'numpy': ('https://numpy.org/doc/stable/', None),\n}\n\nmyst_enable_extensions = [\n    \"amsmath\",\n    \"attrs_inline\",\n    \"colon_fence\",\n    \"deflist\",\n    \"dollarmath\",\n    \"fieldlist\",\n    \"html_admonition\",\n    \"html_image\",\n    \"linkify\",\n    \"replacements\",\n    \"smartquotes\",\n    \"strikethrough\",\n    \"substitution\",\n    \"tasklist\",\n]\n\nsource_suffix = {\n    '.rst': 'restructuredtext',\n    '.txt': 'markdown',\n    '.md': 'markdown',\n}\n\nmyst_heading_anchors = 3\n\n# Add any paths that contain templates here, relative to this directory.\ntemplates_path = ['_templates']\n\n# List of patterns, relative to source directory, that match files and\n# directories to ignore when looking for source files.\n# This patterns also effect to html_static_path and html_extra_path\nexclude_patterns = ['_build', 'Thumbs.db', '.DS_Store']\n\n# The language for content autogenerated by Sphinx. Refer to documentation\n# for a list of supported languages.\n#\n# This is also used if you do content translation via gettext catalogs.\n# Usually you set \"language\" from the command line for these cases.\nlanguage = 'en'\n\n# The name of the Pygments (syntax highlighting) style to use.\npygments_style = 'sphinx'\n\n# If true, `todo` and `todoList` produce output, else they produce nothing.\n# https://www.sphinx-doc.org/en/master/usage/extensions/todo.html#configuration\ntodo_include_todos = True\n\n# -- Options for HTML output -------------------------------------------------\n# https://www.sphinx-doc.org/en/master/usage/configuration.html#options-for-html-output\n\nhtml_theme = 'sphinx_rtd_theme'\n\n# Add any paths that contain custom static files (such as style sheets) here,\n# relative to this directory. They are copied after the builtin static files,\n# so a file named \"default.css\" will overwrite the builtin \"default.css\".\nhtml_static_path = ['_static']\n\nhtml_theme_options = {\n    'logo_only': True,  #\n    'navigation_depth': 3  #\n}\n\n# The name of an image file (relative to this directory) to place at the top of the sidebar.\nhtml_logo = 'https://raw.githubusercontent.com/Samsung/CredSweeper/main/docs/images/Logo.png'\n\nhtml_scaled_image_link = False\n\n# -- Options for HTMLHelp output ------------------------------------------\n\n# Output file base name for HTML help builder.\nhtmlhelp_basename = 'ci_doc'\n\n# -- Suppress unusual parts ... in json e.g.\nsuppress_warnings = ['misc.highlighting_failure']\n\n# -- Options for manual page output ---------------------------------------\n\n# One entry per manual page. List of tuples\n# (source start file, name, description, authors, manual section).\nman_pages = [(master_doc, 'ci', u'CI Documentation', [author], 1)]\n\nsys.path.append(os.path.dirname(__file__) + '/..')\n"
  },
  {
    "path": "docs/source/credsweeper.common.rst",
    "content": "credsweeper.common package\n==========================\n\nSubmodules\n----------\n\ncredsweeper.common.constants module\n-----------------------------------\n\n.. automodule:: credsweeper.common.constants\n   :members:\n   :undoc-members:\n   :show-inheritance:\n\ncredsweeper.common.keyword\\_checklist module\n--------------------------------------------\n\n.. automodule:: credsweeper.common.keyword_checklist\n   :members:\n   :undoc-members:\n   :show-inheritance:\n\ncredsweeper.common.keyword\\_pattern module\n------------------------------------------\n\n.. automodule:: credsweeper.common.keyword_pattern\n   :members:\n   :undoc-members:\n   :show-inheritance:\n\nModule contents\n---------------\n\n.. automodule:: credsweeper.common\n   :members:\n   :undoc-members:\n   :show-inheritance:\n"
  },
  {
    "path": "docs/source/credsweeper.config.rst",
    "content": "credsweeper.config package\n==========================\n\nSubmodules\n----------\n\ncredsweeper.config.config module\n--------------------------------\n\n.. automodule:: credsweeper.config.config\n   :members:\n   :undoc-members:\n   :show-inheritance:\n\nModule contents\n---------------\n\n.. automodule:: credsweeper.config\n   :members:\n   :undoc-members:\n   :show-inheritance:\n"
  },
  {
    "path": "docs/source/credsweeper.credentials.rst",
    "content": "credsweeper.credentials package\n===============================\n\nSubmodules\n----------\n\ncredsweeper.credentials.augment\\_candidates module\n--------------------------------------------------\n\n.. automodule:: credsweeper.credentials.augment_candidates\n   :members:\n   :undoc-members:\n   :show-inheritance:\n\ncredsweeper.credentials.candidate module\n----------------------------------------\n\n.. automodule:: credsweeper.credentials.candidate\n   :members:\n   :undoc-members:\n   :show-inheritance:\n\ncredsweeper.credentials.candidate\\_group\\_generator module\n----------------------------------------------------------\n\n.. automodule:: credsweeper.credentials.candidate_group_generator\n   :members:\n   :undoc-members:\n   :show-inheritance:\n\ncredsweeper.credentials.candidate\\_key module\n---------------------------------------------\n\n.. automodule:: credsweeper.credentials.candidate_key\n   :members:\n   :undoc-members:\n   :show-inheritance:\n\ncredsweeper.credentials.credential\\_manager module\n--------------------------------------------------\n\n.. automodule:: credsweeper.credentials.credential_manager\n   :members:\n   :undoc-members:\n   :show-inheritance:\n\ncredsweeper.credentials.line\\_data module\n-----------------------------------------\n\n.. automodule:: credsweeper.credentials.line_data\n   :members:\n   :undoc-members:\n   :show-inheritance:\n\nModule contents\n---------------\n\n.. automodule:: credsweeper.credentials\n   :members:\n   :undoc-members:\n   :show-inheritance:\n"
  },
  {
    "path": "docs/source/credsweeper.deep_scanner.rst",
    "content": "credsweeper.deep\\_scanner package\n=================================\n\nSubmodules\n----------\n\ncredsweeper.deep\\_scanner.abstract\\_scanner module\n--------------------------------------------------\n\n.. automodule:: credsweeper.deep_scanner.abstract_scanner\n   :members:\n   :undoc-members:\n   :show-inheritance:\n\ncredsweeper.deep\\_scanner.byte\\_scanner module\n----------------------------------------------\n\n.. automodule:: credsweeper.deep_scanner.byte_scanner\n   :members:\n   :undoc-members:\n   :show-inheritance:\n\ncredsweeper.deep\\_scanner.bzip2\\_scanner module\n-----------------------------------------------\n\n.. automodule:: credsweeper.deep_scanner.bzip2_scanner\n   :members:\n   :undoc-members:\n   :show-inheritance:\n\ncredsweeper.deep\\_scanner.crx\\_scanner module\n---------------------------------------------\n\n.. automodule:: credsweeper.deep_scanner.crx_scanner\n   :members:\n   :undoc-members:\n   :show-inheritance:\n\ncredsweeper.deep\\_scanner.csv\\_scanner module\n---------------------------------------------\n\n.. automodule:: credsweeper.deep_scanner.csv_scanner\n   :members:\n   :undoc-members:\n   :show-inheritance:\n\ncredsweeper.deep\\_scanner.deb\\_scanner module\n---------------------------------------------\n\n.. automodule:: credsweeper.deep_scanner.deb_scanner\n   :members:\n   :undoc-members:\n   :show-inheritance:\n\ncredsweeper.deep\\_scanner.deep\\_scanner module\n----------------------------------------------\n\n.. automodule:: credsweeper.deep_scanner.deep_scanner\n   :members:\n   :undoc-members:\n   :show-inheritance:\n\ncredsweeper.deep\\_scanner.docx\\_scanner module\n----------------------------------------------\n\n.. automodule:: credsweeper.deep_scanner.docx_scanner\n   :members:\n   :undoc-members:\n   :show-inheritance:\n\ncredsweeper.deep\\_scanner.eml\\_scanner module\n---------------------------------------------\n\n.. automodule:: credsweeper.deep_scanner.eml_scanner\n   :members:\n   :undoc-members:\n   :show-inheritance:\n\ncredsweeper.deep\\_scanner.encoder\\_scanner module\n-------------------------------------------------\n\n.. automodule:: credsweeper.deep_scanner.encoder_scanner\n   :members:\n   :undoc-members:\n   :show-inheritance:\n\ncredsweeper.deep\\_scanner.gzip\\_scanner module\n----------------------------------------------\n\n.. automodule:: credsweeper.deep_scanner.gzip_scanner\n   :members:\n   :undoc-members:\n   :show-inheritance:\n\ncredsweeper.deep\\_scanner.html\\_scanner module\n----------------------------------------------\n\n.. automodule:: credsweeper.deep_scanner.html_scanner\n   :members:\n   :undoc-members:\n   :show-inheritance:\n\ncredsweeper.deep\\_scanner.jclass\\_scanner module\n------------------------------------------------\n\n.. automodule:: credsweeper.deep_scanner.jclass_scanner\n   :members:\n   :undoc-members:\n   :show-inheritance:\n\ncredsweeper.deep\\_scanner.jks\\_scanner module\n---------------------------------------------\n\n.. automodule:: credsweeper.deep_scanner.jks_scanner\n   :members:\n   :undoc-members:\n   :show-inheritance:\n\ncredsweeper.deep\\_scanner.lang\\_scanner module\n----------------------------------------------\n\n.. automodule:: credsweeper.deep_scanner.lang_scanner\n   :members:\n   :undoc-members:\n   :show-inheritance:\n\ncredsweeper.deep\\_scanner.lzma\\_scanner module\n----------------------------------------------\n\n.. automodule:: credsweeper.deep_scanner.lzma_scanner\n   :members:\n   :undoc-members:\n   :show-inheritance:\n\ncredsweeper.deep\\_scanner.mxfile\\_scanner module\n------------------------------------------------\n\n.. automodule:: credsweeper.deep_scanner.mxfile_scanner\n   :members:\n   :undoc-members:\n   :show-inheritance:\n\ncredsweeper.deep\\_scanner.patch\\_scanner module\n-----------------------------------------------\n\n.. automodule:: credsweeper.deep_scanner.patch_scanner\n   :members:\n   :undoc-members:\n   :show-inheritance:\n\ncredsweeper.deep\\_scanner.pdf\\_scanner module\n---------------------------------------------\n\n.. automodule:: credsweeper.deep_scanner.pdf_scanner\n   :members:\n   :undoc-members:\n   :show-inheritance:\n\ncredsweeper.deep\\_scanner.pkcs\\_scanner module\n----------------------------------------------\n\n.. automodule:: credsweeper.deep_scanner.pkcs_scanner\n   :members:\n   :undoc-members:\n   :show-inheritance:\n\ncredsweeper.deep\\_scanner.png\\_scanner module\n---------------------------------------------\n\n.. automodule:: credsweeper.deep_scanner.png_scanner\n   :members:\n   :undoc-members:\n   :show-inheritance:\n\ncredsweeper.deep\\_scanner.pptx\\_scanner module\n----------------------------------------------\n\n.. automodule:: credsweeper.deep_scanner.pptx_scanner\n   :members:\n   :undoc-members:\n   :show-inheritance:\n\ncredsweeper.deep\\_scanner.rpm\\_scanner module\n---------------------------------------------\n\n.. automodule:: credsweeper.deep_scanner.rpm_scanner\n   :members:\n   :undoc-members:\n   :show-inheritance:\n\ncredsweeper.deep\\_scanner.rtf\\_scanner module\n---------------------------------------------\n\n.. automodule:: credsweeper.deep_scanner.rtf_scanner\n   :members:\n   :undoc-members:\n   :show-inheritance:\n\ncredsweeper.deep\\_scanner.sqlite3\\_scanner module\n-------------------------------------------------\n\n.. automodule:: credsweeper.deep_scanner.sqlite3_scanner\n   :members:\n   :undoc-members:\n   :show-inheritance:\n\ncredsweeper.deep\\_scanner.strings\\_scanner module\n-------------------------------------------------\n\n.. automodule:: credsweeper.deep_scanner.strings_scanner\n   :members:\n   :undoc-members:\n   :show-inheritance:\n\ncredsweeper.deep\\_scanner.tar\\_scanner module\n---------------------------------------------\n\n.. automodule:: credsweeper.deep_scanner.tar_scanner\n   :members:\n   :undoc-members:\n   :show-inheritance:\n\ncredsweeper.deep\\_scanner.tmx\\_scanner module\n---------------------------------------------\n\n.. automodule:: credsweeper.deep_scanner.tmx_scanner\n   :members:\n   :undoc-members:\n   :show-inheritance:\n\ncredsweeper.deep\\_scanner.xlsx\\_scanner module\n----------------------------------------------\n\n.. automodule:: credsweeper.deep_scanner.xlsx_scanner\n   :members:\n   :undoc-members:\n   :show-inheritance:\n\ncredsweeper.deep\\_scanner.xml\\_scanner module\n---------------------------------------------\n\n.. automodule:: credsweeper.deep_scanner.xml_scanner\n   :members:\n   :undoc-members:\n   :show-inheritance:\n\ncredsweeper.deep\\_scanner.zip\\_scanner module\n---------------------------------------------\n\n.. automodule:: credsweeper.deep_scanner.zip_scanner\n   :members:\n   :undoc-members:\n   :show-inheritance:\n\ncredsweeper.deep\\_scanner.zlib\\_scanner module\n----------------------------------------------\n\n.. automodule:: credsweeper.deep_scanner.zlib_scanner\n   :members:\n   :undoc-members:\n   :show-inheritance:\n\nModule contents\n---------------\n\n.. automodule:: credsweeper.deep_scanner\n   :members:\n   :undoc-members:\n   :show-inheritance:\n"
  },
  {
    "path": "docs/source/credsweeper.file_handler.rst",
    "content": "credsweeper.file\\_handler package\n=================================\n\nSubmodules\n----------\n\ncredsweeper.file\\_handler.abstract\\_provider module\n---------------------------------------------------\n\n.. automodule:: credsweeper.file_handler.abstract_provider\n   :members:\n   :undoc-members:\n   :show-inheritance:\n\ncredsweeper.file\\_handler.analysis\\_target module\n-------------------------------------------------\n\n.. automodule:: credsweeper.file_handler.analysis_target\n   :members:\n   :undoc-members:\n   :show-inheritance:\n\ncredsweeper.file\\_handler.byte\\_content\\_provider module\n--------------------------------------------------------\n\n.. automodule:: credsweeper.file_handler.byte_content_provider\n   :members:\n   :undoc-members:\n   :show-inheritance:\n\ncredsweeper.file\\_handler.content\\_provider module\n--------------------------------------------------\n\n.. automodule:: credsweeper.file_handler.content_provider\n   :members:\n   :undoc-members:\n   :show-inheritance:\n\ncredsweeper.file\\_handler.data\\_content\\_provider module\n--------------------------------------------------------\n\n.. automodule:: credsweeper.file_handler.data_content_provider\n   :members:\n   :undoc-members:\n   :show-inheritance:\n\ncredsweeper.file\\_handler.descriptor module\n-------------------------------------------\n\n.. automodule:: credsweeper.file_handler.descriptor\n   :members:\n   :undoc-members:\n   :show-inheritance:\n\ncredsweeper.file\\_handler.diff\\_content\\_provider module\n--------------------------------------------------------\n\n.. automodule:: credsweeper.file_handler.diff_content_provider\n   :members:\n   :undoc-members:\n   :show-inheritance:\n\ncredsweeper.file\\_handler.file\\_path\\_extractor module\n------------------------------------------------------\n\n.. automodule:: credsweeper.file_handler.file_path_extractor\n   :members:\n   :undoc-members:\n   :show-inheritance:\n\ncredsweeper.file\\_handler.files\\_provider module\n------------------------------------------------\n\n.. automodule:: credsweeper.file_handler.files_provider\n   :members:\n   :undoc-members:\n   :show-inheritance:\n\ncredsweeper.file\\_handler.patches\\_provider module\n--------------------------------------------------\n\n.. automodule:: credsweeper.file_handler.patches_provider\n   :members:\n   :undoc-members:\n   :show-inheritance:\n\ncredsweeper.file\\_handler.string\\_content\\_provider module\n----------------------------------------------------------\n\n.. automodule:: credsweeper.file_handler.string_content_provider\n   :members:\n   :undoc-members:\n   :show-inheritance:\n\ncredsweeper.file\\_handler.struct\\_content\\_provider module\n----------------------------------------------------------\n\n.. automodule:: credsweeper.file_handler.struct_content_provider\n   :members:\n   :undoc-members:\n   :show-inheritance:\n\ncredsweeper.file\\_handler.text\\_content\\_provider module\n--------------------------------------------------------\n\n.. automodule:: credsweeper.file_handler.text_content_provider\n   :members:\n   :undoc-members:\n   :show-inheritance:\n\nModule contents\n---------------\n\n.. automodule:: credsweeper.file_handler\n   :members:\n   :undoc-members:\n   :show-inheritance:\n"
  },
  {
    "path": "docs/source/credsweeper.filters.group.rst",
    "content": "credsweeper.filters.group package\n=================================\n\nSubmodules\n----------\n\ncredsweeper.filters.group.general\\_keyword module\n-------------------------------------------------\n\n.. automodule:: credsweeper.filters.group.general_keyword\n   :members:\n   :undoc-members:\n   :show-inheritance:\n\ncredsweeper.filters.group.general\\_pattern module\n-------------------------------------------------\n\n.. automodule:: credsweeper.filters.group.general_pattern\n   :members:\n   :undoc-members:\n   :show-inheritance:\n\ncredsweeper.filters.group.group module\n--------------------------------------\n\n.. automodule:: credsweeper.filters.group.group\n   :members:\n   :undoc-members:\n   :show-inheritance:\n\ncredsweeper.filters.group.password\\_keyword module\n--------------------------------------------------\n\n.. automodule:: credsweeper.filters.group.password_keyword\n   :members:\n   :undoc-members:\n   :show-inheritance:\n\ncredsweeper.filters.group.token\\_pattern module\n-----------------------------------------------\n\n.. automodule:: credsweeper.filters.group.token_pattern\n   :members:\n   :undoc-members:\n   :show-inheritance:\n\ncredsweeper.filters.group.url\\_credentials\\_group module\n--------------------------------------------------------\n\n.. automodule:: credsweeper.filters.group.url_credentials_group\n   :members:\n   :undoc-members:\n   :show-inheritance:\n\ncredsweeper.filters.group.weird\\_base36\\_token module\n-----------------------------------------------------\n\n.. automodule:: credsweeper.filters.group.weird_base36_token\n   :members:\n   :undoc-members:\n   :show-inheritance:\n\ncredsweeper.filters.group.weird\\_base64\\_token module\n-----------------------------------------------------\n\n.. automodule:: credsweeper.filters.group.weird_base64_token\n   :members:\n   :undoc-members:\n   :show-inheritance:\n\nModule contents\n---------------\n\n.. automodule:: credsweeper.filters.group\n   :members:\n   :undoc-members:\n   :show-inheritance:\n"
  },
  {
    "path": "docs/source/credsweeper.filters.rst",
    "content": "credsweeper.filters package\n===========================\n\nSubpackages\n-----------\n\n.. toctree::\n   :maxdepth: 4\n\n   credsweeper.filters.group\n\nSubmodules\n----------\n\ncredsweeper.filters.filter module\n---------------------------------\n\n.. automodule:: credsweeper.filters.filter\n   :members:\n   :undoc-members:\n   :show-inheritance:\n\ncredsweeper.filters.line\\_git\\_binary\\_check module\n---------------------------------------------------\n\n.. automodule:: credsweeper.filters.line_git_binary_check\n   :members:\n   :undoc-members:\n   :show-inheritance:\n\ncredsweeper.filters.line\\_specific\\_key\\_check module\n-----------------------------------------------------\n\n.. automodule:: credsweeper.filters.line_specific_key_check\n   :members:\n   :undoc-members:\n   :show-inheritance:\n\ncredsweeper.filters.line\\_uue\\_part\\_check module\n-------------------------------------------------\n\n.. automodule:: credsweeper.filters.line_uue_part_check\n   :members:\n   :undoc-members:\n   :show-inheritance:\n\ncredsweeper.filters.value\\_allowlist\\_check module\n--------------------------------------------------\n\n.. automodule:: credsweeper.filters.value_allowlist_check\n   :members:\n   :undoc-members:\n   :show-inheritance:\n\ncredsweeper.filters.value\\_array\\_dictionary\\_check module\n----------------------------------------------------------\n\n.. automodule:: credsweeper.filters.value_array_dictionary_check\n   :members:\n   :undoc-members:\n   :show-inheritance:\n\ncredsweeper.filters.value\\_atlassian\\_token\\_check module\n---------------------------------------------------------\n\n.. automodule:: credsweeper.filters.value_atlassian_token_check\n   :members:\n   :undoc-members:\n   :show-inheritance:\n\ncredsweeper.filters.value\\_azure\\_token\\_check module\n-----------------------------------------------------\n\n.. automodule:: credsweeper.filters.value_azure_token_check\n   :members:\n   :undoc-members:\n   :show-inheritance:\n\ncredsweeper.filters.value\\_base32\\_data\\_check module\n-----------------------------------------------------\n\n.. automodule:: credsweeper.filters.value_base32_data_check\n   :members:\n   :undoc-members:\n   :show-inheritance:\n\ncredsweeper.filters.value\\_base64\\_data\\_check module\n-----------------------------------------------------\n\n.. automodule:: credsweeper.filters.value_base64_data_check\n   :members:\n   :undoc-members:\n   :show-inheritance:\n\ncredsweeper.filters.value\\_base64\\_encoded\\_pem\\_check module\n-------------------------------------------------------------\n\n.. automodule:: credsweeper.filters.value_base64_encoded_pem_check\n   :members:\n   :undoc-members:\n   :show-inheritance:\n\ncredsweeper.filters.value\\_base64\\_key\\_check module\n----------------------------------------------------\n\n.. automodule:: credsweeper.filters.value_base64_key_check\n   :members:\n   :undoc-members:\n   :show-inheritance:\n\ncredsweeper.filters.value\\_base64\\_part\\_check module\n-----------------------------------------------------\n\n.. automodule:: credsweeper.filters.value_base64_part_check\n   :members:\n   :undoc-members:\n   :show-inheritance:\n\ncredsweeper.filters.value\\_basic\\_auth\\_check module\n----------------------------------------------------\n\n.. automodule:: credsweeper.filters.value_basic_auth_check\n   :members:\n   :undoc-members:\n   :show-inheritance:\n\ncredsweeper.filters.value\\_blocklist\\_check module\n--------------------------------------------------\n\n.. automodule:: credsweeper.filters.value_blocklist_check\n   :members:\n   :undoc-members:\n   :show-inheritance:\n\ncredsweeper.filters.value\\_camel\\_case\\_check module\n----------------------------------------------------\n\n.. automodule:: credsweeper.filters.value_camel_case_check\n   :members:\n   :undoc-members:\n   :show-inheritance:\n\ncredsweeper.filters.value\\_dictionary\\_keyword\\_check module\n------------------------------------------------------------\n\n.. automodule:: credsweeper.filters.value_dictionary_keyword_check\n   :members:\n   :undoc-members:\n   :show-inheritance:\n\ncredsweeper.filters.value\\_discord\\_bot\\_check module\n-----------------------------------------------------\n\n.. automodule:: credsweeper.filters.value_discord_bot_check\n   :members:\n   :undoc-members:\n   :show-inheritance:\n\ncredsweeper.filters.value\\_entropy\\_base32\\_check module\n--------------------------------------------------------\n\n.. automodule:: credsweeper.filters.value_entropy_base32_check\n   :members:\n   :undoc-members:\n   :show-inheritance:\n\ncredsweeper.filters.value\\_entropy\\_base36\\_check module\n--------------------------------------------------------\n\n.. automodule:: credsweeper.filters.value_entropy_base36_check\n   :members:\n   :undoc-members:\n   :show-inheritance:\n\ncredsweeper.filters.value\\_entropy\\_base64\\_check module\n--------------------------------------------------------\n\n.. automodule:: credsweeper.filters.value_entropy_base64_check\n   :members:\n   :undoc-members:\n   :show-inheritance:\n\ncredsweeper.filters.value\\_entropy\\_base\\_check module\n------------------------------------------------------\n\n.. automodule:: credsweeper.filters.value_entropy_base_check\n   :members:\n   :undoc-members:\n   :show-inheritance:\n\ncredsweeper.filters.value\\_file\\_path\\_check module\n---------------------------------------------------\n\n.. automodule:: credsweeper.filters.value_file_path_check\n   :members:\n   :undoc-members:\n   :show-inheritance:\n\ncredsweeper.filters.value\\_github\\_check module\n-----------------------------------------------\n\n.. automodule:: credsweeper.filters.value_github_check\n   :members:\n   :undoc-members:\n   :show-inheritance:\n\ncredsweeper.filters.value\\_grafana\\_check module\n------------------------------------------------\n\n.. automodule:: credsweeper.filters.value_grafana_check\n   :members:\n   :undoc-members:\n   :show-inheritance:\n\ncredsweeper.filters.value\\_grafana\\_service\\_check module\n---------------------------------------------------------\n\n.. automodule:: credsweeper.filters.value_grafana_service_check\n   :members:\n   :undoc-members:\n   :show-inheritance:\n\ncredsweeper.filters.value\\_hex\\_number\\_check module\n----------------------------------------------------\n\n.. automodule:: credsweeper.filters.value_hex_number_check\n   :members:\n   :undoc-members:\n   :show-inheritance:\n\ncredsweeper.filters.value\\_jfrog\\_token\\_check module\n-----------------------------------------------------\n\n.. automodule:: credsweeper.filters.value_jfrog_token_check\n   :members:\n   :undoc-members:\n   :show-inheritance:\n\ncredsweeper.filters.value\\_json\\_web\\_key\\_check module\n-------------------------------------------------------\n\n.. automodule:: credsweeper.filters.value_json_web_key_check\n   :members:\n   :undoc-members:\n   :show-inheritance:\n\ncredsweeper.filters.value\\_json\\_web\\_token\\_check module\n---------------------------------------------------------\n\n.. automodule:: credsweeper.filters.value_json_web_token_check\n   :members:\n   :undoc-members:\n   :show-inheritance:\n\ncredsweeper.filters.value\\_last\\_word\\_check module\n---------------------------------------------------\n\n.. automodule:: credsweeper.filters.value_last_word_check\n   :members:\n   :undoc-members:\n   :show-inheritance:\n\ncredsweeper.filters.value\\_length\\_check module\n-----------------------------------------------\n\n.. automodule:: credsweeper.filters.value_length_check\n   :members:\n   :undoc-members:\n   :show-inheritance:\n\ncredsweeper.filters.value\\_method\\_check module\n-----------------------------------------------\n\n.. automodule:: credsweeper.filters.value_method_check\n   :members:\n   :undoc-members:\n   :show-inheritance:\n\ncredsweeper.filters.value\\_morphemes\\_check module\n--------------------------------------------------\n\n.. automodule:: credsweeper.filters.value_morphemes_check\n   :members:\n   :undoc-members:\n   :show-inheritance:\n\ncredsweeper.filters.value\\_not\\_allowed\\_pattern\\_check module\n--------------------------------------------------------------\n\n.. automodule:: credsweeper.filters.value_not_allowed_pattern_check\n   :members:\n   :undoc-members:\n   :show-inheritance:\n\ncredsweeper.filters.value\\_not\\_part\\_encoded\\_check module\n-----------------------------------------------------------\n\n.. automodule:: credsweeper.filters.value_not_part_encoded_check\n   :members:\n   :undoc-members:\n   :show-inheritance:\n\ncredsweeper.filters.value\\_number\\_check module\n-----------------------------------------------\n\n.. automodule:: credsweeper.filters.value_number_check\n   :members:\n   :undoc-members:\n   :show-inheritance:\n\ncredsweeper.filters.value\\_pattern\\_check module\n------------------------------------------------\n\n.. automodule:: credsweeper.filters.value_pattern_check\n   :members:\n   :undoc-members:\n   :show-inheritance:\n\ncredsweeper.filters.value\\_sealed\\_secret\\_check module\n-------------------------------------------------------\n\n.. automodule:: credsweeper.filters.value_sealed_secret_check\n   :members:\n   :undoc-members:\n   :show-inheritance:\n\ncredsweeper.filters.value\\_search\\_check module\n-----------------------------------------------\n\n.. automodule:: credsweeper.filters.value_search_check\n   :members:\n   :undoc-members:\n   :show-inheritance:\n\ncredsweeper.filters.value\\_similarity\\_check module\n---------------------------------------------------\n\n.. automodule:: credsweeper.filters.value_similarity_check\n   :members:\n   :undoc-members:\n   :show-inheritance:\n\ncredsweeper.filters.value\\_split\\_keyword\\_check module\n-------------------------------------------------------\n\n.. automodule:: credsweeper.filters.value_split_keyword_check\n   :members:\n   :undoc-members:\n   :show-inheritance:\n\ncredsweeper.filters.value\\_string\\_type\\_check module\n-----------------------------------------------------\n\n.. automodule:: credsweeper.filters.value_string_type_check\n   :members:\n   :undoc-members:\n   :show-inheritance:\n\ncredsweeper.filters.value\\_token\\_base32\\_check module\n------------------------------------------------------\n\n.. automodule:: credsweeper.filters.value_token_base32_check\n   :members:\n   :undoc-members:\n   :show-inheritance:\n\ncredsweeper.filters.value\\_token\\_base36\\_check module\n------------------------------------------------------\n\n.. automodule:: credsweeper.filters.value_token_base36_check\n   :members:\n   :undoc-members:\n   :show-inheritance:\n\ncredsweeper.filters.value\\_token\\_base64\\_check module\n------------------------------------------------------\n\n.. automodule:: credsweeper.filters.value_token_base64_check\n   :members:\n   :undoc-members:\n   :show-inheritance:\n\ncredsweeper.filters.value\\_token\\_base\\_check module\n----------------------------------------------------\n\n.. automodule:: credsweeper.filters.value_token_base_check\n   :members:\n   :undoc-members:\n   :show-inheritance:\n\ncredsweeper.filters.value\\_token\\_check module\n----------------------------------------------\n\n.. automodule:: credsweeper.filters.value_token_check\n   :members:\n   :undoc-members:\n   :show-inheritance:\n\nModule contents\n---------------\n\n.. automodule:: credsweeper.filters\n   :members:\n   :undoc-members:\n   :show-inheritance:\n"
  },
  {
    "path": "docs/source/credsweeper.logger.rst",
    "content": "credsweeper.logger package\n==========================\n\nSubmodules\n----------\n\ncredsweeper.logger.logger module\n--------------------------------\n\n.. automodule:: credsweeper.logger.logger\n   :members:\n   :undoc-members:\n   :show-inheritance:\n\nModule contents\n---------------\n\n.. automodule:: credsweeper.logger\n   :members:\n   :undoc-members:\n   :show-inheritance:\n"
  },
  {
    "path": "docs/source/credsweeper.ml_model.features.rst",
    "content": "credsweeper.ml\\_model.features package\n======================================\n\nSubmodules\n----------\n\ncredsweeper.ml\\_model.features.entropy\\_evaluation module\n---------------------------------------------------------\n\n.. automodule:: credsweeper.ml_model.features.entropy_evaluation\n   :members:\n   :undoc-members:\n   :show-inheritance:\n\ncredsweeper.ml\\_model.features.feature module\n---------------------------------------------\n\n.. automodule:: credsweeper.ml_model.features.feature\n   :members:\n   :undoc-members:\n   :show-inheritance:\n\ncredsweeper.ml\\_model.features.file\\_extension module\n-----------------------------------------------------\n\n.. automodule:: credsweeper.ml_model.features.file_extension\n   :members:\n   :undoc-members:\n   :show-inheritance:\n\ncredsweeper.ml\\_model.features.has\\_html\\_tag module\n----------------------------------------------------\n\n.. automodule:: credsweeper.ml_model.features.has_html_tag\n   :members:\n   :undoc-members:\n   :show-inheritance:\n\ncredsweeper.ml\\_model.features.is\\_secret\\_numeric module\n---------------------------------------------------------\n\n.. automodule:: credsweeper.ml_model.features.is_secret_numeric\n   :members:\n   :undoc-members:\n   :show-inheritance:\n\ncredsweeper.ml\\_model.features.length\\_of\\_attribute module\n-----------------------------------------------------------\n\n.. automodule:: credsweeper.ml_model.features.length_of_attribute\n   :members:\n   :undoc-members:\n   :show-inheritance:\n\ncredsweeper.ml\\_model.features.morpheme\\_dense module\n-----------------------------------------------------\n\n.. automodule:: credsweeper.ml_model.features.morpheme_dense\n   :members:\n   :undoc-members:\n   :show-inheritance:\n\ncredsweeper.ml\\_model.features.rule\\_name module\n------------------------------------------------\n\n.. automodule:: credsweeper.ml_model.features.rule_name\n   :members:\n   :undoc-members:\n   :show-inheritance:\n\ncredsweeper.ml\\_model.features.rule\\_severity module\n----------------------------------------------------\n\n.. automodule:: credsweeper.ml_model.features.rule_severity\n   :members:\n   :undoc-members:\n   :show-inheritance:\n\ncredsweeper.ml\\_model.features.search\\_in\\_attribute module\n-----------------------------------------------------------\n\n.. automodule:: credsweeper.ml_model.features.search_in_attribute\n   :members:\n   :undoc-members:\n   :show-inheritance:\n\ncredsweeper.ml\\_model.features.word\\_in module\n----------------------------------------------\n\n.. automodule:: credsweeper.ml_model.features.word_in\n   :members:\n   :undoc-members:\n   :show-inheritance:\n\ncredsweeper.ml\\_model.features.word\\_in\\_path module\n----------------------------------------------------\n\n.. automodule:: credsweeper.ml_model.features.word_in_path\n   :members:\n   :undoc-members:\n   :show-inheritance:\n\ncredsweeper.ml\\_model.features.word\\_in\\_postamble module\n---------------------------------------------------------\n\n.. automodule:: credsweeper.ml_model.features.word_in_postamble\n   :members:\n   :undoc-members:\n   :show-inheritance:\n\ncredsweeper.ml\\_model.features.word\\_in\\_preamble module\n--------------------------------------------------------\n\n.. automodule:: credsweeper.ml_model.features.word_in_preamble\n   :members:\n   :undoc-members:\n   :show-inheritance:\n\ncredsweeper.ml\\_model.features.word\\_in\\_transition module\n----------------------------------------------------------\n\n.. automodule:: credsweeper.ml_model.features.word_in_transition\n   :members:\n   :undoc-members:\n   :show-inheritance:\n\ncredsweeper.ml\\_model.features.word\\_in\\_value module\n-----------------------------------------------------\n\n.. automodule:: credsweeper.ml_model.features.word_in_value\n   :members:\n   :undoc-members:\n   :show-inheritance:\n\ncredsweeper.ml\\_model.features.word\\_in\\_variable module\n--------------------------------------------------------\n\n.. automodule:: credsweeper.ml_model.features.word_in_variable\n   :members:\n   :undoc-members:\n   :show-inheritance:\n\nModule contents\n---------------\n\n.. automodule:: credsweeper.ml_model.features\n   :members:\n   :undoc-members:\n   :show-inheritance:\n"
  },
  {
    "path": "docs/source/credsweeper.ml_model.rst",
    "content": "credsweeper.ml\\_model package\n=============================\n\nSubpackages\n-----------\n\n.. toctree::\n   :maxdepth: 4\n\n   credsweeper.ml_model.features\n\nSubmodules\n----------\n\ncredsweeper.ml\\_model.ml\\_validator module\n------------------------------------------\n\n.. automodule:: credsweeper.ml_model.ml_validator\n   :members:\n   :undoc-members:\n   :show-inheritance:\n\nModule contents\n---------------\n\n.. automodule:: credsweeper.ml_model\n   :members:\n   :undoc-members:\n   :show-inheritance:\n"
  },
  {
    "path": "docs/source/credsweeper.rst",
    "content": "Credsweeper package\n===================\n\nCredSweeper\n-----------\n\n.. toctree::\n   :maxdepth: 4\n\n.. automodule:: credsweeper.app\n   :members:\n   :undoc-members:\n   :show-inheritance:\n\n"
  },
  {
    "path": "docs/source/credsweeper.rules.rst",
    "content": "credsweeper.rules package\n=========================\n\nSubmodules\n----------\n\ncredsweeper.rules.rule module\n-----------------------------\n\n.. automodule:: credsweeper.rules.rule\n   :members:\n   :undoc-members:\n   :show-inheritance:\n\nModule contents\n---------------\n\n.. automodule:: credsweeper.rules\n   :members:\n   :undoc-members:\n   :show-inheritance:\n"
  },
  {
    "path": "docs/source/credsweeper.scanner.rst",
    "content": "credsweeper.scanner package\n===========================\n\nSubpackages\n-----------\n\n.. toctree::\n   :maxdepth: 4\n\n   credsweeper.scanner.scan_type\n\nSubmodules\n----------\n\ncredsweeper.scanner.scanner module\n----------------------------------\n\n.. automodule:: credsweeper.scanner.scanner\n   :members:\n   :undoc-members:\n   :show-inheritance:\n\nModule contents\n---------------\n\n.. automodule:: credsweeper.scanner\n   :members:\n   :undoc-members:\n   :show-inheritance:\n"
  },
  {
    "path": "docs/source/credsweeper.scanner.scan_type.rst",
    "content": "credsweeper.scanner.scan\\_type package\n======================================\n\nSubmodules\n----------\n\ncredsweeper.scanner.scan\\_type.multi\\_pattern module\n----------------------------------------------------\n\n.. automodule:: credsweeper.scanner.scan_type.multi_pattern\n   :members:\n   :undoc-members:\n   :show-inheritance:\n\ncredsweeper.scanner.scan\\_type.pem\\_key\\_pattern module\n-------------------------------------------------------\n\n.. automodule:: credsweeper.scanner.scan_type.pem_key_pattern\n   :members:\n   :undoc-members:\n   :show-inheritance:\n\ncredsweeper.scanner.scan\\_type.scan\\_type module\n------------------------------------------------\n\n.. automodule:: credsweeper.scanner.scan_type.scan_type\n   :members:\n   :undoc-members:\n   :show-inheritance:\n\ncredsweeper.scanner.scan\\_type.single\\_pattern module\n-----------------------------------------------------\n\n.. automodule:: credsweeper.scanner.scan_type.single_pattern\n   :members:\n   :undoc-members:\n   :show-inheritance:\n\nModule contents\n---------------\n\n.. automodule:: credsweeper.scanner.scan_type\n   :members:\n   :undoc-members:\n   :show-inheritance:\n"
  },
  {
    "path": "docs/source/credsweeper.utils.rst",
    "content": "credsweeper.utils package\n=========================\n\nSubmodules\n----------\n\ncredsweeper.utils.hop\\_stat module\n----------------------------------\n\n.. automodule:: credsweeper.utils.hop_stat\n   :members:\n   :undoc-members:\n   :show-inheritance:\n\ncredsweeper.utils.pem\\_key\\_detector module\n-------------------------------------------\n\n.. automodule:: credsweeper.utils.pem_key_detector\n   :members:\n   :undoc-members:\n   :show-inheritance:\n\ncredsweeper.utils.util module\n-----------------------------\n\n.. automodule:: credsweeper.utils.util\n   :members:\n   :undoc-members:\n   :show-inheritance:\n\nModule contents\n---------------\n\n.. automodule:: credsweeper.utils\n   :members:\n   :undoc-members:\n   :show-inheritance:\n"
  },
  {
    "path": "docs/source/develop.rst",
    "content": "Develop\n=======\n\nTests\n-----\n\nTo run all tests:\n\n.. code-block:: bash\n\n    python -m pytest -s tests/\n\nBenchmark\n---------\n\nWe have a dataset for testing credential scanners that called `CredData <https://github.com/Samsung/CredData>`_. If you want to test CredSweeper with this dataset please check `here <https://github.com/Samsung/CredData/blob/main/README.md#benchmark>`_.\n"
  },
  {
    "path": "docs/source/guide.rst",
    "content": "How To Use\n==========\n\nRun\n---\n\nGet all argument list:\n\n.. code-block:: bash\n\n    python -m credsweeper --help\n\n\n.. code-block:: text\n\n    usage: python -m credsweeper [-h]\n                                 (--path PATH [PATH ...] | --diff_path PATH [PATH ...] | --export_config [PATH] | --export_log_config [PATH] | --git PATH)\n                                 [--ref REF] [--rules PATH] [--severity SEVERITY]\n                                 [--config PATH] [--log_config PATH]\n                                 [--denylist PATH] [--find-by-ext]\n                                 [--pedantic | --no-pedantic]\n                                 [--depth POSITIVE_INT] [--no-filters] [--doc]\n                                 [--ml_threshold THRESHOLD_OR_FLOAT_OR_ZERO]\n                                 [--ml_batch_size POSITIVE_INT] [--ml_config PATH]\n                                 [--ml_model PATH] [--ml_providers STR]\n                                 [--jobs POSITIVE_INT] [--thrifty | --no-thrifty]\n                                 [--skip_ignored] [--error | --no-error]\n                                 [--save-json [PATH]] [--save-xlsx [PATH]]\n                                 [--stdout | --no-stdout] [--color | --no-color]\n                                 [--hashed | --no-hashed]\n                                 [--subtext | --no-subtext] [--sort | --no-sort]\n                                 [--log LOG_LEVEL] [--size_limit SIZE_LIMIT]\n                                 [--banner] [--version]\n\n    options:\n      -h, --help            show this help message and exit\n      --path PATH [PATH ...]\n                            file or directory to scan\n      --diff_path PATH [PATH ...]\n                            git diff file to scan\n      --export_config [PATH]\n                            exporting default config to file (default:\n                            config.json)\n      --export_log_config [PATH]\n                            exporting default logger config to file (default:\n                            log.yaml)\n      --git PATH            git repo to scan\n      --ref REF             scan git repo from the ref, otherwise - all branches\n                            were scanned (slow)\n      --rules PATH          path of rule config file (default:\n                            credsweeper/rules/config.yaml). severity:['critical',\n                            'high', 'medium', 'low', 'info'] type:['keyword',\n                            'pattern', 'pem_key', 'multi']\n      --severity SEVERITY   set minimum level for rules to apply ['critical',\n                            'high', 'medium', 'low', 'info'](default:\n                            'Severity.INFO', case insensitive)\n      --config PATH         use custom config (default: built-in)\n      --log_config PATH     use custom log config (default: built-in)\n      --denylist PATH       path to a plain text file with lines or secrets to\n                            ignore\n      --find-by-ext         find files by predefined extension\n      --pedantic, --no-pedantic\n                            process files without extension (default: False)\n      --depth POSITIVE_INT  additional recursive search in data (experimental)\n      --no-filters          disable filters\n      --doc                 document-specific scanning\n      --ml_threshold THRESHOLD_OR_FLOAT_OR_ZERO\n                            setup threshold for the ml model. The lower the\n                            threshold - the more credentials will be reported.\n                            Allowed values: float between 0 and 1, or any of\n                            ['lowest', 'low', 'medium', 'high', 'highest']\n                            (default: medium)\n      --ml_batch_size POSITIVE_INT, -b POSITIVE_INT\n                            batch size for model inference (default: 16)\n      --ml_config PATH      use external config for ml model\n      --ml_model PATH       use external ml model\n      --ml_providers STR    comma separated list of providers for onnx\n                            (CPUExecutionProvider is used by default)\n      --jobs POSITIVE_INT, -j POSITIVE_INT\n                            number of parallel processes to use (default: 1)\n      --thrifty, --no-thrifty\n                            clear objects after scan to reduce memory consumption\n                            (default: True)\n      --skip_ignored        parse .gitignore files and skip credentials from\n                            ignored objects\n      --error, --no-error   produce error code if credentials are found (default:\n                            False)\n      --save-json [PATH]    save result to json file (default: output.json)\n      --save-xlsx [PATH]    save result to xlsx file (default: output.xlsx)\n      --stdout, --no-stdout\n                            print results to stdout (default: True)\n      --color, --no-color   print results with colorization (default: False)\n      --hashed, --no-hashed\n                            line, variable, value will be hashed in output\n                            (default: False)\n      --subtext, --no-subtext\n                            line text will be stripped in 128 symbols but value\n                            and variable are kept (default: False)\n      --sort, --no-sort     enable output sorting (default: False)\n      --log LOG_LEVEL, -l LOG_LEVEL\n                            provide logging level of ['DEBUG', 'INFO', 'WARN',\n                            'WARNING', 'ERROR', 'FATAL', 'CRITICAL', 'SILENCE']\n                            (default: 'warning', case insensitive)\n      --size_limit SIZE_LIMIT\n                            set size limit of files that for scanning (eg. 1GB /\n                            10MiB / 1000)\n      --banner              show version and crc32 sum of CredSweeper files at\n                            start\n      --version, -V         show program's version number and exit\n\n.. note::\n    Validation by `ML model classifier  <https://credsweeper.readthedocs.io/en/latest/overall_architecture.html#ml-validation>`_ is used to reduce False Positives (by far), but might increase False negatives and execution time.\n    You may change system sensitivity by modifying --ml_threshold argument. Increasing threshold will decrease the number of alerts.\n    Setting `--ml_threshold 0` will turn ML off and will maximize the number of alerts.\n\n    Typical False Positives: `password = \"template_password\"`\n\n.. note::\n    CredSweeper includes an experimental `--depth` option that enables scanning with awareness of specific data formats, such as:\n\n        - Compressed files (zip, gzip, bzip2, lzma)\n        - Data containers (deb, tar, Docker images, pkcs12, jks)\n        - Document rendering (pdf, xls, ods, xlsx, docx, pptx, tm7, mxfile)\n        - Base64-encoded content\n        - Structured text formats (HTML, XML, JSON, NDJSON, YAML, etc.) - keys and values are combined before analysis\n        - Python sources - reformatting source code to plain code style to avoid cases which may hide values from patterns (\"AKIA\" \"EXAMPLE...\" -> \"AKIAEXAMPLE...\")\n\n    **Remark:** The reported line number for a found credential with the option may not correspond to the original file. The `info` field provides context to help you understand how the credential was detected.\n\nGet output as JSON file with deep scan for docker image:\n\nPrepare dockerfile\n\n.. code-block:: docker\n\n    FROM scratch\n    ADD tests/samples /\n\nBuild, save and scan\n\n.. code-block:: bash\n\n    docker build . --tag test_samples\n    docker save test_samples --output test_samples.docker\n    python -m credsweeper --path test_samples.docker --save-json output.json --depth 3\n\nReview the report file (output.json):\n\n.. code-block:: json\n\n    [\n    ...\n        {\n            \"rule\": \"Password\",\n            \"severity\": \"medium\",\n            \"confidence\": \"moderate\",\n            \"ml_probability\": 0.7925280332565308,\n            \"line_data_list\": [\n                {\n                    \"line\": \"password = 'cackle!'\",\n                    \"line_num\": 1,\n                    \"path\": \"test_samples.docker\",\n                    \"info\": \"FILE:test_samples.docker|TAR:blobs/sha256/82a4962c3cfebb62a42c2fd5c120ea0706a9ae66f52f71f957c052c873c60775|TAR:password.gradle|STRUCT|STRING:0|RAW\",\n                    \"variable\": \"password\",\n                    \"variable_start\": 0,\n                    \"variable_end\": 8,\n                    \"value\": \"cackle!\",\n                    \"value_start\": 12,\n                    \"value_end\": 19,\n                    \"entropy\": 2.52164\n                }\n            ]\n        },\n    ...\n    ]\n\nGet CLI output only:\n\n.. code-block:: bash\n\n    python -m credsweeper --path tests/samples/password.gradle\n\n\n.. code-block:: text\n\n    rule: Password | severity: medium | confidence: moderate | ml_probability: 0.9149653911590576 | line_data_list: [path: tests/samples/password.gradle | line_num: 1 | value: 'cackle!' | line: 'password = \"cackle!\"']\n\n\nExclude outputs using CLI:\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nIf you want to remove some values from report (e.g. known public secrets):\ncreate text files with lines or values you want to remove and add it using `--denylist` argument.\nSpace-like characters at left and right will be ignored.\n\n.. code-block:: bash\n\n    $ python -m credsweeper --path tests/samples/password.gradle --denylist list.txt\n    Detected Credentials: 0\n    Time Elapsed: 0.07523202896118164s\n    $ cat list.txt\n    cackle!\n      password = \"cackle!\"\n\nExclude outputs using config:\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nEdit ``exclude`` part of the config file.\nDefault config can be generated using ``python -m credsweeper --export_config place_to_save.json``\nor can be found in ``credsweeper/secret/config.json``.\nSpace-like characters at left and right will be ignored.\n\n.. code-block:: json\n\n    \"exclude\": {\n        \"lines\": [\"   password = \\\"cackle!\\\" \"],\n        \"values\": [\"cackle!\"]\n    }\n\nThen specify your config in CLI:\n\n.. code-block:: bash\n\n    $ python -m credsweeper --path tests/samples/password.gradle --config my_cfg.json\n    Detected Credentials: 0\n    Time Elapsed: 0.07152628898620605s\n\nUse as a python library\n-----------------------\n\nMinimal example for scanning line list:\n\n.. code-block:: python\n\n    from credsweeper import CredSweeper, StringContentProvider\n\n\n    to_scan = [\"line one\", \"password='in_line_2'\"]\n    cred_sweeper = CredSweeper()\n    provider = StringContentProvider(to_scan)\n    results = cred_sweeper.file_scan(provider)\n    for r in results:\n        print(r)\n\n.. code-block:: text\n\n    rule: Password | severity: medium | confidence: moderate | ml_probability: 0.9857242107391357 | line_data_list: [line: 'password = \"cackle!\"' | line_num: 1 | path:  | value: 'cackle!' | entropy_validation: BASE64STDPAD_CHARS 2.120590 False]\n\nMinimal example for scanning bytes:\n\n.. code-block:: python\n\n    from credsweeper import CredSweeper, ByteContentProvider\n\n\n    to_scan = b\"line one\\npassword='cackle!'\"\n    cred_sweeper = CredSweeper()\n    provider = ByteContentProvider(to_scan)\n    results = cred_sweeper.file_scan(provider)\n    for r in results:\n        print(r)\n\n.. code-block:: text\n\n    rule: Password | severity: medium | confidence: moderate | ml_probability: 0.9857242107391357 | line_data_list: [line: 'password = \"cackle!\"' | line_num: 2 | path:  | value: 'cackle!' | entropy_validation: BASE64STDPAD_CHARS 2.120590 False]\n\n\nMinimal example for the ML validation:\n\n.. code-block:: python\n\n    from credsweeper import CredSweeper, StringContentProvider, MlValidator, ThresholdPreset\n\n\n    to_scan = [\"line one\", \"password='cackle!'\", \"secret='template'\"]\n    cred_sweeper = CredSweeper()\n    provider = StringContentProvider(to_scan)\n\n    # You can select lower or higher threshold to get more or less reports respectively\n    threshold = ThresholdPreset.medium\n    validator = MlValidator(threshold=threshold)\n\n    results = cred_sweeper.file_scan(provider)\n    for candidate in results:\n        # For each results detected by a CredSweeper, you can validate them using MlValidator\n        is_credential, with_probability = validator.validate(candidate)\n        if is_credential:\n            print(candidate)\n\nNote that `\"secret='template'\"` is not reported due to failing check by the `MlValidator`.\n\n.. code-block:: text\n\n    rule: Password | severity: medium | confidence: moderate | ml_probability: 0.9857242107391357 | line_data_list: [line: 'password = \"cackle!\"' | line_num: 2 | path:  | value: 'cackle!' | entropy_validation: BASE64STDPAD_CHARS 2.120590 False]\n\nConfigurations\n--------------\n\n.. toctree::\n   :maxdepth: 1\n\n   apps_config\n\n.. toctree::\n   :maxdepth: 1\n\n   rules_config\n"
  },
  {
    "path": "docs/source/how_to_contribute.rst",
    "content": "How To Contribute\n=================\n\n.. include:: ../howto/how-to-contribute.md\n   :parser: myst_parser.sphinx_\n"
  },
  {
    "path": "docs/source/index.rst",
    "content": ".. |CredSweeper_logo| image:: ../images/Logo.png\n   :width: 100\n   :alt: Alternative text\n\n|CredSweeper_logo|\n\nWelcome to CredSweeper's documentation!\n=======================================\n\nCredSweeper is a tool to detect credentials in any directories or files. CredSweeper could help users to detect\nunwanted exposure of credentials  (such as personal information, token, passwords, api keys and etc) in advance.\nBy scanning lines, filtering, and using AI model as option, CredSweeper reports lines with possible credentials,\nwhere the line is, and expected type of the credential as a result.\n\nHow To Use\n==========\n\n.. toctree::\n   :maxdepth: 2\n\n   guide\n\nInstallation\n============\n\n.. toctree::\n   :maxdepth: 2\n\n   install\n\nDevelop\n=======\n\n.. toctree::\n   :maxdepth: 2\n\n   develop\n\n\nHow to Contribute\n=================\n\n.. toctree::\n   :maxdepth: 2\n\n   how_to_contribute\n\n\nOverall architecture\n====================\n\n.. toctree::\n   :maxdepth: 2\n\n   overall_architecture\n\n\nAPI Reference\n=============\n\nIf you are looking for information on a specific function, class or method, this part of the documentation is for you.\n\n.. toctree::\n   :maxdepth: 2\n\n   api\n\n\nIndices and tables\n==================\n\n* :ref:`genindex`\n* :ref:`modindex`\n* :ref:`search`\n"
  },
  {
    "path": "docs/source/install.rst",
    "content": "Installation\n============\n\nCurrently `CredSweeper` requires the following prerequisites:\n\n* Python version 3.10, 3.11, 3.12\n\n.. note::\n    We recommend to use credsweeper in a separate virtual enviroment. Some heave dependencies as Tensorflow\n    might create a conflict with other dependencies othervise\n\nVia pip\n-------\n\n.. code-block:: bash\n\n    pip install credsweeper\n\n.. note::\n    If you didn't installed git, you may encounter the following error:\n    \n    .. code-block:: bash\n\n        ...\n\n        All git commands will error until this is rectified.\n\n        This initial warning can be silenced or aggravated in the future by setting the\n        $GIT_PYTHON_REFRESH environment variable. Use one of the following values:\n            - quiet|q|silence|s|none|n|0: for no warning or exception\n            - warn|w|warning|1: for a printed warning\n            - error|e|raise|r|2: for a raised exception\n\n        Example:\n            export GIT_PYTHON_REFRESH=quiet\n\n    If so, please install git.\n\n    .. code-block:: bash\n\n        sudo apt install git\n\n.. note::\n    Allows to use `ML model classifier <https://credsweeper.readthedocs.io/en/latest/overall_architecture.html#ml-validation>`_\n    to validate credential candidates, but requires setup of additional packages: numpy, scikit-learn and tensorflow.\n\nVia git clone (dev install)\n---------------------------\n\n.. code-block:: bash\n\n    git clone https://github.com/Samsung/CredSweeper.git\n    cd CredSweeper\n    # Annotate \"onnxruntime\" if you don't want to use the ML validation feature.\n    pip install -qr requirements.txt\n\nPre-commit git hook\n---------------------------\n    Install CredSweeper into system and copy ``pre-commit`` file in your ``.git/hooks`` repo.\n\n.. note::\n    CredSweeper must be available in current python environment.\n\n.. note::\n    pre-commit file context:\n.. code-block:: python\n\n    #!/usr/bin/env python\n    import io\n    import subprocess\n    import sys\n    \n    from credsweeper import CredSweeper\n    from credsweeper.common.constants import DiffRowType\n    from credsweeper.file_handler.patch_provider import PatchProvider\n    \n    \n    def main() -> int:\n        command = [\"git\", \"diff\", \"--cached\"]\n        with subprocess.Popen(command, stdout=subprocess.PIPE, stderr=subprocess.PIPE) as pipe:\n            _stdout, _stderr = pipe.communicate()\n            if pipe.returncode:\n                print(str(_stdout), flush=True)\n                print(str(_stderr), flush=True)\n                print(f\"{command} EXIT CODE:{pipe.returncode}\", flush=True)\n                return 1\n    \n        patch = io.BytesIO(_stdout)\n        added = PatchProvider([patch], change_type=DiffRowType.ADDED)\n        deleted = PatchProvider([patch], change_type=DiffRowType.DELETED)\n    \n        credsweeper = CredSweeper()\n    \n        if credsweeper.run(content_provider=deleted):\n            print(f\"CREDENTIALS FOUND IN DELETED CONTENT\", flush=True)\n            # return 1  # <<< UNCOMMENT THE LINE IF YOU WANT TO MANAGE DELETED CREDENTIALS\n    \n        if credsweeper.run(content_provider=added):\n            print(f\"CREDENTIALS FOUND IN ADDED CONTENT\", flush=True)\n            return 1\n    \n        return 0\n    \n    \n    if __name__ == \"__main__\":\n        sys.exit(main())\n\nOr use pre-commit with ``.pre-commit-config.yaml`` in your repo:\n\n.. code-block:: none\n\n    repos:\n    -   repo: https://github.com/Samsung/CredSweeper\n        rev: v1.10.6\n        hooks:\n        - id: CredSweeper\n\nInstall with: ``pre-commit install --install-hooks``\n"
  },
  {
    "path": "docs/source/overall_architecture.rst",
    "content": "Overall Architecture\n====================\n\nCredSweeper is largely composed of 3 parts as follows. (Pre-processing_, Scan_, `ML validation`_)\n\n.. image:: https://raw.githubusercontent.com/Samsung/CredSweeper/main/docs/images/Architecture.png\n\nPre-processing\n--------------\n\nWhen paths to scan are entered, get the files in that paths and the files are excluded based on the list created by `config.json <apps_config.html>`_.\n\n**config.json**\n\n- exclude\n   - pattern: Regex patterns to exclude scan.\n   - containers: Extensions in lower case of container files which might be scan with --depth option\n   - documents: Extensions in lower case of container files which might be scan with --doc and/or --depth option\n   - extension: Extensions in lower case to exclude scan.\n   - path: Paths to exclude scan.\n- source_ext: List of extensions for scanning categorized as source files.\n- source_quote_ext: List of extensions for scanning categorized as source files that using quote.\n- find_by_ext_list: List of extensions to detect only extensions.\n- check_for_literals: Bool value for whether to check line has string literal declaration or not.\n- line_data_output: List of attributes of `line_data <credsweeper.credentials.html#module-credsweeper.credentials.line_data>`_ for output.\n- candidate_output: List of attributes of `candidate <credsweeper.credentials.html#module-credsweeper.credentials.candidate>`_ for output.\n\n.. code-block:: text\n\n    ...\n    \"exclude\": {\n        \"pattern\": [\n            ...\n        ],\n        \"containers\": [\n            \".gz\",\n            \".zip\",\n            ...\n        ],\n        \"documents\": [\n            \".docx\",\n            \".pdf\",\n            ...\n        ],\n        \"extension\": [\n            \".7z\",\n            \".jpg\",\n            ...\n        ],\n        \"path\": [\n            \"/.git/\",\n            \"/.idea/\",\n            ...\n        ]\n    }\n    ...\n\nScan\n----\n\n\nBasically, scanning is performed for each file path, and it is performed based on the Rule_. Scanning method differs from scan type of the Rule_, which is assigned when the Rule_ is generated. There are 3 scan types: `SinglePattern <credsweeper.scanner.scan_type.html#module-credsweeper.scanner.scan_type.single_pattern>`_, `MultiPattern <credsweeper.scanner.scan_type.html#module-credsweeper.scanner.scan_type.multi_pattern>`_, and `PEMKeyPattern <credsweeper.scanner.scan_type.html#module-credsweeper.scanner.scan_type.pem_key_pattern>`_. Below is the description of the each scan type and its scanning method.\n\n- `SinglePattern <credsweeper.scanner.scan_type.html#module-credsweeper.scanner.scan_type.single_pattern>`_\n   - When : The Rule_ has only 1 pattern.\n   - How : Check if a single line Rule pattern present in the line.\n- `MultiPattern <credsweeper.scanner.scan_type.html#module-credsweeper.scanner.scan_type.multi_pattern>`_\n   - When : The Rule_ has 2 patterns.\n   - How : Check if a line is a part of a multi-line credential and the remaining part exists within 10 lines below.\n- `PEMKeyPattern <credsweeper.scanner.scan_type.html#module-credsweeper.scanner.scan_type.pem_key_pattern>`_\n   - When : The Rule_ type is `pem_key`.\n   - How : Check if a line’s entropy is high enough and the line have no substring with 5 same consecutive characters. (like 'AAAAA')\n\nRule\n----\n\nEach Rule_ is dedicated to detect a specific type of credential, imported from `config.yaml <rules_config.html>`_ at the runtime.\n\n**config.yaml**\n\n.. code-block:: yaml\n\n    ...\n    - name: API\n      severity: medium\n      confidence: moderate\n      type: keyword\n      values:\n        - api\n      filter_type: GeneralKeyword\n      use_ml: true\n      min_line_len: 11\n      required_substrings:\n        - api\n      target:\n        - code\n    ...\n\n**Rule Attributes** \n\n- severity\n   - `Severity <credsweeper.common.html#credsweeper.common.constants.Severity>`_\n\n    .. code-block:: python\n\n        ...\n        class Severity(Enum):\n            CRITICAL = \"critical\"\n            HIGH = \"high\"\n            MEDIUM = \"medium\"\n            LOW = \"low\"\n        ...\n\n- confidence\n   - `Confidence <credsweeper.common.html#credsweeper.common.constants.Confidence>`_ - The manually configured value indicates the confidence that the found candidate could be the credential type.\n\n    .. code-block:: python\n\n        ...\n        class Confidence(Enum):\n            STRONG = \"strong\"\n            MODERATE = \"moderate\"\n            WEAK = \"weak\"\n        ...\n\n- type\n   - `RuleType <credsweeper.common.html#credsweeper.common.constants.RuleType>`_\n    \n    .. code-block:: python\n\n        ...\n        class RuleType(Enum):\n            KEYWORD = \"keyword\"\n            PATTERN = \"pattern\"\n            PEM_KEY = \"pem_key\"\n            MULTI = \"multi\"\n        ...\n\n- values\n   - keyword : The keywords you want to detect. If you want to detect multiple keywords, you can write them as follows : `password|passwd|pwd`.\n   - pattern : The patterns you want to detect. For more accurate detection, it is recommended to specify `?P<value>` in the patterns : `(?P<value>AIza[0-9A-Za-z\\-_]{35})`.\n   - pem_key : Specific rule to find multiline PEM private keys.\n   - multi   : Two patterns you want to detect. Candidate will be found only if second pattern matched nearby.\n- filter_type\n   - The type of the Filter_ group you want to apply. Filter_ groups implemented are as follows: `GeneralKeyword <credsweeper.filters.group.html#module-credsweeper.filters.group.general_keyword>`_, `GeneralPattern <credsweeper.filters.group.html#module-credsweeper.filters.group.general_pattern>`_, `PasswordKeyword <credsweeper.filters.group.html#module-credsweeper.filters.group.password_keyword>`_, and `UrlCredentials <credsweeper.filters.group.html#module-credsweeper.filters.group.url_credentials_group>`_.\n- use_ml\n   - The attribute to set whether to perform ML validation. If true, ML validation will be performed. If false - ml_probability will be set to None in report.\n- min_line_len\n   - drop too short stripped lines before text search to increase performance\n- required_substrings\n   - any strings has to be found in a line before regex search to increase performance\n- target\n   - code : The rule will be applied without --doc option\n   - doc  : The rule will be applied with --doc option\n\nFilter\n------\n\nCheck the detected candidates from the formal step. If a candidate is caught by the Filter_, it is removed from the candidates set.\nThere are 21 filters and 4 filter groups. Filter_ group is a set of Filter_s, which is designed to use many Filter_s effectively at the same time.\n\nML validation\n-------------\n\nCredSweeper provides pre-trained ML models to filter false credential lines.\n`ML validation` is on by the default and its  sensitivity can be adjusted using ``--ml_threshold``:\n\n.. code-block:: text\n\n     --ml_threshold THRESHOLD_OR_FLOAT_OR_ZERO\n        setup threshold for the ml model.\n        The lower the threshold - the more credentials will be reported.\n        Allowed values: float between 0 and 1, or any of ['lowest', 'low', 'medium', 'high', 'highest']\n        (default: medium)\n\nAnd ML can be fully disable by setting ``--ml_threshold 0``\n\n.. code-block:: bash\n\n    python -m credsweeper --ml_threshold 0 ...\n\nOur ML model architecture is a combination of Bidirectional LSTM with additional handcrafted features.\nIt uses first 80 characters from the potential credential value and variable (if available), 160 characters from line around the value and configurable handcrafted features to decide if it's a real credential or not.\n\nExample (file leaked_cred.py):\n\n.. code-block:: python\n\n    my_db_password = \"NUU423cds\"\n\nSteps:\n\n1. Regular expression extracts ```NUU423cds``` as a secret value, ```my_db_password``` as a variable, and ```my_db_password = \"NUU423cds\"``` as whole line\n2. Handcrafted feature classes instantiated from classes in `features.py <https://github.com/Samsung/CredSweeper/blob/main/credsweeper/ml_model/features.py>`_ using `model_config.json <https://github.com/Samsung/CredSweeper/blob/6a2e575987448dd20895a8e72efb3b09fdcbecc2/credsweeper/ml_model/model_config.json#L10>`_. Instantiation process can be checked at `ml_validator.py#L46 <https://github.com/Samsung/CredSweeper/blob/main/credsweeper/ml_model/ml_validator.py#L46>`_. Features include: ``` ``` character in line: yes/no, ```(``` character in line: yes/no, file extension is ```.c```: yes/no, etc.\n3. Handcrafted features from step 2 used on line, value, variable, and filename to get feature vector of length 91\n4. ```NUU423cds``` Configurable character set is applied + 1 padding character + 1 special character for all other symbols. Padded line than `one-hot encoded <https://en.wikipedia.org/wiki/One-hot>`_. Link to corresponding code: `MlValidator.encode <https://github.com/Samsung/CredSweeper/blob/75df2ab8fc660df19523e939c538cdb0bbd7ce52/credsweeper/ml_model/ml_validator.py#L102>`_\n5. Padded line from step 4 inputted to Bidirectional LSTM of value. The same encodings are performed for variable and line. LSTM produce 3 single vectors of lengths 80, 80, 160 as outputs\n6. LSTM outputs and handcrafted features concatenated into a single vector\n7. The vector from step 6 is fed into a stack of two sequential Dense layers, each with the number of output units equal to the number of input units.\n8. Last layer outputs float value in range 0-1 with estimated probability of line being a real credential\n9. Predicted probability compared to the threshold (see `--ml_threshold` CLI option) and credential reported if predicted probability is greater\n\n.. image:: https://raw.githubusercontent.com/Samsung/CredSweeper/main/docs/images/Model_with_features.png\n\nAdditional:\n\n- Handcrafted features are based on the rules described in `\"Secrets in Source Code\" publication <https://ieeexplore.ieee.org/abstract/document/9027350>`_.\n\n.. code-block:: text\n\n    @INPROCEEDINGS{9027350,\n        author={Saha, Aakanksha and Denning, Tamara and Srikumar, Vivek and Kasera, Sneha Kumar},  \n        booktitle={2020 International Conference on COMmunication Systems   NETworkS (COMSNETS)},   \n        title={Secrets in Source Code: Reducing False Positives using Machine Learning},   \n        year={2020}, \n        pages={168-175},  \n        doi={10.1109/COMSNETS48256.2020.9027350}\n    }\n\n- Mapping between text threshold values and float can be found at `model_config.json#L2 <https://github.com/Samsung/CredSweeper/blob/6a2e575987448dd20895a8e72efb3b09fdcbecc2/credsweeper/ml_model/model_config.json#L2>`_. Values are based on F-0.25, F-0.5, F-1, F-2 and F-4 scores on `CredData test <https://github.com/Samsung/CredData/>`_\n"
  },
  {
    "path": "docs/source/rules_config.rst",
    "content": "Rules Configuration\n===================\n\n.. literalinclude:: ../../credsweeper/rules/config.yaml\n   :language: yaml\n   :linenos:\n"
  },
  {
    "path": "experiment/README.md",
    "content": "# Train credential detection model\n\nThis code will allow you to retrain model on the CredData dataset\n\n## Preparation\n\n- Make sure that you are using Python 3.10 or higher\n\n- Download CredData dataset\n\n```bash\ngit clone https://github.com/Samsung/CredData\ncd CredData\npython download_data.py --data_dir data\n```\n\n- Go back to `CredSweeper/experiment` directory\n- Install the additional requirements\n\n```bash\npip install -r requirements.txt\n``` \n\n- Make sure that `credsweeper` in the `PYTHONPATH`. You can add it with \n\n```bash\nexport PYTHONPATH=<CredSweeper directory>:$PYTHONPATH\n``` \n\nExample:\n\n```bash\nexport PYTHONPATH=/home/user/code/CredSweeper:$PYTHONPATH\n``` \n\n## Run\n\n- Launch the experiment with\n\n```bash\npython main.py --data <CredData location> -j <num parallel process to run>\n```\n\nExample:\n\n```bash\npython main.py --data /home/user/datasets/CredData -j 16\n``` \n\n- Resulting model will be saved to `results/ml_model_at-<date_time>`.\nYou now can convert the model to onnx:\n\n```bash\npython -m tf2onnx.convert --saved-model results/ml_model_at-20240225_111951 --output ../credsweeper/ml_model/ml_model.onnx --verbose\n```\n\n"
  },
  {
    "path": "experiment/__init__.py",
    "content": ""
  },
  {
    "path": "experiment/data_loader.py",
    "content": "import contextlib\nimport json\nimport os\nimport pathlib\nfrom copy import deepcopy\nfrom functools import cache\nfrom typing import Tuple, Dict, Set, Any\n\nimport numpy as np\nimport pandas as pd\nfrom colorama import Fore, Style, Back\n\nfrom credsweeper.common.constants import ML_HUNK\nfrom credsweeper.utils.util import Util\n\n# path, line, val_start, val_end\nidentifier = Tuple[str, int, int, int]\n\n\ndef transform_to_meta_path(file_path: pathlib.Path):\n    \"\"\"Transform any path to '......./data/xxxxxxxx/[type]...../yyyyyyyy.ext' to find in meta markup\"\"\"\n    file_path = pathlib.Path(file_path).as_posix()\n    path_list = file_path.split('/')\n    assert path_list.count(\"data\") == 1, file_path  # only one \"data\" directory allowed\n    meta_path = \"\"\n    for n, x in enumerate(path_list):\n        if x == \"data\":\n            meta_path = '/'.join(path_list[n:])\n            break\n    assert meta_path, f\"data dir was not found in {file_path}\"  # just extra check\n    return meta_path\n\n\ndef read_detected_data(file_path: pathlib.Path) -> Dict[identifier, Dict]:\n    print(f\"Reading detections from {file_path}\", flush=True)\n    with open(file_path) as f:\n        detections = json.load(f)\n\n    detected_lines = {}\n\n    for cred in detections:\n        rule_name = cred[\"rule\"]\n        # skip not ML values like private keys and so on. Unsupported for ml train. \"use_ml\" rules ONLY\n        assert 0 < len(cred[\"line_data_list\"]), cred  # at least, one line_data_list must present\n        line_data = deepcopy(cred[\"line_data_list\"][0])\n        line_data.pop(\"entropy\")\n        line_data.pop(\"info\")\n        line_data[\"line\"] = None  # will be read during join_label with data for ML input only\n        meta_path = transform_to_meta_path(line_data[\"path\"])\n        line_data[\"path\"] = meta_path\n        line_data[\"RuleName\"] = [rule_name]\n\n        index = meta_path, line_data[\"line_num\"], line_data[\"value_start\"], line_data[\"value_end\"]\n        if index not in detected_lines:\n            detected_lines[index] = line_data\n        else:\n            detected_lines[index][\"RuleName\"].append(rule_name)\n\n    print(f\"Detected {len(detected_lines)} unique lines!\", flush=True)\n    print(f\"{len(detections)} detections in total\", flush=True)\n\n    return detected_lines\n\n\ndef read_metadata(meta_dir: str) -> Dict[identifier, Dict]:\n    print(f\"Reading meta from {meta_dir}\", flush=True)\n    meta_lines = {}\n    j = 0\n\n    for file_path in os.listdir(meta_dir):\n        csv_file = os.path.join(meta_dir, file_path)\n        if not file_path.endswith(\".csv\"):\n            print(f\"skip garbage: {csv_file}\", flush=True)\n            continue\n        try:\n            df = pd.read_csv(csv_file,\n                             dtype={\n                                 \"RepoName\": str,\n                                 \"GroundTruth\": str,\n                                 \"Category\": str,\n                                 \"LineStart\": \"Int64\",\n                                 \"LineEnd\": \"Int64\",\n                                 \"ValueStart\": \"Int64\",\n                                 \"ValueEnd\": \"Int64\",\n                             })\n        except Exception as exc:\n            print(csv_file, exc, flush=True)\n            raise\n        # Int64 is important to change with NaN\n        df[\"LineStart\"] = df[\"LineStart\"].fillna(-1).astype(int)\n        df[\"LineEnd\"] = df[\"LineEnd\"].fillna(-1).astype(int)\n        df[\"ValueStart\"] = df[\"ValueStart\"].fillna(-1).astype(int)\n        df[\"ValueEnd\"] = df[\"ValueEnd\"].fillna(-1).astype(int)\n        # all templates are false\n        df.loc[df[\"GroundTruth\"] != 'T', \"GroundTruth\"] = 'F'\n        for _, row in df.iterrows():\n            j += 1\n            if row[\"LineStart\"] != row[\"LineEnd\"] \\\n                    or all(x in [\"AWS Multi\", \"Google Multi\"] for x in row[\"Category\"].split(':')):\n                # print(f\"WARNING: skip not ml category {row['FilePath']},{line_start},{line_end}\"\n                #      f\",{row['GroundTruth']},{row['Category']}\", flush=True)\n                continue\n            assert 'F' == row[\"GroundTruth\"] or 'T' == row[\"GroundTruth\"] and 0 <= row[\"ValueStart\"], row\n\n            meta_path = transform_to_meta_path(row[\"FilePath\"])\n            index = meta_path, row['LineStart'], row['ValueStart'], row['ValueEnd']\n            if index not in meta_lines:\n                row_data = row.to_dict()\n                row_data[\"Used\"] = False\n                row_data[\"FilePath\"] = meta_path\n                meta_lines[index] = row_data\n            else:\n                print(\n                    f\"WARNING: {index} already in meta_lines {row['GroundTruth']} {row['Category']}\"\n                    f\"\\n{meta_lines[index]}\",\n                    flush=True)\n\n    print(f\"Loaded {len(meta_lines)} lines from meta of {j} total\", flush=True)\n\n    return meta_lines\n\n\ndef get_colored_line(line_data: Dict[str, Any]) -> str:\n    val_start = int(line_data['value_start'])\n    val_end = int(line_data['value_end'])\n    colored_line = line_data['line'][:val_start] \\\n                   + Fore.LIGHTYELLOW_EX \\\n                   + line_data['line'][val_start:val_end] \\\n                   + Style.RESET_ALL \\\n                   + line_data['line'][val_end:]\n\n    with contextlib.suppress(Exception):\n        var_start = int(line_data['variable_start'])\n        var_end = int(line_data['variable_end'])\n        if 0 <= var_start < var_end:\n            colored_line = colored_line[:var_start] \\\n                           + Fore.LIGHTBLUE_EX \\\n                           + colored_line[var_start:var_end] \\\n                           + Style.RESET_ALL \\\n                           + colored_line[var_end:]\n\n    colored_sub_line = Util.subtext(colored_line, line_data['value_start'], ML_HUNK)\n    return f\"{colored_sub_line}{Style.RESET_ALL}\"\n\n\ndef join_label(detected_data: Dict[identifier, Dict], meta_data: Dict[identifier, Dict],\n               cred_data_location: str) -> pd.DataFrame:\n\n    @cache\n    def read_text(path) -> list[str]:\n        with open(path, \"r\", encoding=\"utf8\") as f:\n            return f.read().replace(\"\\r\\n\", '\\n').replace('\\r', '\\n').split('\\n')\n\n    positive_lines = set((x[0], x[1]) for x, y in meta_data.items() if 'T' == y[\"GroundTruth\"])\n    values = []\n    detected_rules: Set[str] = set()\n    for index, line_data in detected_data.items():\n        for i in line_data[\"RuleName\"]:\n            detected_rules.add(i)\n        text = read_text(f'{cred_data_location}/{line_data[\"path\"]}')\n        line = text[line_data[\"line_num\"] - 1]\n        line_data[\"line\"] = line\n        if not line_data[\"value\"]:\n            print(f\"WARNING: empty value\\n{line_data}\", flush=True)\n            continue\n        label = False\n        if markup := meta_data.get(index):\n            # it means index in meta_data with exactly match\n            if 'T' == markup[\"GroundTruth\"]:\n                label = True\n            markup[\"Used\"] = True\n            markup_rules = markup[\"Category\"].split(':')\n            if not set(markup_rules).intersection(set(line_data[\"RuleName\"])):\n                print(f\"1.CHECK CATEGORIES\\n{markup_rules}, {line_data['RuleName']}\\n{str(markup)}\" +\n                      get_colored_line(line_data),\n                      flush=True)\n        elif markup := meta_data.get((index[0], index[1], index[2], -1)):\n            # perhaps, the line has only start markup - so value end position is -1\n            if 'T' == markup[\"GroundTruth\"]:\n                label = True\n            markup[\"Used\"] = True\n            markup_rules = markup[\"Category\"].split(':')\n            if not set(markup[\"Category\"].split(':')).intersection(set(line_data[\"RuleName\"])):\n                print(f\"2.CHECK CATEGORIES\\n{markup_rules}, {line_data['RuleName']}\\n{str(markup)}\" +\n                      get_colored_line(line_data),\n                      flush=True)\n        elif markup := meta_data.get((index[0], index[1], -1, -1)):\n            # perhaps, the line has false markup - so value start-end position is -1, -1\n            if 'T' == markup[\"GroundTruth\"]:\n                raise RuntimeError(f\"ERROR: markup {markup} cannot be TRUE\\n{line_data}\")\n            markup[\"Used\"] = True\n            markup_rules = markup[\"Category\"].split(':')\n            if not set(markup[\"Category\"].split(':')).intersection(set(line_data[\"RuleName\"])):\n                print(f\"3.CHECK CATEGORIES\\n{markup_rules}, {line_data['RuleName']}\\n{str(markup)}\" +\n                      get_colored_line(line_data),\n                      flush=True)\n        elif (index[0], index[1]) in positive_lines:\n            print(f\"WARNING: {index} is not in meta!!! {Fore.LIGHTRED_EX}CHECK THE NEGATIVE CASE{Style.RESET_ALL}\\n\" +\n                  get_colored_line(line_data),\n                  flush=True)\n        else:\n            print(f\"WARNING: {index} is not in meta!!! IT WILL BE USED AS NEGATIVE CASE\\n\" +\n                  get_colored_line(line_data),\n                  flush=True)\n        # check the value in detected data\n        assert line[line_data[\"value_start\"]:line_data[\"value_end\"]] == line_data[\"value\"], (\n            line_data, line[line_data[\"value_start\"]:line_data[\"value_end\"]], line_data[\"value\"])\n        # todo: variable input has to be markup in meta too, or/and new feature \"VariableExists\" created ???\n        line_data[\"GroundTruth\"] = label\n        # auxiliary field for model_config_preprocess\n        # no extra memory usage due the dataframe is deleted before train\n        line_data[\"ext\"] = Util.get_extension(line_data[\"path\"])\n        values.append(line_data)\n\n    all_meta_found = True\n    for markup in meta_data.values():\n        if 'T' == markup[\"GroundTruth\"] and not markup[\"Used\"]:\n            for markup_rule in markup[\"Category\"].split(':'):\n                if markup_rule in detected_rules:\n                    if all_meta_found:\n                        # print header of the markup once\n                        print(f\"{Back.MAGENTA}{Fore.BLACK}WARNING: Not all TRUE meta found!{Style.RESET_ALL}\",\n                              flush=True)\n                        print(','.join(markup.keys()), flush=True)\n                        all_meta_found = False\n                    print(','.join(str(x) for x in markup.values()), flush=True)\n                    text = read_text(f'{cred_data_location}/{markup[\"FilePath\"]}')\n                    line = text[markup[\"LineStart\"] - 1]\n                    if 0 <= markup[\"ValueStart\"] and 0 <= markup[\"ValueEnd\"]:\n                        line = line[:markup[\"ValueStart\"]] \\\n                               + Fore.LIGHTGREEN_EX \\\n                               + line[markup[\"ValueStart\"]:markup[\"ValueEnd\"]] \\\n                               + Style.RESET_ALL \\\n                               + line[markup[\"ValueEnd\"]:]\n                    elif 0 <= markup[\"ValueStart\"]:\n                        line = line[:markup[\"ValueStart\"]] \\\n                               + Fore.LIGHTGREEN_EX \\\n                               + line[markup[\"ValueStart\"]:] \\\n                               + Style.RESET_ALL\n                    print(line, flush=True)\n                    break\n    read_text.cache_clear()\n    df = pd.DataFrame(values)\n    print(f\"Initial full dataset: {len(df)} items\\n{df.memory_usage(deep=True)}\", flush=True)\n    df = df.drop_duplicates(subset=[\"line\", \"variable\", \"value\", \"path\"])\n    print(f\"Full dataset: {len(df)} items after drop duplicates\\n{df.memory_usage(deep=True)}\", flush=True)\n    return df\n\n\ndef get_y_labels(df: pd.DataFrame) -> np.ndarray:\n    true_cases = np.array(df[\"GroundTruth\"], dtype=np.float32)\n    return true_cases\n"
  },
  {
    "path": "experiment/evaluate_model.py",
    "content": "from typing import List\n\nimport numpy as np\nfrom keras import Model  # type: ignore\nfrom sklearn.metrics import f1_score, precision_score, recall_score, log_loss, accuracy_score\n\n\ndef evaluate_model(thresholds: dict, keras_model: Model, x_data: List[np.ndarray], y_label: np.ndarray):\n    \"\"\"Evaluate Keras model with printing scores\n\n    Args:\n        thresholds: dict of credsweeper thresholds\n        keras_model: fitted keras model\n        x_data: List of np.arrays. Number and shape depends on model\n        y_label: expected result\n\n    \"\"\"\n    predictions_proba = keras_model.predict(x_data, verbose=2).ravel()\n    for name, threshold in thresholds.items():\n        predictions = (predictions_proba > threshold)\n        accuracy = accuracy_score(y_label, predictions)\n        precision = precision_score(y_label, predictions)\n        recall = recall_score(y_label, predictions)\n        loss = log_loss(y_label, predictions)\n        f1 = f1_score(y_label, predictions)\n        print(\n            f\"{name}: {threshold:0.6f}, \"\n            f\"accuracy: {accuracy:0.6f}, \"\n            f\"precision:{precision:0.6f}, \"\n            f\"recall: {recall:0.6f}, \"\n            f\"loss: {loss:0.6f}, \"\n            f\"F1:{f1:0.6f}\",\n            flush=True)\n"
  },
  {
    "path": "experiment/features.py",
    "content": "from typing import Tuple, Union\n\nimport numpy as np\nimport pandas as pd\n\nfrom credsweeper.common.constants import Severity, ML_HUNK\nfrom credsweeper.credentials.candidate import Candidate\nfrom credsweeper.credentials.line_data import LineData\nfrom credsweeper.ml_model.ml_validator import MlValidator\nfrom credsweeper.utils.util import Util\n\n\nclass CustomLineData(LineData):\n    \"\"\"Object that allows to create LineData from scanner results\"\"\"\n\n    def __init__(\n            self,  #\n            line: str,  #\n            value: str,  #\n            line_num: int,  #\n            path: str,  #\n            variable: str,  #\n            value_start: int,  #\n            value_end: int,  #\n            variable_start: int,  #\n            variable_end: int,  #\n    ) -> None:\n        self.line: str = line\n        self.line_num: int = line_num\n        self.path: str = path\n        self.value = value\n        self.file_type = Util.get_extension(path)\n        self.variable = variable\n        self.value_start = value_start\n        self.value_end = value_end if value_start < value_end else value_start + len(value)\n        self.variable_start = variable_start\n        self.variable_end = variable_end\n\n\ndef get_candidates(line_data: dict):\n    \"\"\"Get list of candidates. 1 candidate for each rule that detected this line\"\"\"\n    ld = CustomLineData(line=line_data[\"line\"],\n                        value=line_data[\"value\"],\n                        line_num=line_data[\"line_num\"],\n                        path=line_data[\"path\"],\n                        variable=line_data[\"variable\"],\n                        value_start=line_data[\"value_start\"],\n                        value_end=line_data[\"value_end\"],\n                        variable_start=line_data[\"variable_start\"],\n                        variable_end=line_data[\"variable_end\"])\n    candidates = []\n    for rule in line_data[\"RuleName\"]:\n        candidates.append(\n            Candidate(\n                line_data_list=[ld],\n                patterns=[],\n                rule_name=rule,\n                severity=Severity.MEDIUM,\n                use_ml=True,\n            ))\n    return candidates\n\n\ndef get_features(line_data: Union[dict, pd.Series],\n                 ml_validator: MlValidator) -> Tuple[np.ndarray, np.ndarray, np.ndarray, np.ndarray]:\n    \"\"\"Get features from a single detection using CredSweeper.MlValidator module\"\"\"\n\n    candidates = get_candidates(line_data)\n\n    line_input = ml_validator.encode_line(line_data[\"line\"], line_data[\"value_start\"])\n    if variable := line_data[\"variable\"]:\n        if len(variable) > ML_HUNK:\n            variable = variable[:ML_HUNK]\n        variable_input = ml_validator.encode_value(variable)\n    else:\n        variable_input = ml_validator.encode_value('')\n\n    if value := line_data[\"value\"]:\n        if len(value) > ML_HUNK:\n            value = value[:ML_HUNK]\n        value_input = ml_validator.encode_value(value)\n    else:\n        raise RuntimeError(f\"Empty value is not allowed {line_data}\")\n\n    line = line_data[\"line\"]\n    assert line[line_data[\"value_start\"]:].startswith(line_data[\"value\"]), line_data\n\n    extracted_features = ml_validator.extract_features(candidates)\n\n    return line_input, variable_input, value_input, extracted_features\n\n\ndef prepare_data(df: pd.DataFrame) -> Tuple[np.ndarray, np.ndarray, np.ndarray, np.ndarray]:\n    \"\"\"Get features from a DataFrame detection using CredSweeper.MlValidator module\"\"\"\n\n    ml_validator = MlValidator(0.5)  # MLValidator object loads config (MAY be updated!) with features\n\n    x_size = len(df)\n    x_line_input = np.zeros(shape=[x_size, MlValidator.MAX_LEN, ml_validator.num_classes], dtype=np.float32)\n    x_variable_input = np.zeros(shape=[x_size, ML_HUNK, ml_validator.num_classes], dtype=np.float32)\n    x_value_input = np.zeros(shape=[x_size, ML_HUNK, ml_validator.num_classes], dtype=np.float32)\n    # features size preprocess to calculate the dimension automatically\n    features = get_features(  #\n        line_data={  #\n            \"path\": \"\",  #\n            \"line_num\": 1,  #\n            \"line\": \"const API=123;\",  #\n            \"value\": \"123\",  #\n            \"value_start\": 10,  #\n            \"value_end\": 13,  #\n            \"variable\": \"API\",  #\n            \"variable_start\": 6,  #\n            \"variable_end\": 9,  #\n            \"RuleName\": [\"API\"],  #\n        },  #\n        ml_validator=ml_validator)\n    features_size = features[3].shape[1]\n    print(f\"Features size: {features_size}\", flush=True)\n    x_features = np.zeros(shape=[x_size, features_size], dtype=np.float32)\n    n = 0\n    for i, row in df.iterrows():\n        assert bool(row[\"line\"]) and bool(row[\"value\"]), row\n        line_input, variable_input, value_input, extracted_features = get_features(row, ml_validator)\n        x_line_input[n] = line_input\n        x_variable_input[n] = variable_input\n        x_value_input[n] = value_input\n        x_features[n] = extracted_features\n        n += 1\n    return x_line_input, x_variable_input, x_value_input, x_features\n"
  },
  {
    "path": "experiment/hyperparameters.py",
    "content": "HP_DICT = {\n    \"line_lstm_dropout_rate\": ((0.4, 0.5, 0.01), 0.47),\n    \"variable_lstm_dropout_rate\": ((0.4, 0.5, 0.01), 0.42),\n    \"value_lstm_dropout_rate\": ((0.4, 0.5, 0.01), 0.47),\n    \"dense_a_drop\": ((0.0, 0.3, 0.01), 0.21),\n    \"dense_b_drop\": ((0.0, 0.3, 0.01), 0.23),\n}\n"
  },
  {
    "path": "experiment/log_callback.py",
    "content": "import datetime\n\nimport psutil\nfrom keras.src.callbacks import Callback\n\n\nclass LogCallback(Callback):\n\n    def __init__(self):\n        super().__init__()\n\n    @staticmethod\n    def get_memory_info():\n        process = psutil.Process()\n        memory_info = process.memory_info()\n        return str(memory_info)\n\n    def on_epoch_end(self, epoch, logs=None):\n        print(str(datetime.datetime.now()), flush=True)\n        print(f\"{epoch + 1}:{self.get_memory_info()}\", flush=True)\n        print(logs, flush=True)\n"
  },
  {
    "path": "experiment/main.py",
    "content": "import os\nimport random\nimport sys\nfrom argparse import ArgumentParser, BooleanOptionalAction\n\nfrom train import train\n\n\ndef main(argv) -> int:\n    parser = ArgumentParser()\n    parser.add_argument(\"-d\",\n                        \"--data\",\n                        nargs=\"?\",\n                        help=\"CredData location\",\n                        dest=\"cred_data_location\",\n                        metavar=\"PATH\",\n                        required=True)\n    parser.add_argument(\"-j\",\n                        \"--jobs\",\n                        help=\"number of parallel processes to use (default: 4)\",\n                        default=4,\n                        dest=\"jobs\",\n                        metavar=\"POSITIVE_INT\")\n    parser.add_argument(\"-e\",\n                        \"--epochs\",\n                        help=\"maximal epochs to train (default: 100)\",\n                        default=100,\n                        dest=\"epochs\",\n                        metavar=\"POSITIVE_INT\")\n    parser.add_argument(\"-b\",\n                        \"--batch_size\",\n                        help=\"batch size (default: 256)\",\n                        default=256,\n                        dest=\"batch_size\",\n                        metavar=\"POSITIVE_INT\")\n    parser.add_argument(\"-p\",\n                        \"--patience\",\n                        help=\"early stopping patience (default: 5)\",\n                        default=5,\n                        dest=\"patience\",\n                        metavar=\"POSITIVE_INT\")\n    parser.add_argument(\"--doc\", help=\"use doc target\", dest=\"doc_target\", action=BooleanOptionalAction, default=False)\n    parser.add_argument(\"--tuner\",\n                        help=\"use keras tuner\",\n                        dest=\"use_tuner\",\n                        action=BooleanOptionalAction,\n                        default=False)\n    parser.add_argument(\"--eval-test\",\n                        help=\"evaluate model for test dataset\",\n                        dest=\"eval_test\",\n                        action=BooleanOptionalAction,\n                        default=False)\n    parser.add_argument(\"--eval-train\",\n                        help=\"evaluate model for train dataset\",\n                        dest=\"eval_train\",\n                        action=BooleanOptionalAction,\n                        default=False)\n    parser.add_argument(\"--eval-full\",\n                        help=\"evaluate model for full dataset after train\",\n                        dest=\"eval_full\",\n                        action=BooleanOptionalAction,\n                        default=False)\n    args = parser.parse_args(argv[1:])\n\n    fixed_seed = 20251216\n    print(f\"Fixed seed:{fixed_seed}\", flush=True)\n    random.seed(fixed_seed)\n\n    print(args, flush=True)  # dbg\n    _model_file_name = train(\n        cred_data_location=args.cred_data_location,\n        jobs=int(args.jobs),\n        epochs=int(args.epochs),\n        batch_size=int(args.batch_size),\n        patience=int(args.patience),\n        doc_target=bool(args.doc_target),\n        use_tuner=bool(args.use_tuner),\n        eval_test=bool(args.eval_test),\n        eval_train=bool(args.eval_train),\n        eval_full=bool(args.eval_full),\n    )\n    if os.path.exists(_model_file_name):\n        # print in last line the name\n        print(f\"\\nYou can find your model in:\\n{_model_file_name}\", flush=True)\n        return 0\n    print(f\"Error: {_model_file_name}\", flush=True)\n    return 1\n\n\nif __name__ == \"__main__\":\n    sys.exit(main(sys.argv))\n"
  },
  {
    "path": "experiment/main.sh",
    "content": "#!/usr/bin/env bash\n\nset -ex\n\nSTART_TIME=$(date +%s)\nNOW=$(date +%Y%m%d_%H%M%S)\necho \">>> START ${BASH_SOURCE[0]} in $(pwd) at ${NOW}\"\n\nfree --wide --human\n\n# use the path environments without / at end\n\necho \"CREDSWEEPER_DIR='${CREDSWEEPER_DIR}'\"\nif [ -z \"${CREDSWEEPER_DIR}\" ] || [ ! -d \"${CREDSWEEPER_DIR}\" ]; then\n    echo \"CREDSWEEPER_DIR environment is empty or does not exist\"\n    exit 1\nfi\n\nexport PYTHONPATH=\"${CREDSWEEPER_DIR}\":$PYTHONPATH\n# check current version of CredSweeper\n\"${CREDSWEEPER_DIR}\"/.venv/bin/python -m credsweeper --banner\ngit log -1\ngit status\n\n\necho \"CREDDATA_DIR='${CREDDATA_DIR}'\"\nif [ -z \"${CREDDATA_DIR}\" ] || [ ! -d \"${CREDDATA_DIR}\" ]; then\n    echo \"CREDDATA_DIR environment is empty or does not exist\"\n    exit 1\nfi\n\n# do some check in CredData repo\n(cd \"${CREDDATA_DIR}\" && git log -1 && git status)\n\necho \"JOBS=${JOBS} of $(nproc)\"\nif [ -z \"${JOBS}\" ]; then\n    JOBS=$(nproc)\n    echo \"Used JOBS=${JOBS} for multiple process\"\nelif [ ! 0 -lt ${JOBS} ]; then\n    echo \"Unappropriated JOBS=${JOBS}\"\n    exit 1\nfi\n\necho \"BATCH=${BATCH}\"\nif [ -z \"${BATCH}\" ]; then\n    BATCH=256\n    echo \"Used BATCH=${BATCH}\"\nelif [ ! 0 -lt ${JOBS} ]; then\n    echo \"Unappropriated BATCH=${BATCH}\"\n    exit 1\nfi\n\n\nWORK_DIR=\"${CREDSWEEPER_DIR}/experiment\"\ncd \"${WORK_DIR}\"\nRESULT_DIR=\"${WORK_DIR}/results\"\nmkdir -vp \"${RESULT_DIR}\"\n\n# set env TUNER to use keras-tuner\n#TUNER=--tuner\n# set env DOC to apply doc dataset\n#DOC=--doc\n\"${CREDSWEEPER_DIR}\"/.venv/bin/python main.py --data \"${CREDDATA_DIR}\" --jobs ${JOBS} ${TUNER} ${DOC} --batch_size ${BATCH} | tee \"${RESULT_DIR}/${NOW}.train.log\"\nerror_code=${PIPESTATUS}\nif [ 0 -ne ${error_code} ]; then exit ${error_code}; fi\n\ncd \"${CREDSWEEPER_DIR}\"\nreport_file=${RESULT_DIR}/${NOW}.json\nif [ -z \"${TESTDATA_DIR}\" ]; then\n    echo \"Used CREDDATA_DIR=${CREDDATA_DIR} for BenchMark and train rules only\"\n    ${CREDSWEEPER_DIR}/.venv/bin/python -m credsweeper ${DOC} --sort  --rules ${CREDSWEEPER_DIR}/experiment/results/train_config.yaml --path \"${CREDDATA_DIR}/data\" --log info --jobs ${JOBS}  --subtext --save-json ${report_file} --no-stdout\n    cd \"${CREDDATA_DIR}\"\nelse\n    echo \"TESTDATA_DIR=${TESTDATA_DIR}\"\n    ${CREDSWEEPER_DIR}/.venv/bin/python -m credsweeper ${DOC} --sort --path \"${TESTDATA_DIR}/data\" --log info --jobs ${JOBS}  --subtext --save-json ${report_file} --no-stdout\n    cd \"${TESTDATA_DIR}\"\nfi\n\n.venv/bin/python -m benchmark --scanner credsweeper --load ${report_file} | tee ${CREDSWEEPER_DIR}/.ci/benchmark.txt\n\nSPENT_SECONDS=$(( $(date +%s) - ${START_TIME} ))\nif [ 86400 -lt ${SPENT_SECONDS} ];then\n    SPENT_TIME=$(date -ud \"@${SPENT_SECONDS}\" +\"$(( ${SPENT_SECONDS} / 86400 ))-%H:%M:%S\")\nelse\n    SPENT_TIME=$(date -ud \"@${SPENT_SECONDS}\" +\"%H:%M:%S\")\nfi\necho \"<<< DONE ${BASH_SOURCE[0]} in $(pwd) at $(date) elapsed ${SPENT_TIME}\"\n"
  },
  {
    "path": "experiment/ml_model.py",
    "content": "from typing import Any, Optional\n\nimport keras_tuner as kt\nfrom tensorflow.keras.layers import Dense, LSTM, Bidirectional, Input, Concatenate, Dropout\nfrom tensorflow.keras.models import Model\nfrom tensorflow.keras.optimizers import Adam\nfrom tensorflow.python.keras.layers import ReLU, Softmax, Multiply\nfrom tensorflow.python.keras.metrics import BinaryAccuracy, Precision, Recall\n\nfrom credsweeper.common.constants import ML_HUNK\nfrom credsweeper.ml_model.ml_validator import MlValidator\n\n\nclass MlModel(kt.HyperModel):\n    d_type = \"float32\"\n\n    def __init__(self, line_shape: tuple, variable_shape: tuple, value_shape: tuple, feature_shape: tuple, **kwargs):\n        self.line_shape = line_shape\n        self.variable_shape = variable_shape\n        self.value_shape = value_shape\n        self.feature_shape = feature_shape\n        self.__kwargs = kwargs\n\n    def get_hyperparam(self, param_name: str, hp=None) -> Any:\n        if param_name in self.__kwargs:\n            param = self.__kwargs.get(param_name)\n            if isinstance(param, float):\n                print(f\"'{param_name}' constant = {param}\", flush=True)\n                return param\n            elif hp and isinstance(param, tuple) and 3 == len(param):\n                print(f\"'{param_name}' tuning = {param}\", flush=True)\n                return hp.Float(param_name, min_value=param[0], max_value=param[1], step=param[2])\n            else:\n                raise ValueError(f\"'{param_name}' was not inited well {param} tuner is {hp}\")\n        else:\n            raise ValueError(f\"'{param_name}' was not defined during init and tuner is used\")\n\n    def build(self, hp: Optional[Any]) -> Model:\n        \"\"\"Get keras model with string and feature input and single binary out\"\"\"\n        line_lstm_dropout_rate = self.get_hyperparam(\"line_lstm_dropout_rate\", hp)\n        variable_lstm_dropout_rate = self.get_hyperparam(\"variable_lstm_dropout_rate\", hp)\n        value_lstm_dropout_rate = self.get_hyperparam(\"value_lstm_dropout_rate\", hp)\n        dense_a_drop = self.get_hyperparam(\"dense_a_drop\", hp)\n        dense_b_drop = self.get_hyperparam(\"dense_b_drop\", hp)\n\n        line_input = Input(shape=(None, self.line_shape[2]), name=\"line_input\", dtype=self.d_type)\n        line_lstm = LSTM(units=self.line_shape[1],\n                         dtype=self.d_type,\n                         dropout=line_lstm_dropout_rate,\n                         recurrent_dropout=0)\n        line_bidirectional = Bidirectional(layer=line_lstm, name=\"line_bidirectional\")\n        line_lstm_branch = line_bidirectional(line_input)\n\n        variable_input = Input(shape=(None, self.variable_shape[2]), name=\"variable_input\", dtype=self.d_type)\n        variable_lstm = LSTM(units=self.variable_shape[1],\n                             dtype=self.d_type,\n                             dropout=variable_lstm_dropout_rate,\n                             recurrent_dropout=0)\n        variable_bidirectional = Bidirectional(layer=variable_lstm, name=\"variable_bidirectional\")\n        variable_lstm_branch = variable_bidirectional(variable_input)\n\n        value_input = Input(shape=(None, self.value_shape[2]), name=\"value_input\", dtype=self.d_type)\n        value_lstm = LSTM(units=self.value_shape[1],\n                          dtype=self.d_type,\n                          dropout=value_lstm_dropout_rate,\n                          recurrent_dropout=0)\n        value_bidirectional = Bidirectional(layer=value_lstm, name=\"value_bidirectional\")\n        value_lstm_branch = value_bidirectional(value_input)\n\n        feature_input = Input(shape=(self.feature_shape[1], ), name=\"feature_input\", dtype=self.d_type)\n        feature_attention = Dense(self.feature_shape[1], activation=Softmax(), use_bias=False,\n                                  name=\"feature_attention\")(feature_input)\n        x_scaled = Multiply(name=\"feature_multiply\")([feature_input, feature_attention])\n\n        joined_features = Concatenate()([line_lstm_branch, variable_lstm_branch, value_lstm_branch, x_scaled])\n\n        # 3 bidirectional + features\n        dense_units = 2 * MlValidator.MAX_LEN + 2 * 2 * ML_HUNK + self.feature_shape[1]\n        # check after model compilation. Should be matched the combined size.\n\n        # first hidden layer\n        dense_a = Dense(units=dense_units, activation=ReLU(), name=\"a_dense\", dtype=self.d_type)(joined_features)\n        drop_a = Dropout(name=\"a_drop\", rate=dense_a_drop)(dense_a)\n\n        # second hidden layer\n        dense_b = Dense(units=dense_units, activation=ReLU(), name=\"b_dense\", dtype=self.d_type)(drop_a)\n        drop_b = Dropout(name=\"b_drop\", rate=dense_b_drop)(dense_b)\n\n        dense_final = Dense(units=1, activation='sigmoid', name=\"prediction\", dtype=self.d_type)(drop_b)\n\n        metrics = [BinaryAccuracy(name=\"binary_accuracy\"), Precision(name=\"precision\"), Recall(name=\"recall\")]\n\n        model: Model = Model(inputs=[line_input, variable_input, value_input, feature_input], outputs=dense_final)\n        model.compile(optimizer=Adam(), loss='binary_crossentropy', metrics=metrics)\n        model.summary(line_length=120, expand_nested=True, show_trainable=True)\n\n        return model\n"
  },
  {
    "path": "experiment/model_config_preprocess.py",
    "content": "import mimetypes\nfrom typing import Dict\n\nimport pandas as pd\n\nfrom credsweeper.app import APP_PATH\nfrom credsweeper.utils.util import Util\n\nML_CONFIG_PATH = APP_PATH / \"ml_model\" / \"ml_config.json\"\n\n\ndef model_config_preprocess(df_all: pd.DataFrame, doc_target: bool) -> Dict[str, float]:\n    model_config = Util.json_load(ML_CONFIG_PATH)\n    ascii_char_set = ''.join(chr(x) for x in range(0x20, 0x7F))\n    extra_char_set = \"\\x1B\\t\\n\\r\"  # ESC code, tab and line end variations\n    doc_char_set = \" ●가개공기께내는님당드등따로메면문밀방번보복본비사생서석성슈스시암에요용워으의이작정주지채체큰키토팅패필하할호화\" if doc_target else ''\n    model_config[\"char_set\"] = extra_char_set + ascii_char_set + doc_char_set\n\n    # check whether all extensions from meta are in ml_config.json\n\n    for x in model_config[\"features\"]:\n        if \"FileExtension\" == x[\"type\"]:\n            config_extensions = x[\"kwargs\"][\"extensions\"]\n            config_extensions_set = set(config_extensions)\n            if len(config_extensions) != len(config_extensions_set):\n                print(\"WARNING: duplicates in config extensions list\", flush=True)\n            if any(x != x.lower() for x in config_extensions_set):\n                print(\"WARNING: file extensions in config must be in lowercase\", flush=True)\n            break\n    else:\n        raise RuntimeError(f\"FileExtension was not found in config ({ML_CONFIG_PATH}) features!\")\n\n    data_extension_set = set(df_all[\"ext\"].unique())\n\n    if config_extensions_set != data_extension_set:\n        unknown_extensions = []\n        for x in model_config[\"features\"]:\n            if \"FileExtension\" == x[\"type\"]:\n                known_extensions = set(x[\"kwargs\"][\"extensions\"])\n                x[\"kwargs\"][\"extensions\"] = []\n                for extension in sorted(list(data_extension_set)):\n                    if extension in known_extensions or mimetypes.guess_type(f\"a_file{extension}\")[0]:\n                        # use already present extensions and well-known additionally\n                        x[\"kwargs\"][\"extensions\"].append(extension)\n                    else:\n                        # collect all unknown extensions for error log\n                        print(f\"UNKNOWN EXTENSION: {extension}\", flush=True)\n                        unknown_extensions.append(extension)\n                Util.json_dump(model_config, ML_CONFIG_PATH)\n                if known_extensions != set(x[\"kwargs\"][\"extensions\"]):\n                    # the process must be restarted with updated config\n                    raise RuntimeError(\"RESTART: differences in extensions:\"\n                                       f\"\\nconfig:{config_extensions_set.difference(data_extension_set)}\"\n                                       f\"\\ndata:{data_extension_set.difference(config_extensions_set)}\"\n                                       f\"\\nFile {ML_CONFIG_PATH} was updated.\"\n                                       f\"\\nUnknown extensions:{unknown_extensions if unknown_extensions else None}\")\n                break\n\n    # append all rule names for the feature\n\n    for x in model_config[\"features\"]:\n        if \"RuleName\" == x[\"type\"]:\n            config_rules = x[\"kwargs\"][\"rule_names\"]\n            config_rules_set = set(config_rules)\n            if len(config_rules) != len(config_rules_set):\n                print(\"WARNING: duplicates in config rule_names list\", flush=True)\n            break\n    else:\n        raise RuntimeError(f\"rule_names was not found in config ({ML_CONFIG_PATH}) features!\")\n\n    data_rules_set = set(df_all[\"RuleName\"].explode().unique())\n\n    if config_rules_set != data_rules_set:\n        sorted_rules = sorted(list(data_rules_set))\n        print(\"Update config rule names with \", sorted_rules, flush=True)\n        for x in model_config[\"features\"]:\n            if \"RuleName\" == x[\"type\"]:\n                x[\"kwargs\"][\"rule_names\"] = sorted_rules\n                Util.json_dump(model_config, ML_CONFIG_PATH)\n                break\n        # the process must be restarted with updated config\n        raise RuntimeError(f\"RESTART: differences in rules:\"\n                           f\"\\nconfig:{config_rules_set.difference(data_rules_set)}\"\n                           f\"\\ndata:{data_rules_set.difference(config_rules_set)}\"\n                           f\"\\nFile {ML_CONFIG_PATH} was updated.\")\n    else:\n        print(config_rules_set, \" matches \", data_rules_set, flush=True)\n\n    thresholds = model_config[\"thresholds\"]\n    assert isinstance(thresholds, dict), thresholds\n    print(f\"Load thresholds: {thresholds}\", flush=True)\n    return thresholds\n"
  },
  {
    "path": "experiment/plot.py",
    "content": "import itertools\nimport math\nimport pathlib\n\nimport matplotlib.pyplot as plt\nfrom keras.src.callbacks import History\nfrom matplotlib import image as mpimg\n\nMETRICS = [\"loss\", \"binary_accuracy\", \"precision\", \"recall\"]\nNCOLS = 2  # GRAPHS_PER_ROW\nNROWS = math.ceil(len(METRICS) / NCOLS)\n\n\ndef save_plot(stamp: str, title: str, history: History, dir_path: pathlib.Path, best_epoch: int, info: str):\n    plt.clf()\n    fig, axes = plt.subplots(nrows=NROWS, ncols=NCOLS, figsize=(16, 9), tight_layout=True)\n\n    fig.suptitle(f\"{stamp} {title}\")\n\n    # train displays \"Epoch 1/7\", so let the plot starts from 1\n    x = [x + 1 for x in history.epoch]\n\n    for idx, characteristic in itertools.zip_longest(range(NROWS * NROWS), METRICS):\n        axes_x = idx % NCOLS\n        axes_y = idx // NCOLS\n        if characteristic:\n            y_train = history.history[characteristic]\n            y_test = history.history[f\"val_{characteristic}\"]\n            axes[axes_x, axes_y].plot(x, y_train, label=\"train\")\n            axes[axes_x, axes_y].plot(x, y_test, label=\"test\")\n            axes[axes_x, axes_y].set_title(characteristic)\n            axes[axes_x, axes_y].legend(loc=\"upper left\")\n            axes[axes_x, axes_y].grid(visible=True, which=\"both\", color=\"grey\", linewidth=0.75, linestyle=\"dotted\")\n            axes[axes_x, axes_y].set_xticks(range(min(x), max(x) + 1, 1), minor=True)\n            axes[axes_x, axes_y].axvline(x=best_epoch, color='green', linestyle='--', linewidth=1)\n        else:\n            axes[axes_x, axes_y].axis('off')\n\n    fig.text(0.001, 0.001, info, fontsize=10, color='green', backgroundcolor='white')\n    plt.savefig(dir_path / f\"{stamp}.png\", dpi=96)\n    plt.close('all')\n\n\ndef stamp_plot(stamp: str, dir_path: pathlib.Path, info: str):\n    file_path = dir_path / f\"{stamp}.png\"\n    image = mpimg.imread(file_path)\n    plt.figure(figsize=(16, 9), tight_layout=True)\n    plt.imshow(image)\n    plt.text(222, 333, info, fontsize=10, color='red', backgroundcolor='white')\n    plt.axis('off')\n    plt.savefig(file_path, bbox_inches='tight', pad_inches=0, dpi=96)\n    plt.close('all')\n"
  },
  {
    "path": "experiment/prepare_data.py",
    "content": "import binascii\nimport hashlib\nimport os\nimport pathlib\nimport subprocess\nimport sys\nfrom pathlib import Path\n\nfrom credsweeper.scanner.scanner import RULES_PATH\nfrom credsweeper.utils.util import Util\n\nRESULTS_DIR = pathlib.Path(__file__).parent / \"results\"\n\n\ndef execute_scanner(dataset_location: str, report_file_str: str, train_rules_str: str, jobs: int, doc_target: bool):\n    \"\"\"Execute CredSweeper as a separate process to make sure no global states is shared with training script\"\"\"\n    dir_path = os.path.dirname(os.path.realpath(__file__))\n    command = (f\"{sys.executable} -m credsweeper\"\n               f\" --jobs {jobs}\"\n               f\" --path {dataset_location}/data\"\n               f\" {'--doc' if doc_target else ''}\"\n               f\" --save-json {report_file_str}\"\n               f\" --rules {train_rules_str}\"\n               \" --pedantic\"\n               \" --ml_threshold 0\"\n               \" --sort\"\n               \" --subtext\"\n               \" --log info\"\n               \" --no-stdout\")\n    error_code = subprocess.check_call(command, shell=True, cwd=dir_path)\n    if 0 != error_code:\n        sys.exit(error_code)\n\n\ndef data_checksum(dir_path: Path) -> str:\n    checksum = hashlib.md5(b'').digest()\n    for root, dirs, files in os.walk(dir_path):\n        for file in files:\n            with open(os.path.join(root, file), \"rb\") as f:\n                cvs_checksum = hashlib.md5(f.read()).digest()\n            checksum = bytes(a ^ b for a, b in zip(checksum, cvs_checksum))\n    return binascii.hexlify(checksum).decode()\n\n\ndef prepare_train_data(cred_data_location: str, jobs: int, doc_target: bool):\n    print(\"Start train data preparation...\", flush=True)\n\n    # use current rules\n    rules = Util.yaml_load(RULES_PATH)\n    target = \"doc\" if doc_target else \"code\"\n    new_rules = [x for x in rules if x.get(\"use_ml\") and target in x[\"target\"]]\n    train_rules_config_path = RESULTS_DIR / \"train_config.yaml\"\n    Util.yaml_dump(new_rules, train_rules_config_path)\n\n    meta_dir_checksum = data_checksum(Path(cred_data_location) / \"meta\")\n    print(f\"meta checksum {meta_dir_checksum}\", flush=True)\n\n    data_dir_checksum = data_checksum(Path(cred_data_location) / \"data\")\n    print(f\"data checksum {data_dir_checksum}\", flush=True)\n    detected_data_filename = RESULTS_DIR / f\"detected_data.{data_dir_checksum}.json\"\n\n    if not os.path.exists(detected_data_filename):\n        print(f\"Get CredSweeper results from {cred_data_location}. May take some time\", flush=True)\n        execute_scanner(cred_data_location, str(detected_data_filename), str(train_rules_config_path), jobs, doc_target)\n    else:\n        print(f\"Get cached result {data_dir_checksum}\", flush=True)\n\n    print(\"Train data prepared!\", flush=True)\n    return meta_dir_checksum, data_dir_checksum\n"
  },
  {
    "path": "experiment/requirements.txt",
    "content": "# Python 3.10.20\n# pip 26.1\n\n# version sensetive\nh5py==3.12.1\nkeras==2.15.0\nkeras-tuner==1.4.7\nnumpy==1.26.4\nonnx==1.17.0\nprotobuf==3.20.3\nscikit-learn==1.6.1\ntensorflow-cpu==2.15.1\ntf2onnx==1.16.1\nwrapt==1.14.1\n\n# version insensetive\ntypes-tensorflow\nmatplotlib\ncolorama\npsutil\n"
  },
  {
    "path": "experiment/tf2onnx/tf2onnx.sh",
    "content": "#!/usr/bin/env bash\n\nset -e\n\n# tensorflow model may be obtained like this: git restore -s be06d6059f0def4f0fdb50444c08db4ce542173e -- ml_model.h5\n# use virtual environment and the requirements.txt - there are very specific luke combination of packages verions\n# python -m venv .venv\n# . .venv/bin/activate\n# python -m pip install --upgrade pip\n# python -m pip install --requirement requirements.txt\n\n# [optional] thransform model form h5 to saved directory\npython -c 'import tensorflow as tf;model=tf.keras.models.load_model(\"ml_model.h5\");model.save(\"ml_model\")'\n# transform the model\npython -m tf2onnx.convert --saved-model ml_model --output ml_model.onnx --verbose --rename-inputs feature_input,line_input\n# md5sum for integrity\nmd5sum --binary ml_model.onnx\n"
  },
  {
    "path": "experiment/tools/base64_test.py",
    "content": "#!/usr/env python3\n# -*- coding: utf-8 -*-\n\"\"\"\nThe script is useful to test patterns of base64 encoded data with 0,1,2 offsets\n\"\"\"\nimport base64\nimport random\nimport sys\n\n\ndef gen_token(pad: int, txt: bytes) -> bytes:\n    trash = random.randbytes(3) + random.randbytes(pad) + txt + random.randbytes(pad) + random.randbytes(3)\n    return base64.b64encode(trash, altchars=b\"-_\")\n\n\ndef main(argv):\n    loops = int(argv[1]) if 1 < len(argv) else 1\n    inner_pattern = b\"XgroqX\"\n    while 0 < loops:\n        loops -= 1\n        token0 = gen_token(0, inner_pattern)\n        assert b\"WGdyb3FY\" in token0, token0\n        token1 = gen_token(1, inner_pattern)\n        assert b\"hncm9xW\" in token1, token1\n        token2 = gen_token(2, inner_pattern)\n        assert b\"YZ3JvcV\" in token2, token2\n\n\nif __name__ == \"\"\"__main__\"\"\":\n    main(sys.argv)\n"
  },
  {
    "path": "experiment/tools/entropy_test.py",
    "content": "import random\nimport signal\nimport statistics\nimport threading\nimport time\nfrom multiprocessing import Pool\nfrom typing import Tuple, Dict\n\nfrom credsweeper.common.constants import Chars\nfrom credsweeper.utils.util import Util\n\nrandom_data: str\nITERATIONS = 1000\n\n\ndef pool_initializer() -> None:\n    signal.signal(signal.SIGINT, signal.SIG_IGN)\n\n\ndef evaluate_avg(_args: Tuple[int, float, float]) -> Tuple[float, float]:\n    min_avg = _args[1]\n    max_dvt = _args[2]\n    size = _args[0]\n    entropies = []\n    for x in range(ITERATIONS):\n        offset = x * size\n        entropy = Util.get_shannon_entropy(random_data[offset:offset + size])\n        entropies.append(entropy)\n    avg = statistics.mean(entropies)\n    dvt = statistics.stdev(entropies, avg)\n    if avg < min_avg:\n        min_avg = avg\n    if dvt > max_dvt:\n        max_dvt = dvt\n    return min_avg, max_dvt\n\n\nif __name__ == \"__main__\":\n    random.seed()\n    stats: Dict[int, Tuple[float, float]] = {}\n    sizes = [x for x in range(8, 36)]\n    try:\n        for n in range(1000):\n            start_time = time.time()\n            random_data = ''.join([random.choice(Chars.BASE32_CHARS.value) for _ in range(ITERATIONS * max(sizes))])\n            _args = [(i, stats[i][0] if i in stats else 9.9, stats[i][1] if i in stats else 0.0) for i in sizes]\n            with Pool(processes=min(15, len(_args)), initializer=pool_initializer) as pool:\n                for _size, _res in zip(sizes, pool.map(evaluate_avg, _args)):\n                    with threading.Lock():\n                        stats[_size] = _res\n            for k, v in stats.items():\n                print(f\"{k}: {v}\", flush=True)\n            print(f\"loop {n} in {time.time() - start_time}\", flush=True)\n    except KeyboardInterrupt as exc:\n        print(exc, flush=True)\n    finally:\n        print(\"===========================================================\", flush=True)\n    for k, v in stats.items():\n        # for parametrization of unit tests\n        print(f\"({k}, {v[0]}, {v[1]}),\", flush=True)\n"
  },
  {
    "path": "experiment/tools/morpheme_test.py",
    "content": "import random\nimport signal\nimport threading\nimport time\nfrom multiprocessing import Pool\nfrom typing import Tuple, Dict\n\nfrom credsweeper.common import KeywordChecklist\nfrom credsweeper.common.constants import BASE64COMMON\n\nrandom_data: str\nITERATIONS = 1000\n\n\nclass KeywordChecklistTest(KeywordChecklist):\n\n    def calc(self, line_lower: str) -> int:\n        matches = 0\n        for keyword in self.morpheme_set:\n            if keyword in line_lower:\n                matches += 1\n        return matches\n\n\ncounter = KeywordChecklistTest()\n\n\ndef pool_initializer() -> None:\n    signal.signal(signal.SIGINT, signal.SIG_IGN)\n\n\ndef evaluate_avg(_args: Tuple[int, float, float]) -> Tuple[float, float]:\n    min_avg = _args[1]\n    max_dvt = _args[2]\n    size = _args[0]\n    for x in range(ITERATIONS):\n        offset = x * size\n        value = counter.calc(random_data[offset:offset + size])\n        if 0 < value < min_avg:\n            min_avg = value\n        if value > max_dvt:\n            max_dvt = value\n    return min_avg, max_dvt\n\n\nif __name__ == \"__main__\":\n    random.seed()\n    stats: Dict[int, Tuple[float, float]] = {}\n    sizes = [4, 8, 16, 32, 40, 64, 70, 80, 90, 100, 128, 256, 512, 1024]\n    try:\n        for n in range(100):\n            start_time = time.time()\n            random_data = ''.join([random.choice(BASE64COMMON) for _ in range(ITERATIONS * max(sizes))])\n            _args = [(i, stats[i][0] if i in stats else 9.9, stats[i][1] if i in stats else 0.0) for i in sizes]\n            with Pool(processes=min(15, len(_args)), initializer=pool_initializer) as pool:\n                for _size, _res in zip(sizes, pool.map(evaluate_avg, _args)):\n                    with threading.Lock():\n                        stats[_size] = _res\n            for k, v in stats.items():\n                print(f\"{k}: {v}\", flush=True)\n            print(f\"loop {n} in {time.time() - start_time}\", flush=True)\n    except KeyboardInterrupt as exc:\n        print(exc, flush=True)\n    finally:\n        print(\"===========================================================\", flush=True)\n    for k, v in stats.items():\n        # for parametrization of unit tests\n        print(f\"({k}, {v[0]}, {v[1]}),\", flush=True)\n"
  },
  {
    "path": "experiment/tools/strength_test.py",
    "content": "import random\nimport signal\nimport statistics\nimport threading\nimport time\nfrom multiprocessing import Pool\nfrom typing import Tuple, Dict\n\nfrom credsweeper.common.constants import Chars\nfrom credsweeper.utils.hop_stat import HopStat\n\nhopper = HopStat()\nITERATIONS = 10000000\nBASE = Chars.BASE36_CHARS.value\n\n\ndef pool_initializer() -> None:\n    signal.signal(signal.SIGINT, signal.SIG_IGN)\n\n\ndef evaluate_avg(size) -> Tuple[Tuple[float, float], Tuple[float, float]]:\n    hops = []\n    devs = []\n    for i in range(ITERATIONS):\n        hop, dev = hopper.stat(''.join(random.choices(BASE, k=size)))\n        hops.append(hop)\n        devs.append(dev)\n    avg_hop = statistics.mean(hops)\n    dev_hop = statistics.stdev(hops, avg_hop)\n    avg_dev = statistics.mean(devs)\n    dev_dev = statistics.stdev(devs, avg_dev)\n    return (avg_hop, dev_hop), (avg_dev, dev_dev)\n\n\nif __name__ == \"__main__\":\n    try:\n        stats: Dict[int, Tuple[float, float]] = {}\n        sizes = [8, 10, 15, 16, 20, 24, 25, 32, 40, 50, 64]\n        start_time = time.time()\n\n        with Pool(processes=min(16, len(sizes)), initializer=pool_initializer) as pool:\n            for _size, _res in zip(sizes, pool.map(evaluate_avg, sizes)):\n                with threading.Lock():\n                    stats[_size] = _res\n        print(f\"done in {time.time() - start_time} for {BASE}\", flush=True)\n        for k, v in stats.items():\n            print(f\"{k}: {v},\", flush=True)\n    except KeyboardInterrupt as exc:\n        print(exc, flush=True)\n\n# base32 results\n# 8: ((3.480934, 0.8482364556537906), (1.9280820731422028, 0.5833143826506801)),\n# 10: ((3.4801753333333334, 0.7508676237320747), (1.9558544090983234, 0.5119385414964345)),\n# 15: ((3.4803549285714284, 0.603220270918794), (1.9896690734372564, 0.40640877687972476)),\n# 16: ((3.4798649333333334, 0.5837818960141307), (1.9938368543943692, 0.392547066949958)),\n# 20: ((3.4809878947368422, 0.518785674729997), (2.0058661928593517, 0.34692788889724946)),\n# 24: ((3.480511086956522, 0.4726670109337228), (2.0131379532992537, 0.31476354168931936)),\n# 25: ((3.480877375, 0.4626150412368404), (2.0147828593929953, 0.3075894753390553)),\n# 32: ((3.4809023548387095, 0.4072672632996217), (2.0231609118646867, 0.2700344059876962)),\n# 40: ((3.4801929743589746, 0.36361457820793436), (2.027858606807074, 0.2401498396303172)),\n# 50: ((3.4798551224489795, 0.323708167297437), (2.0318808048208794, 0.2138098551294688)),\n# 64: ((3.4805990476190476, 0.28572156450556774), (2.035756800745673, 0.18815721535870078)),\n\n# base36 result\n# 8: ((3.7190542428571427, 0.8995506118495411), (2.066095086865182, 0.609210293352161)),\n# 10: ((3.719109611111111, 0.7956463384852813), (2.0946299036665494, 0.5322004874842623)),\n# 15: ((3.719274257142857, 0.6401989313894239), (2.129437216268589, 0.42108786288993155)),\n# 16: ((3.7192072666666665, 0.6188627491757901), (2.1336109506109366, 0.4064699817331141)),\n# 20: ((3.719249815789474, 0.5506473627709657), (2.145293932511567, 0.3591543917048417)),\n# 24: ((3.7191934304347827, 0.50051922802262), (2.152858549996053, 0.3252064160191062)),\n# 25: ((3.7192351583333334, 0.4904181410613897), (2.1543202565038735, 0.31823801389315026)),\n# 32: ((3.7190408419354837, 0.4315967526660196), (2.1620321219700767, 0.2788634701820312)),\n# 40: ((3.7191682666666668, 0.3852248727988986), (2.16746680811131, 0.24802261318501675)),\n# 50: ((3.718913744897959, 0.3436564880405547), (2.1715676118603806, 0.22070510537297627)),\n# 64: ((3.7190009761904763, 0.30325954360127116), (2.1751172797904093, 0.1942582237461476)),\n\n# base64 results\n# done in 130.86447429656982 for 0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ-_\n# 8: ((3.7627115714285715, 0.9413431166706269), (2.1378378843992736, 0.6394596814295781)),\n# 10: ((3.7617393333333333, 0.8327986018456262), (2.168873183866972, 0.5605393324056347)),\n# 15: ((3.7619624285714286, 0.6698092646328063), (2.2080058406286702, 0.4447698491992352)),\n# 16: ((3.7618573333333334, 0.6471500119793832), (2.2116826642934453, 0.4288377928263507)),\n# 20: ((3.7618887368421055, 0.575813792926031), (2.224384985667721, 0.37985781543221253)),\n# 24: ((3.7621449565217393, 0.5243297908608613), (2.2326041329976607, 0.34397389723600613)),\n# 25: ((3.762616791666667, 0.5137934920050976), (2.234571917211925, 0.3366547036535176)),\n# 32: ((3.761885838709677, 0.4521158322065318), (2.2426375800006153, 0.29506039075960255)),\n# 40: ((3.7622649487179487, 0.4031261511824518), (2.2485911621253574, 0.2622954601051068)),\n# 50: ((3.762087693877551, 0.3597404118023357), (2.2533774423872956, 0.23384524947332655)),\n# 64: ((3.7625271746031745, 0.31733579704946846), (2.257532519514275, 0.20571908142867643)),\n"
  },
  {
    "path": "experiment/train.py",
    "content": "import hashlib\nimport os\nimport pathlib\nimport pickle\nimport random\nimport subprocess\nimport sys\nfrom datetime import datetime\n\nimport keras_tuner as kt\nimport numpy as np\nimport pandas as pd\nimport tensorflow as tf\nfrom keras import Model  # type: ignore\nfrom numpy import ndarray\nfrom sklearn.model_selection import train_test_split\nfrom sklearn.utils import compute_class_weight\nfrom tensorflow.keras.callbacks import EarlyStopping, ModelCheckpoint\n\nfrom data_loader import read_detected_data, read_metadata, join_label, get_y_labels\nfrom experiment.evaluate_model import evaluate_model\nfrom features import prepare_data\nfrom hyperparameters import HP_DICT\nfrom log_callback import LogCallback\nfrom ml_model import MlModel\nfrom model_config_preprocess import model_config_preprocess, ML_CONFIG_PATH\nfrom plot import save_plot\nfrom prepare_data import prepare_train_data, RESULTS_DIR\n\n\ndef train(\n    cred_data_location: str,\n    jobs: int,\n    epochs: int,\n    batch_size: int,\n    patience: int,\n    doc_target: bool,\n    use_tuner: bool,\n    eval_test: bool,\n    eval_train: bool,\n    eval_full: bool,\n) -> str:\n    # fixed seed for std.random in main()\n    tf.random.set_seed(random.randint(1, 0xffffffff))\n    np.random.seed(random.randint(1, 0xffffffff))\n\n    print(f\"Memory at start: {LogCallback.get_memory_info()}\", flush=True)\n\n    subprocess.check_call(f\"md5sum {ML_CONFIG_PATH.absolute()}\", shell=True)  # dbg\n\n    current_time = datetime.now().strftime(\"%Y%m%d_%H%M%S\")\n\n    os.makedirs(RESULTS_DIR, exist_ok=True)\n\n    print(f\"Train model on data from {cred_data_location}\", flush=True)\n    meta_checksum, data_checksum = prepare_train_data(cred_data_location, jobs, doc_target)\n\n    df_all_file = RESULTS_DIR / f\"{meta_checksum}-{data_checksum}.pkl\"\n    if df_all_file.exists():\n        df_all = pd.read_pickle(df_all_file)\n        print(f\"Read from {df_all_file}\", flush=True)\n    else:\n        # detected data means which data is passed to ML validator of credsweeper after filters with RuleName\n        detected_data = read_detected_data(RESULTS_DIR / f\"detected_data.{data_checksum}.json\")\n        print(f\"CredSweeper detected {len(detected_data)} credentials without ML\", flush=True)\n        # all markup data\n        meta_data = read_metadata(f\"{cred_data_location}/meta\")\n        print(f\"Metadata markup: {len(meta_data)} items\", flush=True)\n        df_all = join_label(detected_data, meta_data, cred_data_location)\n        # np.save(df_all_file, df_all)\n        df_all.to_pickle(df_all_file)\n        print(f\"Stored to {df_all_file}\", flush=True)\n        # to prevent extra memory consumption - delete unnecessary objects\n        del detected_data\n        del meta_data\n\n    # workaround for CI step\n    trial_cnt = 3\n    while 0 < trial_cnt:\n        trial_cnt -= 1\n        # there are 2 times possible fails due ml config might be updated\n        try:\n            thresholds = model_config_preprocess(df_all, doc_target)\n            break\n        except RuntimeError as exc:\n            if \"RESTART:\" in str(exc) and 0 <= trial_cnt:\n                print(str(exc), flush=True)\n                continue\n            else:\n                raise exc\n    else:\n        raise RuntimeError(\"Something went wrong\")\n\n    # random split\n    df_train, df_test = train_test_split(df_all, test_size=0.15, random_state=random.randint(1, 1 << 32))\n    len_df_train = len(df_train)\n    print(f\"Train size: {len_df_train}\", flush=True)\n    len_df_test = len(df_test)\n    print(f\"Test size: {len_df_test}\", flush=True)\n\n    print(f\"Prepare full data\", flush=True)\n    x_full_line, x_full_variable, x_full_value, x_full_features = prepare_data(df_all)\n    y_full: ndarray = get_y_labels(df_all)\n    del df_all\n\n    print(f\"Prepare train data\", flush=True)\n    x_train_line, x_train_variable, x_train_value, x_train_features = prepare_data(df_train)\n    print(\"x_train_value dtype \", x_train_value.dtype, flush=True)  # dbg\n    print(\"x_train_features dtype\", x_train_features.dtype, flush=True)  # dbg\n    y_train = get_y_labels(df_train)\n    print(\"y_train dtype\", y_train.dtype, flush=True)  # dbg\n    del df_train\n\n    print(f\"Class-1 prop on train: {np.mean(y_train):.4f}\", flush=True)\n\n    classes = np.unique(y_train)\n    class_weights = compute_class_weight(class_weight='balanced', classes=classes, y=y_train)\n    max_weight = max(class_weights)\n    class_weights = [weight / max_weight for weight in class_weights]\n    print(f\"y_train size:{len(y_train)}, 0: {np.count_nonzero(y_train == 0)}, 1: {np.count_nonzero(y_train == 1)}\",\n          flush=True)\n    class_weight = dict(zip(classes, class_weights))\n    print(f\"class_weight: {class_weight}\", flush=True)  # information about class weights\n\n    print(f\"Prepare test data\", flush=True)\n    x_test_line, x_test_variable, x_test_value, x_test_features = prepare_data(df_test)\n    y_test = get_y_labels(df_test)\n    print(f\"Class-1 prop on test: {np.mean(y_test):.4f}\", flush=True)\n    del df_test\n\n    print(f\"Memory before search / compile: {LogCallback.get_memory_info()}\", flush=True)\n\n    log_callback = LogCallback()\n    if use_tuner:\n        print(f\"Tuner initial dict:{HP_DICT}\", flush=True)\n        tuner_kwargs = {k: v[0] for k, v in HP_DICT.items()}\n        print(f\"Tuner kwargs:{tuner_kwargs}\", flush=True)\n\n        tuner = kt.BayesianOptimization(\n            hypermodel=MlModel(x_full_line.shape, x_full_variable.shape, x_full_value.shape, x_full_features.shape,\n                               **tuner_kwargs),\n            objective='val_loss',\n            directory=str(RESULTS_DIR / f\"{current_time}.tuner\"),\n            project_name='ml_tuning',\n            seed=random.randint(1, 0xffffffff),\n            max_trials=30,\n        )\n        search_early_stopping = EarlyStopping(monitor=\"val_loss\",\n                                              patience=patience,\n                                              mode=\"min\",\n                                              restore_best_weights=True,\n                                              verbose=1)\n        tuner.search(\n            x=[x_train_line, x_train_variable, x_train_value, x_train_features],\n            y=y_train,\n            epochs=epochs,\n            batch_size=batch_size,\n            callbacks=[search_early_stopping, log_callback],\n            validation_data=([x_test_line, x_test_variable, x_test_value, x_test_features], y_test),\n            verbose=2,\n        )\n        print(\"Best Hyperparameters:\", flush=True)\n        for k, v in tuner.get_best_hyperparameters()[0].values.items():\n            print(f\"{k}: {v}\", flush=True)\n        param_kwargs = {k: float(v) for k, v in tuner.get_best_hyperparameters()[0].values.items() if k in HP_DICT}\n        del tuner\n    else:\n        print(f\"Model is trained with params from dict:{HP_DICT}\", flush=True)\n        param_kwargs = {k: v[1] for k, v in HP_DICT.items()}\n\n    print(f\"Model hyper parameters: {param_kwargs}\", flush=True)\n\n    # repeat train step to obtain actual history chart\n    _model = MlModel(x_full_line.shape, x_full_variable.shape, x_full_value.shape, x_full_features.shape,\n                     **param_kwargs)\n    keras_model = _model.build(hp=None)  # this train will be used hyperparam in param_kwargs\n    if not eval_full:\n        # the data are not necessary\n        del x_full_line\n        del x_full_variable\n        del x_full_value\n        del x_full_features\n        del y_full\n\n    early_stopping = EarlyStopping(monitor=\"val_loss\",\n                                   patience=patience,\n                                   mode=\"min\",\n                                   restore_best_weights=True,\n                                   verbose=1)\n    model_checkpoint = ModelCheckpoint(filepath=str(RESULTS_DIR / f\"{current_time}.best_model\"),\n                                       monitor=\"val_loss\",\n                                       save_best_only=True,\n                                       mode=\"min\",\n                                       verbose=1)\n\n    print(f\"Memory before train: {LogCallback.get_memory_info()}\", flush=True)\n\n    fit_history = keras_model.fit(x=[x_train_line, x_train_variable, x_train_value, x_train_features],\n                                  y=y_train,\n                                  batch_size=batch_size,\n                                  epochs=epochs,\n                                  verbose=2,\n                                  validation_data=([x_test_line, x_test_variable, x_test_value,\n                                                    x_test_features], y_test),\n                                  class_weight=class_weight,\n                                  callbacks=[early_stopping, model_checkpoint, log_callback],\n                                  use_multiprocessing=True)\n\n    # if best_val_loss is not None and best_val_loss + 0.00001 < early_stopping.best:\n    #     print(f\"CHECK BEST TUNER EARLY STOP : {best_val_loss} vs CURRENT: {early_stopping.best}\",flush=True)\n\n    print(f\"Memory after train: {LogCallback.get_memory_info()}\", flush=True)\n\n    with open(RESULTS_DIR / f\"{current_time}.history.pickle\", \"wb\") as f:\n        pickle.dump(fit_history, f)\n\n    model_file_name = RESULTS_DIR / f\"ml_model_at-{current_time}\"\n    keras_model.save(model_file_name, include_optimizer=False)\n\n    if eval_test:\n        print(f\"Validate results on the test subset. Size: {len(y_test)} {np.mean(y_test):.4f}\", flush=True)\n        evaluate_model(thresholds, keras_model, [x_test_line, x_test_variable, x_test_value, x_test_features], y_test)\n    # drop small test set first to free a bit more memory for next evaluation\n    del x_test_line\n    del x_test_variable\n    del x_test_value\n    del x_test_features\n    del y_test\n\n    if eval_train:\n        print(f\"Validate results on the train subset. Size: {len(y_train)} {np.mean(y_train):.4f}\", flush=True)\n        evaluate_model(thresholds, keras_model, [x_train_line, x_train_variable, x_train_value, x_train_features],\n                       y_train)\n    del x_train_line\n    del x_train_variable\n    del x_train_value\n    del x_train_features\n    del y_train\n\n    if eval_full:\n        print(f\"Validate results on the full set. Size: {len(y_full)} {np.mean(y_full):.4f}\", flush=True)\n        evaluate_model(thresholds, keras_model, [x_full_line, x_full_variable, x_full_value, x_full_features], y_full)\n        del x_full_line\n        del x_full_variable\n        del x_full_value\n        del x_full_features\n        del y_full\n\n    onnx_model_file = pathlib.Path(__file__).parent.parent / \"credsweeper\" / \"ml_model\" / \"ml_model.onnx\"\n    # convert the model to onnx right now\n    convert_args = f\"{sys.executable} -m tf2onnx.convert --saved-model {model_file_name.absolute()}\" \\\n                   f\" --output {str(onnx_model_file)} --verbose\"\n    subprocess.check_call(convert_args, shell=True, cwd=pathlib.Path(__file__).parent)\n    with open(onnx_model_file, \"rb\") as f:\n        onnx_md5 = hashlib.md5(f.read()).hexdigest()\n        print(f\"ml_model.onnx:{onnx_md5}\", flush=True)\n\n    with open(ML_CONFIG_PATH, \"rb\") as f:\n        config_md5 = hashlib.md5(f.read()).hexdigest()\n        print(f\"ml_config.json:{config_md5}\", flush=True)\n\n    best_epoch = 1 + np.argmin(np.array(fit_history.history['val_loss']))\n\n    # ml history analysis\n    save_plot(\n        stamp=current_time,\n        title=f\"batch:{batch_size} train:{len_df_train} test:{len_df_test} weights:{class_weights}\",\n        history=fit_history,\n        dir_path=RESULTS_DIR,\n        best_epoch=int(best_epoch),\n        info=f\"ml_config.json:{config_md5} ml_model.onnx:{onnx_md5} best_epoch:{best_epoch}\",\n    )\n\n    return str(model_file_name.absolute())\n"
  },
  {
    "path": "fuzz/README.md",
    "content": "# Fuzzing of CredSweeper API\n\nThe directory is used for dynamic analysis of CredSweeper with using [atheris](https://github.com/google/atheris),\nbased on [LibFuzzer](https://llvm.org/docs/LibFuzzer.html#options)\n\n\n## Preparation\n\n- The same interpreter packages as for CredSweeper + atheris + coverage (optional).\nWorking dir is project root - to be sure current source of credsweeper is used for coverage.\nPreferred to use virtual environment.\n\n```bash\npython3.8 -m virtualenv --copies .venv\n. .venv/bin/activate\npip install -U pip\npip install -r requirements.txt\n```\n\n\n## Fuzzing\n\nLaunch fuzzing script to collect seed files. \n```bash\nfuzzing.sh\n```\n-atheris_runs - must be greater than corpus files in 'corpus' directory.\nMany interactions require more rss memory - the limit must be decided.\nThen after productive fuzzing there will be new corpus files.\nSome of them are reduced from others. Some - new for imported libs.\nThe launch does not require coverage module but requires instumentation.\n\n\n## Coverage\n\nLaunch fuzzing script to calculate coverage with provided corpus files. \n```bash\ncoveraging.sh\n```\nTo generate HTML report use ```coverage html``` in project root (where .coverage file exists) after fuzzing.\nInstrumentation does not required - so it can be skipped.\n\n\n## Reducing\n\nLaunch reducing script to reduce corpus files only for 'NEW'. \n```bash\nreducing.sh\n```\nThe script is used -merge function of libfuzzer to reduce corpus files with multiple interaction.\nFull instrumentation is preferred.\n\n\n## Minimizing\n\nLaunch the script to remove corpus files that do not impact on credsweeper. \n```bash\nminimizing.sh\n```\nThe script uses coverage package to determine which corpus files do not change overall coverage and removes them.\nThe process is slow due each corpus file has to be checked. Instrumentation is not necessary.\n\nNOTE: some seeds may be dropped due complicated expression is assumed like one line/branch.\ne.g.:```if 0x01 == a[0] and 0x02 == a[1]:``` then seed [0x01,0x02] is kept, but [0x01,0x00] will be removed.\n\n## Useful commands for seed files modification\n```base\nfor f in $(ls); do h=$(sha1sum $f|cut -c-40); mv -v $f $h; done\n```\nRename seed file according sha1 digest of content\n"
  },
  {
    "path": "fuzz/__main__.py",
    "content": "#!/usr/bin/env python\n\n# Copyright 2022 Google LLC\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#      http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\nimport hashlib\nimport io\nimport logging\nimport os\nimport sys\nimport warnings\nfrom unittest.mock import patch\n\nimport atheris\n# # # In simple case interested lib(s) may be imported during 'with'\n# # # It runs quickly but not precisely\n# with atheris.instrument_imports(enable_loader_override=False):\nfrom bs4 import XMLParsedAsHTMLWarning\n\nfrom credsweeper.app import CredSweeper\nfrom credsweeper.common.constants import DiffRowType\nfrom credsweeper.file_handler.files_provider import FilesProvider\nfrom credsweeper.file_handler.patches_provider import PatchesProvider\nfrom tests import ZERO_ML_THRESHOLD\n\nwarnings.filterwarnings(\"ignore\", category=XMLParsedAsHTMLWarning)\n\n# set log level for fuzzing\nlogging.basicConfig(level=logging.CRITICAL)\nlogger = logging.getLogger(__name__)\n\n# Use depth=3 to deep scan in .zip and .gz files + find by extension feature\ncred_sweeper = CredSweeper(find_by_ext=True, ml_threshold=ZERO_ML_THRESHOLD, color=True, hashed=True,\n                           subtext=True, sort_output=True, thrifty=True)\n\nINPUT_DATA_SIZE = 0x1000\n\n\ndef fuzz_credsweeper_scan(data: bytes):\n    # seed file name is sha1 of the content\n    file_name = hashlib.sha1(data).hexdigest()\n    fdp = atheris.FuzzedDataProvider(data)\n    # offset:0x0000\n    to_scan = fdp.ConsumeBytes(INPUT_DATA_SIZE)\n    logger.debug(\"%s >>>>>>>> %s\", file_name, to_scan.decode(encoding='ascii', errors=\"ignore\"))\n\n    candidates = []\n\n    cred_sweeper.config.doc = False\n    cred_sweeper.config.depth = 3\n    cred_sweeper.credential_manager.candidates.clear()\n    patch_provider_add = PatchesProvider([io.BytesIO(to_scan)], change_type=DiffRowType.ADDED)\n    with patch.object(CredSweeper, CredSweeper.export_results.__name__):\n        cred_sweeper.run(patch_provider_add)\n    candidates.extend(cred_sweeper.credential_manager.get_credentials())\n\n    cred_sweeper.config.doc = False\n    cred_sweeper.config.depth = 0\n    cred_sweeper.credential_manager.candidates.clear()\n    patch_provider_del = PatchesProvider([io.BytesIO(to_scan)], change_type=DiffRowType.DELETED)\n    with patch.object(CredSweeper, CredSweeper.export_results.__name__):\n        cred_sweeper.run(patch_provider_del)\n    candidates.extend(cred_sweeper.credential_manager.get_credentials())\n\n    cred_sweeper.config.doc = True\n    cred_sweeper.config.depth = 3\n    cred_sweeper.credential_manager.candidates.clear()\n    text_provider = FilesProvider([\"dummy\", io.BytesIO(to_scan)])\n    with patch.object(CredSweeper, CredSweeper.export_results.__name__):\n        cred_sweeper.run(text_provider)\n    candidates.extend(cred_sweeper.credential_manager.get_credentials())\n\n    cred_sweeper.config.doc = False\n    cred_sweeper.config.depth = 0\n    cred_sweeper.credential_manager.candidates.clear()\n    text_provider = FilesProvider([\"dummy.xml\", io.BytesIO(to_scan)])\n    with patch.object(CredSweeper, CredSweeper.export_results.__name__):\n        cred_sweeper.run(text_provider)\n    candidates.extend(cred_sweeper.credential_manager.get_credentials())\n\n    for candidate in candidates:\n        candidate.to_dict_list(False, False)\n\n\ndef main():\n    # # # Instrument all works with ~30K functions. It is slow, but necessary for fuzzing for new seeds and reducing.\n    # # # Instrumentation may being skipped when checking coverage with existing seeds or seeds minimization.\n    if os.getenv('DO_ATHERIS_INSTRUMENT'):\n        atheris.instrument_all()\n    atheris.Setup(  #\n        sys.argv + [f\"-max_len={INPUT_DATA_SIZE}\"],  # -rss_limit_mb=6912\n        fuzz_credsweeper_scan,  #\n        internal_libfuzzer=True,  #\n        enable_python_coverage=True)\n    atheris.Fuzz()\n\n\nif __name__ == \"__main__\":\n    main()\n"
  },
  {
    "path": "fuzz/auxilary.py",
    "content": "import binascii\nimport random\nimport string\nimport sys\n\nOLD_SEED_SIZE = 2048\nNEW_SEED_SIZE = 4096 - 256\n\n\n# run in fuzz: for f in $(find corpus -type f); do python3 auxilary.py $f; done\n\ndef main(argv):\n    ascii_chars = string.digits + string.ascii_letters + string.punctuation + ' '\n    responses = [\n        b'{\"status\":\"PASS\"}',\n        b'{\"status\":\"REQUEST_DENIED\",\"error_message\":\"The provided API key is invalid.\"}',\n        b'{\"status\":\"REQUEST_DENIED\",\"error_message\":\"This API project is not authorized to use this API.\"}',\n        b'{\"ok\":1}',\n        b'{\"error\":1}',\n        b'{\"error\":\"invalid_auth\"}',\n        b'<body>You are being <a>redirected',\n        b'Unable to find client by that `client_id`',\n        b'{\"error\":{\"message\":null}}',\n        b'{\"error\":{\"message\":\"\"}}',\n        b\"\"\"{\"error\":{\"message\":\"The provided key 'rk_xxxHaving the 'rak_charge_read'\"\"\"\n        b\"\"\" permission would allow this request to continue.\"}}\"\"\",\n    ]\n    for i in argv[1:]:\n        with open(i, \"rb\") as f:\n            data = f.read()\n        for n, x in enumerate(responses):\n            data_size = OLD_SEED_SIZE if OLD_SEED_SIZE < len(data) else len(data)\n            with open(f\"{i}.{n}\", \"wb\") as f:\n                f.write(data[:data_size])\n                f.write(b'\\n' * (NEW_SEED_SIZE - data_size))\n                f.write(x)\n        crc32 = binascii.crc32(data)\n        random.seed(crc32)\n        text = ''.join(random.choice(ascii_chars) for _ in range(NEW_SEED_SIZE))\n        with open(f\"{i}.{crc32:08x}\", \"w\") as f:\n            f.write(text)\n\n\nif __name__ == \"__main__\":\n    main(sys.argv)\n"
  },
  {
    "path": "fuzz/coveraging.sh",
    "content": "#!/usr/bin/env bash\n\n#set -x\nset -e\n\nSTART_TIME=$(date +%s)\necho \">>> START ${BASH_SOURCE[0]} in $(pwd) at $(date)\"\nTHISDIR=\"$( cd \"$( dirname \"${BASH_SOURCE[0]}\" )\" > /dev/null 2>&1 && pwd )\"\ncd \"${THISDIR}/..\"\n\ncp -vf fuzz/__main__.py .coveraging.py\n\nCORPUS_DIR=fuzz/corpus\n\nrm -vf .coverage\n\npython -m coverage run \\\n    --source=credsweeper \\\n    .coveraging.py \\\n    -rss_limit_mb=4096 \\\n    -atheris_runs=$(( 1 + $(ls ${CORPUS_DIR} | wc -l) )) \\\n    -verbosity=1 \\\n    ${CORPUS_DIR} \\\n    ;\n\n# make html report\npython -m coverage html\n# remove uniq data to compare reports\n(cd htmlcov && for f in $(ls . | grep '.*\\.html'); do sed -i \"s/.*created at.*//g\" $f; done)\n\n# report in text format\npython -m coverage report | tee report.txt\n\nSPENT_TIME=$(date -ud \"@$(( $(date +%s) - ${START_TIME} ))\" +\"%H:%M:%S\")\necho \"<<< DONE ${BASH_SOURCE[0]} in $(pwd) at $(date) elapsed ${SPENT_TIME}\"\n"
  },
  {
    "path": "fuzz/fuzzing.sh",
    "content": "#!/usr/bin/env bash\n\n#set -x\nset -e\n\nSTART_TIME=$(date +%s)\necho \">>> START ${BASH_SOURCE[0]} in $(pwd) at $(date)\"\nTHISDIR=\"$( cd \"$( dirname \"${BASH_SOURCE[0]}\" )\" > /dev/null 2>&1 && pwd )\"\ncd \"${THISDIR}/..\"\n\ncp -vf fuzz/__main__.py .fuzzing.py\n\nCORPUS_DIR=fuzz/corpus\n\n# DO instrument to find new seeds\nexport DO_ATHERIS_INSTRUMENT=1\n\n# fuzzing with single thread only\npython .fuzzing.py \\\n    -rss_limit_mb=6500 \\\n    -atheris_runs=$(( 100000 + $(ls -1 ${CORPUS_DIR} | wc -l) )) \\\n    -verbosity=1 \\\n    ${CORPUS_DIR} \\\n    ;\n\n# Multijob works with -runs, ignoring -atheris_runs !!!\n\nSPENT_TIME=$(date -ud \"@$(( $(date +%s) - ${START_TIME} ))\" +\"%H:%M:%S\")\necho \"<<< DONE ${BASH_SOURCE[0]} in $(pwd) at $(date) elapsed ${SPENT_TIME}\"\n"
  },
  {
    "path": "fuzz/minimizing.sh",
    "content": "#!/usr/bin/env bash\n\n#set -x\nset -e\n\nSTART_TIME=$(date +%s)\necho \">>> START ${BASH_SOURCE[0]} in $(pwd) at $(date)\"\nTHISDIR=\"$( cd \"$( dirname \"${BASH_SOURCE[0]}\" )\" > /dev/null 2>&1 && pwd )\"\ncd \"${THISDIR}/..\"\n\ncp -vf fuzz/__main__.py .minimizing.py\n\nCORPUS_DIR=fuzz/corpus\nMINIMIZING_DIR=fuzz/.corpus.minimizing\n\nrm -vfr ${MINIMIZING_DIR}\n\nmkdir -vp ${MINIMIZING_DIR}\n\n# ## freeze original coverage\n\nrm -fr ${MINIMIZING_DIR}/htmlcov\n\nrm -vf .coverage\n\npython -m coverage run \\\n    --source=credsweeper \\\n    .minimizing.py \\\n    -rss_limit_mb=2048 \\\n    -atheris_runs=$(( 1 + $(ls ${CORPUS_DIR} | wc -l) )) \\\n    -verbosity=1 \\\n    ${CORPUS_DIR}/ \\\n    ;\n\npython -m coverage report >${MINIMIZING_DIR}/report.txt\noriginal_cov=\"$(tail -1 ${MINIMIZING_DIR}/report.txt)\"\n\nif [ -n \"${PRODUCE_HTML}\" ]; then\n    python -m coverage html\n    mv htmlcov ${MINIMIZING_DIR}\nfi\n\n# ## run minimization for all corpuses\n\ndeclare -a CORPUS\n\ni=0\nfor f in $(ls -S ${CORPUS_DIR}); do\n    CORPUS[$i]+=$f\n    i=$(( 1 + $i ))\ndone\n\nfor f in ${CORPUS[@]}; do\n\n    echo \"test $f\"\n    mv -vf ${CORPUS_DIR}/$f ${MINIMIZING_DIR}/\n\n    python -m coverage run \\\n        --source=credsweeper \\\n        .minimizing.py \\\n        -rss_limit_mb=2048 \\\n        -atheris_runs=$(( 1 + $(ls ${CORPUS_DIR} | wc -l) )) \\\n        -verbosity=1 \\\n        ${CORPUS_DIR}/ \\\n        ;\n    if [ -n \"${PRODUCE_HTML}\" ]; then\n        python -m coverage html\n        mv htmlcov ${MINIMIZING_DIR}/$f.htmlcov\n    fi\n    python -m coverage report >${MINIMIZING_DIR}/$f.txt\n    test_cov=\"$(tail -1 ${MINIMIZING_DIR}/$f.txt)\"\n    if [ \"$test_cov\" != \"$original_cov\" ]; then\n        echo \"seed file $f impacts on coverage\"\n        cp -vf ${MINIMIZING_DIR}/$f ${CORPUS_DIR}/\n    else\n        echo \"seed file $f does not impact on coverage\"\n    fi\n\ndone\n\nSPENT_TIME=$(date -ud \"@$(( $(date +%s) - ${START_TIME} ))\" +\"%H:%M:%S\")\necho \"<<< DONE ${BASH_SOURCE[0]} in $(pwd) at $(date) elapsed ${SPENT_TIME}\"\n"
  },
  {
    "path": "fuzz/re-fuzzing.sh",
    "content": "#!/usr/bin/env bash\n\nset -x\nset -e\n\nSTART_TIME=$(date +%s)\necho \">>> START ${BASH_SOURCE[0]} in $(pwd) at $(date)\"\nTHISDIR=\"$( cd \"$( dirname \"${BASH_SOURCE[0]}\" )\" > /dev/null 2>&1 && pwd )\"\nPARENTDIR=\"$(dirname ${THISDIR})\"\n\nCORPUS_DIR=fuzz/corpus\n\n# copy all current samples as additional seeds\nfind $PARENTDIR/tests/samples/* -type f -print0 | while IFS= read -r -d '' f; do\n    s=$(sha1sum $f | cut -c-40)\n    cp -vf $f $PARENTDIR/$CORPUS_DIR/$s\n    # produce an archive without file names\n    rm -vf $PARENTDIR/$CORPUS_DIR/$s.gz\n    gzip -k $PARENTDIR/$CORPUS_DIR/$s\n    mv -vf $PARENTDIR/$CORPUS_DIR/$s.gz $PARENTDIR/$CORPUS_DIR/$(sha1sum $PARENTDIR/$CORPUS_DIR/$s.gz | cut -c-40)\n    rm -vf $PARENTDIR/$CORPUS_DIR/$s.bz2\n    bzip2 -k $PARENTDIR/$CORPUS_DIR/$s\n    mv -vf $PARENTDIR/$CORPUS_DIR/$s.bz2 $PARENTDIR/$CORPUS_DIR/$(sha1sum $PARENTDIR/$CORPUS_DIR/$s.bz2 | cut -c-40)\n    rm -vf $PARENTDIR/$CORPUS_DIR/$s.xz\n    xz -z -k $PARENTDIR/$CORPUS_DIR/$s\n    mv -vf $PARENTDIR/$CORPUS_DIR/$s.xz $PARENTDIR/$CORPUS_DIR/$(sha1sum $PARENTDIR/$CORPUS_DIR/$s.xz | cut -c-40)\n    rm -vf $PARENTDIR/$CORPUS_DIR/$s.lzma\n    lzma -z -k $PARENTDIR/$CORPUS_DIR/$s\n    mv -vf $PARENTDIR/$CORPUS_DIR/$s.lzma $PARENTDIR/$CORPUS_DIR/$(sha1sum $PARENTDIR/$CORPUS_DIR/$s.lzma | cut -c-40)\n    # produce zip archive with simple file names\n    rm -vf $PARENTDIR/$CORPUS_DIR/$s.zip\n    zip -j -9 -D $PARENTDIR/$CORPUS_DIR/$s.zip $f\n    mv -vf $PARENTDIR/$CORPUS_DIR/$s.zip $PARENTDIR/$CORPUS_DIR/$(sha1sum $PARENTDIR/$CORPUS_DIR/$s.zip | cut -c-40)\n    # transform name\n    rm -vf $PARENTDIR/$CORPUS_DIR/$s.tar\n    tar --transform='s|.*'$(basename $f)'|'$(basename $f)'|' -cf $PARENTDIR/$CORPUS_DIR/$s.tar $f\n    mv -vf $PARENTDIR/$CORPUS_DIR/$s.tar $PARENTDIR/$CORPUS_DIR/$(sha1sum $PARENTDIR/$CORPUS_DIR/$s.tar | cut -c-40)\ndone\n\n# DO instrument to find new seeds with multiple jobs - effective for small set of initial seeds (corpus)\nexport DO_ATHERIS_INSTRUMENT=1\n# copy the script to apply multijob fuzzing\ncp -vf ${THISDIR}/__main__.py ${PARENTDIR}/.fuzzing.py\ncd ${PARENTDIR}\n# workers would be equal jobs obviously or it takes unpredictable time\nif [ 4 -le $(nproc) ]; then\n    PROCESSES_NUMBER=$(( $(nproc) / 4 ))\nelse\n    PROCESSES_NUMBER=1\nfi\n./.fuzzing.py \\\n    -rss_limit_mb=6500 \\\n    -runs=$(( 10000 + $(ls -1 ${CORPUS_DIR} | wc -l) )) \\\n    -verbosity=1 \\\n    -jobs=${PROCESSES_NUMBER} \\\n    -workers=${PROCESSES_NUMBER} \\\n    ${CORPUS_DIR} \\\n    ;\n# clean-up\nrm -vf ${PARENTDIR}/.fuzzing.py\n# skip to avoid instrumentation during minimization\nunset DO_ATHERIS_INSTRUMENT\n\n# do reducing in single step\ncd ${THISDIR}\n(./reducing.sh)\n\n# minimization with splitting by first letter of seeds files - 8 jobs\ndeclare -A JOBS\nfor n in $(seq 0 15); do\n    x=$(( 15 - ${n} ))\n    j=$(printf \"%01x\" ${x})\n    t=$(printf \"%01x\" $(( (${x} / 2) * 2 )))\n    TARGETDIR=${THISDIR}/${t}\n    mkdir -vp ${TARGETDIR}/fuzz/corpus\n    cp -r ${PARENTDIR}/credsweeper ${TARGETDIR}/\n    cp -v ${PARENTDIR}/.coveragerc ${TARGETDIR}/\n    # import NEGLIGIBLE_ML_THRESHOLD from tests ONLY\n    mkdir -vp ${TARGETDIR}/tests\n    grep NEGLIGIBLE_ML_THRESHOLD ${PARENTDIR}/tests/__init__.py | tee ${TARGETDIR}/tests/__init__.py\n    cp -v ${PARENTDIR}/fuzz/__main__.py ${TARGETDIR}/fuzz/\n    cp -v ${PARENTDIR}/fuzz/minimizing.sh ${TARGETDIR}/fuzz/\n    for f in $(find ${PARENTDIR}/${CORPUS_DIR} -type f -name \"${j}*\"); do mv -vf ${f} ${TARGETDIR}/${CORPUS_DIR}/; done\n    if [ \"${t}\" == \"${j}\" ]; then\n        cd ${TARGETDIR}/fuzz\n        (nohup bash -c \"./minimizing.sh\") &\n        job_id=$!\n        JOBS[${j}]=${job_id}\n    fi\n    cd ${THISDIR}\ndone\n\nBUSY=8\n# wait for job finishing\nwhile [ 0 -ne ${BUSY} ]; do\n    i=$(( ${BUSY} * 10 ))\n    echo -en \"\\nSleep seconds:\"\n    while [ 0 -lt $i ]; do\n        echo -n \" $i\"\n        i=$(( ${i} - 1 ))\n        sleep 1\n    done\n    BUSY=0\n    echo -en \"\\nCheck jobs:\"\n    for x in $(seq 0 15); do\n        j=$(printf \"%01x\" ${x})\n        job_id=${JOBS[$j]}\n        if [ -z \"${job_id}\" ]; then\n            continue\n        elif kill -0 ${job_id}; then\n            BUSY=$(( 1 + ${BUSY} ))\n            echo -n \" job $j is alive\"\n        else\n            echo -n \" job $j has done\"\n        fi\n    done\ndone\n\nunset JOBS\n\n# collect\nfor x in $(seq 0 15); do\n    j=$(printf \"%01x\" ${x})\n    TARGETDIR=${THISDIR}/${j}\n    for f in $(find ${TARGETDIR}/${CORPUS_DIR} -type f); do mv -vf ${f} ${PARENTDIR}/${CORPUS_DIR}/; done\n    rm -fr ${TARGETDIR}\ndone\n\n# last minimization\ncd ${THISDIR}\n(./minimizing.sh)\n\nSPENT_TIME=$(date -ud \"@$(( $(date +%s) - ${START_TIME} ))\" +\"%H:%M:%S\")\necho \"<<< DONE ${BASH_SOURCE[0]} in $(pwd) at $(date) elapsed ${SPENT_TIME}\"\n"
  },
  {
    "path": "fuzz/reducing.sh",
    "content": "#!/usr/bin/env bash\n\n#set -x\nset -e\n\nSTART_TIME=$(date +%s)\necho \">>> START ${BASH_SOURCE[0]} in $(pwd) at $(date)\"\nTHISDIR=\"$( cd \"$( dirname \"${BASH_SOURCE[0]}\" )\" > /dev/null 2>&1 && pwd )\"\ncd \"${THISDIR}/..\"\n\nCORPUS_DIR=fuzz/corpus\nREDUCING_DIR=fuzz/.corpus.reducing\n\n# DO instrument to find new seeds\nexport DO_ATHERIS_INSTRUMENT=1\n\nfunction get_size()\n{\n    r=0\n    if [ -d $1 ]; then\n        for f in $(find $1 -type f); do\n            r=$(( $r + $(stat --format=%s $f) ))\n        done\n    fi\n    echo $r\n}\n\nfunction get_count()\n{\n    r=0\n    if [ -d $1 ]; then\n        r=$(ls $1 | wc -l)\n    fi\n    echo $r\n}\n\nuniq_corpus_size=$(get_size ${CORPUS_DIR})\nfull_corpus_size=$(get_size ${REDUCING_DIR})\n\nuniq_corpus_count=$(get_count ${CORPUS_DIR})\nfull_corpus_count=$(get_count ${REDUCING_DIR})\n\ncp -vf fuzz/__main__.py .reducing.py\n\nwhile [ $uniq_corpus_size -ne $full_corpus_size ] || [ $uniq_corpus_count -ne $full_corpus_count ]; do\n\n    if [ 0 -eq $uniq_corpus_count ]; then\n        echo \"ERROR: Empty input ${CORPUS_DIR} dir!\"\n        exit 1;\n    fi\n\n    rm -vfr ${REDUCING_DIR}\n    mkdir -vp ${REDUCING_DIR}\n    mv -vf ${CORPUS_DIR}/* ${REDUCING_DIR}/\n\n    ./.reducing.py \\\n        -rss_limit_mb=6000 \\\n        -verbosity=1 \\\n        -merge=1 \\\n        ${CORPUS_DIR}/ \\\n        ${REDUCING_DIR}/ \\\n        ;\n \n    uniq_corpus_size=$(get_size ${CORPUS_DIR})\n    full_corpus_size=$(get_size ${REDUCING_DIR})\n\n    uniq_corpus_count=$(get_count ${CORPUS_DIR})\n    full_corpus_count=$(get_count ${REDUCING_DIR})\n\n    if [ 0 -eq $uniq_corpus_size ] || \\\n       [ 0 -eq $full_corpus_size ] || \\\n       [ 0 -eq $uniq_corpus_count ] || \\\n       [ 0 -eq $full_corpus_count ]; then\n        echo \"something went wrong\"\n        exit 1\n    fi\ndone\n\nif [ $uniq_corpus_size -eq $full_corpus_size ] && [ $uniq_corpus_count -eq $full_corpus_count ]; then\n    rm -vfr .reducing.py ${REDUCING_DIR}\nfi\n\nSPENT_TIME=$(date -ud \"@$(( $(date +%s) - ${START_TIME} ))\" +\"%H:%M:%S\")\necho \"<<< DONE ${BASH_SOURCE[0]} in $(pwd) at $(date) elapsed ${SPENT_TIME}\"\n"
  },
  {
    "path": "fuzz/requirements.txt",
    "content": "# Fuzzing\natheris==2.3.0; python_version < '3.12'\natheris==3.0.0; python_version >= '3.12' and python_version < '3.14'\n\n# auxiliary. should be installed from ../requirements.txt (pytest-cov)\ncoverage\n"
  },
  {
    "path": "pyproject.toml",
    "content": "[project]\nname = \"credsweeper\"\ndynamic = [\"version\"]\ndescription = \"Credential Sweeper\"\nauthors = [\n]\ndependencies = [\n    \"base58\",\n    \"beautifulsoup4>=4.11.0\",\n    \"colorama\",\n    \"cryptography\",\n    \"GitPython\",\n    \"humanfriendly\",\n    \"lxml\",\n    \"numpy\",\n    \"odfpy\",\n    \"onnxruntime\",\n    \"openpyxl\",\n    \"pandas\",\n    \"pdfminer.six\",\n    \"pybase62\",\n    \"pyjks\",\n    \"python-dateutil\",\n    \"python-docx\",\n    \"python-pptx\",\n    \"PyYAML\",\n    \"pyxlsb\",\n    \"rpmfile\",\n    \"striprtf\",\n    \"whatthepatch\",\n    \"xlrd\",\n]\nrequires-python = \">=3.10\"\nreadme = \"README.md\"\nlicense = {text = \"MIT\"}\nclassifiers = [\n    \"License :: OSI Approved :: MIT License\",\n    \"Operating System :: OS Independent\",\n    \"Programming Language :: Python :: 3\",\n    \"Programming Language :: Python :: 3 :: Only\",\n    \"Programming Language :: Python :: 3.10\",\n    \"Programming Language :: Python :: 3.11\",\n    \"Programming Language :: Python :: 3.12\",\n    \"Programming Language :: Python :: 3.13\",\n    \"Programming Language :: Python :: 3.14\",\n    \"Topic :: Security\",\n    \"Topic :: Software Development :: Quality Assurance\",\n]\n\n[project.urls]\nHomepage = \"https://github.com/Samsung/CredSweeper\"\n\"Bug Tracker\" = \"https://github.com/Samsung/CredSweeper/issues\"\n\n[build-system]\nrequires = [\"hatchling\"]\nbuild-backend = \"hatchling.build\"\n\n[tool.hatch.version]\npath = \"credsweeper/__init__.py\"\n\n[tool.hatch.build.targets.sdist]\nignore-vcs = true\nonly-include = [\"/credsweeper\"]\n\n[project.scripts]\ncredsweeper = \"credsweeper.__main__:main\"\n"
  },
  {
    "path": "pytest.ini",
    "content": "[pytest]\npythonpath = credsweeper\ntestpaths = tests\n"
  },
  {
    "path": "requirements.txt",
    "content": "# Python 3.10.20\n# pip 26.0.1\n\n# build requirement\nbuild==1.5.0\nhatchling==1.29.0\n# 1.27.0 creates Metadata-Version: 2.4 which is not supported fully by publish github action\n#hatchling==1.26.3\n# check build\ntwine==6.2.0\n\n# Common requirements\nbase58==2.1.1\nbeautifulsoup4==4.14.3\ncolorama==0.4.6\ncryptography==48.0.0\nGitPython==3.1.50\nhumanfriendly==10.0\nlxml==6.1.0\nnumpy==2.2.6; python_version == '3.10'\nnumpy==2.4.4; python_version > '3.10'\nodfpy==1.4.1\nxlrd==2.0.2\nstriprtf==0.0.32\n\n# onnxruntime - ML engine\nonnxruntime==1.23.2; python_version < '3.14'\nonnxruntime==1.26.0; python_version >= '3.14'\n\n# openpyxl - A Python library to read/write Excel 2010 xlsx/xlsm files\nopenpyxl==3.1.5\n\n# pandas - ML requirement and excel data reading\npandas==2.3.3; python_version == '3.10'\npandas==3.0.3; python_version > '3.10'\n\npdfminer.six==20260107\npybase62==1.0.0\npyjks==20.0.0\npython-dateutil==2.9.0.post0\npython-docx==1.2.0\npython-pptx==1.0.2\nPyYAML==6.0.3\npyxlsb==1.0.10\nrpmfile==2.2.1\nwhatthepatch==1.0.7\n\n# Auxiliary packages for development\n# tests\ndeepdiff\nflake8\nhypothesis\npytest\npytest-cov\npytest-html\npytest-random-order\n\n# linters\npylint\nmypy\nyapf\n\n# stubs\nlxml-stubs\npandas-stubs\n\n# types\ntypes-beautifulsoup4\ntypes-colorama\ntypes-lxml\ntypes-PyYAML\ntypes-python-dateutil\ntypes-pyjks\ntypes-regex\ntypes-humanfriendly\ntypes-whatthepatch\n"
  },
  {
    "path": "tests/README.md",
    "content": "# About the test credentials\n\nAll credentials that in this directory are invalid credentials.\nThey are just test purpose credentials for CredSweeper.\nSo don't confuse it as an actual credential.\n"
  },
  {
    "path": "tests/__init__.py",
    "content": "from pathlib import Path\n\n# total number of files in test samples\nSAMPLES_FILES_COUNT = 198\n\n# ML_DELTA for different platforms which may produce a dribbling in ml_probability\nML_DELTA = 0.0001\n\n# float value of ML threshold is used to display possible lowest values\nZERO_ML_THRESHOLD = 0.0\n\n# with option --doc & ZERO_ML_THRESHOLD\nSAMPLES_IN_DOC = 959\n\n# credentials count after scan without filters and ML validations\nSAMPLES_REGEX_COUNT = 716\n\n# credentials count after scan with filters and without ML validation\nSAMPLES_FILTERED_COUNT = 579\n\n# credentials count after default post-processing\nSAMPLES_POST_CRED_COUNT = 531\n\n# archived credentials that are not found without --depth\nSAMPLES_IN_DEEP_1 = SAMPLES_POST_CRED_COUNT + 140\nSAMPLES_IN_DEEP_2 = SAMPLES_IN_DEEP_1 + 13\nSAMPLES_IN_DEEP_3 = SAMPLES_IN_DEEP_2 + 4\n\n# well known string with all latin letters\nAZ_DATA = b\"The quick brown fox jumps over the lazy dog\"\n# Assume, there should be only ASCII symbols\nAZ_STRING = AZ_DATA.decode(encoding=\"ascii\", errors=\"strict\")\n\n# tests directory - use ONLY this file relevance for \"release_test\" workflow\nTESTS_PATH = Path(__file__).resolve().parent\n# test samples directory\nSAMPLES_PATH = TESTS_PATH / \"samples\"\nSAMPLE_TAR = SAMPLES_PATH / \"pem_key.tar\"\nSAMPLE_ZIP = SAMPLES_PATH / \"pem_key.zip\"\nSAMPLE_HTML = SAMPLES_PATH / \"test.html\"\nSAMPLE_DOCX = SAMPLES_PATH / \"sample.docx\"\nSAMPLE_PY = SAMPLES_PATH / \"sample.py\"\nSAMPLE_DEB = SAMPLES_PATH / \"sample.deb\"\nSAMPLE_SQLITE = SAMPLES_PATH / \"sample.sqlite\"\n"
  },
  {
    "path": "tests/common/__init__.py",
    "content": ""
  },
  {
    "path": "tests/common/test_confidence.py",
    "content": "import unittest\n\nfrom credsweeper.common.constants import Confidence\n\n\nclass TestConfidence(unittest.TestCase):\n\n    def test_severity_p(self):\n        self.assertEqual(Confidence.MODERATE, Confidence.get(Confidence.MODERATE))\n        self.assertEqual(Confidence.WEAK, Confidence.get(\"WeaK\"))\n        self.assertEqual(Confidence.MODERATE, Confidence.get(\"MODERATE\"))\n        self.assertEqual(Confidence.STRONG, Confidence.get(\"strong\"))\n\n    def test_severity_n(self):\n        self.assertIsNone(Confidence.get(None))\n        self.assertIsNone(Confidence.get(1))\n        self.assertIsNone(Confidence.get([1, 2, 3]))\n        self.assertIsNone(Confidence.get({1, 2, 3}))\n        self.assertIsNone(Confidence.get(\"None\"))\n        self.assertIsNone(Confidence.get(\"HI-GH\"))\n        self.assertIsNone(Confidence.get(\" HI GH \"))\n\n    def test_severity_comparison_p(self):\n        self.assertTrue(Confidence.WEAK < Confidence.MODERATE)\n        self.assertTrue(Confidence.WEAK < Confidence.STRONG)\n        self.assertTrue(Confidence.MODERATE < Confidence.STRONG)\n        test_list = [Confidence.MODERATE, Confidence.STRONG, Confidence.WEAK]\n        test_list.sort()\n        self.assertListEqual([Confidence.WEAK, Confidence.MODERATE, Confidence.STRONG], test_list)\n\n    def test_severity_comparison_n(self):\n        self.assertFalse(Confidence.MODERATE < Confidence.WEAK)\n        self.assertFalse(Confidence.WEAK > Confidence.MODERATE)\n        self.assertFalse(Confidence.WEAK > Confidence.STRONG)\n        self.assertFalse(Confidence.MODERATE > Confidence.STRONG)\n"
  },
  {
    "path": "tests/common/test_keyword_checklist.py",
    "content": "from unittest import TestCase\n\nfrom credsweeper.common import KeywordChecklist\nfrom credsweeper.utils.util import Util\n\n\nclass TestKeywordChecklist(TestCase):\n\n    def test_keyword_set_p(self):\n        # quick test to match all keywords for regex\n        for i in KeywordChecklist().keyword_set:\n            self.assertLessEqual(3, len(i))\n            self.assertRegex(i, r\"[a-z0-9.]{3,500}\")\n\n    def test_morpheme_set_p(self):\n        # quick test to match all morphemes for regex\n        for i in KeywordChecklist().morpheme_set:\n            self.assertLessEqual(3, len(i))\n            # valid symbols for variable names\n            self.assertRegex(i, r\"[a-z0-9_/.\\\\:]{3,500}\")\n\n    def test_keyword_set_n(self):\n        # checks whether the keywords are unique, in lower case and not shorter than 3 symbols\n        keyword_checklist_bytes = Util.read_data(KeywordChecklist.KEYWORD_PATH)\n        keyword_set = set(keyword_checklist_bytes.decode().split())\n        new_set = set()\n        wrong_items = []\n        for i in keyword_set:\n            if i.lower() == i and 3 <= len(i):\n                new_set.add(i)\n            else:\n                wrong_items.append(i)\n        if wrong_items:\n            # writes correct checklist to output file - it must be applied\n            with open(KeywordChecklist.KEYWORD_PATH, \"w\") as f:\n                # use alphabet sorting to keep constant order and reduce git diff\n                text = '\\n'.join(sorted(list(new_set)))\n                f.write(text)\n                f.write('\\n')\n        self.assertFalse(wrong_items, \"Keywords list has been rearranged and updated\")\n\n    def test_morpheme_set_n(self):\n        # check whether the morphemes are optimized and updates the file with optimized list\n        morpheme_checklist_data = Util.read_data(KeywordChecklist.MORPHEME_PATH)\n        original_morpheme_list = morpheme_checklist_data.decode().split()\n        original_morpheme_list_len = len(original_morpheme_list)\n        morpheme_set = set(original_morpheme_list)\n        optimized_morpheme_list = sorted(list(morpheme_set), key=lambda e: len(e))\n\n        is_optimized = False\n        while not is_optimized:\n            morphemes_to_remove_set = set()\n            optimized_morpheme_list_len = len(optimized_morpheme_list)\n            idx = 0\n            for optimized_morpheme in optimized_morpheme_list:\n                idx += 1\n                if optimized_morpheme.lower() == optimized_morpheme and 3 <= len(optimized_morpheme):\n                    # search in rest list whether the items have the substring\n                    local_idx = idx\n                    while local_idx < optimized_morpheme_list_len:\n                        if optimized_morpheme in optimized_morpheme_list[local_idx]:\n                            # longer morpheme should be removed because it includes short morpheme inside\n                            morphemes_to_remove_set.add(optimized_morpheme_list[local_idx])\n                        local_idx += 1\n                else:\n                    # wrong - must be removed\n                    morphemes_to_remove_set.add(optimized_morpheme)\n            for to_remove in morphemes_to_remove_set:\n                optimized_morpheme_list.remove(to_remove)\n            is_optimized = 0 == len(morphemes_to_remove_set)\n        diff = original_morpheme_list_len - len(optimized_morpheme_list)\n        if diff:\n            with open(KeywordChecklist.MORPHEME_PATH, \"w\") as f:\n                # use alphabet sorting to keep constant order and reduce git diff\n                text = '\\n'.join(sorted(optimized_morpheme_list))\n                f.write(text)\n                f.write('\\n')\n        self.assertEqual(0, diff, \"Morpheme list has been rearranged and updated\")\n"
  },
  {
    "path": "tests/common/test_keyword_pattern.py",
    "content": "import pytest\n\nfrom credsweeper.common.keyword_pattern import KeywordPattern\nfrom credsweeper.config.config import Config\nfrom credsweeper.credentials.line_data import LineData\nfrom credsweeper.utils.util import Util\nfrom tests.filters.conftest import KEYWORD_PASSWORD_PATTERN\n\n\nclass TestKeywordPattern:\n\n    @pytest.mark.parametrize(\"line\", [\"melon is 'banana'\"])\n    def test_separator_n(self, config: Config, file_path: pytest.fixture, line: str) -> None:\n        pattern = KeywordPattern.get_keyword_pattern(\"melon\")\n        line_data = LineData(config,\n                             line,\n                             0,\n                             1,\n                             file_path,\n                             Util.get_extension(file_path),\n                             info=\"dummy\",\n                             pattern=pattern)\n        assert line_data.value is None\n\n    @pytest.mark.parametrize(\"line\", [\"melon = 'banAna'\", \"melon : 'banAna'\", \"melon := 'banAna'\"])\n    def test_separator_p(self, config: Config, file_path: pytest.fixture, line: str) -> None:\n        pattern = KeywordPattern.get_keyword_pattern(\"melon\")\n        line_data = LineData(config,\n                             line,\n                             0,\n                             1,\n                             file_path,\n                             Util.get_extension(file_path),\n                             info=\"dummy\",\n                             pattern=pattern)\n        assert line_data.value == \"banAna\"\n\n    @pytest.mark.parametrize(\n        \"line, value\",\n        [\n            # [\"\"\"password='\\\\\\\\'secret-1\\\\\\\\''\"\"\", \"\"\"\\\\'secret-1\\\\'\"\"\"],  # todo\n            # ['''password=\"\\\\\"secret-2\\\\\"\"''', '''\\\\\"secret-2\\\\\"'''],  # todo\n            # [\"\"\"password=rb'\\\\'secret=1\\\\''\"\"\", \"\"\"\\\\'secret=1\\\\'\"\"\"],  # todo\n            # ['''password=f\"\\\\\"secret=2\\\\\"\"''', '''\\\\\"secret=2\\\\\"'''],  # todo\n            # ['''password=r\"\\\\\\\\\"secret=3\\\\\\\\\"\"''', '''\\\\\"secret=3\\\\\"'''],  # todo\n            # ['''\"password = 'sec;$2`\\\\'[\\\\/*;ret';\";''', '''sec;$2`\\\\'[\\\\/*;ret'''],  # todo\n            ['PASSWORD = os.environ.get(\"PASSWORD\") or \"at5G6zi!m\"', \"at5G6zi!m\"],\n            [\"deFINE \\\\n\\\\t('DB_PASSWORD',\\\\n\\\\t'devSeCrEt');\", \"devSeCrEt\"],\n            ['''...log=1;User ID=X3;password=Quantum42!\\\\\"\"''', '''Quantum42!'''],\n            [\n                'Password: []byte{134, 217, 176, 23, 206, 245, 164, 94, 102, 114, 172, 33, 248, 215, 246, 357},',\n                '134, 217, 176, 23, 206, 245, 164, 94, 102, 114, 172, 33, 248, 215, 246, 357'\n            ],\n            [\n                'password = util.getPasswordFromHex(\"c275ecec7b5eda8a330bec5bc275b3f1\", None)',\n                \"c275ecec7b5eda8a330bec5bc275b3f1\"\n            ],\n            ['password = util.getPassword(\"User1\", \"D3fa9UL7Pa5s\")', \"D3fa9UL7Pa5s\"],\n            ['password = i[2].get(\"PASS\", \"D3fA9UL7Pa5s\")', \"D3fA9UL7Pa5s\"],\n            ['password = os.getenv(\"DB_PASS\", \"D3fA9Ul7pAs5\")', \"D3fA9Ul7pAs5\"],\n            [\"password = data.get ( 'MY_PASS' , default = 'D3fA9Ul7pA5s' ) \", \"D3fA9Ul7pA5s\"],\n            [\n                'PASSWORD = bytes([0xDF, 0x42, 0xD8, 0x34, 0xDD, 0x1E, 0xD8, 0x24, 0xD8, 0x37, 0xD8, 0x01, 0xD8, 0x52])',\n                \"0xDF, 0x42, 0xD8, 0x34, 0xDD, 0x1E, 0xD8, 0x24, 0xD8, 0x37, 0xD8, 0x01, 0xD8, 0x52\"\n            ],\n            ['password = superCrypto ( \"CEKPET\" ) ;', \"CEKPET\"],\n            ['self.setPassword(\"0bead47f3c5bc275ec7b5eda8a333f\")', \"0bead47f3c5bc275ec7b5eda8a333f\"],\n            ['if str(password) == \"0bead47f3c5bc275ec7b5eda8a333f\":', \"0bead47f3c5bc275ec7b5eda8a333f\"],\n            ['if [[ \"%{password}\" =~ \"himmelsrand\"  ]]; then', 'himmelsrand'],\n            [\"setPasssword ( 'MY_TEST&PASSWORD!',\", \"MY_TEST&PASSWORD!\"],\n            [\"setPasssword('MY_TEST&PASSWORD!')\", \"MY_TEST&PASSWORD!\"],\n            ['#define password {0x35, 0x34, 0x65, 0x9b, 0x1c, 0x2e}', '0x35, 0x34, 0x65, 0x9b, 0x1c, 0x2e'],\n            ['#define password {0x35, 0x34, 0x65, 0x9b, 0x1c, 0x2e \\\\', '0x35, 0x34, 0x65, 0x9b, 0x1c, 0x2e \\\\'],\n            ['#define password \";,}d4s@\\\\on\"', \";,}d4s@\\\\on\"],\n            ['%define password \"CEKPET\"', \"CEKPET\"],\n            [\"set password CEKPET\", \"CEKPET\"],\n            ['password = get_password(option1=\"CEKPET\", option2=\"KOMETA\")', \"CEKPET\"],\n            [\n                '{\"PWD\":[{\"kty\":\"oct\",\"kid\":\"25b58GCM\",\"k\":\"Xc_2A\"},{\"kty\":\"oct\",\"kid\":\"09b51KW\",\"k\":\"KG6wlB-6sIVQ\"}]',\n                '\"kty\":\"oct\",\"kid\":\"25b58GCM\",\"k\":\"Xc_2A\"'\n            ],\n            [\n                '{\"PWD\":[{\"ktyX\":\"oct\",\"kid\":\"25b58GCM\",\"k\":\"Xc_2A\"},{\"kty\":\"oct\",\"kid\":\"09b51KW\",\"k\":\"KG6wlB-6sIVQ\"}]',\n                'ktyX'  # todo \"ktyX\":\"oct\",\"kid\":\"25b58GCM\",\"k\":\"Xc_2A\"\n            ],\n            [\"pass = Super::Encryptor('seCreT', 'secRet2');\", \"seCreT\"],\n            ['PWD = {\"123\": \"08c8b5b3\", 456: \"07c6aa05\"}', '\"123\": \"08c8b5b3\", 456: \"07c6aa05\"'],\n            ['PWD = {\"1234\": \"abcd\", 1: \"efgh\"}', '1234'],\n            [\"password: { other_secret: 'GehE1mNi5',\", \"GehE1mNi5\"],\n            [\"byte[] password = new byte[]{0x3, 0x5, 0x8, 0x3, 0x5, 0x8};\", \"0x3, 0x5, 0x8, 0x3, 0x5, 0x8\"],\n            [\"byte[]password=new byte[]{0x3,0x5,0x8,0x3,0x5,0x8};\", \"0x3,0x5,0x8,0x3,0x5,0x8\"],\n            [\"char[] password = new char[]{'f',\\\\x03, 02 ,'1', 0};\", \"'f',\\\\x03, 02 ,'1', 0\"],\n            [\"char password[] = {'H', 'e', 'l', 'l', 'o', '\\0'};\", \"'H', 'e', 'l', 'l', 'o', '\\0'\"],\n            [\"char password[] = {0x34, 0x53, 0x53, 0x62, 000};\", \"0x34, 0x53, 0x53, 0x62, 000\"],\n            [\"char[] password = new char[]{'b', 'y', 't', 'e', 's', '\\\\0'};\", \"'b', 'y', 't', 'e', 's', '\\\\0'\"],\n            [\"char[] password = new char[]{023, 010, 041, 033, 043, 000};\", \"023, 010, 041, 033, 043, 000\"],\n            ['final String [] password = new String [] { \"GehE1mNi5\",', 'GehE1mNi5'],\n            [\"private static readonly byte[] password = new byte[] { 'X','3', '4', '0'   \\\\\", \"'X','3', '4', '0'   \\\\\"],\n            [\"password=${REMOVE_PREFIX#prefix}\", \"${REMOVE_PREFIX#prefix}\"],\n            [\"password='${REMOVE_PREFIX#prefix}'\", \"${REMOVE_PREFIX#prefix}\"],\n            [\"password=${cat pass}\", \"${cat\"],\n            ['password=$(echo \"pass\")', \"$(echo\"],\n            [\"password='$(( 1 + 2 + 3 + 4 ))'\", \"$(( 1 + 2 + 3 + 4 ))\"],\n            [\"password=$(( 1 + 2 + 3 + 4 ))\", \"$(( 1 + 2 + 3 + 4 ))\"],\n            [\"password='$[[ 1 + 2 + 3 + 4 ]]'\", \"$[[ 1 + 2 + 3 + 4 ]]\"],\n            [\"password=$[[ 1 + 2 + 3 + 4 ]]\", \"\"],  # obsolete\n            [\"password=$[[_1_+_2_+_3_+_4_]]\", \"$[[_1_+_2_+_3_+_4_]]\"],\n            [\"password=${array[@]:7:2}\", \"${array[@]:7:2}\"],\n            [\"password=${1#*=}\", \"${1#*=}\"],\n            [\"A2 ID:master,PW:dipPr10Gg!\", \"dipPr10Gg!\"],\n            [\"pass=get->pass(arg1='seCreT', arg2='secRet2'...\", \"seCreT\"],\n            [\"The test password => skWu850\", \"skWu850\"],\n            [\"$password = Hash::make('GehE1mNi5');\", \"GehE1mNi5\"],\n            ['password = new[] {\"GehE1mNi5\"}', \"GehE1mNi5\"],\n            [\"password, _ = hex.DecodeString('e1efa5ca09a6beac387c04a5cdc1d491')\", \"e1efa5ca09a6beac387c04a5cdc1d491\"],\n            [\"MY_TEST_PASSWORD='(MY_TEST_PASSWORD)'\", \"(MY_TEST_PASSWORD)\"],\n            [\"MY_TEST_PASSWORD=$(MY_TEST_PASSWORD)\", \"$(MY_TEST_PASSWORD)\"],\n            [\"MY_TEST_PASSWORD='$(MY_TEST_PASSWORD)'\", \"$(MY_TEST_PASSWORD)\"],\n            # https://www.gnu.org/savannah-checkouts/gnu/bash/manual/bash.html#Shell-Expansions\n            [\"MY_TEST_PASSWORD=${MY_VAR:?THE VAR IS UNSET}\", \"${MY_VAR:?THE\"],\n            ['''ClientPasswords = new[] { new Password( \"SECRET\".Sha256() ) },''', \"SECRET\"],\n            ['''\"$password = \"10qoakxncnfh47t_''', '''10qoakxncnfh47t_'''],  #\n            [\n                '''copes\\\":[\\\"user\\\"],\\\"note\\\":\\\"Note\\\",\\\"password\\\":\\\"cc6323cb2223f82f01\\\",\\\"upd_at\\\":\\\"1765....\\\",''',\n                '''cc6323cb2223f82f01'''\n            ],  #\n            ['''\"password = pas:sword # comment''', '''pas:sword'''],\n            ['''x.password=pK5C4tlA/w1cO\\\\=\\\\=''', '''pK5C4tlA/w1cO\\\\=\\\\='''],  #\n            ['''final String body = \\\"{ \\\\\"passwords\\\\\":\\\\\"i0sEcReT\\\\\\\\/MwX3X\\\\\",\"''', '''i0sEcReT\\\\\\\\/MwX3X'''],\n            [\n                '''\\\\\\\"password\\\\\\\"=\\\\u0026gt;\\t\\\\n\\\\t\\\\\\\"lfFTfDT1roc4YbG9hy5cnvX\\\\n   oZ+Sc/wb+CvdF4s==\\\\\\\",\\\\n\",''',\n                '''lfFTfDT1roc4YbG9hy5cnvX\\\\n   oZ+Sc/wb+CvdF4s=='''\n            ],\n            [\n                '''var request = {\"password\": \"{\\\\\"wks\\\\\": \\\\\"8x9s3ga7\\\\\", \\\\\"uzr\\\": \\\\\"wbm\\\\\"}\",\"Any-Tail\":\"x\\r\"};''',\n                '''{\\\\\"wks\\\\\": \\\\\"8x9s3ga7\\\\\", \\\\\"uzr\": \\\\\"wbm\\\\\"}'''\n            ],\n            ['''passwords: [\"1029384756\",''', '''1029384756'''],  #\n            ['''passwords:[ \"1029384756\", \"9801726354\" ]''', '''1029384756'''],  #\n            ['''password=\"\\\\\"secret-line-wrap\\\\''', '''secret-line-wrap'''],  #\n            ['''password=r\"\"\"secret4\"\"\"''', '''secret4'''],  #\n            ['''password=r\\\\\"\\\\\"\\\\\"secret5\\\\\"\\\\\"\\\\\"''', '''secret5'''],  #\n            ['''password=\"\"\"secret6\"\"\"''', '''secret6'''],  #\n            ['''password=\\\\\\\\\"\\\\\\\\\"\\\\\\\\\"secret7\\\\\\\\\"\\\\\\\\\"\\\\\\\\\"''', '''secret7'''],  #\n            ['''password=\\\\\\\\\"\\\\\\\\\"\\\\\\\\\"secret\"7\\\\\\\\\"\\\\\\\\\"\\\\\\\\\"''', '''secret\"7'''],  #\n            ['''password=\"\"\"{\\\\\"secret8\\\\\"}\"\"\"''', '''{\\\\\"secret8\\\\\"}'''],  #\n            ['''password=\"\"\"secret'9\"\"\"''', '''secret'9'''],  #\n            [\"\"\"password='''secret'6'''\"\"\", '''secret'6'''],  #\n            [\"\"\"password='''secret`8'''\"\"\", '''secret`8'''],  #\n            [\"\"\"password=``secret`7``\"\"\", '''secret`7'''],  #\n            [\"\"\"password=``secret 5``\"\"\", '''secret 5'''],  #\n            [\"\"\"password='secret\\\\ 5''\"\"\", '''secret\\\\ 5'''],  #\n            [\"\"\"password=secret\\\\ 5\"\"\", '''secret\\\\ 5'''],  #\n            [\"\"\"password=secret 0\"\"\", '''secret'''],  #\n            [\"\"\"password=secret0\\\\\"\"\", '''secret0'''],  #\n            [\"\"\"password=r'\\\\\"secret\\\\\"'\"\"\", '''\\\\\"secret\\\\\"'''],  #\n            ['''password=r\\\\\"{\\\\\\\\\"secret\\\\\\\\\"}\\\\\"''', '{\\\\\\\\\"secret\\\\\\\\\"}'],  #\n            ['''password=r\"{\\\\\"secret\\\\\"}\"''', '{\\\\\"secret\\\\\"}'],  #\n            [\"\"\"password=b'\"secret4\"'\"\"\", '\"secret4\"'],  #\n            [\"\"\"password=rb'\\\\\\\\\"secret\\\\\\\\\"'\"\"\", '\\\\\\\\\"secret\\\\\\\\\"'],  #\n            [\"\"\"password=r\\\\'\"sec'\"'\"'\"ret\"\\\\'\"\"\", '''\"sec'\"'\"'\"ret\"'''],  #\n            [\"\"\"\\\\'\\\\\\\\\\\\\\\\'password\\\\\\\\\\\\\\\\': b\\\\\\\\\\\\\\\\'secret\\\\\\\\\\\\\\\\'\\\\'\"\"\", \"secret\"],  #\n            [\"\"\"'password': b'secret'\"\"\", \"\"\"secret\"\"\"],  #\n            [\"\"\"'password': r'secret'\"\"\", \"\"\"secret\"\"\"],  #\n            [\"\"\"'password': fr'secret'\"\"\", \"\"\"secret\"\"\"],  #\n            [\"\"\"'password': t'{secret}'\"\"\", \"\"\"{secret}\"\"\"],  #\n            [\"\"\"\\\\'password\\\\': \\\\'secret\\\\'\"\"\", \"\"\"secret\"\"\"],  #\n            ['''db.setCred(\"{ \\\"password\\\" : \\\"\" + SECRET + \"\\\" }\");''', ''' + SECRET + '''],\n            ['''\\\\\"password\\\\\": \\\\\"{\\\\\\\\\"secret\\\\\\\\\": \\\\\\\\\"test\\\\\\\\\"}\\\\\"''', '{\\\\\\\\\"secret\\\\\\\\\": \\\\\\\\\"test\\\\\\\\\"}'],  #\n            ['''\"password\": \"{\\\\\\\\\"secret\\\\\\\\\": \\\\\\\\\"test\\\\\\\\\"}\"''', '{\\\\\\\\\"secret\\\\\\\\\": \\\\\\\\\"test\\\\\\\\\"}'],  #\n            # normal_str = \"First line.\\nSecond line.\\nEnd of message.\\n\";\n            ['''std::string password = R\"multiline\\\\npassword\";''', '''multiline\\\\npassword'''],  #\n            ['''const wchar_t* password = L\"wchar_t*secret\";''', '''wchar_t*secret'''],  #\n            ['''const char16_t* password = U\"char16_t*secret\";''', '''char16_t*secret'''],  #\n            [\"\"\"char password[] = {'S', 'E', 'C', 'R', 'E', 'T', '\\\\0'};\"\"\", \"\"\"'S', 'E', 'C', 'R', 'E', 'T', '\\\\0'\"\"\"\n             ],  #\n            ['''\"password\": \"{8vi6wL+10fI/eibC7wFwc}\"''', '{8vi6wL+10fI/eibC7wFwc}'],  #\n            ['''final String password = new String(\"SECRET\") {''', '''SECRET'''],  #\n            ['''final OAuth2AccessToken password = new OAuth2AccessToken(\\\"SEC.RET\\\");''', '''SEC.RET'''],  #\n            ['''password = obfuscate(arg=\"SECRET\") {''', '''SECRET'''],  #\n            ['''final String password = new String(Super(Encrypted(\"SECRET\"))) {''', '''SECRET'''],  #\n            ['''final String password = new String(Super( Encrypted(\"SECRET\", \"dummy\"))) {''', '''SECRET'''],  #\n            [\"\"\"'password': 'ENC(lqjdoxlandicpfpqk)'\"\"\", \"\"\"ENC(lqjdoxlandicpfpqk)\"\"\"],  #\n            [\"\"\"'password': 'ENC[lqjdoxlandicpfpqk]'\"\"\", \"\"\"ENC[lqjdoxlandicpfpqk]\"\"\"],  #\n            ['''password24=secret42''', 'secret42'],  #\n            ['''password24=secret42\\\\ ''', 'secret42\\\\ '],  #\n            ['''password24=secret42\\\\''', 'secret42'],  #\n            ['''password24=secret42\\\\n''', 'secret42'],  #\n            ['password = 3VNdhWT3oFo5I7faffKO\\\\\\neEagnK7tYBcGxhla\\n;', '''3VNdhWT3oFo5I7faffKO'''],\n            ['password = \"3VNdhWT3oFo5I7faffKO\\n   gnK7tYBcGxhla\\n\";', '''3VNdhWT3oFo5I7faffKO\\n   gnK7tYBcGxhla\\n'''],\n            [\n                \"//&user%5Bemail%5D=credsweeper%40example.com&user%5Bpassword%5D=Dmdkesfdsq452%23%40!&user%5Bpassword_\",\n                \"Dmdkesfdsq452%23%40!\"\n            ],\n            [\"password%3dDmsfdsq452!&user%5Bpassword_\", \"Dmsfdsq452!\"],\n            [\"MY_TEST_PASSWORD={MY_TEST_PASSWORD}\", \"MY_TEST_PASSWORD\"],\n            [\"MY_TEST_PASSWORD=(MY_TEST_PASSWORD)\", \"MY_TEST_PASSWORD\"],\n            [\"MY_TEST_PASSWORD=<MY_TEST_PASSWORD>\", \"<MY_TEST_PASSWORD>\"],  # <> are used in future to detect a template\n            [\"MY_TEST_PASSWORD=[MY_TEST_PASSWORD]\", \"MY_TEST_PASSWORD\"],\n            [\"MY_TEST_PASSWORD=MY_TEST&PASSWORD!\", \"MY_TEST&PASSWORD!\"],\n            [\"MY_TEST_PASSWORD='MY_TEST&PASSWORD!'\", \"MY_TEST&PASSWORD!\"],\n        ])\n    def test_keyword_pattern_p(self, config: Config, file_path: pytest.fixture, line: str, value: str) -> None:\n        line_data = LineData(config,\n                             line,\n                             0,\n                             1,\n                             file_path,\n                             Util.get_extension(file_path),\n                             info=\"dummy\",\n                             pattern=KEYWORD_PASSWORD_PATTERN)\n        assert line_data.value == value, KEYWORD_PASSWORD_PATTERN.pattern\n\n    @pytest.mark.parametrize(\"line\", [\n        \"set_unusable_api() should not found\",\n        \"https://fonts.googleapis.com/css2?family=Montserrat:wght@500;700;900&family=Roboto:wght@300;400;500;700;900\"\n        \"&family=Roboto+Mono:wght@300;400;600;900&display=swap\",\n        \"reset api example\",\n    ])\n    def test_keyword_pattern_n(self, config: Config, file_path: pytest.fixture, line: str) -> None:\n        pattern = KeywordPattern.get_keyword_pattern(\"api\")\n        line_data = LineData(config, line, 0, 1, file_path, \"file_type\", \"info\", pattern)\n        assert line_data.value is None\n"
  },
  {
    "path": "tests/common/test_regex.py",
    "content": "import re\n\nimport pytest\n\n\nclass TestRegex:\n    TEST_AWS_ID = \"ASIA0123456789ABCDEF\"\n    TEST_AWS_REGEX = re.compile(\"(^|[^0-9A-Za-z])(?P<value>(AKIA|ASIA)[0-9A-Z]{16,17})([^0-9A-Za-z]|$)\")\n\n    @pytest.mark.parametrize(  #\n        'text',  #\n        [  #\n            f\"{TEST_AWS_ID}XX\",  # 22 symbols\n            f\"i{TEST_AWS_ID}\",  #\n            f\"X{TEST_AWS_ID}\",  #\n            f\"{TEST_AWS_ID[0:18]}\",  #\n            f\"{TEST_AWS_ID[0:18]}x\",  #\n            f\"{TEST_AWS_ID[0:18]}+\",  #\n            f\"{TEST_AWS_ID[0:18]}/\",  #\n            f\"{TEST_AWS_ID[1:19]}\"  #\n        ])\n    def test_regex_n(self, text: str):\n        assert TestRegex.TEST_AWS_REGEX.search(text) is None\n\n    @pytest.mark.parametrize(  #\n        'text',  #\n        [  #\n            f\"{TEST_AWS_ID}\",  #\n            f\"#@(-{TEST_AWS_ID})+*&^%$\",  # obviously inside delimiters\n            f\"N={TEST_AWS_ID}\",  #\n            f\"\\\"{TEST_AWS_ID}\\\"\",  #\n            f\"{TEST_AWS_ID}/6/g'\",  #\n            f\"={TEST_AWS_ID}%2F\",  #\n            f\"sed 's/{TEST_AWS_ID}/6/g'\",  #\n            f\"{TEST_AWS_ID}X\",  # 21 symbols in ID\n            f\"--key {TEST_AWS_ID}X --help\"  # 21 symbols in ID\n        ])\n    def test_regex_p(self, text: str):\n        obtained = TestRegex.TEST_AWS_REGEX.search(text)\n        assert obtained is not None\n        found = False\n        for i in obtained.groups():\n            pos = i.find(TestRegex.TEST_AWS_ID)\n            if -1 != pos and 0 == pos:\n                found = True\n                break\n        assert found\n"
  },
  {
    "path": "tests/common/test_severity.py",
    "content": "import unittest\n\nfrom credsweeper.common.constants import Severity\n\n\nclass TestSeverity(unittest.TestCase):\n\n    def test_severity_p(self):\n        self.assertEqual(Severity.MEDIUM, Severity.get(Severity.MEDIUM))\n        self.assertEqual(Severity.INFO, Severity.get(\"inFo\"))\n        self.assertEqual(Severity.LOW, Severity.get(\"LoW\"))\n        self.assertEqual(Severity.MEDIUM, Severity.get(\"MEDIUM\"))\n        self.assertEqual(Severity.HIGH, Severity.get(\"    HIGH  \"))\n        self.assertEqual(Severity.CRITICAL, Severity.get(\"critical\"))\n\n    def test_severity_n(self):\n        self.assertIsNone(Severity.get(None))\n        self.assertIsNone(Severity.get(1))\n        self.assertIsNone(Severity.get([1, 2, 3]))\n        self.assertIsNone(Severity.get({1, 2, 3}))\n        self.assertIsNone(Severity.get(\"None\"))\n        self.assertIsNone(Severity.get(\"HI-GH\"))\n        self.assertIsNone(Severity.get(\" HI GH \"))\n\n    def test_severity_comparison_p(self):\n        self.assertTrue(Severity.INFO < Severity.LOW)\n        self.assertTrue(Severity.INFO < Severity.MEDIUM)\n        self.assertTrue(Severity.INFO < Severity.HIGH)\n        self.assertTrue(Severity.INFO < Severity.CRITICAL)\n\n        self.assertTrue(Severity.LOW < Severity.MEDIUM)\n        self.assertTrue(Severity.LOW < Severity.HIGH)\n        self.assertTrue(Severity.LOW < Severity.CRITICAL)\n\n        self.assertTrue(Severity.MEDIUM < Severity.HIGH)\n        self.assertTrue(Severity.MEDIUM < Severity.CRITICAL)\n\n        self.assertTrue(Severity.HIGH < Severity.CRITICAL)\n\n    def test_severity_comparison_n(self):\n        self.assertFalse(Severity.CRITICAL < Severity.HIGH)\n        self.assertFalse(Severity.HIGH < Severity.MEDIUM)\n        self.assertFalse(Severity.MEDIUM < Severity.LOW)\n        self.assertFalse(Severity.LOW < Severity.INFO)\n\n        self.assertFalse(Severity.INFO > Severity.LOW)\n        self.assertFalse(Severity.INFO > Severity.MEDIUM)\n        self.assertFalse(Severity.INFO > Severity.HIGH)\n        self.assertFalse(Severity.INFO > Severity.CRITICAL)\n\n        self.assertFalse(Severity.LOW > Severity.MEDIUM)\n        self.assertFalse(Severity.LOW > Severity.HIGH)\n        self.assertFalse(Severity.LOW > Severity.CRITICAL)\n\n        self.assertFalse(Severity.MEDIUM > Severity.HIGH)\n        self.assertFalse(Severity.MEDIUM > Severity.CRITICAL)\n\n        self.assertFalse(Severity.HIGH > Severity.CRITICAL)\n"
  },
  {
    "path": "tests/config/__init__.py",
    "content": ""
  },
  {
    "path": "tests/config/test_config.py",
    "content": "from unittest import TestCase\n\nfrom credsweeper.app import APP_PATH\nfrom credsweeper.utils.util import Util\n\n\nclass ConfigTest(TestCase):\n\n    def test_extension_check_p(self):\n        file_name = APP_PATH / \"secret\" / \"config.json\"\n        self.config = Util.json_load(str(file_name))\n        self.assertIsNotNone(self.config)\n        self.assertTrue(isinstance(self.config, dict))\n        self.assertIn(\"exclude\", self.config.keys())\n        self.assertTrue(isinstance(self.config[\"exclude\"], dict))\n        self.assertIn(\"containers\", self.config[\"exclude\"].keys())\n        self.assertTrue(isinstance(self.config[\"exclude\"][\"containers\"], list))\n        self.assertIn(\"extension\", self.config[\"exclude\"].keys())\n        self.assertTrue(isinstance(self.config[\"exclude\"][\"extension\"], list))\n        container_set = set(self.config[\"exclude\"][\"containers\"])\n        extension_set = set(self.config[\"exclude\"][\"extension\"])\n        # the sets MUST have no intersection\n        self.assertFalse(container_set.intersection(extension_set))\n        # all extensions MUST be in lower\n        self.assertTrue(all(i.islower() for i in container_set))\n        self.assertTrue(all(i.islower() for i in extension_set))\n"
  },
  {
    "path": "tests/conftest.py",
    "content": "import datetime\nfrom argparse import Namespace\nfrom typing import Optional\n\nimport pytest\n\nfrom credsweeper.app import APP_PATH\nfrom credsweeper.common.constants import Severity\nfrom credsweeper.config.config import Config\nfrom credsweeper.rules.rule import Rule\nfrom credsweeper.scanner.scanner import Scanner, RULES_PATH\nfrom credsweeper.utils.util import Util\nfrom tests import SAMPLES_PATH\n\n\n@pytest.fixture\ndef python_file_path() -> str:\n    return f\"test_file_{str(datetime.datetime.now())}.py\"\n\n\n@pytest.fixture\ndef file_path() -> str:\n    return f\"test_file_{str(datetime.datetime.now())}\"\n\n\n@pytest.fixture\ndef args() -> Namespace:\n    file_name = SAMPLES_PATH / \"password.gradle\"\n    return Namespace(path=[file_name], json_filename=None)\n\n\n@pytest.fixture\ndef config() -> Config:\n    file_name = APP_PATH / \"secret\" / \"config.json\"\n    config_dict = Util.json_load(file_name)\n\n    config_dict[\"use_filters\"] = True\n    config_dict[\"find_by_ext\"] = False\n    config_dict[\"exclude\"][\"containers\"] = [\".gz\", \".zip\"]\n    config_dict[\"exclude\"][\"documents\"] = [\".docx\", \".pdf\"]\n    config_dict[\"exclude\"][\"extension\"] = [\".jpg\", \".bmp\"]\n    config_dict[\"pedantic\"] = False\n    config_dict[\"depth\"] = 0\n    config_dict[\"doc\"] = False\n    config_dict[\"find_by_ext_list\"] = [\".txt\", \".inf\"]\n    config_dict[\"size_limit\"] = None\n    config_dict[\"severity\"] = Severity.INFO\n    return Config(config_dict)\n\n\n@pytest.fixture\ndef rule(rule_name: str, config: Config, rule_path: str) -> Optional[Rule]:\n    scanner = Scanner(config, rule_path)\n    for rule, scanner in scanner.rules_scanners:\n        if rule.rule_name == rule_name:\n            return rule\n    return None\n\n\n@pytest.fixture\ndef rule_path() -> str:\n    return str(RULES_PATH)\n\n\n@pytest.fixture\ndef scanner(rule: Rule, config: Config, rule_path: str) -> Scanner:\n    scanner = Scanner(config, rule_path)\n    scanner.rules_scanners = [(rule, Scanner.get_scanner(rule))]\n    return scanner\n\n\n@pytest.fixture\ndef scanner_without_filters(rule: Rule, config: Config, rule_path: str):\n    config.use_filters = False\n    scanner = Scanner(config, rule_path)\n    scanner.rules_scanners = [(rule, Scanner.get_scanner(rule))]\n    return scanner\n"
  },
  {
    "path": "tests/credentials/__init__.py",
    "content": ""
  },
  {
    "path": "tests/credentials/test_augment_candidates.py",
    "content": "import copy\nimport unittest\nfrom unittest.mock import patch\n\nfrom credsweeper.credentials.augment_candidates import augment_candidates\nfrom credsweeper.credentials.candidate import Candidate\nfrom credsweeper.credentials.line_data import LineData\nfrom tests import AZ_STRING\n\n\nclass TestAugmentCandidates(unittest.TestCase):\n\n    def test_augment_candidates_p(self):\n        with patch.object(LineData, LineData.initialize.__name__):\n            candidate = Candidate.get_dummy_candidate(None, \"file_path\", \"file_type\", \"info\", \"rule_name\")\n            candidate.line_data_list[0].value = AZ_STRING\n            candidates = [candidate]\n            additional_candidates = copy.deepcopy(candidates)\n            self.assertTrue(candidate.compare(additional_candidates[0]))\n            # the value is different\n            additional_candidates[0].line_data_list[0].value = f\"\\\"{AZ_STRING}\\\"\"\n            self.assertFalse(candidate.compare(additional_candidates[0]))\n            # additional candidates must be added\n            augment_candidates(candidates, additional_candidates)\n            self.assertEqual(2, len(candidates))\n            self.assertEqual(AZ_STRING, candidates[0].line_data_list[0].value)\n            self.assertEqual(f\"\\\"{AZ_STRING}\\\"\", candidates[1].line_data_list[0].value)\n\n    def test_augment_candidates_n(self):\n        with patch.object(LineData, LineData.initialize.__name__):\n            candidate = Candidate.get_dummy_candidate(None, \"file_path\", \"file_type\", \"info\", \"rule_name\")\n            candidate.line_data_list[0].value = AZ_STRING\n            candidates = [candidate]\n\n            # empty additional candidates\n            augment_candidates(candidates, [])\n            self.assertEqual(1, len(candidates))\n\n            # the same value\n            augment_candidates(candidates, copy.deepcopy(candidates))\n            self.assertEqual(1, len(candidates))\n\n            self.assertEqual(AZ_STRING, candidates[0].line_data_list[0].value)\n"
  },
  {
    "path": "tests/credentials/test_credential_manager.py",
    "content": "import pytest\n\nfrom credsweeper.app import CredSweeper\nfrom credsweeper.file_handler.string_content_provider import StringContentProvider\n\n\nclass TestCredentialManager:\n\n    @pytest.mark.parametrize(\n        \"line\", [\"apiKeyToken = 'mybstscrt'\", \"SecretToken = 'mybstscrt'\", \"secret = AKIAGIREOGIAWSKEY123\"])\n    def test_groups_p(self, line):\n        cred_sweeper = CredSweeper()\n        provider = StringContentProvider([line])\n        detections = cred_sweeper.scanner.scan(provider)\n        cred_sweeper.credential_manager.set_credentials(detections)\n        groups = cred_sweeper.credential_manager.group_credentials()\n        # Assert that credentials can be grouped\n        assert len(groups) == 1\n\n    @pytest.mark.parametrize(\"line\", [\n        \"func(secret='acbd22', token='longscrttok')\", \"single_token='acbd22'\",\n        \"{secret: 'acbd22', token: 'longscrttok'}\"\n    ])\n    def test_groups_n(self, line):\n        cred_sweeper = CredSweeper()\n        provider = StringContentProvider([line])\n        detections = cred_sweeper.scanner.scan(provider)\n        cred_sweeper.credential_manager.set_credentials(detections)\n        groups = cred_sweeper.credential_manager.group_credentials()\n        # Assert that no credentials can be grouped in tested cases\n        assert len(groups) == len(detections)\n"
  },
  {
    "path": "tests/credentials/test_line_data.py",
    "content": "import re\nimport string\nimport unittest\n\nimport pytest\n\nfrom credsweeper.common.constants import MAX_LINE_LENGTH, StartEnd\nfrom credsweeper.config.config import Config\nfrom credsweeper.credentials.line_data import LineData\nfrom credsweeper.utils.util import Util\nfrom tests import AZ_STRING\n\n\nclass TestLineData:\n\n    @pytest.mark.parametrize(\"line\", [\n        '\"url\" : \"https://my.site?a=b&{}=ngh679x&c=d\"',\n        '\"url\" : \"https://my.site?{}=ngh679x&c=d\"',\n        '\"url\" : \"https://my.site?a=b&{}=ngh679x\"',\n    ])\n    @pytest.mark.parametrize(\"var_name, rule_name\", [(\"mysecret\", \"Secret\"), (\"password\", \"Password\"),\n                                                     (\"aws_token\", \"Token\")])\n    def test_url_params_p(self, file_path: pytest.fixture, rule: pytest.fixture, line: str, var_name: str,\n                          rule_name: str, config: Config) -> None:\n        \"\"\"\n        Test that URL args are parsed correctly with regard to ? and & characters.\n        Rerun few times with different variable names to assure that different rules behave in a same way\n        \"\"\"\n        formatted_line = line.format(var_name)\n        line_data = LineData(config, formatted_line, 0, 1, file_path, Util.get_extension(file_path), \"test_info\",\n                             rule.patterns[0])\n        assert line_data.value == \"ngh679x\"\n        assert line_data.variable == var_name\n\n    @pytest.mark.parametrize(\"line\", ['{} = \"ngh679x\"'])\n    @pytest.mark.parametrize(\"var_name, rule_name\", [(\"mysecret\", \"Secret\"), (\"password\", \"Password\"),\n                                                     (\"aws_token\", \"Token\")])\n    def test_simple_case_p(self, file_path: pytest.fixture, rule: pytest.fixture, line: str, var_name: str,\n                           rule_name: str, config: Config) -> None:\n        \"\"\"Check that most simple case for credentials is parsed correctly\"\"\"\n        formatted_line = line.format(var_name)\n        line_data = LineData(config, formatted_line, 0, 1, file_path, Util.get_extension(file_path), \"test_info\",\n                             rule.patterns[0])\n        assert line_data.value == \"ngh679x\"\n        assert line_data.variable == var_name\n\n    @pytest.mark.parametrize(\"line, varname, value, rule_name\",\n                             [('\"my password\": \"ngh671x\"', \"my password\", \"ngh671x\", \"Password\"),\n                              ('\"my password\": ‘ngh672x“', \"my password\", \"‘ngh672x“\", \"Password\"),\n                              ('\"my password\": “““ngh672x”””', \"my password\", \"ngh672x\", \"Password\"),\n                              ('\"my password\": \"example: “ngh6794”\"', \"my password\", \"example: “ngh6794”\", \"Password\"),\n                              ('\"my password in JSON\": \"ngh679x\"', \"my password in JSON\", \"ngh679x\", \"Password\")])\n    def test_multiple_word_variable_name_p(self, file_path: pytest.fixture, rule: pytest.fixture, line: str,\n                                           varname: str, value: str, rule_name: str, config: Config) -> None:\n        \"\"\"Check that if variable name contain spaces (like field in JSON) it would be parsed correctly\"\"\"\n        line_data = LineData(config, line, 0, 1, file_path, Util.get_extension(file_path), \"test_info\",\n                             rule.patterns[0])\n        assert line_data.variable == varname\n        assert line_data.value == value\n\n    @pytest.mark.parametrize(\"line, varname, value, rule_name\", [\n        ('\"dummy password\": “““‘‘‘”””', \"dummy password\", '', \"Password\"),\n    ])\n    def test_multiple_word_variable_name_n(self, file_path: pytest.fixture, rule: pytest.fixture, line: str,\n                                           varname: str, value: str, rule_name: str, config: Config) -> None:\n        \"\"\"Check correctness sanitize value - no exception raises\"\"\"\n        line_data = LineData(config, line, 0, 1, file_path, Util.get_extension(file_path), \"test_info\",\n                             rule.patterns[0])\n        assert line_data.variable == varname\n        assert line_data.value == value\n\n    @pytest.mark.parametrize(\n        \"line\", ['{} = my_func(\"ngh679x\")', '{} = my_func(arg1=\"ngh679x\")', '{} = my_func1(my_func2(\"ngh679x\"))'])\n    @pytest.mark.parametrize(\"var_name, rule_name\", [(\"mysecret\", \"Secret\"), (\"password\", \"Password\"),\n                                                     (\"aws_token\", \"Token\")])\n    def test_function_call_p(self, file_path: pytest.fixture, rule: pytest.fixture, line: str, var_name: str,\n                             rule_name: str, config: Config) -> None:\n        \"\"\"Check that secrets in function arguments parsed in a correct way (without argument name)\"\"\"\n        formatted_line = line.format(var_name)\n        line_data = LineData(config, formatted_line, 0, 1, file_path, Util.get_extension(file_path), \"test_info\",\n                             rule.patterns[0])\n        assert line_data.value == \"ngh679x\"\n        assert line_data.variable == var_name\n\n    @pytest.mark.parametrize(\"line\", [\n        'something = my_func({}=\"ngh679x\")',\n        'something = my_func(a=b, {}=\"ngh679x\")',\n        'something = my_func(a=b, {}=\"ngh679x\", c=d)',\n    ])\n    @pytest.mark.parametrize(\"var_name, rule_name\", [(\"mysecret\", \"Secret\"), (\"password\", \"Password\"),\n                                                     (\"aws_token\", \"Token\")])\n    def test_function_argument_p(self, file_path: pytest.fixture, rule: pytest.fixture, line: str, var_name: str,\n                                 rule_name: str, config: Config) -> None:\n        \"\"\"Check that secrets in function arguments parsed in a correct way (with argument name)\"\"\"\n        formatted_line = line.format(var_name)\n        line_data = LineData(config, formatted_line, 0, 1, file_path, Util.get_extension(file_path), \"test_info\",\n                             rule.patterns[0])\n        assert line_data.value == \"ngh679x\"\n        assert line_data.variable == var_name\n\n    @pytest.mark.parametrize(\"line\", [\n        \"./myprog --{}='ngh679x' --path=/home/me\",\n        \"./myprog --{}=ngh679x --path=/home/me\",\n        \"./myprog --{}=ngh679x -d library/mysql:5.7.13\",\n        \"./myprog --{}=ngh679x >> logfile.log\",\n        \"./myprog --{}=ngh679x | tee logfile.log\",\n        \"./myprog --{}=ngh679x &> logfile.log\",\n        \"./myprog --{}=ngh679x 2> logfile.log\",\n    ])\n    @pytest.mark.parametrize(\"var_name, rule_name\", [(\"mysecret\", \"Secret\"), (\"password\", \"Password\"),\n                                                     (\"aws_token\", \"Token\")])\n    def test_cli_arguments_p(self, file_path: pytest.fixture, rule: pytest.fixture, line: str, var_name: str,\n                             rule_name: str, config: Config) -> None:\n        \"\"\"Check credentials declared in CLI arguments\"\"\"\n        formatted_line = line.format(var_name)\n        line_data = LineData(config, formatted_line, 0, 1, file_path, Util.get_extension(file_path), \"test_info\",\n                             rule.patterns[0])\n        assert line_data.value == \"ngh679x\"\n        assert line_data.variable == var_name\n\n    @pytest.mark.parametrize(\"line\", [\n        \"./myprog --{}=' --no-password ' --path=/home/me\",\n    ])\n    @pytest.mark.parametrize(\"var_name, rule_name\", [(\"password\", \"Password\")])\n    def test_cli_arguments_n(self, file_path: pytest.fixture, rule: pytest.fixture, line: str, var_name: str,\n                             rule_name: str, config: Config) -> None:\n        \"\"\"Check clean_bash_parameters negative case \"\"\"\n        formatted_line = line.format(var_name)\n        line_data = LineData(config, formatted_line, 0, 1, file_path, Util.get_extension(file_path), \"test_info\",\n                             rule.patterns[0])\n        assert line_data.variable == var_name\n\n\nclass TestLineDataStartEnd(unittest.TestCase):\n\n    def test_start_end_p(self) -> None:\n        \"\"\"Check start-end of found credential\"\"\"\n\n        line_data = LineData(None, \"0123456789\", 0, 1, \"\", \"\", \"\", re.compile(r\"(?P<value>[3-7]+)\"))\n        self.assertEqual(\"34567\", line_data.value)\n        self.assertEqual(3, line_data.value_start)\n        self.assertEqual(8, line_data.value_end)\n\n    def test_search_start_end_p(self) -> None:\n        \"\"\"Check property search start-end\"\"\"\n        line = \"_\" * MAX_LINE_LENGTH + \"X\" + \"_\" * MAX_LINE_LENGTH\n        pattern = re.compile(r\"(?P<value>X)\")\n        line_data = LineData(None, line, 0, 1, \"\", \"\", \"\", pattern, pattern.search(line))\n        self.assertEqual(\"X\", line_data.value)\n        self.assertEqual(MAX_LINE_LENGTH, line_data.value_start)\n        self.assertEqual(1 + MAX_LINE_LENGTH, line_data.value_end)\n\n    def test_part_url_sanitize_p(self) -> None:\n        line_data = LineData(None,\n                             \"39084?token=3487263-2384579834-234732875-345&key=DnBeiGdgy6253fytfdDHGg&hasToBeFound=2\",\n                             0, 1, \"\", \"\", \"\", re.compile(r\"(?P<variable>token)(?P<separator>=)(?P<value>.+)\"))\n        self.assertEqual(\"token\", line_data.variable)\n        self.assertEqual(\"3487263-2384579834-234732875-345\", line_data.value)\n\n    def test_hash_text_n(self):\n        self.assertEqual(\"\", LineData.get_hash_or_subtext('', hashed=True))\n\n    def test_hash_text_p(self):\n        # $ echo -n \"The quick brown fox jumps over the lazy dog\" | sha256sum\n        self.assertEqual(\"d7a8fbb307d7809469ca9abcb0082e4f8d5651e46d3cdb762d02d0bf37c9e592\",\n                         LineData.get_hash_or_subtext(AZ_STRING, hashed=True))\n\n    def test_sub_text_n(self):\n        subtext = LineData.get_hash_or_subtext(None, hashed=False, cut_pos=StartEnd(4, 9))\n        self.assertIsNone(subtext)\n\n    def test_sub_text_p(self):\n        subtext = LineData.get_hash_or_subtext(AZ_STRING, hashed=False, cut_pos=StartEnd(4, 9))\n        self.assertEqual(AZ_STRING, subtext)\n        text200sym = f\"\\t   {''.join(string.digits for _ in range(20))}\"\n        subtext = LineData.get_hash_or_subtext(text200sym, hashed=False, cut_pos=StartEnd(4, 9))\n        self.assertEqual((''.join(string.digits for _ in range(13)))[:-2], subtext)\n\n    def test_toml_parenthesis_sanitize_n(self) -> None:\n        line_data = LineData(None, \"secure_cmd token=$(get_token)\", 0, 1, \"\", \"\", \"\",\n                             re.compile(r\".*(?P<variable>token)(?P<separator>=)(?P<value>.+)\"))\n        self.assertEqual(\"token\", line_data.variable)\n        self.assertEqual(\"$(get_token)\", line_data.value)\n\n        self.assertEqual(\n            \"ieUW47@\",\n            LineData(None, \"$(secure_cmd  password=ieUW47@)\", 0, 1, \"\", \"\", \"\",\n                     re.compile(r\".*(?P<variable>password)(?P<separator>=)(?P<value>.+)\")).value)\n\n    def test_toml_parenthesis_sanitize_p(self) -> None:\n        line_data = LineData(None, \"$(secure_cmd token=get_token)\", 0, 1, \"\", \"\", \"\",\n                             re.compile(r\".*(?P<variable>token)(?P<separator>=)(?P<value>.+)\"))\n        self.assertEqual(\"token\", line_data.variable)\n        self.assertEqual(\"get_token\", line_data.value)\n\n    def test_toml_parenthesis_pass_sanitize_p(self) -> None:\n        self.assertEqual(\n            \"ieUW47@)\",\n            LineData(None, \"$(secure_cmd)  password=ieUW47@)\", 0, 1, \"\", \"\", \"\",\n                     re.compile(r\".*(?P<variable>password)(?P<separator>=)(?P<value>.+)\")).value)\n        self.assertEqual(\n            \"ieUW47@}\",\n            LineData(None, \"password: ieUW47@}\", 0, 1, \"\", \"\", \"\",\n                     re.compile(r\".*(?P<variable>password)(?P<separator>:) (?P<value>.+)\")).value)\n\n    def test_toml_quoted_sanitize_p(self) -> None:\n        self.assertEqual(\n            \"ieUW47@}\",\n            LineData(\n                None, \"${secure_cmd  password='ieUW47@}'}\", 0, 1, \"\", \"\", \"\",\n                re.compile(\n                    r\".*(?P<variable>password)(?P<separator>=)(?P<value_leftquote>')(?P<value>[^']+)(?P<value_rightquote>')\"\n                )).value)\n\n    def test_toml_curly_brackets_sanitize_n(self) -> None:\n        self.assertEqual(\n            \"ieUW47@}\",\n            LineData(None, \"${secure_cmd}  password=ieUW47@}\", 0, 1, \"\", \"\", \"\",\n                     re.compile(r\".*(?P<variable>password)(?P<separator>=)(?P<value>.+)\")).value)\n\n    def test_toml_square_brackets_sanitize_n(self) -> None:\n        self.assertEqual(\n            \"ieUW47@]\",\n            LineData(None, \"$[secure_cmd]  password=ieUW47@]\", 0, 1, \"\", \"\", \"\",\n                     re.compile(r\".*(?P<variable>password)(?P<separator>=)(?P<value>.+)\")).value)\n\n    def test_toml_extra_sanitize_n(self) -> None:\n        # dummy variant with wrong order\n        self.assertEqual(\n            \"\",\n            LineData(None, \"[{(extra-cleaned-value password=}}]})]}}])\", 0, 1, \"\", \"\", \"\",\n                     re.compile(r\".*(?P<variable>password)(?P<separator>=)(?P<value>.+)\")).value)\n\n    def test_tag_sanitize_n(self) -> None:\n        # all tags in value\n        self.assertEqual(\n            \"<b>PASS</b>\",\n            LineData(None, \"password=<b>PASS</b>\", 0, 1, \"\", \"\", \"\",\n                     re.compile(r\".*(?P<variable>password)(?P<separator>=)(?P<value>.+)\")).value)\n        # no opened tag\n        self.assertEqual(\n            \"PASS</a>\",\n            LineData(None, \"password=PASS</a>\", 0, 1, \"\", \"\", \"\",\n                     re.compile(r\".*(?P<variable>password)(?P<separator>=)(?P<value>.+)\")).value)\n        # example to filter or drop\n        self.assertEqual(\n            \"</EXAMPLE>\",\n            LineData(None, \"password=</EXAMPLE>\", 0, 1, \"\", \"\", \"\",\n                     re.compile(r\".*(?P<variable>password)(?P<separator>=)(?P<value>.+)\")).value)\n        # a case\n        self.assertEqual(\n            \"Kd</awfx\",\n            LineData(None, \"<a href=''>password=Kd</awfx</a>\", 0, 1, \"\", \"\", \"\",\n                     re.compile(r\".*(?P<variable>password)(?P<separator>=)(?P<value>.+)\")).value)\n\n    def test_tag_sanitize_p(self) -> None:\n        # code\n        self.assertEqual(\n            \"PASS\",\n            LineData(None, '<code>password=PASS</code>', 0, 1, \"\", \"\", \"\",\n                     re.compile(r\".*(?P<variable>password)(?P<separator>=)(?P<value>.+)\")).value)\n        # anchor\n        self.assertEqual(\n            \"PASS\",\n            LineData(None, '<a href=\"localhost\">password=PASS</a>', 0, 1, \"\", \"\", \"\",\n                     re.compile(r\".*(?P<variable>password)(?P<separator>=)(?P<value>.+)\")).value)\n        # various\n        self.assertEqual(\n            \"<i>PASS</i>\",\n            LineData(None, '<var:x3><a href=\"localhost\">password=<i>PASS</i></a></var>', 0, 1, \"\", \"\", \"\",\n                     re.compile(r\".*(?P<variable>password)(?P<separator>=)(?P<value>.+)\")).value)\n"
  },
  {
    "path": "tests/data/__init__.py",
    "content": "from typing import Dict, Any, List\n\nfrom tests import SAMPLES_POST_CRED_COUNT, SAMPLES_IN_DEEP_3, SAMPLES_FILTERED_COUNT, SAMPLES_IN_DOC, \\\n    ZERO_ML_THRESHOLD, SAMPLES_REGEX_COUNT\n\nDATA_TEST_CFG: List[Dict[str, Any]] = [{\n    \"__cred_count\": SAMPLES_IN_DOC,\n    \"pool_count\": 1,\n    \"thrifty\": False,\n    \"sort_output\": True,\n    \"subtext\": True,\n    \"json_filename\": \"doc.json\",\n    \"doc\": True,\n    \"ml_threshold\": ZERO_ML_THRESHOLD\n}, {\n    \"__cred_count\": SAMPLES_REGEX_COUNT,\n    \"pool_count\": 1,\n    \"thrifty\": True,\n    \"sort_output\": True,\n    \"json_filename\": \"no_filters_no_ml.json\",\n    \"use_filters\": False,\n    \"ml_threshold\": 0\n}, {\n    \"__cred_count\": SAMPLES_FILTERED_COUNT,\n    \"pool_count\": 1,\n    \"thrifty\": True,\n    \"sort_output\": True,\n    \"json_filename\": \"no_ml.json\",\n    \"ml_threshold\": ZERO_ML_THRESHOLD\n}, {\n    \"__cred_count\": SAMPLES_POST_CRED_COUNT,\n    \"pool_count\": 2,\n    \"thrifty\": True,\n    \"sort_output\": True,\n    \"json_filename\": \"output.json\"\n}, {\n    \"__cred_count\": SAMPLES_IN_DEEP_3 + 19,\n    \"pool_count\": 2,\n    \"thrifty\": True,\n    \"sort_output\": True,\n    \"json_filename\": \"depth_3_pedantic.json\",\n    \"pedantic\": True,\n    \"depth\": 3\n}]\n"
  },
  {
    "path": "tests/data/depth_3_pedantic.json",
    "content": "[\n    {\n        \"rule\": \"1Password Account Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"ops_eyJb11xLqNoZodWhBSRZjgXFblnyPe_NKm9AQtqj1-g2NkK6QBDIjHwxGYNea8w7cImHWxSXc4ISxk4G9R85CVS1TqBvOOOXycTTH0eqOnwcIGDCQelSMcMIXfHNQVE2pDBHWIsRHmjR-uMUS4SnCU3odPaE9i7BTpHI8mKYEyJzCXzsmLu-mfHfhPM2WffsDLSvlHGwNzVa6wCQio7lsOSrhsjsYkH_boPMB4ZUQ01hn-ix_yBaGvTrMEN6lAy4Z6Pd3KvPb9Pr6c-kI1ifadgIJfRUQJse3IuwLfxeqBUYdHXVgknJ71YECM0-Xg3xwcFjO8oQC1b6kJs2jGX-vdtbLt8MlGzUEn-zYmAam5cj5ye-b_4lVyQjzYrWTI2CP4EkWT7Jsv9KQPVlNye6HwOvUvpm2VHEQDrl-9Kb3XZwo6C53Df0xBfU5Rr6b9p8_r6XrrBGLZWqf2xZkh8pC4OXECo_JzZWNyZXRLZXkiO-jd180LqEfYwfv8_tnxyLXVDX989lmYjZGyJDisytEIwIIcsnnZLCabN-0bOgT_Api9RTXZt7q-9IVxSSm4sgK8ZJ96roIIeukKC_FWVfvZ7uCmGT-TrDc0Kvit44ulvWgt6uoTtMrLGzZYyAx8COjniLSpKk6OOv\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/1password\",\n                \"info\": \"FILE:./tests/samples/1password|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"ops_eyJb11xLqNoZodWhBSRZjgXFblnyPe_NKm9AQtqj1-g2NkK6QBDIjHwxGYNea8w7cImHWxSXc4ISxk4G9R85CVS1TqBvOOOXycTTH0eqOnwcIGDCQelSMcMIXfHNQVE2pDBHWIsRHmjR-uMUS4SnCU3odPaE9i7BTpHI8mKYEyJzCXzsmLu-mfHfhPM2WffsDLSvlHGwNzVa6wCQio7lsOSrhsjsYkH_boPMB4ZUQ01hn-ix_yBaGvTrMEN6lAy4Z6Pd3KvPb9Pr6c-kI1ifadgIJfRUQJse3IuwLfxeqBUYdHXVgknJ71YECM0-Xg3xwcFjO8oQC1b6kJs2jGX-vdtbLt8MlGzUEn-zYmAam5cj5ye-b_4lVyQjzYrWTI2CP4EkWT7Jsv9KQPVlNye6HwOvUvpm2VHEQDrl-9Kb3XZwo6C53Df0xBfU5Rr6b9p8_r6XrrBGLZWqf2xZkh8pC4OXECo_JzZWNyZXRLZXkiO-jd180LqEfYwfv8_tnxyLXVDX989lmYjZGyJDisytEIwIIcsnnZLCabN-0bOgT_Api9RTXZt7q-9IVxSSm4sgK8ZJ96roIIeukKC_FWVfvZ7uCmGT-TrDc0Kvit44ulvWgt6uoTtMrLGzZYyAx8COjniLSpKk6OOv\",\n                \"value_start\": 0,\n                \"value_end\": 656,\n                \"entropy\": 5.94326\n            }\n        ]\n    },\n    {\n        \"rule\": \"BASE64 encoded PEM Private Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"ZGVidWdDb250YWluZXI6CiAgaW1hZ2U6CiAgICB2ZXJzaW9uOiBpbnN0YWxsLWRlYnVnLXZlcnNpb24KaGVhcnRiZWF0U2NoZWR1bGU6IDEgMiAzIDQgNQppZGVudGl0eToKICBpc3N1ZXI6CiAgICB0bHM6CiAgICAgIGNydFBFTTogfAogICAgICAgIC0tLS0tQkVHSU4gQ0VSVElGSUNBVEUtLS0tLQogICAgICAgIE1JSUJ3RENDQVdlZ0F3SUJBZ0lSQUpSSWdaOFJ0TzhFd2cxWGVwZjhUNDR3Q2dZSUtvWkl6ajBFQXdJd0tURW4KICAgICAgICBna2RqaHNsa2Roa2dkamhza2pkZmtkamhna2RqaGtkZmpibmtkZm52amtoYnZqaGRiZGpmaGJmamhiZGZNRGd5CiAgICAgICAgbGZrZGprc2xkamdrbGpkZmtnamhkZmtnamhzZGZrbGdqc2RrbGpmZ2hsa2Rmamhsa3NkZmpsa3Nkamt1YkdsdQogICAgICAgIGxzZGpoZnY1NDZtZmRza2dqaGRmamtoZ2tqZGhramhkZmtqZ2hrZGZqaGdramRmaGtqZGZoZ2tqZmRoZ2tqRnAKICAgICAgICBmY1JkZmdoZmRnbWRuZ2tqeGRuYnZqbmN2a2pua2pkbmdram5mZGtqYmt2YmpibnZja2puYmpuZGRmZ2ZkZ3QxCiAgICAgICAgMmJsa2puZ2JramhnbGpkZmxnaGtsamRmbmdqZGZuZ25sZGZrbWxrZGZqZ21sZGZrZ21sa2ZkbWdsa2RtTUFZQgogICAgICAgIEFmOENmZ2xibmpuZGJqZG5rZmpuZ2tkbmZnamtsbmRranZuYmlqZGlmamdpZXJqZ29pamRmbGtneGxrbmdrQ0MKICAgICAgICBIbWxkZmtmamdvaWRmamdnam5kamtmbmdranNkbnNram5qNXNiMk5oYkRBS0JnZ3Foa2pPUFFRREFnTkhBREJFCiAgICAgICAgQWlBdG9mZ2toOTk0NXU4OXV5OWU4dWdodWRmaGd1aGRmZmhpbGd1aGl1aGtkaGZna2pkaGZramhya2piazFwNQogICAgICAgIDVrZmRsc2lmaHU0aHRpdWg0aXR1aGtqaGt6az0KICAgICAgICAtLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCiAgICAgIGtleVBFTTogfAogICAgICAgIC0tLS0tQkVHSU4gRUMgUFJJVkFURSBLRVktLS0tLQogICAgICAgIE1IY0NBUUVFSUFBZThuZmJ6WnU5Yy9PQjJnZGZramdsaWRma2pibnhqa2hiZ2hiZmdoYmpoYmRqaGJzanhjazkKICAgICAgICBvZGlmanZpamRmdm9pamRmb2l2amRmb2lqZGpnbmZka2pnbmtqZGZna2pkZmtqZ2JrampoYmtnSmpYZ1p0TTcyCiAgICAgICAgZGZpb2hndXhoYmtqZ25rbGpkZm5rbGpkbmdram5rZ2puKz09CiAgICAgICAgLS0tLS1FTkQgRUMgUFJJVkFURSBLRVktLS0tLQppZGVudGl0eVRydXN0QW5jaG9yc1BFTTogfAogIC0tLS0tQkVHSU4gQ0VSVElGSUNBVEUtLS0tLQogIE1JSUJ3VENDQVdhZ0F3SUJBZ0lRZURacDVsRGFJeWdRNVVmTUtaZGZuZ2puZGZrZ2puZmRramdua2RqbmtkamYKICBkZmtuZ2tqYmtqZGZic2tqYm5ma2puc2RrZ2psbnhrY2pibmt4am5ja2pnbmtqbmdreGpuZ2tqeGNua2dqbkk0CiAgTURkc2xrZmpvaWVyOGhzZGY4ZmdoZzc4NGg5OHQ5OGVydWhpdXNkaGtmZ2hoc2poYmdqa2hzdmpmaHZzYVc1cgogIFpYNDhrbmdraGdkZmtmamdic2RoYmpoYnNkaGJoeGJkZmxqZ2xkZmtqZ2tqaGpmZGdramJka2pmYmdrYmM3MFoKICBsZGZsa2pna2xqZGZoZmRrZ2poZXJramJnaGZia2dqYmtqbmtqeGNua2pmbmtnam5ma2pnbmtmam43SEJXVUM0CiAgdWZkZ2tqZGZpZ2hmdWRoZ2l1dWRoYm5ma25iZ3NibmRma2poc2tqa3NqbmdranNibmdramJrZ2pieGtqYmdFQgogIC9zZGZiaHNiamZoYmVod3did2poZmJqc2hiZGpoYnppdWhya2hiZXJoYnNqaGJkZmpoYmpoYmpoc2JqaGJzcysKICBsZGpmbGhranNka2ZqaHNrZGpma2pzZG5ma2puc2RramZuc2Rram5ranhjbmtqdm5ram5kc2Z3bGVra0FNRVlDCiAgSWVmb2h3a3VlaGZranNkaGZranNkaGtmamhzZGtqZmhrc2RqaGZranNkaGZranNkaGRramZoc2trZGpmaGpDOAogIHNkZnNkaHlnZmpoZ2RqaGZnanNoZGdmamhncXIKICAtLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCmxpbmtlcmRWZXJzaW9uOiBpbnN0YWxsLWNvbnRyb2wtcGxhbmUtdmVyc2lvbgpwb2xpY3lWYWxpZGF0b3I6CiAgY2FCdW5kbGU6IHBvbGljeSB2YWxpZGF0b3IgQ0EgYnVuZGxlCiAgZXh0ZXJuYWxTZWNyZXQ6IHRydWUKcHJvZmlsZVZhbGlkYXRvcjoKICBjYUJ1bmRsZTogcHJvZmlsZSB2YWxpZGF0b3IgQ0EgYnVuZGxlCiAgZXh0ZXJuYWxTZWNyZXQ6IHRydWUKcHJveHk6CiAgaW1hZ2U6CiAgICB2ZXJzaW9uOiBpbnN0YWxsLXByb3h5LXZlcnNpb24KcHJveHlJbml0OgogIGlnbm9yZUluYm91bmRQb3J0czogMjIsMzMwNi02MTkyCiAgaWdub3JlT3V0Ym91bmRQb3J0czogIjMyNzgiCnByb3h5SW5qZWN0b3I6CiAgY2FCdW5kbGU6IHByb3h5IGluamVjdG9yIENBIGJ1bmRsZQogIGV4dGVybmFsU2VjcmV0OiB0cnVlCg==\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/LS0t_p\",\n                \"info\": \"FILE:./tests/samples/LS0t_p|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"ZGVidWdDb250YWluZXI6CiAgaW1hZ2U6CiAgICB2ZXJzaW9uOiBpbnN0YWxsLWRlYnVnLXZlcnNpb24KaGVhcnRiZWF0U2NoZWR1bGU6IDEgMiAzIDQgNQppZGVudGl0eToKICBpc3N1ZXI6CiAgICB0bHM6CiAgICAgIGNydFBFTTogfAogICAgICAgIC0tLS0tQkVHSU4gQ0VSVElGSUNBVEUtLS0tLQogICAgICAgIE1JSUJ3RENDQVdlZ0F3SUJBZ0lSQUpSSWdaOFJ0TzhFd2cxWGVwZjhUNDR3Q2dZSUtvWkl6ajBFQXdJd0tURW4KICAgICAgICBna2RqaHNsa2Roa2dkamhza2pkZmtkamhna2RqaGtkZmpibmtkZm52amtoYnZqaGRiZGpmaGJmamhiZGZNRGd5CiAgICAgICAgbGZrZGprc2xkamdrbGpkZmtnamhkZmtnamhzZGZrbGdqc2RrbGpmZ2hsa2Rmamhsa3NkZmpsa3Nkamt1YkdsdQogICAgICAgIGxzZGpoZnY1NDZtZmRza2dqaGRmamtoZ2tqZGhramhkZmtqZ2hrZGZqaGdramRmaGtqZGZoZ2tqZmRoZ2tqRnAKICAgICAgICBmY1JkZmdoZmRnbWRuZ2tqeGRuYnZqbmN2a2pua2pkbmdram5mZGtqYmt2YmpibnZja2puYmpuZGRmZ2ZkZ3QxCiAgICAgICAgMmJsa2puZ2JramhnbGpkZmxnaGtsamRmbmdqZGZuZ25sZGZrbWxrZGZqZ21sZGZrZ21sa2ZkbWdsa2RtTUFZQgogICAgICAgIEFmOENmZ2xibmpuZGJqZG5rZmpuZ2tkbmZnamtsbmRranZuYmlqZGlmamdpZXJqZ29pamRmbGtneGxrbmdrQ0MKICAgICAgICBIbWxkZmtmamdvaWRmamdnam5kamtmbmdranNkbnNram5qNXNiMk5oYkRBS0JnZ3Foa2pPUFFRREFnTkhBREJFCiAgICAgICAgQWlBdG9mZ2toOTk0NXU4OXV5OWU4dWdodWRmaGd1aGRmZmhpbGd1aGl1aGtkaGZna2pkaGZramhya2piazFwNQogICAgICAgIDVrZmRsc2lmaHU0aHRpdWg0aXR1aGtqaGt6az0KICAgICAgICAtLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCiAgICAgIGtleVBFTTogfAogICAgICAgIC0tLS0tQkVHSU4gRUMgUFJJVkFURSBLRVktLS0tLQogICAgICAgIE1IY0NBUUVFSUFBZThuZmJ6WnU5Yy9PQjJnZGZramdsaWRma2pibnhqa2hiZ2hiZmdoYmpoYmRqaGJzanhjazkKICAgICAgICBvZGlmanZpamRmdm9pamRmb2l2amRmb2lqZGpnbmZka2pnbmtqZGZna2pkZmtqZ2JrampoYmtnSmpYZ1p0TTcyCiAgICAgICAgZGZpb2hndXhoYmtqZ25rbGpkZm5rbGpkbmdram5rZ2puKz09CiAgICAgICAgLS0tLS1FTkQgRUMgUFJJVkFURSBLRVktLS0tLQppZGVudGl0eVRydXN0QW5jaG9yc1BFTTogfAogIC0tLS0tQkVHSU4gQ0VSVElGSUNBVEUtLS0tLQogIE1JSUJ3VENDQVdhZ0F3SUJBZ0lRZURacDVsRGFJeWdRNVVmTUtaZGZuZ2puZGZrZ2puZmRramdua2RqbmtkamYKICBkZmtuZ2tqYmtqZGZic2tqYm5ma2puc2RrZ2psbnhrY2pibmt4am5ja2pnbmtqbmdreGpuZ2tqeGNua2dqbkk0CiAgTURkc2xrZmpvaWVyOGhzZGY4ZmdoZzc4NGg5OHQ5OGVydWhpdXNkaGtmZ2hoc2poYmdqa2hzdmpmaHZzYVc1cgogIFpYNDhrbmdraGdkZmtmamdic2RoYmpoYnNkaGJoeGJkZmxqZ2xkZmtqZ2tqaGpmZGdramJka2pmYmdrYmM3MFoKICBsZGZsa2pna2xqZGZoZmRrZ2poZXJramJnaGZia2dqYmtqbmtqeGNua2pmbmtnam5ma2pnbmtmam43SEJXVUM0CiAgdWZkZ2tqZGZpZ2hmdWRoZ2l1dWRoYm5ma25iZ3NibmRma2poc2tqa3NqbmdranNibmdramJrZ2pieGtqYmdFQgogIC9zZGZiaHNiamZoYmVod3did2poZmJqc2hiZGpoYnppdWhya2hiZXJoYnNqaGJkZmpoYmpoYmpoc2JqaGJzcysKICBsZGpmbGhranNka2ZqaHNrZGpma2pzZG5ma2puc2RramZuc2Rram5ranhjbmtqdm5ram5kc2Z3bGVra0FNRVlDCiAgSWVmb2h3a3VlaGZranNkaGZranNkaGtmamhzZGtqZmhrc2RqaGZranNkaGZranNkaGRramZoc2trZGpmaGpDOAogIHNkZnNkaHlnZmpoZ2RqaGZnanNoZGdmamhncXIKICAtLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCmxpbmtlcmRWZXJzaW9uOiBpbnN0YWxsLWNvbnRyb2wtcGxhbmUtdmVyc2lvbgpwb2xpY3lWYWxpZGF0b3I6CiAgY2FCdW5kbGU6IHBvbGljeSB2YWxpZGF0b3IgQ0EgYnVuZGxlCiAgZXh0ZXJuYWxTZWNyZXQ6IHRydWUKcHJvZmlsZVZhbGlkYXRvcjoKICBjYUJ1bmRsZTogcHJvZmlsZSB2YWxpZGF0b3IgQ0EgYnVuZGxlCiAgZXh0ZXJuYWxTZWNyZXQ6IHRydWUKcHJveHk6CiAgaW1hZ2U6CiAgICB2ZXJzaW9uOiBpbnN0YWxsLXByb3h5LXZlcnNpb24KcHJveHlJbml0OgogIGlnbm9yZUluYm91bmRQb3J0czogMjIsMzMwNi02MTkyCiAgaWdub3JlT3V0Ym91bmRQb3J0czogIjMyNzgiCnByb3h5SW5qZWN0b3I6CiAgY2FCdW5kbGU6IHByb3h5IGluamVjdG9yIENBIGJ1bmRsZQogIGV4dGVybmFsU2VjcmV0OiB0cnVlCg\",\n                \"value_start\": 0,\n                \"value_end\": 3078,\n                \"entropy\": 5.49785\n            }\n        ]\n    },\n    {\n        \"rule\": \"PEM Private Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"        -----BEGIN EC PRIVATE KEY-----\",\n                \"line_num\": 22,\n                \"path\": \"./tests/samples/LS0t_p\",\n                \"info\": \"FILE:./tests/samples/LS0t_p|BASE64|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"-----BEGIN EC PRIVATE KEY-----\",\n                \"value_start\": 8,\n                \"value_end\": 38,\n                \"entropy\": 3.30775\n            },\n            {\n                \"line\": \"        MHcCAQEEIAAe8nfbzZu9c/OB2gdfkjglidfkjbnxjkhbghbfghbjhbdjhbsjxck9\",\n                \"line_num\": 23,\n                \"path\": \"./tests/samples/LS0t_p\",\n                \"info\": \"FILE:./tests/samples/LS0t_p|BASE64|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"MHcCAQEEIAAe8nfbzZu9c/OB2gdfkjglidfkjbnxjkhbghbfghbjhbdjhbsjxck9\",\n                \"value_start\": 8,\n                \"value_end\": 72,\n                \"entropy\": 4.54632\n            },\n            {\n                \"line\": \"        odifjvijdfvoijdfoivjdfoijdjgnfdkjgnkjdfgkjdfkjgbkjjhbkgJjXgZtM72\",\n                \"line_num\": 24,\n                \"path\": \"./tests/samples/LS0t_p\",\n                \"info\": \"FILE:./tests/samples/LS0t_p|BASE64|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"odifjvijdfvoijdfoivjdfoijdjgnfdkjgnkjdfgkjdfkjgbkjjhbkgJjXgZtM72\",\n                \"value_start\": 8,\n                \"value_end\": 72,\n                \"entropy\": 3.63842\n            },\n            {\n                \"line\": \"        dfiohguxhbkjgnkljdfnkljdngkjnkgjn+==\",\n                \"line_num\": 25,\n                \"path\": \"./tests/samples/LS0t_p\",\n                \"info\": \"FILE:./tests/samples/LS0t_p|BASE64|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"dfiohguxhbkjgnkljdfnkljdngkjnkgjn+==\",\n                \"value_start\": 8,\n                \"value_end\": 44,\n                \"entropy\": 3.62593\n            },\n            {\n                \"line\": \"        -----END EC PRIVATE KEY-----\",\n                \"line_num\": 26,\n                \"path\": \"./tests/samples/LS0t_p\",\n                \"info\": \"FILE:./tests/samples/LS0t_p|BASE64|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"-----END EC PRIVATE KEY-----\",\n                \"value_start\": 8,\n                \"value_end\": 36,\n                \"entropy\": 3.16542\n            }\n        ]\n    },\n    {\n        \"rule\": \"PKCS without password\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"MIIBOgIBAAJBAL1/hJjtuMbjbVXo6wYT1SxiROOvwgffVSvOAk5aN2d4wYTC25k3sklfpdwxvkjh4iGB6/qC+0RbmiLwaXaQT0ECAwEAAQJAeAlQyza6t3HVDnhud/kULftJvBjXhfkYkJj8qPlI40dn/Tnwe6mywfly6hOvAn4TRBsnB/Eln6hJLmCrDvZvyQIhAPf7Uma4/Aqgoz3SfPyz9TaQXyD5JSC3ej7cOH7b3hgTAiEAw6AYhc/UKh8iIAPYGK15ImVmXAlxmhFD6xCWx9bcTdsCIQDiqOayWZaWKCnNEh2H5PzW+LLasp9K/ilQV32UBmdD3QIgbafQFzHoO7Q37Lo655pVzHIKbozcoQAMkjc6TcqiswECIBvXLFj5jkNs4iSqphZo8eISUdol/9Zo/dkrHC41kbYJ\",\n                \"line_num\": 0,\n                \"path\": \"./tests/samples/Sample.class\",\n                \"info\": \"FILE:./tests/samples/Sample.class|Java.65.0|STRING:21|BASE64|PKCS_PASSWORD:None\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"None\",\n                \"value_start\": -2,\n                \"value_end\": -2,\n                \"entropy\": 2.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"PKCS with password 'changeme'\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"MIIBvTBXBgkqhkiG9w0BBQ0wSjApBgkqhkiG9w0BBQwwHAQIT0gWHcAV1rACAggAMAwGCCqGSIb3DQIJBQAwHQYJYIZIAWUDBAEqBBBaZ0qE6fJsz9rDPoa2esruBIIBYF9QvKgDLA15MgXR8P73DRdrDJzEEoYe7bDtk+vnTzy6DNVwSfkgQLNLpKfnjPO3b1szG5md06Fai6Tuuc9kKDhaCWfGgw/xAeb4OEjWupyCUvmyWYBNqCC+DDQZb7ccka4cuIRV7Ty0I/3AdGCZ/g4mDBozjtfLkLOvWzRuKXQYvGlPYd0HUWupKn2SgduyrwKt43zq0j+t9UXMMFVYv7RZOzZruVcUkBKHoYDkgOl9OQ5tGE+atfhLZUVUKj4Q7F+o6mlTy0JHxv94oUadDXJCyzivdes2RxabPDJ+1gEfNW8ZRZtselC+Pdy+KBItLn3f3FEWXpWbNPRzhElOUUaNgRNOQrmxoE09QxWLt8L3soArRfWe732Nw7N9izpUuKmL72bzbpetDQu/sn49CEnWcFGCZQ9inSiEogF0e2ncxnKfthRKzpT3K5JGiqcMmbcMoz5WjLks//PgWcZ/l2o=\",\n                \"line_num\": 0,\n                \"path\": \"./tests/samples/Sample.class\",\n                \"info\": \"FILE:./tests/samples/Sample.class|Java.65.0|STRING:25|BASE64|PKCS_PASSWORD:b'changeme'\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"b'changeme'\",\n                \"value_start\": -2,\n                \"value_end\": -2,\n                \"entropy\": 3.0958\n            }\n        ]\n    },\n    {\n        \"rule\": \"BASE64 Private Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"MIIBOgIBAAJBAL1/hJjtuMbjbVXo6wYT1SxiROOvwgffVSvOAk5aN2d4wYTC25k3sklfpdwxvkjh4iGB6/qC+0RbmiLwaXaQT0ECAwEAAQJAeAlQyza6t3HVDnhud/kULftJvBjXhfkYkJj8qPlI40dn/Tnwe6mywfly6hOvAn4TRBsnB/Eln6hJLmCrDvZvyQIhAPf7Uma4/Aqgoz3SfPyz9TaQXyD5JSC3ej7cOH7b3hgTAiEAw6AYhc/UKh8iIAPYGK15ImVmXAlxmhFD6xCWx9bcTdsCIQDiqOayWZaWKCnNEh2H5PzW+LLasp9K/ilQV32UBmdD3QIgbafQFzHoO7Q37Lo655pVzHIKbozcoQAMkjc6TcqiswECIBvXLFj5jkNs4iSqphZo8eISUdol/9Zo/dkrHC41kbYJ\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/Sample.class\",\n                \"info\": \"FILE:./tests/samples/Sample.class|Java.65.0|STRING:21|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"MIIBOgIBAAJBAL1/hJjtuMbjbVXo6wYT1SxiROOvwgffVSvOAk5aN2d4wYTC25k3sklfpdwxvkjh4iGB6/qC+0RbmiLwaXaQT0ECAwEAAQJAeAlQyza6t3HVDnhud/kULftJvBjXhfkYkJj8qPlI40dn/Tnwe6mywfly6hOvAn4TRBsnB/Eln6hJLmCrDvZvyQIhAPf7Uma4/Aqgoz3SfPyz9TaQXyD5JSC3ej7cOH7b3hgTAiEAw6AYhc/UKh8iIAPYGK15ImVmXAlxmhFD6xCWx9bcTdsCIQDiqOayWZaWKCnNEh2H5PzW+LLasp9K/ilQV32UBmdD3QIgbafQFzHoO7Q37Lo655pVzHIKbozcoQAMkjc6TcqiswECIBvXLFj5jkNs4iSqphZo8eISUdol/9Zo/dkrHC41kbYJ\",\n                \"value_start\": 0,\n                \"value_end\": 424,\n                \"entropy\": 5.85007\n            }\n        ]\n    },\n    {\n        \"rule\": \"Akamai Credentials\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"T: akab-tblc7jkffv3wfxh3-h5stbzeswb3v4kj3\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/akamai\",\n                \"info\": \"FILE:./tests/samples/akamai|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"akab-tblc7jkffv3wfxh3-h5stbzeswb3v4kj3\",\n                \"value_start\": 3,\n                \"value_end\": 41,\n                \"entropy\": 4.15557\n            }\n        ]\n    },\n    {\n        \"rule\": \"Anthropic API Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"sk-ant-api03-gigCtxD_mMUnJuUOwVtpBmPFdG0-ybrcBb1EcgpJblpcwh7tpFu-DIChOfbCnT7NgKcobiQ5aQA1oxlu3aJ-HgvUeZoSew\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/antrhropic\",\n                \"info\": \"FILE:./tests/samples/antrhropic|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"sk-ant-api03-gigCtxD_mMUnJuUOwVtpBmPFdG0-ybrcBb1EcgpJblpcwh7tpFu-DIChOfbCnT7NgKcobiQ5aQA1oxlu3aJ-HgvUeZoSew\",\n                \"value_start\": 0,\n                \"value_end\": 107,\n                \"entropy\": 5.42952\n            }\n        ]\n    },\n    {\n        \"rule\": \"API\",\n        \"severity\": \"low\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"gi_reo_gi_api = \\\"DvMB_glvwjlEQ_uqIyn8k\\\";\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/api.toml\",\n                \"info\": \"FILE:./tests/samples/api.toml|RAW\",\n                \"variable\": \"gi_reo_gi_api\",\n                \"variable_start\": 0,\n                \"variable_end\": 13,\n                \"value\": \"DvMB_glvwjlEQ_uqIyn8k\",\n                \"value_start\": 17,\n                \"value_end\": 38,\n                \"entropy\": 4.1066\n            }\n        ]\n    },\n    {\n        \"rule\": \"Atlassian PAT token\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"ATLASSIAN = \\\"ATATT3xFfGF0vNZ7oy6ON4KrWEzKEu96n-r2bCLOOcdOADizvJqPd89yKyP853uTZSflBi1Lk1zD460BqyMTa08VUEy8-oOzr1esg3j_mZKZwAELnRkCDTJZXhHsv5jaWHyAj4LRL-6h8LI-5MrYs4l7xXSaY8odQxDKJB4hDvdkmuh61xea2jE=00203E68\\\"\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/atlassian_pat\",\n                \"info\": \"FILE:./tests/samples/atlassian_pat|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"ATATT3xFfGF0vNZ7oy6ON4KrWEzKEu96n-r2bCLOOcdOADizvJqPd89yKyP853uTZSflBi1Lk1zD460BqyMTa08VUEy8-oOzr1esg3j_mZKZwAELnRkCDTJZXhHsv5jaWHyAj4LRL-6h8LI-5MrYs4l7xXSaY8odQxDKJB4hDvdkmuh61xea2jE=00203E68\",\n                \"value_start\": 13,\n                \"value_end\": 205,\n                \"entropy\": 5.77034\n            }\n        ]\n    },\n    {\n        \"rule\": \"Atlassian PAT token\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"escaped_backslash = ATATT3xFfGF0vNZ7oy6ON4KrWEzKEu96n-r2bCLOOcdOADizvJqPd89yKyP853uTZSflBi1Lk1zD460BqyMTa08VUEy8-oOzr1esg3j_mZKZwAELnRkCDTJZXhHsv5jaWHyAj4LRL-6h8LI-5MrYs4l7xXSaY8odQxDKJB4hDvdkmuh61xea2jE\\\\=00203E68\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/atlassian_pat\",\n                \"info\": \"FILE:./tests/samples/atlassian_pat|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"ATATT3xFfGF0vNZ7oy6ON4KrWEzKEu96n-r2bCLOOcdOADizvJqPd89yKyP853uTZSflBi1Lk1zD460BqyMTa08VUEy8-oOzr1esg3j_mZKZwAELnRkCDTJZXhHsv5jaWHyAj4LRL-6h8LI-5MrYs4l7xXSaY8odQxDKJB4hDvdkmuh61xea2jE\\\\=00203E68\",\n                \"value_start\": 20,\n                \"value_end\": 213,\n                \"entropy\": 5.78724\n            }\n        ]\n    },\n    {\n        \"rule\": \"Atlassian PAT token\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"url_escaped_capital = ATATT3xFfGF0vNZ7oy6ON4KrWEzKEu96n-r2bCLOOcdOADizvJqPd89yKyP853uTZSflBi1Lk1zD460BqyMTa08VUEy8-oOzr1esg3j_mZKZwAELnRkCDTJZXhHsv5jaWHyAj4LRL-6h8LI-5MrYs4l7xXSaY8odQxDKJB4hDvdkmuh61xea2jE%3D00203E68\",\n                \"line_num\": 3,\n                \"path\": \"./tests/samples/atlassian_pat\",\n                \"info\": \"FILE:./tests/samples/atlassian_pat|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"ATATT3xFfGF0vNZ7oy6ON4KrWEzKEu96n-r2bCLOOcdOADizvJqPd89yKyP853uTZSflBi1Lk1zD460BqyMTa08VUEy8-oOzr1esg3j_mZKZwAELnRkCDTJZXhHsv5jaWHyAj4LRL-6h8LI-5MrYs4l7xXSaY8odQxDKJB4hDvdkmuh61xea2jE%3D00203E68\",\n                \"value_start\": 22,\n                \"value_end\": 216,\n                \"entropy\": 5.76529\n            }\n        ]\n    },\n    {\n        \"rule\": \"Atlassian PAT token\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"url_escaped_lowercase = ATATT3xFfGF0vNZ7oy6ON4KrWEzKEu96n-r2bCLOOcdOADizvJqPd89yKyP853uTZSflBi1Lk1zD460BqyMTa08VUEy8-oOzr1esg3j_mZKZwAELnRkCDTJZXhHsv5jaWHyAj4LRL-6h8LI-5MrYs4l7xXSaY8odQxDKJB4hDvdkmuh61xea2jE%3d00203E68\",\n                \"line_num\": 4,\n                \"path\": \"./tests/samples/atlassian_pat\",\n                \"info\": \"FILE:./tests/samples/atlassian_pat|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"ATATT3xFfGF0vNZ7oy6ON4KrWEzKEu96n-r2bCLOOcdOADizvJqPd89yKyP853uTZSflBi1Lk1zD460BqyMTa08VUEy8-oOzr1esg3j_mZKZwAELnRkCDTJZXhHsv5jaWHyAj4LRL-6h8LI-5MrYs4l7xXSaY8odQxDKJB4hDvdkmuh61xea2jE%3d00203E68\",\n                \"value_start\": 24,\n                \"value_end\": 218,\n                \"entropy\": 5.76679\n            }\n        ]\n    },\n    {\n        \"rule\": \"Auth\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"\\\"kerberos_authentication\\\": \\\"YI7IB6wYJgaMgHAgIKoZI2AQBuIh2cSA0IB1qA\\\"\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/auth.hs\",\n                \"info\": \"FILE:./tests/samples/auth.hs|RAW\",\n                \"variable\": \"kerberos_authentication\",\n                \"variable_start\": 1,\n                \"variable_end\": 24,\n                \"value\": \"YI7IB6wYJgaMgHAgIKoZI2AQBuIh2cSA0IB1qA\",\n                \"value_start\": 28,\n                \"value_end\": 66,\n                \"entropy\": 4.27373\n            }\n        ]\n    },\n    {\n        \"rule\": \"Auth\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"\\\"authorization\\\": \\\"aMgHAgIKhwLgGq02iQoZI1AQBuOh4cSAQ8B1qA\\\"\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/auth.hs\",\n                \"info\": \"FILE:./tests/samples/auth.hs|RAW\",\n                \"variable\": \"authorization\",\n                \"variable_start\": 1,\n                \"variable_end\": 14,\n                \"value\": \"aMgHAgIKhwLgGq02iQoZI1AQBuOh4cSAQ8B1qA\",\n                \"value_start\": 18,\n                \"value_end\": 56,\n                \"entropy\": 4.52399\n            }\n        ]\n    },\n    {\n        \"rule\": \"Auth\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"headers = {authorization: /oauth_signature=\\\"JgEWaL6V6eM%2FFb9wuXG4I3IB6wY%3D\\\"/, content_type: 'application/json; charset=utf-8'}\",\n                \"line_num\": 3,\n                \"path\": \"./tests/samples/auth.hs\",\n                \"info\": \"FILE:./tests/samples/auth.hs|RAW\",\n                \"variable\": \"oauth_signature\",\n                \"variable_start\": 27,\n                \"variable_end\": 42,\n                \"value\": \"JgEWaL6V6eM%2FFb9wuXG4I3IB6wY%3D\",\n                \"value_start\": 44,\n                \"value_end\": 76,\n                \"entropy\": 4.53891\n            }\n        ]\n    },\n    {\n        \"rule\": \"Auth\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.999,\n        \"line_data_list\": [\n            {\n                \"line\": \"Authorization: NTLM TlRMTUAAABABoITVNIAAZI1AQBuOh4cSAQ8B1A=\",\n                \"line_num\": 4,\n                \"path\": \"./tests/samples/auth.hs\",\n                \"info\": \"FILE:./tests/samples/auth.hs|RAW\",\n                \"variable\": \"Authorization\",\n                \"variable_start\": 0,\n                \"variable_end\": 13,\n                \"value\": \"TlRMTUAAABABoITVNIAAZI1AQBuOh4cSAQ8B1A=\",\n                \"value_start\": 20,\n                \"value_end\": 59,\n                \"entropy\": 4.00235\n            }\n        ]\n    },\n    {\n        \"rule\": \"Bearer Authorization\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"Authorization: NTLM TlRMTUAAABABoITVNIAAZI1AQBuOh4cSAQ8B1A=\",\n                \"line_num\": 4,\n                \"path\": \"./tests/samples/auth.hs\",\n                \"info\": \"FILE:./tests/samples/auth.hs|RAW\",\n                \"variable\": \"NTLM\",\n                \"variable_start\": 15,\n                \"variable_end\": 19,\n                \"value\": \"TlRMTUAAABABoITVNIAAZI1AQBuOh4cSAQ8B1A=\",\n                \"value_start\": 20,\n                \"value_end\": 59,\n                \"entropy\": 4.00235\n            }\n        ]\n    },\n    {\n        \"rule\": \"Auth\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"curl -H \\\"Authorization: Basic R2hyZG5oYzpycWVpIGVuZ2xiZg==\\\" http://localhost:8080/.\",\n                \"line_num\": 8,\n                \"path\": \"./tests/samples/auth_n.template\",\n                \"info\": \"FILE:./tests/samples/auth_n.template|RAW\",\n                \"variable\": \"Authorization\",\n                \"variable_start\": 9,\n                \"variable_end\": 22,\n                \"value\": \"R2hyZG5oYzpycWVpIGVuZ2xiZg==\",\n                \"value_start\": 30,\n                \"value_end\": 58,\n                \"entropy\": 4.20897\n            }\n        ]\n    },\n    {\n        \"rule\": \"Basic Authorization\",\n        \"severity\": \"medium\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"curl -H \\\"Authorization: Basic R2hyZG5oYzpycWVpIGVuZ2xiZg==\\\" http://localhost:8080/.\",\n                \"line_num\": 8,\n                \"path\": \"./tests/samples/auth_n.template\",\n                \"info\": \"FILE:./tests/samples/auth_n.template|RAW\",\n                \"variable\": \"Basic\",\n                \"variable_start\": 24,\n                \"variable_end\": 29,\n                \"value\": \"R2hyZG5oYzpycWVpIGVuZ2xiZg==\",\n                \"value_start\": 30,\n                \"value_end\": 58,\n                \"entropy\": 4.20897\n            }\n        ]\n    },\n    {\n        \"rule\": \"Auth\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"curl -H \\\"Authorization: Bearer eyJGRpVu1c2VzY2-823r_db32hbf4W1lbj\\\" http://localhost:8080/.\",\n                \"line_num\": 9,\n                \"path\": \"./tests/samples/auth_n.template\",\n                \"info\": \"FILE:./tests/samples/auth_n.template|RAW\",\n                \"variable\": \"Authorization\",\n                \"variable_start\": 9,\n                \"variable_end\": 22,\n                \"value\": \"eyJGRpVu1c2VzY2-823r_db32hbf4W1lbj\",\n                \"value_start\": 31,\n                \"value_end\": 65,\n                \"entropy\": 4.53585\n            }\n        ]\n    },\n    {\n        \"rule\": \"Bearer Authorization\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"curl -H \\\"Authorization: Bearer eyJGRpVu1c2VzY2-823r_db32hbf4W1lbj\\\" http://localhost:8080/.\",\n                \"line_num\": 9,\n                \"path\": \"./tests/samples/auth_n.template\",\n                \"info\": \"FILE:./tests/samples/auth_n.template|RAW\",\n                \"variable\": \"Bearer\",\n                \"variable_start\": 24,\n                \"variable_end\": 30,\n                \"value\": \"eyJGRpVu1c2VzY2-823r_db32hbf4W1lbj\",\n                \"value_start\": 31,\n                \"value_end\": 65,\n                \"entropy\": 4.53585\n            }\n        ]\n    },\n    {\n        \"rule\": \"AWS Client ID\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"The items are AKIAGIREOGIAWSKEY123,AKIAGIREOGIAWSKEY45X,A3T1DJ4IS97DLLTH2SZ3\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/aws_client_id\",\n                \"info\": \"FILE:./tests/samples/aws_client_id|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"A3T1DJ4IS97DLLTH2SZ3\",\n                \"value_start\": 56,\n                \"value_end\": 76,\n                \"entropy\": 3.82193\n            }\n        ]\n    },\n    {\n        \"rule\": \"AWS Client ID\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"The items are AKIAGIREOGIAWSKEY123,AKIAGIREOGIAWSKEY45X,A3T1DJ4IS97DLLTH2SZ3\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/aws_client_id\",\n                \"info\": \"FILE:./tests/samples/aws_client_id|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"AKIAGIREOGIAWSKEY123\",\n                \"value_start\": 14,\n                \"value_end\": 34,\n                \"entropy\": 3.54644\n            }\n        ]\n    },\n    {\n        \"rule\": \"AWS Client ID\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"The items are AKIAGIREOGIAWSKEY123,AKIAGIREOGIAWSKEY45X,A3T1DJ4IS97DLLTH2SZ3\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/aws_client_id\",\n                \"info\": \"FILE:./tests/samples/aws_client_id|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"AKIAGIREOGIAWSKEY45X\",\n                \"value_start\": 35,\n                \"value_end\": 55,\n                \"entropy\": 3.54644\n            }\n        ]\n    },\n    {\n        \"rule\": \"Amazon Bedrock API Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"bedrock-api-key-vZKDJRzMKwJH6ewnj9FiyoUlZemipP2t\",\n                \"line_num\": 8,\n                \"path\": \"./tests/samples/aws_client_id\",\n                \"info\": \"FILE:./tests/samples/aws_client_id|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"bedrock-api-key-vZKDJRzMKwJH6ewnj9FiyoUlZemipP2t\",\n                \"value_start\": 0,\n                \"value_end\": 48,\n                \"entropy\": 4.88684\n            }\n        ]\n    },\n    {\n        \"rule\": \"Amazon Bedrock API Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"ABSKpA8zwd50pFVLlH+DeWUlP1+WQ44upInjTDDbiDdaS2IvMOcMgT//XXPzEeJvYPRozcaOxv/no3aR3p7CoHYQf9Yx3PnaQVTYO+iCyiUbinHue1+8DSAx61Froe42\",\n                \"line_num\": 9,\n                \"path\": \"./tests/samples/aws_client_id\",\n                \"info\": \"FILE:./tests/samples/aws_client_id|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"ABSKpA8zwd50pFVLlH+DeWUlP1+WQ44upInjTDDbiDdaS2IvMOcMgT//XXPzEeJvYPRozcaOxv/no3aR3p7CoHYQf9Yx3PnaQVTYO+iCyiUbinHue1+8DSAx61Froe42\",\n                \"value_start\": 0,\n                \"value_end\": 128,\n                \"entropy\": 5.61388\n            }\n        ]\n    },\n    {\n        \"rule\": \"AWS Client ID\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"        \\\"AwsAccessID\\\": \\\"AKIAGIREOGIAWSKEY123\\\",\",\n                \"line_num\": 3,\n                \"path\": \"./tests/samples/aws_multi.json\",\n                \"info\": \"FILE:./tests/samples/aws_multi.json|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"AKIAGIREOGIAWSKEY123\",\n                \"value_start\": 24,\n                \"value_end\": 44,\n                \"entropy\": 3.54644\n            }\n        ]\n    },\n    {\n        \"rule\": \"Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"        \\\"AwsSecretKey\\\": \\\"J38YmIgn7dH6cw4W+yqoRgjsFsWvysFjfVcpCh7O9Yyv9/qNvNI\\\"\",\n                \"line_num\": 4,\n                \"path\": \"./tests/samples/aws_multi.json\",\n                \"info\": \"FILE:./tests/samples/aws_multi.json|RAW\",\n                \"variable\": \"AwsSecretKey\",\n                \"variable_start\": 9,\n                \"variable_end\": 21,\n                \"value\": \"J38YmIgn7dH6cw4W+yqoRgjsFsWvysFjfVcpCh7O9Yyv9/qNvNI\",\n                \"value_start\": 25,\n                \"value_end\": 76,\n                \"entropy\": 4.96135\n            }\n        ]\n    },\n    {\n        \"rule\": \"Secret\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"        \\\"AwsSecretKey\\\": \\\"J38YmIgn7dH6cw4W+yqoRgjsFsWvysFjfVcpCh7O9Yyv9/qNvNI\\\"\",\n                \"line_num\": 4,\n                \"path\": \"./tests/samples/aws_multi.json\",\n                \"info\": \"FILE:./tests/samples/aws_multi.json|RAW\",\n                \"variable\": \"AwsSecretKey\",\n                \"variable_start\": 9,\n                \"variable_end\": 21,\n                \"value\": \"J38YmIgn7dH6cw4W+yqoRgjsFsWvysFjfVcpCh7O9Yyv9/qNvNI\",\n                \"value_start\": 25,\n                \"value_end\": 76,\n                \"entropy\": 4.96135\n            }\n        ]\n    },\n    {\n        \"rule\": \"AWS Client ID\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"        \\\"request_url\\\": \\\"https://gireogi323.s3.amazonaws.com/x3342?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Date=203230516T251998Z&X-Amz-SignedHeaders=host&X-Amz-Expires=999999&X-Amz-Credential=AKIAGIREOGIAWSKEY323%2F21100651%2Feu-west-3%2Fs3%2Faws_dummy&X-Amz-Key=J38YmIgn7dH6cw4W1yqoRgjsFsWvysFjfVcpCh7O9Yyv9_qNvNI\\\"\",\n                \"line_num\": 28,\n                \"path\": \"./tests/samples/aws_multi.json\",\n                \"info\": \"FILE:./tests/samples/aws_multi.json|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"AKIAGIREOGIAWSKEY323\",\n                \"value_start\": 191,\n                \"value_end\": 211,\n                \"entropy\": 3.44644\n            }\n        ]\n    },\n    {\n        \"rule\": \"Credential\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"        \\\"request_url\\\": \\\"https://gireogi323.s3.amazonaws.com/x3342?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Date=203230516T251998Z&X-Amz-SignedHeaders=host&X-Amz-Expires=999999&X-Amz-Credential=AKIAGIREOGIAWSKEY323%2F21100651%2Feu-west-3%2Fs3%2Faws_dummy&X-Amz-Key=J38YmIgn7dH6cw4W1yqoRgjsFsWvysFjfVcpCh7O9Yyv9_qNvNI\\\"\",\n                \"line_num\": 28,\n                \"path\": \"./tests/samples/aws_multi.json\",\n                \"info\": \"FILE:./tests/samples/aws_multi.json|RAW\",\n                \"variable\": \"X-Amz-Credential\",\n                \"variable_start\": 174,\n                \"variable_end\": 190,\n                \"value\": \"AKIAGIREOGIAWSKEY323%2F21100651%2Feu-west-3%2Fs3%2Faws_dummy\",\n                \"value_start\": 191,\n                \"value_end\": 251,\n                \"entropy\": 4.6314\n            }\n        ]\n    },\n    {\n        \"rule\": \"Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"        \\\"request_url\\\": \\\"https://gireogi323.s3.amazonaws.com/x3342?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Date=203230516T251998Z&X-Amz-SignedHeaders=host&X-Amz-Expires=999999&X-Amz-Credential=AKIAGIREOGIAWSKEY323%2F21100651%2Feu-west-3%2Fs3%2Faws_dummy&X-Amz-Key=J38YmIgn7dH6cw4W1yqoRgjsFsWvysFjfVcpCh7O9Yyv9_qNvNI\\\"\",\n                \"line_num\": 28,\n                \"path\": \"./tests/samples/aws_multi.json\",\n                \"info\": \"FILE:./tests/samples/aws_multi.json|RAW\",\n                \"variable\": \"X-Amz-Key\",\n                \"variable_start\": 252,\n                \"variable_end\": 261,\n                \"value\": \"J38YmIgn7dH6cw4W1yqoRgjsFsWvysFjfVcpCh7O9Yyv9_qNvNI\",\n                \"value_start\": 262,\n                \"value_end\": 313,\n                \"entropy\": 4.96135\n            }\n        ]\n    },\n    {\n        \"rule\": \"AWS S3 Bucket\",\n        \"severity\": \"info\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"        \\\"request_url\\\": \\\"https://gireogi323.s3.amazonaws.com/x3342?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Date=203230516T251998Z&X-Amz-SignedHeaders=host&X-Amz-Expires=999999&X-Amz-Credential=AKIAGIREOGIAWSKEY323%2F21100651%2Feu-west-3%2Fs3%2Faws_dummy&X-Amz-Key=J38YmIgn7dH6cw4W1yqoRgjsFsWvysFjfVcpCh7O9Yyv9_qNvNI\\\"\",\n                \"line_num\": 28,\n                \"path\": \"./tests/samples/aws_multi.json\",\n                \"info\": \"FILE:./tests/samples/aws_multi.json|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"gireogi323.s3.amazonaws.com\",\n                \"value_start\": 32,\n                \"value_end\": 59,\n                \"entropy\": 3.75416\n            }\n        ]\n    },\n    {\n        \"rule\": \"Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"        \\\"AwsSecretKey\\\": \\\"J38YmIgn7dH6cw4W1yqoRgjsFsWvysFjfVcpCh7O9Yyv9/qNvNI\\\",\",\n                \"line_num\": 52,\n                \"path\": \"./tests/samples/aws_multi.json\",\n                \"info\": \"FILE:./tests/samples/aws_multi.json|RAW\",\n                \"variable\": \"AwsSecretKey\",\n                \"variable_start\": 9,\n                \"variable_end\": 21,\n                \"value\": \"J38YmIgn7dH6cw4W1yqoRgjsFsWvysFjfVcpCh7O9Yyv9/qNvNI\",\n                \"value_start\": 25,\n                \"value_end\": 76,\n                \"entropy\": 4.96135\n            }\n        ]\n    },\n    {\n        \"rule\": \"Secret\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"        \\\"AwsSecretKey\\\": \\\"J38YmIgn7dH6cw4W1yqoRgjsFsWvysFjfVcpCh7O9Yyv9/qNvNI\\\",\",\n                \"line_num\": 52,\n                \"path\": \"./tests/samples/aws_multi.json\",\n                \"info\": \"FILE:./tests/samples/aws_multi.json|RAW\",\n                \"variable\": \"AwsSecretKey\",\n                \"variable_start\": 9,\n                \"variable_end\": 21,\n                \"value\": \"J38YmIgn7dH6cw4W1yqoRgjsFsWvysFjfVcpCh7O9Yyv9/qNvNI\",\n                \"value_start\": 25,\n                \"value_end\": 76,\n                \"entropy\": 4.96135\n            }\n        ]\n    },\n    {\n        \"rule\": \"AWS Client ID\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"        \\\"AwsAccessID\\\": \\\"AKIAGIREOGIAWSKEY321\\\"\",\n                \"line_num\": 53,\n                \"path\": \"./tests/samples/aws_multi.json\",\n                \"info\": \"FILE:./tests/samples/aws_multi.json|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"AKIAGIREOGIAWSKEY321\",\n                \"value_start\": 24,\n                \"value_end\": 44,\n                \"entropy\": 3.54644\n            }\n        ]\n    },\n    {\n        \"rule\": \"AWS Client ID\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"    \\\"AccessKeyId\\\" : \\\"AKIA0ON7V2DD57PL3JXM\\\",\",\n                \"line_num\": 7,\n                \"path\": \"./tests/samples/aws_multi.md\",\n                \"info\": \"FILE:./tests/samples/aws_multi.md|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"AKIA0ON7V2DD57PL3JXM\",\n                \"value_start\": 21,\n                \"value_end\": 41,\n                \"entropy\": 4.02193\n            }\n        ]\n    },\n    {\n        \"rule\": \"AWS Multi\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"    \\\"AccessKeyId\\\" : \\\"AKIA0ON7V2DD57PL3JXM\\\",\",\n                \"line_num\": 7,\n                \"path\": \"./tests/samples/aws_multi.md\",\n                \"info\": \"FILE:./tests/samples/aws_multi.md|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"AKIA0ON7V2DD57PL3JXM\",\n                \"value_start\": 21,\n                \"value_end\": 41,\n                \"entropy\": 4.02193\n            },\n            {\n                \"line\": \"    \\\"SecretAccessKey\\\" : \\\"RMkMm8niUJ1iuhAA+AAyugy3fFt/rtrf7GFQ9xz1\\\",\",\n                \"line_num\": 8,\n                \"path\": \"./tests/samples/aws_multi.md\",\n                \"info\": \"FILE:./tests/samples/aws_multi.md|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"RMkMm8niUJ1iuhAA+AAyugy3fFt/rtrf7GFQ9xz1\",\n                \"value_start\": 25,\n                \"value_end\": 65,\n                \"entropy\": 4.67193\n            }\n        ]\n    },\n    {\n        \"rule\": \"Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"    \\\"AccessKeyId\\\" : \\\"AKIA0ON7V2DD57PL3JXM\\\",\",\n                \"line_num\": 7,\n                \"path\": \"./tests/samples/aws_multi.md\",\n                \"info\": \"FILE:./tests/samples/aws_multi.md|RAW\",\n                \"variable\": \"AccessKeyId\",\n                \"variable_start\": 5,\n                \"variable_end\": 16,\n                \"value\": \"AKIA0ON7V2DD57PL3JXM\",\n                \"value_start\": 21,\n                \"value_end\": 41,\n                \"entropy\": 4.02193\n            }\n        ]\n    },\n    {\n        \"rule\": \"Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"    \\\"SecretAccessKey\\\" : \\\"RMkMm8niUJ1iuhAA+AAyugy3fFt/rtrf7GFQ9xz1\\\",\",\n                \"line_num\": 8,\n                \"path\": \"./tests/samples/aws_multi.md\",\n                \"info\": \"FILE:./tests/samples/aws_multi.md|RAW\",\n                \"variable\": \"SecretAccessKey\",\n                \"variable_start\": 5,\n                \"variable_end\": 20,\n                \"value\": \"RMkMm8niUJ1iuhAA+AAyugy3fFt/rtrf7GFQ9xz1\",\n                \"value_start\": 25,\n                \"value_end\": 65,\n                \"entropy\": 4.67193\n            }\n        ]\n    },\n    {\n        \"rule\": \"Secret\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"    \\\"SecretAccessKey\\\" : \\\"RMkMm8niUJ1iuhAA+AAyugy3fFt/rtrf7GFQ9xz1\\\",\",\n                \"line_num\": 8,\n                \"path\": \"./tests/samples/aws_multi.md\",\n                \"info\": \"FILE:./tests/samples/aws_multi.md|RAW\",\n                \"variable\": \"SecretAccessKey\",\n                \"variable_start\": 5,\n                \"variable_end\": 20,\n                \"value\": \"RMkMm8niUJ1iuhAA+AAyugy3fFt/rtrf7GFQ9xz1\",\n                \"value_start\": 25,\n                \"value_end\": 65,\n                \"entropy\": 4.67193\n            }\n        ]\n    },\n    {\n        \"rule\": \"Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"    \\\"Token\\\" : \\\"J38YmIgn7dH6cw4W1yqoRgjsFsWvysFjfVcpCh7O9Yyv9/qNvNI\\\",\",\n                \"line_num\": 9,\n                \"path\": \"./tests/samples/aws_multi.md\",\n                \"info\": \"FILE:./tests/samples/aws_multi.md|RAW\",\n                \"variable\": \"Token\",\n                \"variable_start\": 5,\n                \"variable_end\": 10,\n                \"value\": \"J38YmIgn7dH6cw4W1yqoRgjsFsWvysFjfVcpCh7O9Yyv9/qNvNI\",\n                \"value_start\": 15,\n                \"value_end\": 66,\n                \"entropy\": 4.96135\n            }\n        ]\n    },\n    {\n        \"rule\": \"AWS MWS Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"AWS_MWS_KEY = \\\"amzn.mws.c1dg4haz-6xd6-4gqi-vna2-ed3whf71x9k6\\\"\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/aws_mws_key\",\n                \"info\": \"FILE:./tests/samples/aws_mws_key|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"amzn.mws.c1dg4haz-6xd6-4gqi-vna2-ed3whf71x9k6\",\n                \"value_start\": 15,\n                \"value_end\": 60,\n                \"entropy\": 4.55264\n            }\n        ]\n    },\n    {\n        \"rule\": \"AWS S3 Bucket\",\n        \"severity\": \"info\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"{\\\"url\\\" : \\\"https://circle-production-action-output.s3.amazonaws.com/283746ds4?X-Amz-Algorithm=AWS4-HMAC-SHA256\\\"}\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/aws_s3_bucket\",\n                \"info\": \"FILE:./tests/samples/aws_s3_bucket|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"circle-production-action-output.s3.amazonaws.com\",\n                \"value_start\": 18,\n                \"value_end\": 66,\n                \"entropy\": 4.02467\n            }\n        ]\n    },\n    {\n        \"rule\": \"Azure Access Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIng1dCI6Imk2bEdrM0ZaenhSY1ViMkMzbkVRN3N5SEpsWSIsImtpZCI6Imk2bEdrM0ZaenhSY1ViMkMzbkVRN3N5SEpsWSJ9.eyJhdWQiOiJlZjFkYTlkNC1mZjc3LTRjM2UtYTAwNS04NDBjM2Y4MzA3NDUiLCJpc3MiOiJodHRwczovL3N0cy53aW5kb3dzLm5ldC9mYTE1ZDY5Mi1lOWM3LTQ0NjAtYTc0My0yOWYyOTUyMjIyOS8iLCJpYXQiOjE1MzcyMzMxMDYsIm5iZiI6MTUzNzIzMzEwNiwiZXhwIjoxNTM3MjM3MDA2LCJhY3IiOiIxIiwiYWlvIjoiQVhRQWkvOElBQUFBRm0rRS9RVEcrZ0ZuVnhMaldkdzhLKzYxQUdyU091TU1GNmViYU1qN1hPM0libUQzZkdtck95RCtOdlp5R24yVmFUL2tES1h3NE1JaHJnR1ZxNkJuOHdMWG9UMUxrSVorRnpRVmtKUFBMUU9WNEtjWHFTbENWUERTL0RpQ0RnRTIyMlRJbU12V05hRU1hVU9Uc0lHdlRRPT0iLCJhbXIiOlsid2lhIl0sImFwcGlkIjoiNzVkYmU3N2YtMTBhMy00ZTU5LTg1ZmQtOGMxMjc1NDRmMTdjIiwiYXBwaWRhY3IiOiIwIiwiZW1haWwiOiJBYmVMaUBtaWNyb3NvZnQuY29tIiwiZmFtaWx5X25hbWUiOiJMaW5jb2xuIiwiZ2l2ZW5fbmFtZSI6IkFiZSAoTVNGVCkiLCJpZHAiOiJodHRwczovL3N0cy53aW5kb3dzLm5ldC83MmY5ODhiZi04NmYxLTQxYWYtOTFhYi0yZDdjZDAxMjIyNDcvIiwiaXBhZGRyIjoiMjIyLjIyMi4yMjIuMjIiLCJuYW1lIjoiYWJlbGkiLCJvaWQiOiIwMjIyM2I2Yi1hYTFkLTQyZDQtOWVjMC0xYjJiYjkxOTQ0MzgiLCJyaCI6IkkiLCJzY3AiOiJ1c2VyX2ltcGVyc29uYXRpb24iLCJzdWIiOiJsM19yb0lTUVUyMjJiVUxTOXlpMmswWHBxcE9pTXo1SDNaQUNvMUdlWEEiLCJ0aWQiOiJmYTE1ZDY5Mi1lOWM3LTQ0NjAtYTc0My0yOWYyOTU2ZmQ0MjkiLCJ1bmlxdWVfbmFtZSI6ImFiZWxpQG1pY3Jvc29mdC5jb20iLCJ1dGkiOiJGVnNHeFlYSTMwLVR1aWt1dVVvRkFBIiwidmVyIjoiMS4wIn0.D3H6pMUtQnoJAGq6AHd\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/azure_access_token\",\n                \"info\": \"FILE:./tests/samples/azure_access_token|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIng1dCI6Imk2bEdrM0ZaenhSY1ViMkMzbkVRN3N5SEpsWSIsImtpZCI6Imk2bEdrM0ZaenhSY1ViMkMzbkVRN3N5SEpsWSJ9.eyJhdWQiOiJlZjFkYTlkNC1mZjc3LTRjM2UtYTAwNS04NDBjM2Y4MzA3NDUiLCJpc3MiOiJodHRwczovL3N0cy53aW5kb3dzLm5ldC9mYTE1ZDY5Mi1lOWM3LTQ0NjAtYTc0My0yOWYyOTUyMjIyOS8iLCJpYXQiOjE1MzcyMzMxMDYsIm5iZiI6MTUzNzIzMzEwNiwiZXhwIjoxNTM3MjM3MDA2LCJhY3IiOiIxIiwiYWlvIjoiQVhRQWkvOElBQUFBRm0rRS9RVEcrZ0ZuVnhMaldkdzhLKzYxQUdyU091TU1GNmViYU1qN1hPM0libUQzZkdtck95RCtOdlp5R24yVmFUL2tES1h3NE1JaHJnR1ZxNkJuOHdMWG9UMUxrSVorRnpRVmtKUFBMUU9WNEtjWHFTbENWUERTL0RpQ0RnRTIyMlRJbU12V05hRU1hVU9Uc0lHdlRRPT0iLCJhbXIiOlsid2lhIl0sImFwcGlkIjoiNzVkYmU3N2YtMTBhMy00ZTU5LTg1ZmQtOGMxMjc1NDRmMTdjIiwiYXBwaWRhY3IiOiIwIiwiZW1haWwiOiJBYmVMaUBtaWNyb3NvZnQuY29tIiwiZmFtaWx5X25hbWUiOiJMaW5jb2xuIiwiZ2l2ZW5fbmFtZSI6IkFiZSAoTVNGVCkiLCJpZHAiOiJodHRwczovL3N0cy53aW5kb3dzLm5ldC83MmY5ODhiZi04NmYxLTQxYWYtOTFhYi0yZDdjZDAxMjIyNDcvIiwiaXBhZGRyIjoiMjIyLjIyMi4yMjIuMjIiLCJuYW1lIjoiYWJlbGkiLCJvaWQiOiIwMjIyM2I2Yi1hYTFkLTQyZDQtOWVjMC0xYjJiYjkxOTQ0MzgiLCJyaCI6IkkiLCJzY3AiOiJ1c2VyX2ltcGVyc29uYXRpb24iLCJzdWIiOiJsM19yb0lTUVUyMjJiVUxTOXlpMmswWHBxcE9pTXo1SDNaQUNvMUdlWEEiLCJ0aWQiOiJmYTE1ZDY5Mi1lOWM3LTQ0NjAtYTc0My0yOWYyOTU2ZmQ0MjkiLCJ1bmlxdWVfbmFtZSI6ImFiZWxpQG1pY3Jvc29mdC5jb20iLCJ1dGkiOiJGVnNHeFlYSTMwLVR1aWt1dVVvRkFBIiwidmVyIjoiMS4wIn0.D3H6pMUtQnoJAGq6AHd\",\n                \"value_start\": 0,\n                \"value_end\": 1316,\n                \"entropy\": 5.63018\n            }\n        ]\n    },\n    {\n        \"rule\": \"JSON Web Token\",\n        \"severity\": \"medium\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIng1dCI6Imk2bEdrM0ZaenhSY1ViMkMzbkVRN3N5SEpsWSIsImtpZCI6Imk2bEdrM0ZaenhSY1ViMkMzbkVRN3N5SEpsWSJ9.eyJhdWQiOiJlZjFkYTlkNC1mZjc3LTRjM2UtYTAwNS04NDBjM2Y4MzA3NDUiLCJpc3MiOiJodHRwczovL3N0cy53aW5kb3dzLm5ldC9mYTE1ZDY5Mi1lOWM3LTQ0NjAtYTc0My0yOWYyOTUyMjIyOS8iLCJpYXQiOjE1MzcyMzMxMDYsIm5iZiI6MTUzNzIzMzEwNiwiZXhwIjoxNTM3MjM3MDA2LCJhY3IiOiIxIiwiYWlvIjoiQVhRQWkvOElBQUFBRm0rRS9RVEcrZ0ZuVnhMaldkdzhLKzYxQUdyU091TU1GNmViYU1qN1hPM0libUQzZkdtck95RCtOdlp5R24yVmFUL2tES1h3NE1JaHJnR1ZxNkJuOHdMWG9UMUxrSVorRnpRVmtKUFBMUU9WNEtjWHFTbENWUERTL0RpQ0RnRTIyMlRJbU12V05hRU1hVU9Uc0lHdlRRPT0iLCJhbXIiOlsid2lhIl0sImFwcGlkIjoiNzVkYmU3N2YtMTBhMy00ZTU5LTg1ZmQtOGMxMjc1NDRmMTdjIiwiYXBwaWRhY3IiOiIwIiwiZW1haWwiOiJBYmVMaUBtaWNyb3NvZnQuY29tIiwiZmFtaWx5X25hbWUiOiJMaW5jb2xuIiwiZ2l2ZW5fbmFtZSI6IkFiZSAoTVNGVCkiLCJpZHAiOiJodHRwczovL3N0cy53aW5kb3dzLm5ldC83MmY5ODhiZi04NmYxLTQxYWYtOTFhYi0yZDdjZDAxMjIyNDcvIiwiaXBhZGRyIjoiMjIyLjIyMi4yMjIuMjIiLCJuYW1lIjoiYWJlbGkiLCJvaWQiOiIwMjIyM2I2Yi1hYTFkLTQyZDQtOWVjMC0xYjJiYjkxOTQ0MzgiLCJyaCI6IkkiLCJzY3AiOiJ1c2VyX2ltcGVyc29uYXRpb24iLCJzdWIiOiJsM19yb0lTUVUyMjJiVUxTOXlpMmswWHBxcE9pTXo1SDNaQUNvMUdlWEEiLCJ0aWQiOiJmYTE1ZDY5Mi1lOWM3LTQ0NjAtYTc0My0yOWYyOTU2ZmQ0MjkiLCJ1bmlxdWVfbmFtZSI6ImFiZWxpQG1pY3Jvc29mdC5jb20iLCJ1dGkiOiJGVnNHeFlYSTMwLVR1aWt1dVVvRkFBIiwidmVyIjoiMS4wIn0.D3H6pMUtQnoJAGq6AHd\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/azure_access_token\",\n                \"info\": \"FILE:./tests/samples/azure_access_token|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIng1dCI6Imk2bEdrM0ZaenhSY1ViMkMzbkVRN3N5SEpsWSIsImtpZCI6Imk2bEdrM0ZaenhSY1ViMkMzbkVRN3N5SEpsWSJ9.eyJhdWQiOiJlZjFkYTlkNC1mZjc3LTRjM2UtYTAwNS04NDBjM2Y4MzA3NDUiLCJpc3MiOiJodHRwczovL3N0cy53aW5kb3dzLm5ldC9mYTE1ZDY5Mi1lOWM3LTQ0NjAtYTc0My0yOWYyOTUyMjIyOS8iLCJpYXQiOjE1MzcyMzMxMDYsIm5iZiI6MTUzNzIzMzEwNiwiZXhwIjoxNTM3MjM3MDA2LCJhY3IiOiIxIiwiYWlvIjoiQVhRQWkvOElBQUFBRm0rRS9RVEcrZ0ZuVnhMaldkdzhLKzYxQUdyU091TU1GNmViYU1qN1hPM0libUQzZkdtck95RCtOdlp5R24yVmFUL2tES1h3NE1JaHJnR1ZxNkJuOHdMWG9UMUxrSVorRnpRVmtKUFBMUU9WNEtjWHFTbENWUERTL0RpQ0RnRTIyMlRJbU12V05hRU1hVU9Uc0lHdlRRPT0iLCJhbXIiOlsid2lhIl0sImFwcGlkIjoiNzVkYmU3N2YtMTBhMy00ZTU5LTg1ZmQtOGMxMjc1NDRmMTdjIiwiYXBwaWRhY3IiOiIwIiwiZW1haWwiOiJBYmVMaUBtaWNyb3NvZnQuY29tIiwiZmFtaWx5X25hbWUiOiJMaW5jb2xuIiwiZ2l2ZW5fbmFtZSI6IkFiZSAoTVNGVCkiLCJpZHAiOiJodHRwczovL3N0cy53aW5kb3dzLm5ldC83MmY5ODhiZi04NmYxLTQxYWYtOTFhYi0yZDdjZDAxMjIyNDcvIiwiaXBhZGRyIjoiMjIyLjIyMi4yMjIuMjIiLCJuYW1lIjoiYWJlbGkiLCJvaWQiOiIwMjIyM2I2Yi1hYTFkLTQyZDQtOWVjMC0xYjJiYjkxOTQ0MzgiLCJyaCI6IkkiLCJzY3AiOiJ1c2VyX2ltcGVyc29uYXRpb24iLCJzdWIiOiJsM19yb0lTUVUyMjJiVUxTOXlpMmswWHBxcE9pTXo1SDNaQUNvMUdlWEEiLCJ0aWQiOiJmYTE1ZDY5Mi1lOWM3LTQ0NjAtYTc0My0yOWYyOTU2ZmQ0MjkiLCJ1bmlxdWVfbmFtZSI6ImFiZWxpQG1pY3Jvc29mdC5jb20iLCJ1dGkiOiJGVnNHeFlYSTMwLVR1aWt1dVVvRkFBIiwidmVyIjoiMS4wIn0.D3H6pMUtQnoJAGq6AHd\",\n                \"value_start\": 0,\n                \"value_end\": 1316,\n                \"entropy\": 5.63018\n            }\n        ]\n    },\n    {\n        \"rule\": \"Azure Access Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImtpZCI6Imk2bEdrM0ZaenhSY1ViMkMzbkVRN3N5SEpsWSJ9.eyJhdWQiOiI2ZTc0MTcyYi1iZTU2LTQ4NDMtOWZmNC1lNjZhMzliYjEyZTMiLCJpc3MiOiJodHRwczovL2xvZ2luLm1pY3Jvc29mdG9ubGluZS5jb20vNzJmOTg4YmYtODZmMS00MWFmLTkxYWItMmQ3Y2QwMTFkYjQ3L3YyLjAiLCJpYXQiOjE1MzcyMzEwNDgsIm5iZiI6MTUzNzIzMTA0OCwiZXhwIjoxNTM3MjM0OTQ4LCJhaW8iOiJBWFFBaS84SUFBQUF0QWFaTG8zQ2hNaWY2S09udHRSQjdlQnE0L0RjY1F6amNKR3hQWXkvQzNqRGFOR3hYZDZ3TklJVkdSZ2hOUm53SjFsT2NBbk5aY2p2a295ckZ4Q3R0djMzMTQwUmlvT0ZKNGJDQ0dWdW9DYWcxdU9UVDIyMjIyZ0h3TFBZUS91Zjc5UVgrMEtJaWpkcm1wNjlSY3R6bVE9PSIsImF6cCI6IjZlNzQxNzJiLWJlNTYtNDg0My05ZmY0LWU2NmEzOWJiMTJlMyIsImF6cGFjciI6IjAiLCJuYW1lIjoiQWJlIExpbmNvbG4iLCJvaWQiOiI2OTAyMjJiZS1mZjFhLTRkNTYtYWJkMS03ZTRmN2QzOGU0NzQiLCJwcmVmZXJyZWRfdXNlcm5hbWUiOiJhYmVsaUBtaWNyb3NvZnQuY29tIiwicmgiOiJJIiwic2NwIjoiYWNjZXNzX2FzX3VzZXIiLCJzdWIiOiJIS1pwZmFIeVdhZGVPb3VZbGl0anJJLUtmZlRtMjIyWDVyclYzeERxZktRIiwidGlkIjoiNzJmOTg4YmYtODZmMS00MWFmLTkxYWItMmQ3Y2QwMTFkYjQ3IiwidXRpIjoiZnFpQnFYTFBqMGVRYTgyUy1JWUZBQSIsInZlciI6IjIuMCJ9.pj4N-w_3Us9DrBLfpCt\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/azure_access_token\",\n                \"info\": \"FILE:./tests/samples/azure_access_token|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImtpZCI6Imk2bEdrM0ZaenhSY1ViMkMzbkVRN3N5SEpsWSJ9.eyJhdWQiOiI2ZTc0MTcyYi1iZTU2LTQ4NDMtOWZmNC1lNjZhMzliYjEyZTMiLCJpc3MiOiJodHRwczovL2xvZ2luLm1pY3Jvc29mdG9ubGluZS5jb20vNzJmOTg4YmYtODZmMS00MWFmLTkxYWItMmQ3Y2QwMTFkYjQ3L3YyLjAiLCJpYXQiOjE1MzcyMzEwNDgsIm5iZiI6MTUzNzIzMTA0OCwiZXhwIjoxNTM3MjM0OTQ4LCJhaW8iOiJBWFFBaS84SUFBQUF0QWFaTG8zQ2hNaWY2S09udHRSQjdlQnE0L0RjY1F6amNKR3hQWXkvQzNqRGFOR3hYZDZ3TklJVkdSZ2hOUm53SjFsT2NBbk5aY2p2a295ckZ4Q3R0djMzMTQwUmlvT0ZKNGJDQ0dWdW9DYWcxdU9UVDIyMjIyZ0h3TFBZUS91Zjc5UVgrMEtJaWpkcm1wNjlSY3R6bVE9PSIsImF6cCI6IjZlNzQxNzJiLWJlNTYtNDg0My05ZmY0LWU2NmEzOWJiMTJlMyIsImF6cGFjciI6IjAiLCJuYW1lIjoiQWJlIExpbmNvbG4iLCJvaWQiOiI2OTAyMjJiZS1mZjFhLTRkNTYtYWJkMS03ZTRmN2QzOGU0NzQiLCJwcmVmZXJyZWRfdXNlcm5hbWUiOiJhYmVsaUBtaWNyb3NvZnQuY29tIiwicmgiOiJJIiwic2NwIjoiYWNjZXNzX2FzX3VzZXIiLCJzdWIiOiJIS1pwZmFIeVdhZGVPb3VZbGl0anJJLUtmZlRtMjIyWDVyclYzeERxZktRIiwidGlkIjoiNzJmOTg4YmYtODZmMS00MWFmLTkxYWItMmQ3Y2QwMTFkYjQ3IiwidXRpIjoiZnFpQnFYTFBqMGVRYTgyUy1JWUZBQSIsInZlciI6IjIuMCJ9.pj4N-w_3Us9DrBLfpCt\",\n                \"value_start\": 0,\n                \"value_end\": 1029,\n                \"entropy\": 5.64141\n            }\n        ]\n    },\n    {\n        \"rule\": \"JSON Web Token\",\n        \"severity\": \"medium\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImtpZCI6Imk2bEdrM0ZaenhSY1ViMkMzbkVRN3N5SEpsWSJ9.eyJhdWQiOiI2ZTc0MTcyYi1iZTU2LTQ4NDMtOWZmNC1lNjZhMzliYjEyZTMiLCJpc3MiOiJodHRwczovL2xvZ2luLm1pY3Jvc29mdG9ubGluZS5jb20vNzJmOTg4YmYtODZmMS00MWFmLTkxYWItMmQ3Y2QwMTFkYjQ3L3YyLjAiLCJpYXQiOjE1MzcyMzEwNDgsIm5iZiI6MTUzNzIzMTA0OCwiZXhwIjoxNTM3MjM0OTQ4LCJhaW8iOiJBWFFBaS84SUFBQUF0QWFaTG8zQ2hNaWY2S09udHRSQjdlQnE0L0RjY1F6amNKR3hQWXkvQzNqRGFOR3hYZDZ3TklJVkdSZ2hOUm53SjFsT2NBbk5aY2p2a295ckZ4Q3R0djMzMTQwUmlvT0ZKNGJDQ0dWdW9DYWcxdU9UVDIyMjIyZ0h3TFBZUS91Zjc5UVgrMEtJaWpkcm1wNjlSY3R6bVE9PSIsImF6cCI6IjZlNzQxNzJiLWJlNTYtNDg0My05ZmY0LWU2NmEzOWJiMTJlMyIsImF6cGFjciI6IjAiLCJuYW1lIjoiQWJlIExpbmNvbG4iLCJvaWQiOiI2OTAyMjJiZS1mZjFhLTRkNTYtYWJkMS03ZTRmN2QzOGU0NzQiLCJwcmVmZXJyZWRfdXNlcm5hbWUiOiJhYmVsaUBtaWNyb3NvZnQuY29tIiwicmgiOiJJIiwic2NwIjoiYWNjZXNzX2FzX3VzZXIiLCJzdWIiOiJIS1pwZmFIeVdhZGVPb3VZbGl0anJJLUtmZlRtMjIyWDVyclYzeERxZktRIiwidGlkIjoiNzJmOTg4YmYtODZmMS00MWFmLTkxYWItMmQ3Y2QwMTFkYjQ3IiwidXRpIjoiZnFpQnFYTFBqMGVRYTgyUy1JWUZBQSIsInZlciI6IjIuMCJ9.pj4N-w_3Us9DrBLfpCt\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/azure_access_token\",\n                \"info\": \"FILE:./tests/samples/azure_access_token|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImtpZCI6Imk2bEdrM0ZaenhSY1ViMkMzbkVRN3N5SEpsWSJ9.eyJhdWQiOiI2ZTc0MTcyYi1iZTU2LTQ4NDMtOWZmNC1lNjZhMzliYjEyZTMiLCJpc3MiOiJodHRwczovL2xvZ2luLm1pY3Jvc29mdG9ubGluZS5jb20vNzJmOTg4YmYtODZmMS00MWFmLTkxYWItMmQ3Y2QwMTFkYjQ3L3YyLjAiLCJpYXQiOjE1MzcyMzEwNDgsIm5iZiI6MTUzNzIzMTA0OCwiZXhwIjoxNTM3MjM0OTQ4LCJhaW8iOiJBWFFBaS84SUFBQUF0QWFaTG8zQ2hNaWY2S09udHRSQjdlQnE0L0RjY1F6amNKR3hQWXkvQzNqRGFOR3hYZDZ3TklJVkdSZ2hOUm53SjFsT2NBbk5aY2p2a295ckZ4Q3R0djMzMTQwUmlvT0ZKNGJDQ0dWdW9DYWcxdU9UVDIyMjIyZ0h3TFBZUS91Zjc5UVgrMEtJaWpkcm1wNjlSY3R6bVE9PSIsImF6cCI6IjZlNzQxNzJiLWJlNTYtNDg0My05ZmY0LWU2NmEzOWJiMTJlMyIsImF6cGFjciI6IjAiLCJuYW1lIjoiQWJlIExpbmNvbG4iLCJvaWQiOiI2OTAyMjJiZS1mZjFhLTRkNTYtYWJkMS03ZTRmN2QzOGU0NzQiLCJwcmVmZXJyZWRfdXNlcm5hbWUiOiJhYmVsaUBtaWNyb3NvZnQuY29tIiwicmgiOiJJIiwic2NwIjoiYWNjZXNzX2FzX3VzZXIiLCJzdWIiOiJIS1pwZmFIeVdhZGVPb3VZbGl0anJJLUtmZlRtMjIyWDVyclYzeERxZktRIiwidGlkIjoiNzJmOTg4YmYtODZmMS00MWFmLTkxYWItMmQ3Y2QwMTFkYjQ3IiwidXRpIjoiZnFpQnFYTFBqMGVRYTgyUy1JWUZBQSIsInZlciI6IjIuMCJ9.pj4N-w_3Us9DrBLfpCt\",\n                \"value_start\": 0,\n                \"value_end\": 1029,\n                \"entropy\": 5.64141\n            }\n        ]\n    },\n    {\n        \"rule\": \"Azure Storage Account Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"t 189shdhgr893rgdg74sdsdfkksdhtg87dyfwegjddshjhsgjsgdhJQQJ99ALACAAAAAAAAAAAAASAZDO1e4drs==\",\n                \"line_num\": 5,\n                \"path\": \"./tests/samples/azure_access_token\",\n                \"info\": \"FILE:./tests/samples/azure_access_token|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"189shdhgr893rgdg74sdsdfkksdhtg87dyfwegjddshjhsgjsgdhJQQJ99ALACAAAAAAAAAAAAASAZDO1e4drs==\",\n                \"value_start\": 2,\n                \"value_end\": 90,\n                \"entropy\": 4.22483\n            }\n        ]\n    },\n    {\n        \"rule\": \"Azure Secret Value\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"client_srt = \\\"qpF8Q~PCM5MhMoyTFc5TYEomnzRUKim9UJhe8a2P\\\";\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/azure_secret_value\",\n                \"info\": \"FILE:./tests/samples/azure_secret_value|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"qpF8Q~PCM5MhMoyTFc5TYEomnzRUKim9UJhe8a2P\",\n                \"value_start\": 14,\n                \"value_end\": 54,\n                \"entropy\": 4.75306\n            }\n        ]\n    },\n    {\n        \"rule\": \"Secret\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"secret = 'we5345d0f3da48544z1t1e275y05i161x995q485'\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/binary.yml\",\n                \"info\": \"FILE:./tests/samples/binary.yml|STRUCT|STRUCT:body|KEYWORD\",\n                \"variable\": \"secret\",\n                \"variable_start\": 0,\n                \"variable_end\": 6,\n                \"value\": \"we5345d0f3da48544z1t1e275y05i161x995q485\",\n                \"value_start\": 10,\n                \"value_end\": 50,\n                \"entropy\": 4.0404\n            }\n        ]\n    },\n    {\n        \"rule\": \"Bitbucket HTTP Access Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"\\\"bitbucket\\\" : \\\"BBDC-MzQ2Njc4NjkyMDgwOsEidtxMt9WDExIOYPEWBFXH093l\\\"\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/bitbuckert_http_access_token\",\n                \"info\": \"FILE:./tests/samples/bitbuckert_http_access_token|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"BBDC-MzQ2Njc4NjkyMDgwOsEidtxMt9WDExIOYPEWBFXH093l\",\n                \"value_start\": 15,\n                \"value_end\": 64,\n                \"entropy\": 4.94084\n            }\n        ]\n    },\n    {\n        \"rule\": \"Bitbucket App Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"app_sample:ATBBcCe6fczW96Vzwgvb4r8F2gZS54D591C4\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/bitbucket_app_password\",\n                \"info\": \"FILE:./tests/samples/bitbucket_app_password|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"ATBBcCe6fczW96Vzwgvb4r8F2gZS54D591C4\",\n                \"value_start\": 11,\n                \"value_end\": 47,\n                \"entropy\": 4.5934\n            }\n        ]\n    },\n    {\n        \"rule\": \"Bitbucket Repository Access Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"\\\"Bitbucket Repository Access Token\\\" : \\\"ATCTT3xFfGN0zXtbKHz2POF86xa-2aBiYC4o_T3-myk01bmFVluUIFtGm_VFQwLizp4o1FKw-AMZhtdA0NzizshnA8WzRdfgv6GeTyowCD101oqKbJ4nx9DFsar5YyUNkwO9maR9-00tQvfciyfOHtPKG6K1d76Ki3iFo7roGeyJu4j1jM3GwQ4=EDDE81AD\\\"\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/bitbucket_repository_access_token\",\n                \"info\": \"FILE:./tests/samples/bitbucket_repository_access_token|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"ATCTT3xFfGN0zXtbKHz2POF86xa-2aBiYC4o_T3-myk01bmFVluUIFtGm_VFQwLizp4o1FKw-AMZhtdA0NzizshnA8WzRdfgv6GeTyowCD101oqKbJ4nx9DFsar5YyUNkwO9maR9-00tQvfciyfOHtPKG6K1d76Ki3iFo7roGeyJu4j1jM3GwQ4=EDDE81AD\",\n                \"value_start\": 39,\n                \"value_end\": 231,\n                \"entropy\": 5.75803\n            }\n        ]\n    },\n    {\n        \"rule\": \"Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.994,\n        \"line_data_list\": [\n            {\n                \"line\": \"\\\"Bitbucket Repository Access Token\\\" : \\\"ATCTT3xFfGN0zXtbKHz2POF86xa-2aBiYC4o_T3-myk01bmFVluUIFtGm_VFQwLizp4o1FKw-AMZhtdA0NzizshnA8WzRdfgv6GeTyowCD101oqKbJ4nx9DFsar5YyUNkwO9maR9-00tQvfciyfOHtPKG6K1d76Ki3iFo7roGeyJu4j1jM3GwQ4=EDDE81AD\\\"\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/bitbucket_repository_access_token\",\n                \"info\": \"FILE:./tests/samples/bitbucket_repository_access_token|RAW\",\n                \"variable\": \"Bitbucket Repository Access Token\",\n                \"variable_start\": 1,\n                \"variable_end\": 34,\n                \"value\": \"ATCTT3xFfGN0zXtbKHz2POF86xa-2aBiYC4o_T3-myk01bmFVluUIFtGm_VFQwLizp4o1FKw-AMZhtdA0NzizshnA8WzRdfgv6GeTyowCD101oqKbJ4nx9DFsar5YyUNkwO9maR9-00tQvfciyfOHtPKG6K1d76Ki3iFo7roGeyJu4j1jM3GwQ4=EDDE81AD\",\n                \"value_start\": 39,\n                \"value_end\": 231,\n                \"entropy\": 5.75803\n            }\n        ]\n    },\n    {\n        \"rule\": \"Brevo API Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"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\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/brevo\",\n                \"info\": \"FILE:./tests/samples/brevo|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"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\",\n                \"value_start\": 0,\n                \"value_end\": 89,\n                \"entropy\": 4.64688\n            }\n        ]\n    },\n    {\n        \"rule\": \"JKS sensitive data with password 'changeit'\",\n        \"severity\": \"low\",\n        \"confidence\": \"weak\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"'changeit'\",\n                \"line_num\": 0,\n                \"path\": \"./tests/samples/changeit_crt.jks\",\n                \"info\": \"FILE:./tests/samples/changeit_crt.jks|JKS:sensitive data\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"'changeit'\",\n                \"value_start\": 0,\n                \"value_end\": 10,\n                \"entropy\": 3.12193\n            }\n        ]\n    },\n    {\n        \"rule\": \"JKS private key with password 'changeme'\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"'changeme'\",\n                \"line_num\": 0,\n                \"path\": \"./tests/samples/changeme_key.jks\",\n                \"info\": \"FILE:./tests/samples/changeme_key.jks|JKS:default password\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"'changeme'\",\n                \"value_start\": 0,\n                \"value_end\": 10,\n                \"entropy\": 2.92193\n            }\n        ]\n    },\n    {\n        \"rule\": \"CMD Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"gpg --decrypt --passphrase N1DdkUD3E73 --output decrypted.txt encrypted.txt.gpg\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/cmd_credential\",\n                \"info\": \"FILE:./tests/samples/cmd_credential|RAW\",\n                \"variable\": \"passphrase\",\n                \"variable_start\": 16,\n                \"variable_end\": 26,\n                \"value\": \"N1DdkUD3E73\",\n                \"value_start\": 27,\n                \"value_end\": 38,\n                \"entropy\": 3.0958\n            }\n        ]\n    },\n    {\n        \"rule\": \"CMD Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"mysql -u root --password Sne3sd8AZjq\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/cmd_credential\",\n                \"info\": \"FILE:./tests/samples/cmd_credential|RAW\",\n                \"variable\": \"password\",\n                \"variable_start\": 16,\n                \"variable_end\": 24,\n                \"value\": \"Sne3sd8AZjq\",\n                \"value_start\": 25,\n                \"value_end\": 36,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"CMD Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"-Domain 'localhost' -Password 'Sjdn43ss@!'\",\n                \"line_num\": 3,\n                \"path\": \"./tests/samples/cmd_credential\",\n                \"info\": \"FILE:./tests/samples/cmd_credential|RAW\",\n                \"variable\": \"Password\",\n                \"variable_start\": 21,\n                \"variable_end\": 29,\n                \"value\": \"Sjdn43ss@!\",\n                \"value_start\": 31,\n                \"value_end\": 41,\n                \"entropy\": 3.12193\n            }\n        ]\n    },\n    {\n        \"rule\": \"CMD Secret\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.999,\n        \"line_data_list\": [\n            {\n                \"line\": \"--super-secret_token 1ace4d19-fa7e-b4e2-c3f0-9129474bcd81\",\n                \"line_num\": 4,\n                \"path\": \"./tests/samples/cmd_credential\",\n                \"info\": \"FILE:./tests/samples/cmd_credential|RAW\",\n                \"variable\": \"super-secret_token\",\n                \"variable_start\": 2,\n                \"variable_end\": 20,\n                \"value\": \"1ace4d19-fa7e-b4e2-c3f0-9129474bcd81\",\n                \"value_start\": 21,\n                \"value_end\": 57,\n                \"entropy\": 3.77368\n            }\n        ]\n    },\n    {\n        \"rule\": \"CMD Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.999,\n        \"line_data_list\": [\n            {\n                \"line\": \"--super-secret_token 1ace4d19-fa7e-b4e2-c3f0-9129474bcd81\",\n                \"line_num\": 4,\n                \"path\": \"./tests/samples/cmd_credential\",\n                \"info\": \"FILE:./tests/samples/cmd_credential|RAW\",\n                \"variable\": \"super-secret_token\",\n                \"variable_start\": 2,\n                \"variable_end\": 20,\n                \"value\": \"1ace4d19-fa7e-b4e2-c3f0-9129474bcd81\",\n                \"value_start\": 21,\n                \"value_end\": 57,\n                \"entropy\": 3.77368\n            }\n        ]\n    },\n    {\n        \"rule\": \"UUID\",\n        \"severity\": \"info\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"--super-secret_token 1ace4d19-fa7e-b4e2-c3f0-9129474bcd81\",\n                \"line_num\": 4,\n                \"path\": \"./tests/samples/cmd_credential\",\n                \"info\": \"FILE:./tests/samples/cmd_credential|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"1ace4d19-fa7e-b4e2-c3f0-9129474bcd81\",\n                \"value_start\": 21,\n                \"value_end\": 57,\n                \"entropy\": 3.77368\n            }\n        ]\n    },\n    {\n        \"rule\": \"CMD Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"    --oauth2-bearer \\\"eZs2fjkjD8hUcsQ37b8zHig==\\\" \\\\\",\n                \"line_num\": 7,\n                \"path\": \"./tests/samples/cmd_credential\",\n                \"info\": \"FILE:./tests/samples/cmd_credential|RAW\",\n                \"variable\": \"oauth2-bearer\",\n                \"variable_start\": 6,\n                \"variable_end\": 19,\n                \"value\": \"eZs2fjkjD8hUcsQ37b8zHig==\",\n                \"value_start\": 21,\n                \"value_end\": 46,\n                \"entropy\": 4.32386\n            }\n        ]\n    },\n    {\n        \"rule\": \"CMD ConvertTo-SecureString\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.918,\n        \"line_data_list\": [\n            {\n                \"line\": \"ConvertTo-SecureString -String -Force dsjUE#$gds8s\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/cmd_secure_string\",\n                \"info\": \"FILE:./tests/samples/cmd_secure_string|RAW\",\n                \"variable\": \"ConvertTo-SecureString -String -Force\",\n                \"variable_start\": 0,\n                \"variable_end\": 37,\n                \"value\": \"dsjUE#$gds8s\",\n                \"value_start\": 38,\n                \"value_end\": 50,\n                \"entropy\": 3.02206\n            }\n        ]\n    },\n    {\n        \"rule\": \"CMD ConvertTo-SecureString\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"\\\"ConvertTo-SecureString \\\\\\\"4yd21JKH~GE8dkd\\\\\\\"\\\"\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/cmd_secure_string\",\n                \"info\": \"FILE:./tests/samples/cmd_secure_string|RAW\",\n                \"variable\": \"ConvertTo-SecureString\",\n                \"variable_start\": 1,\n                \"variable_end\": 23,\n                \"value\": \"4yd21JKH~GE8dkd\",\n                \"value_start\": 26,\n                \"value_end\": 41,\n                \"entropy\": 3.5899\n            }\n        ]\n    },\n    {\n        \"rule\": \"PEM Private Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"-----BEGIN RSA PRIVATE KEY-----\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/cred-samples-1.0-1.noarch.rpm\",\n                \"info\": \"FILE:./tests/samples/cred-samples-1.0-1.noarch.rpm|RPM:./etc/pkey.pem|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"-----BEGIN RSA PRIVATE KEY-----\",\n                \"value_start\": 0,\n                \"value_end\": 31,\n                \"entropy\": 3.38229\n            },\n            {\n                \"line\": \"MIIBOgIBAAJBANBuGz7s5cJDdOdH8r1txs2nYc8UAmdamTAJTG3dO0wMdxez2lhq\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/cred-samples-1.0-1.noarch.rpm\",\n                \"info\": \"FILE:./tests/samples/cred-samples-1.0-1.noarch.rpm|RPM:./etc/pkey.pem|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"MIIBOgIBAAJBANBuGz7s5cJDdOdH8r1txs2nYc8UAmdamTAJTG3dO0wMdxez2lhq\",\n                \"value_start\": 0,\n                \"value_end\": 64,\n                \"entropy\": 4.97681\n            },\n            {\n                \"line\": \"fw4C9KdewnmPHcTA21nMb9FFY+CF1fmEXrkCAwEAAQJBALUm/YczXn35IyHg5pi9\",\n                \"line_num\": 3,\n                \"path\": \"./tests/samples/cred-samples-1.0-1.noarch.rpm\",\n                \"info\": \"FILE:./tests/samples/cred-samples-1.0-1.noarch.rpm|RPM:./etc/pkey.pem|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"fw4C9KdewnmPHcTA21nMb9FFY+CF1fmEXrkCAwEAAQJBALUm/YczXn35IyHg5pi9\",\n                \"value_start\": 0,\n                \"value_end\": 64,\n                \"entropy\": 5.12283\n            },\n            {\n                \"line\": \"UIxtbhUMzwoFNB8L9eGG5oKwv0Iinu5nLKfmql68MxGK/SZAAgS7XYng6ltOGE6s\",\n                \"line_num\": 4,\n                \"path\": \"./tests/samples/cred-samples-1.0-1.noarch.rpm\",\n                \"info\": \"FILE:./tests/samples/cred-samples-1.0-1.noarch.rpm|RPM:./etc/pkey.pem|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"UIxtbhUMzwoFNB8L9eGG5oKwv0Iinu5nLKfmql68MxGK/SZAAgS7XYng6ltOGE6s\",\n                \"value_start\": 0,\n                \"value_end\": 64,\n                \"entropy\": 5.21461\n            },\n            {\n                \"line\": \"ygECIQD/Ztsqirk1dZqzeSbYu1vny5JrE2ViXwdxfi+4oI0z8wIhANDrFc43hEtA\",\n                \"line_num\": 5,\n                \"path\": \"./tests/samples/cred-samples-1.0-1.noarch.rpm\",\n                \"info\": \"FILE:./tests/samples/cred-samples-1.0-1.noarch.rpm|RPM:./etc/pkey.pem|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"ygECIQD/Ztsqirk1dZqzeSbYu1vny5JrE2ViXwdxfi+4oI0z8wIhANDrFc43hEtA\",\n                \"value_start\": 0,\n                \"value_end\": 64,\n                \"entropy\": 5.32782\n            },\n            {\n                \"line\": \"4LGfqb0Y0MWSgaxe3R5kutXsubGkBEmjAiBB/Cz7nMOlEDFb1R04OY/RH0NA7s3u\",\n                \"line_num\": 6,\n                \"path\": \"./tests/samples/cred-samples-1.0-1.noarch.rpm\",\n                \"info\": \"FILE:./tests/samples/cred-samples-1.0-1.noarch.rpm|RPM:./etc/pkey.pem|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"4LGfqb0Y0MWSgaxe3R5kutXsubGkBEmjAiBB/Cz7nMOlEDFb1R04OY/RH0NA7s3u\",\n                \"value_start\": 0,\n                \"value_end\": 64,\n                \"entropy\": 5.20282\n            },\n            {\n                \"line\": \"0GZ36AYkSTayCQIgC5ZucDCuGspvbAqyDHX65mp43MmqNAxcPI9TwWGah0cCIEIg\",\n                \"line_num\": 7,\n                \"path\": \"./tests/samples/cred-samples-1.0-1.noarch.rpm\",\n                \"info\": \"FILE:./tests/samples/cred-samples-1.0-1.noarch.rpm|RPM:./etc/pkey.pem|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"0GZ36AYkSTayCQIgC5ZucDCuGspvbAqyDHX65mp43MmqNAxcPI9TwWGah0cCIEIg\",\n                \"value_start\": 0,\n                \"value_end\": 64,\n                \"entropy\": 5.08961\n            },\n            {\n                \"line\": \"u6wHL0fvuMNeBU98T5lJvlleaFbQoex2JS8YUk1A\",\n                \"line_num\": 8,\n                \"path\": \"./tests/samples/cred-samples-1.0-1.noarch.rpm\",\n                \"info\": \"FILE:./tests/samples/cred-samples-1.0-1.noarch.rpm|RPM:./etc/pkey.pem|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"u6wHL0fvuMNeBU98T5lJvlleaFbQoex2JS8YUk1A\",\n                \"value_start\": 0,\n                \"value_end\": 40,\n                \"entropy\": 4.83418\n            },\n            {\n                \"line\": \"-----END RSA PRIVATE KEY-----\",\n                \"line_num\": 9,\n                \"path\": \"./tests/samples/cred-samples-1.0-1.noarch.rpm\",\n                \"info\": \"FILE:./tests/samples/cred-samples-1.0-1.noarch.rpm|RPM:./etc/pkey.pem|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"-----END RSA PRIVATE KEY-----\",\n                \"value_start\": 0,\n                \"value_end\": 29,\n                \"entropy\": 3.24663\n            }\n        ]\n    },\n    {\n        \"rule\": \"Github Classic Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"+TOKEN=ghp_00000000000000000000000000000004WZ4EQ\",\n                \"line_num\": 7,\n                \"path\": \"./tests/samples/cred-samples-1.0-1.noarch.rpm\",\n                \"info\": \"FILE:./tests/samples/cred-samples-1.0-1.noarch.rpm|RPM:./etc/github.patch|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"ghp_00000000000000000000000000000004WZ4EQ\",\n                \"value_start\": 7,\n                \"value_end\": 48,\n                \"entropy\": 1.56292\n            }\n        ]\n    },\n    {\n        \"rule\": \"Credential\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.999,\n        \"line_data_list\": [\n            {\n                \"line\": \"gi_reo_gi_credential = \\\"K2u6mFw8wJOsAf\\\"\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/credential.hs\",\n                \"info\": \"FILE:./tests/samples/credential.hs|RAW\",\n                \"variable\": \"gi_reo_gi_credential\",\n                \"variable_start\": 0,\n                \"variable_end\": 20,\n                \"value\": \"K2u6mFw8wJOsAf\",\n                \"value_start\": 24,\n                \"value_end\": 38,\n                \"entropy\": 3.6645\n            }\n        ]\n    },\n    {\n        \"rule\": \"CURL User Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"curl -X PUT -u \\\"admin:dG9rZW4g\\\" https://127.0.0.1 # TP\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/curl_user_password\",\n                \"info\": \"FILE:./tests/samples/curl_user_password|RAW\",\n                \"variable\": \"curl\",\n                \"variable_start\": 0,\n                \"variable_end\": 4,\n                \"value\": \"dG9rZW4g\",\n                \"value_start\": 22,\n                \"value_end\": 30,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"DeepSeek API Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \">>>\\u001b[93msk-615ef152bf865a131f88b23571dc4ee6\\u001b[0m<<<\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/deepseek\",\n                \"info\": \"FILE:./tests/samples/deepseek|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"sk-615ef152bf865a131f88b23571dc4ee6\",\n                \"value_start\": 8,\n                \"value_end\": 43,\n                \"entropy\": 3.85416\n            }\n        ]\n    },\n    {\n        \"rule\": \"Digital Ocean Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"digital_oc = 'doo_v1_c46dde8bd623be6efab141fa2452e10fcc382e70d5da882493477828eba24a8c';\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/digital_ocean_oauth_access_token\",\n                \"info\": \"FILE:./tests/samples/digital_ocean_oauth_access_token|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"doo_v1_c46dde8bd623be6efab141fa2452e10fcc382e70d5da882493477828eba24a8c\",\n                \"value_start\": 14,\n                \"value_end\": 85,\n                \"entropy\": 4.05874\n            }\n        ]\n    },\n    {\n        \"rule\": \"Digital Ocean Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"dop_v1_425522a565f532bc6532d453422e50334a42f5242a3090fbe553b543b124259b\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/digital_ocean_pat\",\n                \"info\": \"FILE:./tests/samples/digital_ocean_pat|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"dop_v1_425522a565f532bc6532d453422e50334a42f5242a3090fbe553b543b124259b\",\n                \"value_start\": 0,\n                \"value_end\": 71,\n                \"entropy\": 3.6568\n            }\n        ]\n    },\n    {\n        \"rule\": \"Discord Bot Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"MTIzNDU2Nzg5MDEyMzQ1Njc4OQ.E2-E4_.Zig9V5mpMk-JybgCFvqSfgY9EoqWjkA5O_qDje\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/discord_bot_token\",\n                \"info\": \"FILE:./tests/samples/discord_bot_token|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"MTIzNDU2Nzg5MDEyMzQ1Njc4OQ.E2-E4_.Zig9V5mpMk-JybgCFvqSfgY9EoqWjkA5O_qDje\",\n                \"value_start\": 0,\n                \"value_end\": 72,\n                \"entropy\": 5.16257\n            }\n        ]\n    },\n    {\n        \"rule\": \"Discord Webhook\",\n        \"severity\": \"medium\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"T https://discordapp.com/api/webhooks/148392840000482200/ihUFAgIi-OsnNHsjJBpvzkzZOicbe0R2UkWo1nvOnkLGHWJnW8HZjF_dRDj7fi5q3u2h\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/discord_webhook\",\n                \"info\": \"FILE:./tests/samples/discord_webhook|RAW\",\n                \"variable\": \"discordapp.com/api/webhooks\",\n                \"variable_start\": 10,\n                \"variable_end\": 37,\n                \"value\": \"/148392840000482200/ihUFAgIi-OsnNHsjJBpvzkzZOicbe0R2UkWo1nvOnkLGHWJnW8HZjF_dRDj7fi5q3u2h\",\n                \"value_start\": 37,\n                \"value_end\": 125,\n                \"entropy\": 5.23454\n            }\n        ]\n    },\n    {\n        \"rule\": \"UUID\",\n        \"severity\": \"info\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"\\\"UserKeyword\\\": \\\"A1328E04-88B6-4E2A-A5C0-A4D9B21754C4\\\"\",\n                \"line_num\": 5,\n                \"path\": \"./tests/samples/doc_credentials_n\",\n                \"info\": \"FILE:./tests/samples/doc_credentials_n|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"A1328E04-88B6-4E2A-A5C0-A4D9B21754C4\",\n                \"value_start\": 16,\n                \"value_end\": 52,\n                \"entropy\": 3.8055\n            }\n        ]\n    },\n    {\n        \"rule\": \"Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.993,\n        \"line_data_list\": [\n            {\n                \"line\": \"Activation key : ZAQWS-XCDER-VBGTR-FRTGU-KLMNX\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/doc_credentials_p\",\n                \"info\": \"FILE:./tests/samples/doc_credentials_p|RAW\",\n                \"variable\": \"key\",\n                \"variable_start\": 11,\n                \"variable_end\": 14,\n                \"value\": \"ZAQWS-XCDER-VBGTR-FRTGU-KLMNX\",\n                \"value_start\": 17,\n                \"value_end\": 46,\n                \"entropy\": 4.21126\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.996,\n        \"line_data_list\": [\n            {\n                \"line\": \"password:!Dd5G4s9\",\n                \"line_num\": 3,\n                \"path\": \"./tests/samples/doc_credentials_p\",\n                \"info\": \"FILE:./tests/samples/doc_credentials_p|RAW\",\n                \"variable\": \"password\",\n                \"variable_start\": 0,\n                \"variable_end\": 8,\n                \"value\": \"!Dd5G4s9\",\n                \"value_start\": 9,\n                \"value_end\": 17,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"Credential\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.996,\n        \"line_data_list\": [\n            {\n                \"line\": \"LONG_CREDENTIAL: AgV4TakqXDSaUSruBPiKENLUg+aN/Z5HzG4y5q21GOWteXBNZSVXAh1G8ZCdf8AKaa73TipBRAOT0gI0o2xrm1AFzfnoa2J56rr5WtWfAmr5WCGdZx68H+ghRZMa7C8c76I0zDleUKuPbRhJEM+OZPLGVrL/yodyF+7wF5di84Cb5NOyuAHBZUGxxMWCFuwjRH13JRABMygbrOKaauKjQ5aUAp6ggKijEwr4oysBclvocYin4w1TDApHF5lbd6ytfAYSREJIhbswoUmzlyJ/3ftvl3w6qC2Hikfc8S2rRZ7Evdsbr1lDeNckRmzb3ZQKmREjnxYWM5X5ZekKdLOyo9wdmUleEfX0gU0ZXgB9tKDdR7bP//2p8lJreW51DuF4EynVTSoPqB0mLo0iMkxx0xBCEp5BNC5XpYi7jjvuCKWaHETR+60CsZG1cy12cQlZKtscrc4MI7D7jg9y+GooV+pF05A7a9QgBmqTunmEYBvP7C54nmiHM91fb1W/9XBqCgJZB/Bky9R/nmrRb7+yeRoC8HodzrBlRdciWzkXk0MG63xUGA5K4cH/s+EvmbP+eAi42vneKt9mslid7cxq//AdnXOiIBmhVQ+hn07V/rQxetqbvIYHIEmCdUqqOAmtuV5ba2TPcMtbYEcEGxQJX9e8oYvoShpFbVDpSoEUlVkqI0Bjdts3hsl7B7vV09OdPcMGWFRswu8OIvtllh1C3+2XarwXBs/EfNCWOR5XYDMrHKAWHgvNEI2uZQukt0ekN4BGKA+XNs8T9gdKzun7FoWuSpsXqbvkNS1lXe4dOYay5OoY3Od6eSpwboYmC7Y1GxEi6ixOTePovwot4cIYFvILJExraDEnRQCm53mcvr2qewiy5o8brTr8cA/Fp2VJGiIGmU2cUmz90Tx15/9ZzWA6N/Q0aaiKVDYmAirhUJaMf6gNeDYbodN9tJxEbeNN6krZvdLrsxBZdBViciX2X8Ju8ws0DQlIh54FhHKwwWeoxKPN05RFLORlNQdrV5bKt9FCA/igQECZP233wg7pBEw0wvdASDhaZs0pWX98jDUEJzfwSK4ivc3F15BuKy2Sh3rNjUXht95Dzl4iGsPIsA8DgZjgPbmcjrZXaMdQ5H8l/L4xce0mIAz3s9S/O2ginpFCbwTl2Txrnv44OPjif1S45wSwjzNvchTwduBi1Q13S78xsP//BopuNjxScQU0W8e06HOf9Cg9EkEQ08g57ekS7QcuCfVTQeHj+bltRUbL9en1iwNDgkI49S7kCy2hpSAbVn9WIJMJvMaUEm+jICKQdhnY2XuBiic4bznR+4TOkBaBXBVTKUr1EUH9PigkyliiLtIhHsCvungvP3htfH325ZAKcNxarlKgJrJvfCBnxtNzplF0R8UQUPUmYBRO2VYRT14iFqsU9Y21bG4aiz9SdJgh20KIBjtY1bn7FUNlJ0LHPuKiZSoX5Z71Y5o06YHBP5ijXsfDbEYW5nwfL1sDIqIgxJ0d5bnY9lJ8IdgFjnNqWECLinfjFCXdqiOPprIHD9N/x7DmDstNzjDKw+3aUtRboJmUCN/VsNhOgvBbPux1+UZcf4W01u3fT/JglhjApwqtoQnszIglHxSTHL3WphAB671pr2PK9vgkDeASmrSSrG0LuTx9d5UQLm/NV6j5MXxL1q7/Kk/RTHRd4l5SkcjmA+7Ds7W5rTVIOXV7j/ZYL6HdVv6MWqMKL7QvwUNseM2cnbOxWKg2T37rpZsCk1eU7AeVA69LxS7BHFiswfEi32YWVaxJu0lNoMiZg4WaNhmOtTIzoZU/INWQsRkfbdSROOIiUAYy983kE6h8HjgCvmebb0BeJeMZBM5jyRVrcwrnPEnZzHOiPruNovstlEt6IFvUotNKZgk5Y3DBUUVB4fo/Dv2zBoobQHcomWa2W6Fux6uYuIxG2i6VEVBX3QhItPFr6wc6+n00qiLBG1vhUFGsJzsomMFJx0wrA6voi/kfjRU2TnJjwG0mKMwLurxVVJyLtgwJy3BEDmR2vcaW18G3xoNjc3E+5XS6MutGX3TSoY7n2DftHvKSj46tjPyGPujOQ0tsN9z3EDVLemgnEl42L4FgLtgMOERfIs2XiMy384LbTJQ6xtknjEL3cFNN765s04wFGyI/hc1npJnkCCfKg/sVFLW3YrVGMZAVo/648q655vw2oKKRq8h48g7rnOj239TKUZhxwXZiWqnNZnnBXMIT5hSXwNyIotGcWyuqG2WGL+us/rT6jekSofQaswm8XRDSQPLO9ZqSCX7uM709gLrc/gyNtWaZ9+jpi+o60ydRvYaAgnBzAqhG2spKFTcuOx3usTuQssR2eDZlomRi2zo/nGqDke1sFWr7AULH40IYXqyrle6oY4j8Wf7f6evtNm9b42fFmVAdE04X27tEOe9b1q4o2IWibni0eNdjvjCaMu+DveYqyGXTSTIZt6UzSYFP18YjHKrSsr8SJE9LNMlxwl93v1AfwVFejK7eg3tm7+HRgRVTBaQyuf3EWgXdwcRH8Nqo/rrLBjXmeKZSjWpQIOX9h0TRc91DSJFu02PdqcmIG5T3lFHToLZYB1ohQMIHmfX8+fyR59o86hE/dm8WD1LuEpDlHsIOe4ZKVB9PqRfFpEIZ9gBcyW4co3Kl7uxh5UJVWDLv97ROG29tLBC5rq9mUXxbFiuQSV1/YGnkJQL3IlJ+KKE9fd8Lk+QVjfz2Kc2LBiaTwGoJ5MreVo5LxGf4joXXOpmk+g2dbo6bmuz0WpoGDLYON26mOQawWP+LIpMGlPYiTbUlwgwVv4iQr1ntgpka309haHfh/PeadIJ5FftNERTbNEtO7yKdKbf8ESLl3mVfZW4/bWmO9PBQQAu7dhXNqwG8AmsS62w77UgS7OSvAoSbtCSGZ+9HiGNdn/LI/K+7W4y9S10lR5Npa+5WSnSSTvh9ICfBQVD6iO0HChhEfXKLhesp/250V9kC0yuwq5eLi+A7tCfNQ9iTsmj0hQvnemxISy26OyBe5y39+d+lx45sbx1ijnT6+5PHsmSKx+/tDf6FxdcJpp/D5jUYNvjDASBS9ZxeA/JJDCC3sde9F9ZHZDY4gASDLmzQJYGOthD+bm7aA/RWofNJVpbLRq/7AjonvEOMgc3sk2nLlkfppE7EChJ75xV3aJ4EenBpkjSJVdEMckybT6d+Io9lH8YOuxpzSLo2kVt1vDRr26UZKW/M5OXY3tEHFj8679f4oddmJ1OGLG8SYuCIf5U6qPiom5C1CSVz/8ObNAxPR4ECdGpIpfJO0HmtwMvRmsAbsOEBGg4wIVa945ukJugZNwklFZ6wI0ys2jyvNCDRcgDRrV/fzkfyEIO/WMT/dLx4tbgqksXpnbfvUEJKorLMm2Lye4LuJ3msHvu0c274bJ7E8Y8KXKoMLNRdL7ZwwNUfrbj2KHyaAyqE0YOjIF3+06YOWyC0rJVOthFh+I9ah7RKPwSpsaqK6abzCFZLFdx8qBYA7mO4avHlm2SqiIgdivfHMm/RIFKHuEv+FxWXzfT8KD/jtDhBo672uY8c+nVsfZQysAsalkjd9qkhaqZbDbsHZi2LssBabP5MFqOOGpHgiV9UgMd1vDmz42E7MDCVcgvOF6IgB2Qz62fWdgL94HpRJTY794aJfhPFdk1K4PVo1Cs4CPoCo7gYoqcIBa0vUYwz5zSJe+0Mk21E5ltTl9A2hZhnbt8XFJRTtmXP8g4Jx9EP5hMtj4o7nKgvUwUXcVpa7COGw2UL2eU8TtFvKpWkQd05G1WaTDzHaGUXmo5/LQTLyBvrgi+NbM5JXklvefyZ2Va6LtWethJBfU3KM/PNh/qn9PnjBbfvMe4gVeX1WLxud7DBER6aVL5SqSKlXLbvoi2osQKKM0ExfOvtIs5l5wCp/aoHVgbCnADu6dN877zmNpJdnov1Qj0RYALV1ivdN//vnr47Y7vCJqennCd6IAL5PiZFi0VIBjMG4WL+wwU5tkfnxPL1ukvpEdZqaejBrPqqU+ewlpX7enAwzAaihYMSOfLlVrM/ybIpBtuDtRkQRPr8nUa1r2EDQi/jWeKN1CNJpxnKv9peG2z9FHQBhFS2WdqshVeGBACqG/dqDhugOi/P9FLNv4buPcLL7Yd+GOg66DnvEWGAvUXuE3152NOykn1zRyMQZTLdcNRfuX3WfLklPYO6Nf2JRaylcMcrErbsixgcT+p1+qXLQ8GCnkfqyMjmPo+FJ2BWd5KDRUim0ihUmO6Vd4B2/JMTZXsWNwOPmN/DqjpX/Z64UVO7yh0emaA9Vt6+bNlxrR/l/9Hy1JGz9GpK22jLIHDBcUwGP53ZHKSSm/WyfNzOJxRdeSTK+SApsglmdYUSNLVJjVraDURTkVI0XjVFTvu98yM95w9y3DoX9iYWLdg4NRysVMoWkOB0Ts0MBQeCZkn+erzs+7KNFTXxPrQA5LHMgbT/2ukEeKhuKypLsu9s4BLqGWTFnHgv1SL37dqvqigY55fxfEvHBuw+ea41xnfFPSb2yjm9d/lLnXapCkIGoss6ecxHg9481heyM32bnlqzngiluuuMQoEU9Lwk5VBMhKuQN+LbJds2Nb+XnHz4yLIWLIXX+4+Uv4uh0zYJSLABk8piLuFQ7NwkHbQR+cptvefLwpZmBOC68065t5WR/IeOlYpg6ND320XSOyshBXH9hgCXWtIHzxG64rAf/UkmB+UsnP2g2xbklc2s8hoYtMQP8F3qKbL557mBBDVVc8MPyamBusSVbYowBNzASZ64PsdfOSIAmjb9gv8+4X0EK9F789s7predBaFZRJNzfUXwhMrPeCmVGP692781db4K9vD5HJISA7juhIjL5f1uLXaJkBFbJJxkp6MTtWDFtwnXPYmhkEDPIF4oas7scywk70fkAaXzIgDymYlBMUVXR29X2gp49Kvo/kuGR3/oDV4DpEMrfK94BBL9rSXicnF4zDcMnW30gYY5Q/NLTLVktfvoea8QTwJ18BsD27fxEkCkupxrez2JgHx+m6u+2hPEO+V8PhpHCgM2aONfr1ZCcGBjcRtZLw1v2Gtd6QkwkrNgDwy3B/7gShoZSDRno3ceu5V0//JgKQOGuQP2MpxeX/Wu+e3BsftOdBct8E0m3MKek4Ij9bIXNim8taEz0VczllW3nEhgy1IJ5pL2q8AgxsHxjqCsBIH8KL5l0rwWiqFSw+Kb4Y8dUi/im8kZQerV8LwOCXvyPlgkIkPcDFlkeoFaYgWhmPfFGqhJIab7g8cMmT0hp51sRq8KmkHCEU+GmHHkwBuycA9/5gp6niJAuLNuQf5t6DacELYr6U/wsddBce6vaaPWWMYPrkJh52TIvszYapEZSynFZsOqb3SAbe0AGZuSL3NbD3SYNOpXLcdIZbCfczHChbLB+ljuOhURZzWHaY6oxXGqLJyo3pzbiS2PQ3q7nFWzMXxrXWVEO+zL/2U14A==\",\n                \"line_num\": 4,\n                \"path\": \"./tests/samples/doc_credentials_p\",\n                \"info\": \"FILE:./tests/samples/doc_credentials_p|RAW\",\n                \"variable\": \"LONG_CREDENTIAL\",\n                \"variable_start\": 0,\n                \"variable_end\": 15,\n                \"value\": \"AgV4TakqXDSaUSruBPiKENLUg+aN/Z5HzG4y5q21GOWteXBNZSVXAh1G8ZCdf8AKaa73TipBRAOT0gI0o2xrm1AFzfnoa2J56rr5WtWfAmr5WCGdZx68H+ghRZMa7C8c76I0zDleUKuPbRhJEM+OZPLGVrL/yodyF+7wF5di84Cb5NOyuAHBZUGxxMWCFuwjRH13JRABMygbrOKaauKjQ5aUAp6ggKijEwr4oysBclvocYin4w1TDApHF5lbd6ytfAYSREJIhbswoUmzlyJ/3ftvl3w6qC2Hikfc8S2rRZ7Evdsbr1lDeNckRmzb3ZQKmREjnxYWM5X5ZekKdLOyo9wdmUleEfX0gU0ZXgB9tKDdR7bP//2p8lJreW51DuF4EynVTSoPqB0mLo0iMkxx0xBCEp5BNC5XpYi7jjvuCKWaHETR+60CsZG1cy12cQlZKtscrc4MI7D7jg9y+GooV+pF05A7a9QgBmqTunmEYBvP7C54nmiHM91fb1W/9XBqCgJZB/Bky9R/nmrRb7+yeRoC8HodzrBlRdciWzkXk0MG63xUGA5K4cH/s+EvmbP+eAi42vneKt9mslid7cxq//AdnXOiIBmhVQ+hn07V/rQxetqbvIYHIEmCdUqqOAmtuV5ba2TPcMtbYEcEGxQJX9e8oYvoShpFbVDpSoEUlVkqI0Bjdts3hsl7B7vV09OdPcMGWFRswu8OIvtllh1C3+2XarwXBs/EfNCWOR5XYDMrHKAWHgvNEI2uZQukt0ekN4BGKA+XNs8T9gdKzun7FoWuSpsXqbvkNS1lXe4dOYay5OoY3Od6eSpwboYmC7Y1GxEi6ixOTePovwot4cIYFvILJExraDEnRQCm53mcvr2qewiy5o8brTr8cA/Fp2VJGiIGmU2cUmz90Tx15/9ZzWA6N/Q0aaiKVDYmAirhUJaMf6gNeDYbodN9tJxEbeNN6krZvdLrsxBZdBViciX2X8Ju8ws0DQlIh54FhHKwwWeoxKPN05RFLORlNQdrV5bKt9FCA/igQECZP233wg7pBEw0wvdASDhaZs0pWX98jDUEJzfwSK4ivc3F15BuKy2Sh3rNjUXht95Dzl4iGsPIsA8DgZjgPbmcjrZXaMdQ5H8l/L4xce0mIAz3s9S/O2ginpFCbwTl2Txrnv44OPjif1S45wSwjzNvchTwduBi1Q13S78xsP//BopuNjxScQU0W8e06HOf9Cg9EkEQ08g57ekS7QcuCfVTQeHj+bltRUbL9en1iwNDgkI49S7kCy2hpSAbVn9WIJMJvMaUEm+jICKQdhnY2XuBiic4bznR+4TOkBaBXBVTKUr1EUH9PigkyliiLtIhHsCvungvP3htfH325ZAKcNxarlKgJrJvfCBnxtNzplF0R8UQUPUmYBRO2VYRT14iFqsU9Y21bG4aiz9SdJgh20KIBjtY1bn7FUNlJ0LHPuKiZSoX5Z71Y5o06YHBP5ijXsfDbEYW5nwfL1sDIqIgxJ0d5bnY9lJ8IdgFjnNqWECLinfjFCXdqiOPprIHD9N/x7DmDstNzjDKw+3aUtRboJmUCN/VsNhOgvBbPux1+UZcf4W01u3fT/JglhjApwqtoQnszIglHxSTHL3WphAB671pr2PK9vgkDeASmrSSrG0LuTx9d5UQLm/NV6j5MXxL1q7/Kk/RTHRd4l5SkcjmA+7Ds7W5rTVIOXV7j/ZYL6HdVv6MWqMKL7QvwUNseM2cnbOxWKg2T37rpZsCk1eU7AeVA69LxS7BHFiswfEi32YWVaxJu0lNoMiZg4WaNhmOtTIzoZU/INWQsRkfbdSROOIiUAYy983kE6h8HjgCvmebb0BeJeMZBM5jyRVrcwrnPEnZzHOiPruNovstlEt6IFvUotNKZgk5Y3DBUUVB4fo/Dv2zBoobQHcomWa2W6Fux6uYuIxG2i6VEVBX3QhItPFr6wc6+n00qiLBG1vhUFGsJzsomMFJx0wrA6voi/kfjRU2TnJjwG0mKMwLurxVVJyLtgwJy3BEDmR2vcaW18G3xoNjc3E+5XS6MutGX3TSoY7n2DftHvKSj46tjPyGPujOQ0tsN9z3EDVLemgnEl42L4FgLtgMOERfIs2XiMy384LbTJQ6xtknjEL3cFNN765s04wFGyI/hc1npJnkCCfKg/sVFLW3YrVGMZAVo/648q655vw2oKKRq8h48g7rnOj239TKUZhxwXZiWqnNZnnBXMIT5hSXwNyIotGcWyuqG2WGL+us/rT6jekSofQaswm8XRDSQPLO9ZqSCX7uM709gLrc/gyNtWaZ9+jpi+o60ydRvYaAgnBzAqhG2spKFTcuOx3usTuQssR2eDZlomRi2zo/nGqDke1sFWr7AULH40IYXqyrle6oY4j8Wf7f6evtNm9b42fFmVAdE04X27tEOe9b1q4o2IWibni0eNdjvjCaMu+DveYqyGXTSTIZt6UzSYFP18YjHKrSsr8SJE9LNMlxwl93v1AfwVFejK7eg3tm7+HRgRVTBaQyuf3EWgXdwcRH8Nqo/rrLBjXmeKZSjWpQIOX9h0TRc91DSJFu02PdqcmIG5T3lFHToLZYB1ohQMIHmfX8+fyR59o86hE/dm8WD1LuEpDlHsIOe4ZKVB9PqRfFpEIZ9gBcyW4co3Kl7uxh5UJVWDLv97ROG29tLBC5rq9mUXxbFiuQSV1/YGnkJQL3IlJ+KKE9fd8Lk+QVjfz2Kc2LBiaTwGoJ5MreVo5LxGf4joXXOpmk+g2dbo6bmuz0WpoGDLYON26mOQawWP+LIpMGlPYiTbUlwgwVv4iQr1ntgpka309haHfh/PeadIJ5FftNERTbNEtO7yKdKbf8ESLl3mVfZW4/bWmO9PBQQAu7dhXNqwG8AmsS62w77UgS7OSvAoSbtCSGZ+9HiGNdn/LI/K+7W4y9S10lR5Npa+5WSnSSTvh9ICfBQVD6iO0HChhEfXKLhesp/250V9kC0yuwq5eLi+A7tCfNQ9iTsmj0hQvnemxISy26OyBe5y39+d+lx45sbx1ijnT6+5PHsmSKx+/tDf6FxdcJpp/D5jUYNvjDASBS9ZxeA/JJDCC3sde9F9ZHZDY4gASDLmzQJYGOthD+bm7aA/RWofNJVpbLRq/7AjonvEOMgc3sk2nLlkfppE7EChJ75xV3aJ4EenBpkjSJVdEMckybT6d+Io9lH8YOuxpzSLo2kVt1vDRr26UZKW/M5OXY3tEHFj8679f4oddmJ1OGLG8SYuCIf5U6qPiom5C1CSVz/8ObNAxPR4ECdGpIpfJO0HmtwMvRmsAbsOEBGg4wIVa945ukJugZNwklFZ6wI0ys2jyvNCDRcgDRrV/fzkfyEIO/WMT/dLx4tbgqksXpnbfvUEJKorLMm2Lye4LuJ3msHvu0c274bJ7E8Y8KXKoMLNRdL7ZwwNUfrbj2KHyaAyqE0YOjIF3+06YOWyC0rJVOthFh+I9ah7RKPwSpsaqK6abzCFZLFdx8qBYA7mO4avHlm2SqiIgdivfHMm/RIFKHuEv+FxWXzfT8KD/jtDhBo672uY8c+nVsfZQysAsalkjd9qkhaqZbDbsHZi2LssBabP5MFqOOGpHgiV9UgMd1vDmz42E7MDCVcgvOF6IgB2Qz62fWdgL94HpRJTY794aJfhPFdk1K4PVo1Cs4CPoCo7gYoqcIBa0vUYwz5zSJe+0Mk21E5ltTl9A2hZhnbt8XFJRTtmXP8g4Jx9EP5hMtj4o7nKgvUwUXcVpa7COGw2UL2eU8TtFvKpWkQd05G1WaTDzHaGUXmo5/LQTLyBvrgi+NbM5JXklvefyZ2Va6LtWethJBfU3KM/PNh/qn9PnjBbfvMe4gVeX1WLxud7DBER6aVL5SqSKlXLbvoi2osQKKM0ExfOvtIs5l5wCp/aoHVgbCnADu6dN877zmNpJdnov1Qj0RYALV1ivdN//vnr47Y7vCJqennCd6IAL5PiZFi0VIBjMG4WL+wwU5tkfnxPL1ukvpEdZqaejBrPqqU+ewlpX7enAwzAaihYMSOfLlVrM/ybIpBtuDtRkQRPr8nUa1r2EDQi/jWeKN1CNJpxnKv9peG2z9FHQBhFS2WdqshVeGBACqG/dqDhugOi/P9FLNv4buPcLL7Yd+GOg66DnvEWGAvUXuE3152NOykn1zRyMQZTLdcNRfuX3WfLklPYO6Nf2JRaylcMcrErbsixgcT+p1+qXLQ8GCnkfqyMjmPo+FJ2BWd5KDRUim0ihUmO6Vd4B2/JMTZXsWNwOPmN/DqjpX/Z64UVO7yh0emaA9Vt6+bNlxrR/l/9Hy1JGz9GpK22jLIHDBcUwGP53ZHKSSm/WyfNzOJxRdeSTK+SApsglmdYUSNLVJjVraDURTkVI0XjVFTvu98yM95w9y3DoX9iYWLdg4NRysVMoWkOB0Ts0MBQeCZkn+erzs+7KNFTXxPrQA5LHMgbT/2ukEeKhuKypLsu9s4BLqGWTFnHgv1SL37dqvqigY55fxfEvHBuw+ea41xnfFPSb2yjm9d/lLnXapCkIGoss6ecxHg9481heyM32bnlqzngiluuuMQoEU9Lwk5VBMhKuQN+LbJds2Nb+XnHz4yLIWLIXX+4+Uv4uh0zYJSLABk8piLuFQ7NwkHbQR+cptvefLwpZmBOC68065t5WR/IeOlYpg6ND320XSOyshBXH9hgCXWtIHzxG64rAf/UkmB+UsnP2g2xbklc2s8hoYtMQP8F3qKbL557mBBDVVc8MPyamBusSVbYowBNzASZ64PsdfOSIAmjb9gv8+4X0EK9F789s7predBaFZRJNzfUXwhMrPeCmVGP692781db4K9vD5HJISA7juhIjL5f1uLXaJkBFbJJxkp6MTtWDFtwnXPYmhkEDPIF4oas7scywk70fkAaXzIgDymYlBMUVXR29X2gp49Kvo/kuGR3/oDV4DpEMrfK94BBL9rSXicnF4zDcMnW30gYY5Q/NLTLVktfvoea8QTwJ18BsD27fxEkCkupxrez2JgHx+m6u+2hPEO+V8PhpHCgM2aONfr1ZCcGBjcRtZLw1v2Gtd6QkwkrNgDwy3B/7gShoZSDRno3ceu5V0//JgKQOGuQP2MpxeX/Wu+e3BsftOdBct8E0m3MKek4Ij9bIXNim8taEz0VczllW3nEhgy1IJ5pL2q8AgxsHxjqCsBIH8KL5l0rwWiqFSw+Kb4Y8dUi/im8kZQerV8LwOCXvyPlgkIkPcDFlkeoFaYgWhmPfFGqhJIab7g8cMmT0hp51sRq8KmkHCEU+GmHHkwBuycA9/5gp6niJAuLNuQf5t6DacELYr6U/wsddBce6vaaPWWMYPrkJh52TIvszYapEZSynFZsOqb3SAbe0AGZuSL3NbD3SYNOpXLcdIZbCfczHChbLB+ljuOhURZzWHaY6oxXGqLJyo3pzbiS2PQ3q7nFWzMXxrXWVEO+zL/2U14A==\",\n                \"value_start\": 17,\n                \"value_end\": 5485,\n                \"entropy\": 5.99409\n            }\n        ]\n    },\n    {\n        \"rule\": \"Secret\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.998,\n        \"line_data_list\": [\n            {\n                \"line\": \"if SECRET := getenv(\\\"CEKPET\\\", \\\"GEHEIMN1S\\\"):\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/doc_get_p\",\n                \"info\": \"FILE:./tests/samples/doc_get_p|RAW\",\n                \"variable\": \"SECRET\",\n                \"variable_start\": 3,\n                \"variable_end\": 9,\n                \"value\": \"GEHEIMN1S\",\n                \"value_start\": 31,\n                \"value_end\": 40,\n                \"entropy\": 2.9477\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.999,\n        \"line_data_list\": [\n            {\n                \"line\": \"PASSWORD = os.environ.get(\\\"PASSWORD\\\") or \\\"at5G6zi!m\\\"\",\n                \"line_num\": 5,\n                \"path\": \"./tests/samples/doc_get_p\",\n                \"info\": \"FILE:./tests/samples/doc_get_p|RAW\",\n                \"variable\": \"PASSWORD\",\n                \"variable_start\": 0,\n                \"variable_end\": 8,\n                \"value\": \"at5G6zi!m\",\n                \"value_start\": 42,\n                \"value_end\": 51,\n                \"entropy\": 3.16993\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.966,\n        \"line_data_list\": [\n            {\n                \"line\": \"ID:master,PW:dipPr10Gg!\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"PW\",\n                \"variable_start\": 10,\n                \"variable_end\": 12,\n                \"value\": \"dipPr10Gg!\",\n                \"value_start\": 13,\n                \"value_end\": 23,\n                \"entropy\": 3.32193\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.971,\n        \"line_data_list\": [\n            {\n                \"line\": \"ID:master PW:dipPr11Gg!\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"PW\",\n                \"variable_start\": 10,\n                \"variable_end\": 12,\n                \"value\": \"dipPr11Gg!\",\n                \"value_start\": 13,\n                \"value_end\": 23,\n                \"entropy\": 3.12193\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.983,\n        \"line_data_list\": [\n            {\n                \"line\": \"ANYID:master PW:dipPr12Gg!\",\n                \"line_num\": 3,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"PW\",\n                \"variable_start\": 13,\n                \"variable_end\": 15,\n                \"value\": \"dipPr12Gg!\",\n                \"value_start\": 16,\n                \"value_end\": 26,\n                \"entropy\": 3.32193\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.997,\n        \"line_data_list\": [\n            {\n                \"line\": \"Username:master Password:dipPr13Gg!\",\n                \"line_num\": 4,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"Password\",\n                \"variable_start\": 16,\n                \"variable_end\": 24,\n                \"value\": \"dipPr13Gg!\",\n                \"value_start\": 25,\n                \"value_end\": 35,\n                \"entropy\": 3.32193\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"id:master,password:dipPr14Gg!\",\n                \"line_num\": 5,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"password\",\n                \"variable_start\": 10,\n                \"variable_end\": 18,\n                \"value\": \"dipPr14Gg!\",\n                \"value_start\": 19,\n                \"value_end\": 29,\n                \"entropy\": 3.32193\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.977,\n        \"line_data_list\": [\n            {\n                \"line\": \"ID:master/PW:dipPr15Gg!\",\n                \"line_num\": 6,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"PW\",\n                \"variable_start\": 10,\n                \"variable_end\": 12,\n                \"value\": \"dipPr15Gg!\",\n                \"value_start\": 13,\n                \"value_end\": 23,\n                \"entropy\": 3.32193\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"id:master password:dipPr16Gg!\",\n                \"line_num\": 7,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"password\",\n                \"variable_start\": 10,\n                \"variable_end\": 18,\n                \"value\": \"dipPr16Gg!\",\n                \"value_start\": 19,\n                \"value_end\": 29,\n                \"entropy\": 3.32193\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.999,\n        \"line_data_list\": [\n            {\n                \"line\": \"user:master password:dipPr17Gg!\",\n                \"line_num\": 8,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"password\",\n                \"variable_start\": 12,\n                \"variable_end\": 20,\n                \"value\": \"dipPr17Gg!\",\n                \"value_start\": 21,\n                \"value_end\": 31,\n                \"entropy\": 3.32193\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.999,\n        \"line_data_list\": [\n            {\n                \"line\": \"username:master,password:dipPr19Gg!\",\n                \"line_num\": 10,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"password\",\n                \"variable_start\": 16,\n                \"variable_end\": 24,\n                \"value\": \"dipPr19Gg!\",\n                \"value_start\": 25,\n                \"value_end\": 35,\n                \"entropy\": 3.32193\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.986,\n        \"line_data_list\": [\n            {\n                \"line\": \"username:master pwd:dipPr110Gg!\",\n                \"line_num\": 11,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"pwd\",\n                \"variable_start\": 16,\n                \"variable_end\": 19,\n                \"value\": \"dipPr110Gg!\",\n                \"value_start\": 20,\n                \"value_end\": 31,\n                \"entropy\": 3.27761\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.987,\n        \"line_data_list\": [\n            {\n                \"line\": \"ANYid:master,password:dipPr111Gg!\",\n                \"line_num\": 12,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"password\",\n                \"variable_start\": 13,\n                \"variable_end\": 21,\n                \"value\": \"dipPr111Gg!\",\n                \"value_start\": 22,\n                \"value_end\": 33,\n                \"entropy\": 3.02717\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.965,\n        \"line_data_list\": [\n            {\n                \"line\": \"ID:master PWD:dipPr112Gg!\",\n                \"line_num\": 13,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"PWD\",\n                \"variable_start\": 10,\n                \"variable_end\": 13,\n                \"value\": \"dipPr112Gg!\",\n                \"value_start\": 14,\n                \"value_end\": 25,\n                \"entropy\": 3.27761\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.999,\n        \"line_data_list\": [\n            {\n                \"line\": \"user id:master password:dipPr113Gg!\",\n                \"line_num\": 14,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"password\",\n                \"variable_start\": 15,\n                \"variable_end\": 23,\n                \"value\": \"dipPr113Gg!\",\n                \"value_start\": 24,\n                \"value_end\": 35,\n                \"entropy\": 3.27761\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.999,\n        \"line_data_list\": [\n            {\n                \"line\": \"user:master,password:dipPr114Gg!\",\n                \"line_num\": 15,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"password\",\n                \"variable_start\": 12,\n                \"variable_end\": 20,\n                \"value\": \"dipPr114Gg!\",\n                \"value_start\": 21,\n                \"value_end\": 32,\n                \"entropy\": 3.27761\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.999,\n        \"line_data_list\": [\n            {\n                \"line\": \"user=master,password=dipPr115Gg!\",\n                \"line_num\": 16,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"password\",\n                \"variable_start\": 12,\n                \"variable_end\": 20,\n                \"value\": \"dipPr115Gg!\",\n                \"value_start\": 21,\n                \"value_end\": 32,\n                \"entropy\": 3.27761\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.999,\n        \"line_data_list\": [\n            {\n                \"line\": \"username=master password=dipPr116Gg!\",\n                \"line_num\": 17,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"password\",\n                \"variable_start\": 16,\n                \"variable_end\": 24,\n                \"value\": \"dipPr116Gg!\",\n                \"value_start\": 25,\n                \"value_end\": 36,\n                \"entropy\": 3.27761\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.999,\n        \"line_data_list\": [\n            {\n                \"line\": \"User name:master Password:dipPr117Gg!\",\n                \"line_num\": 18,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"Password\",\n                \"variable_start\": 17,\n                \"variable_end\": 25,\n                \"value\": \"dipPr117Gg!\",\n                \"value_start\": 26,\n                \"value_end\": 37,\n                \"entropy\": 3.27761\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.998,\n        \"line_data_list\": [\n            {\n                \"line\": \"username=master,password=dipPr118Gg!\",\n                \"line_num\": 19,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"password\",\n                \"variable_start\": 16,\n                \"variable_end\": 24,\n                \"value\": \"dipPr118Gg!\",\n                \"value_start\": 25,\n                \"value_end\": 36,\n                \"entropy\": 3.27761\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"--user=master --password=dipPr119Gg!\",\n                \"line_num\": 20,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"password\",\n                \"variable_start\": 16,\n                \"variable_end\": 24,\n                \"value\": \"dipPr119Gg!\",\n                \"value_start\": 25,\n                \"value_end\": 36,\n                \"entropy\": 3.27761\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.989,\n        \"line_data_list\": [\n            {\n                \"line\": \"user=master passwd=dipPr120Gg!\",\n                \"line_num\": 21,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"passwd\",\n                \"variable_start\": 12,\n                \"variable_end\": 18,\n                \"value\": \"dipPr120Gg!\",\n                \"value_start\": 19,\n                \"value_end\": 30,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"account:dipPr121Gg! password:dipPr121Gg!\",\n                \"line_num\": 22,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"password\",\n                \"variable_start\": 20,\n                \"variable_end\": 28,\n                \"value\": \"dipPr121Gg!\",\n                \"value_start\": 29,\n                \"value_end\": 40,\n                \"entropy\": 3.27761\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.993,\n        \"line_data_list\": [\n            {\n                \"line\": \"id:master pass:dipPr122Gg!\",\n                \"line_num\": 23,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"pass\",\n                \"variable_start\": 10,\n                \"variable_end\": 14,\n                \"value\": \"dipPr122Gg!\",\n                \"value_start\": 15,\n                \"value_end\": 26,\n                \"entropy\": 3.27761\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.994,\n        \"line_data_list\": [\n            {\n                \"line\": \"user:master pw:dipPr124Gg!\",\n                \"line_num\": 25,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"pw\",\n                \"variable_start\": 12,\n                \"variable_end\": 14,\n                \"value\": \"dipPr124Gg!\",\n                \"value_start\": 15,\n                \"value_end\": 26,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.997,\n        \"line_data_list\": [\n            {\n                \"line\": \"Username:master/Password:dipPr125Gg!\",\n                \"line_num\": 26,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"Password\",\n                \"variable_start\": 16,\n                \"variable_end\": 24,\n                \"value\": \"dipPr125Gg!\",\n                \"value_start\": 25,\n                \"value_end\": 36,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.997,\n        \"line_data_list\": [\n            {\n                \"line\": \"userId:master,password:dipPr126Gg!\",\n                \"line_num\": 27,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"password\",\n                \"variable_start\": 14,\n                \"variable_end\": 22,\n                \"value\": \"dipPr126Gg!\",\n                \"value_start\": 23,\n                \"value_end\": 34,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"CMD Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"--user master --password dipPr127Gg!\",\n                \"line_num\": 28,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"password\",\n                \"variable_start\": 16,\n                \"variable_end\": 24,\n                \"value\": \"dipPr127Gg!\",\n                \"value_start\": 25,\n                \"value_end\": 36,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.999,\n        \"line_data_list\": [\n            {\n                \"line\": \"dipPr128Gg! ID:master dipPr128Gg! Password:dipPr128Gg!\",\n                \"line_num\": 29,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"Password\",\n                \"variable_start\": 34,\n                \"variable_end\": 42,\n                \"value\": \"dipPr128Gg!\",\n                \"value_start\": 43,\n                \"value_end\": 54,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.999,\n        \"line_data_list\": [\n            {\n                \"line\": \"ANYid:master,pw:dipPr129Gg!\",\n                \"line_num\": 30,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"pw\",\n                \"variable_start\": 13,\n                \"variable_end\": 15,\n                \"value\": \"dipPr129Gg!\",\n                \"value_start\": 16,\n                \"value_end\": 27,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.992,\n        \"line_data_list\": [\n            {\n                \"line\": \"user:master pwd:dipPr130Gg!\",\n                \"line_num\": 31,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"pwd\",\n                \"variable_start\": 12,\n                \"variable_end\": 15,\n                \"value\": \"dipPr130Gg!\",\n                \"value_start\": 16,\n                \"value_end\": 27,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.999,\n        \"line_data_list\": [\n            {\n                \"line\": \"Login:dipPr131Gg! Pwd:dipPr131Gg!\",\n                \"line_num\": 32,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"Pwd\",\n                \"variable_start\": 18,\n                \"variable_end\": 21,\n                \"value\": \"dipPr131Gg!\",\n                \"value_start\": 22,\n                \"value_end\": 33,\n                \"entropy\": 3.27761\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.999,\n        \"line_data_list\": [\n            {\n                \"line\": \"ANYID:master Password:dipPr132Gg!\",\n                \"line_num\": 33,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"Password\",\n                \"variable_start\": 13,\n                \"variable_end\": 21,\n                \"value\": \"dipPr132Gg!\",\n                \"value_start\": 22,\n                \"value_end\": 33,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.995,\n        \"line_data_list\": [\n            {\n                \"line\": \"-Username:master -Password:dipPr133Gg!\",\n                \"line_num\": 34,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"Password\",\n                \"variable_start\": 18,\n                \"variable_end\": 26,\n                \"value\": \"dipPr133Gg!\",\n                \"value_start\": 27,\n                \"value_end\": 38,\n                \"entropy\": 3.27761\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"account:dipPr134Gg! pw:dipPr134Gg!\",\n                \"line_num\": 35,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"pw\",\n                \"variable_start\": 20,\n                \"variable_end\": 22,\n                \"value\": \"dipPr134Gg!\",\n                \"value_start\": 23,\n                \"value_end\": 34,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.995,\n        \"line_data_list\": [\n            {\n                \"line\": \"user id:master user pw:dipPr135Gg!\",\n                \"line_num\": 36,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"pw\",\n                \"variable_start\": 20,\n                \"variable_end\": 22,\n                \"value\": \"dipPr135Gg!\",\n                \"value_start\": 23,\n                \"value_end\": 34,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.999,\n        \"line_data_list\": [\n            {\n                \"line\": \"user_name=master password=dipPr136Gg!\",\n                \"line_num\": 37,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"password\",\n                \"variable_start\": 17,\n                \"variable_end\": 25,\n                \"value\": \"dipPr136Gg!\",\n                \"value_start\": 26,\n                \"value_end\": 37,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"CMD Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"--username master --password dipPr137Gg!\",\n                \"line_num\": 38,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"password\",\n                \"variable_start\": 20,\n                \"variable_end\": 28,\n                \"value\": \"dipPr137Gg!\",\n                \"value_start\": 29,\n                \"value_end\": 40,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.999,\n        \"line_data_list\": [\n            {\n                \"line\": \"ANYlogin:master,ANYpassword:dipPr138Gg!\",\n                \"line_num\": 39,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"ANYpassword\",\n                \"variable_start\": 16,\n                \"variable_end\": 27,\n                \"value\": \"dipPr138Gg!\",\n                \"value_start\": 28,\n                \"value_end\": 39,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"ANYusername=master ANYpassword=dipPr139Gg!\",\n                \"line_num\": 40,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"ANYpassword\",\n                \"variable_start\": 19,\n                \"variable_end\": 30,\n                \"value\": \"dipPr139Gg!\",\n                \"value_start\": 31,\n                \"value_end\": 42,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.983,\n        \"line_data_list\": [\n            {\n                \"line\": \"ID:master,PWD:dipPr140Gg!\",\n                \"line_num\": 41,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"PWD\",\n                \"variable_start\": 10,\n                \"variable_end\": 13,\n                \"value\": \"dipPr140Gg!\",\n                \"value_start\": 14,\n                \"value_end\": 25,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.995,\n        \"line_data_list\": [\n            {\n                \"line\": \"ID:master/PASS:dipPr141Gg!\",\n                \"line_num\": 42,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"PASS\",\n                \"variable_start\": 10,\n                \"variable_end\": 14,\n                \"value\": \"dipPr141Gg!\",\n                \"value_start\": 15,\n                \"value_end\": 26,\n                \"entropy\": 3.27761\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.999,\n        \"line_data_list\": [\n            {\n                \"line\": \"account:master passwd:dipPr142Gg!\",\n                \"line_num\": 43,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"passwd\",\n                \"variable_start\": 15,\n                \"variable_end\": 21,\n                \"value\": \"dipPr142Gg!\",\n                \"value_start\": 22,\n                \"value_end\": 33,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.999,\n        \"line_data_list\": [\n            {\n                \"line\": \"login:master password:dipPr143Gg!\",\n                \"line_num\": 44,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"password\",\n                \"variable_start\": 13,\n                \"variable_end\": 21,\n                \"value\": \"dipPr143Gg!\",\n                \"value_start\": 22,\n                \"value_end\": 33,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.995,\n        \"line_data_list\": [\n            {\n                \"line\": \"user=master,pass=dipPr144Gg!\",\n                \"line_num\": 45,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"pass\",\n                \"variable_start\": 12,\n                \"variable_end\": 16,\n                \"value\": \"dipPr144Gg!\",\n                \"value_start\": 17,\n                \"value_end\": 28,\n                \"entropy\": 3.27761\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"password:dipPr145Gg! username:master\",\n                \"line_num\": 46,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"password\",\n                \"variable_start\": 0,\n                \"variable_end\": 8,\n                \"value\": \"dipPr145Gg!\",\n                \"value_start\": 9,\n                \"value_end\": 20,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"Login as:master Password:dipPr146Gg!\",\n                \"line_num\": 47,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"Password\",\n                \"variable_start\": 16,\n                \"variable_end\": 24,\n                \"value\": \"dipPr146Gg!\",\n                \"value_start\": 25,\n                \"value_end\": 36,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.999,\n        \"line_data_list\": [\n            {\n                \"line\": \"ID:master,pass:dipPr147Gg!\",\n                \"line_num\": 48,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"pass\",\n                \"variable_start\": 10,\n                \"variable_end\": 14,\n                \"value\": \"dipPr147Gg!\",\n                \"value_start\": 15,\n                \"value_end\": 26,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.999,\n        \"line_data_list\": [\n            {\n                \"line\": \"id:master pw:dipPr148Gg!\",\n                \"line_num\": 49,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"pw\",\n                \"variable_start\": 10,\n                \"variable_end\": 12,\n                \"value\": \"dipPr148Gg!\",\n                \"value_start\": 13,\n                \"value_end\": 24,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.99,\n        \"line_data_list\": [\n            {\n                \"line\": \"(98.76.54.32)ID:master PW:dipPr149Gg!\",\n                \"line_num\": 50,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"PW\",\n                \"variable_start\": 23,\n                \"variable_end\": 25,\n                \"value\": \"dipPr149Gg!\",\n                \"value_start\": 26,\n                \"value_end\": 37,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.996,\n        \"line_data_list\": [\n            {\n                \"line\": \"-id:master -pw:dipPr151Gg!\",\n                \"line_num\": 52,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"pw\",\n                \"variable_start\": 12,\n                \"variable_end\": 14,\n                \"value\": \"dipPr151Gg!\",\n                \"value_start\": 15,\n                \"value_end\": 26,\n                \"entropy\": 3.27761\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.99,\n        \"line_data_list\": [\n            {\n                \"line\": \"username:master pw:dipPr152Gg!\",\n                \"line_num\": 53,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"pw\",\n                \"variable_start\": 16,\n                \"variable_end\": 18,\n                \"value\": \"dipPr152Gg!\",\n                \"value_start\": 19,\n                \"value_end\": 30,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.999,\n        \"line_data_list\": [\n            {\n                \"line\": \"-User Name:master -Password:dipPr154Gg!\",\n                \"line_num\": 55,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"Password\",\n                \"variable_start\": 19,\n                \"variable_end\": 27,\n                \"value\": \"dipPr154Gg!\",\n                \"value_start\": 28,\n                \"value_end\": 39,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"account:dipPr155Gg!/password:dipPr155Gg!\",\n                \"line_num\": 56,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"password\",\n                \"variable_start\": 20,\n                \"variable_end\": 28,\n                \"value\": \"dipPr155Gg!\",\n                \"value_start\": 29,\n                \"value_end\": 40,\n                \"entropy\": 3.27761\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.997,\n        \"line_data_list\": [\n            {\n                \"line\": \"ANYuser=master ANY_pass=dipPr156Gg!\",\n                \"line_num\": 57,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"ANY_pass\",\n                \"variable_start\": 15,\n                \"variable_end\": 23,\n                \"value\": \"dipPr156Gg!\",\n                \"value_start\": 24,\n                \"value_end\": 35,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"ANYUser:master password:dipPr157Gg!\",\n                \"line_num\": 58,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"password\",\n                \"variable_start\": 15,\n                \"variable_end\": 23,\n                \"value\": \"dipPr157Gg!\",\n                \"value_start\": 24,\n                \"value_end\": 35,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.996,\n        \"line_data_list\": [\n            {\n                \"line\": \"user:master,pwd:dipPr158Gg!\",\n                \"line_num\": 59,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"pwd\",\n                \"variable_start\": 12,\n                \"variable_end\": 15,\n                \"value\": \"dipPr158Gg!\",\n                \"value_start\": 16,\n                \"value_end\": 27,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.999,\n        \"line_data_list\": [\n            {\n                \"line\": \"ANY_username:master,ANY_password:dipPr159Gg!\",\n                \"line_num\": 60,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"ANY_password\",\n                \"variable_start\": 20,\n                \"variable_end\": 32,\n                \"value\": \"dipPr159Gg!\",\n                \"value_start\": 33,\n                \"value_end\": 44,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.998,\n        \"line_data_list\": [\n            {\n                \"line\": \"ANYusername:master,ANY_password:dipPr160Gg!\",\n                \"line_num\": 61,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"ANY_password\",\n                \"variable_start\": 19,\n                \"variable_end\": 31,\n                \"value\": \"dipPr160Gg!\",\n                \"value_start\": 32,\n                \"value_end\": 43,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.998,\n        \"line_data_list\": [\n            {\n                \"line\": \"ANY_USER=master ANY_PASS=dipPr161Gg!\",\n                \"line_num\": 62,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"ANY_PASS\",\n                \"variable_start\": 16,\n                \"variable_end\": 24,\n                \"value\": \"dipPr161Gg!\",\n                \"value_start\": 25,\n                \"value_end\": 36,\n                \"entropy\": 3.27761\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"User Account:master User password:dipPr162Gg!\",\n                \"line_num\": 63,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"password\",\n                \"variable_start\": 25,\n                \"variable_end\": 33,\n                \"value\": \"dipPr162Gg!\",\n                \"value_start\": 34,\n                \"value_end\": 45,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.991,\n        \"line_data_list\": [\n            {\n                \"line\": \"dipPr163Gg! ID:master dipPr163Gg! PWD:dipPr163Gg!\",\n                \"line_num\": 64,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"PWD\",\n                \"variable_start\": 34,\n                \"variable_end\": 37,\n                \"value\": \"dipPr163Gg!\",\n                \"value_start\": 38,\n                \"value_end\": 49,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.999,\n        \"line_data_list\": [\n            {\n                \"line\": \"userid=master password=dipPr164Gg!\",\n                \"line_num\": 65,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"password\",\n                \"variable_start\": 14,\n                \"variable_end\": 22,\n                \"value\": \"dipPr164Gg!\",\n                \"value_start\": 23,\n                \"value_end\": 34,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"ANY-username=master ANY-password=dipPr165Gg!\",\n                \"line_num\": 66,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"ANY-password\",\n                \"variable_start\": 20,\n                \"variable_end\": 32,\n                \"value\": \"dipPr165Gg!\",\n                \"value_start\": 33,\n                \"value_end\": 44,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.993,\n        \"line_data_list\": [\n            {\n                \"line\": \"username:master pass:dipPr166Gg!\",\n                \"line_num\": 67,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"pass\",\n                \"variable_start\": 16,\n                \"variable_end\": 20,\n                \"value\": \"dipPr166Gg!\",\n                \"value_start\": 21,\n                \"value_end\": 32,\n                \"entropy\": 3.27761\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.998,\n        \"line_data_list\": [\n            {\n                \"line\": \"user=master pwd=dipPr168Gg!\",\n                \"line_num\": 69,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"pwd\",\n                \"variable_start\": 12,\n                \"variable_end\": 15,\n                \"value\": \"dipPr168Gg!\",\n                \"value_start\": 16,\n                \"value_end\": 27,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.981,\n        \"line_data_list\": [\n            {\n                \"line\": \"Name:master,PW:dipPr169Gg!\",\n                \"line_num\": 70,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"PW\",\n                \"variable_start\": 12,\n                \"variable_end\": 14,\n                \"value\": \"dipPr169Gg!\",\n                \"value_start\": 15,\n                \"value_end\": 26,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.994,\n        \"line_data_list\": [\n            {\n                \"line\": \"user:master pass:dipPr172Gg!\",\n                \"line_num\": 73,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"pass\",\n                \"variable_start\": 12,\n                \"variable_end\": 16,\n                \"value\": \"dipPr172Gg!\",\n                \"value_start\": 17,\n                \"value_end\": 28,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"user=master password=dipPr174Gg!\",\n                \"line_num\": 75,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"password\",\n                \"variable_start\": 12,\n                \"variable_end\": 20,\n                \"value\": \"dipPr174Gg!\",\n                \"value_start\": 21,\n                \"value_end\": 32,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.999,\n        \"line_data_list\": [\n            {\n                \"line\": \"Host name:master/Password:dipPr175Gg!\",\n                \"line_num\": 76,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"Password\",\n                \"variable_start\": 17,\n                \"variable_end\": 25,\n                \"value\": \"dipPr175Gg!\",\n                \"value_start\": 26,\n                \"value_end\": 37,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"role:master,password:dipPr176Gg!\",\n                \"line_num\": 77,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"password\",\n                \"variable_start\": 12,\n                \"variable_end\": 20,\n                \"value\": \"dipPr176Gg!\",\n                \"value_start\": 21,\n                \"value_end\": 32,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.983,\n        \"line_data_list\": [\n            {\n                \"line\": \"Wifi Name:master,PW:dipPr177Gg!\",\n                \"line_num\": 78,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"PW\",\n                \"variable_start\": 17,\n                \"variable_end\": 19,\n                \"value\": \"dipPr177Gg!\",\n                \"value_start\": 20,\n                \"value_end\": 31,\n                \"entropy\": 3.27761\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.999,\n        \"line_data_list\": [\n            {\n                \"line\": \"ID:master/Password:dipPr178Gg!\",\n                \"line_num\": 79,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"Password\",\n                \"variable_start\": 10,\n                \"variable_end\": 18,\n                \"value\": \"dipPr178Gg!\",\n                \"value_start\": 19,\n                \"value_end\": 30,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"name:master,password:dipPr179Gg!\",\n                \"line_num\": 80,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"password\",\n                \"variable_start\": 12,\n                \"variable_end\": 20,\n                \"value\": \"dipPr179Gg!\",\n                \"value_start\": 21,\n                \"value_end\": 32,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.999,\n        \"line_data_list\": [\n            {\n                \"line\": \"Loging:master Password:dipPr180Gg!\",\n                \"line_num\": 81,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"Password\",\n                \"variable_start\": 14,\n                \"variable_end\": 22,\n                \"value\": \"dipPr180Gg!\",\n                \"value_start\": 23,\n                \"value_end\": 34,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.996,\n        \"line_data_list\": [\n            {\n                \"line\": \"Loging:master Pwd:dipPr181Gg!\",\n                \"line_num\": 82,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"Pwd\",\n                \"variable_start\": 14,\n                \"variable_end\": 17,\n                \"value\": \"dipPr181Gg!\",\n                \"value_start\": 18,\n                \"value_end\": 29,\n                \"entropy\": 3.27761\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.996,\n        \"line_data_list\": [\n            {\n                \"line\": \"id:master,default pw:dipPr182Gg!\",\n                \"line_num\": 83,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"pw\",\n                \"variable_start\": 18,\n                \"variable_end\": 20,\n                \"value\": \"dipPr182Gg!\",\n                \"value_start\": 21,\n                \"value_end\": 32,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.997,\n        \"line_data_list\": [\n            {\n                \"line\": \"id/pw id:master pw:dipPr185Gg!\",\n                \"line_num\": 86,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"pw\",\n                \"variable_start\": 16,\n                \"variable_end\": 18,\n                \"value\": \"dipPr185Gg!\",\n                \"value_start\": 19,\n                \"value_end\": 30,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.996,\n        \"line_data_list\": [\n            {\n                \"line\": \"user:master,pwd:dipPr186Gg!\",\n                \"line_num\": 87,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"pwd\",\n                \"variable_start\": 12,\n                \"variable_end\": 15,\n                \"value\": \"dipPr186Gg!\",\n                \"value_start\": 16,\n                \"value_end\": 27,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.989,\n        \"line_data_list\": [\n            {\n                \"line\": \"username:master/pw:dipPr188Gg!\",\n                \"line_num\": 89,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"pw\",\n                \"variable_start\": 16,\n                \"variable_end\": 18,\n                \"value\": \"dipPr188Gg!\",\n                \"value_start\": 19,\n                \"value_end\": 30,\n                \"entropy\": 3.27761\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.996,\n        \"line_data_list\": [\n            {\n                \"line\": \"username:master pw:dipPr189Gg!\",\n                \"line_num\": 90,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"pw\",\n                \"variable_start\": 16,\n                \"variable_end\": 18,\n                \"value\": \"dipPr189Gg!\",\n                \"value_start\": 19,\n                \"value_end\": 30,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.947,\n        \"line_data_list\": [\n            {\n                \"line\": \"PW:dipPr190Gg! ID:master\",\n                \"line_num\": 91,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"PW\",\n                \"variable_start\": 0,\n                \"variable_end\": 2,\n                \"value\": \"dipPr190Gg!\",\n                \"value_start\": 3,\n                \"value_end\": 14,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"ANYid:master pw:dipPr194Gg! ip:98.76.54.32\",\n                \"line_num\": 95,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"pw\",\n                \"variable_start\": 13,\n                \"variable_end\": 15,\n                \"value\": \"dipPr194Gg!\",\n                \"value_start\": 16,\n                \"value_end\": 27,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.999,\n        \"line_data_list\": [\n            {\n                \"line\": \"id: master pw:dipPr197Gg!\",\n                \"line_num\": 98,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"pw\",\n                \"variable_start\": 11,\n                \"variable_end\": 13,\n                \"value\": \"dipPr197Gg!\",\n                \"value_start\": 14,\n                \"value_end\": 25,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.97,\n        \"line_data_list\": [\n            {\n                \"line\": \"id:master@example.com,pw:dipPr198Gg!\",\n                \"line_num\": 99,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"pw\",\n                \"variable_start\": 22,\n                \"variable_end\": 24,\n                \"value\": \"dipPr198Gg!\",\n                \"value_start\": 25,\n                \"value_end\": 36,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.941,\n        \"line_data_list\": [\n            {\n                \"line\": \"id:master@example.com,pw:IHQSB1GG!\",\n                \"line_num\": 102,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"pw\",\n                \"variable_start\": 22,\n                \"variable_end\": 24,\n                \"value\": \"IHQSB1GG!\",\n                \"value_start\": 25,\n                \"value_end\": 34,\n                \"entropy\": 2.9477\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.882,\n        \"line_data_list\": [\n            {\n                \"line\": \"98.76.54.32(ID:master/PW:iPp10@GRq)      # todo: move into other sample ?\",\n                \"line_num\": 11,\n                \"path\": \"./tests/samples/doc_id_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_passwd_pair|RAW\",\n                \"variable\": \"PW\",\n                \"variable_start\": 22,\n                \"variable_end\": 24,\n                \"value\": \"iPp10@GRq\",\n                \"value_start\": 25,\n                \"value_end\": 34,\n                \"entropy\": 3.16993\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.651,\n        \"line_data_list\": [\n            {\n                \"line\": \"ID/Password=master/iPp27@GRq\",\n                \"line_num\": 28,\n                \"path\": \"./tests/samples/doc_id_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_passwd_pair|RAW\",\n                \"variable\": \"Password\",\n                \"variable_start\": 3,\n                \"variable_end\": 11,\n                \"value\": \"master/iPp27@GRq\",\n                \"value_start\": 12,\n                \"value_end\": 28,\n                \"entropy\": 4.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.988,\n        \"line_data_list\": [\n            {\n                \"line\": \"Password:Prl23Db#@\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/doc_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_passwd_pair|RAW\",\n                \"variable\": \"Password\",\n                \"variable_start\": 0,\n                \"variable_end\": 8,\n                \"value\": \"Prl23Db#@\",\n                \"value_start\": 9,\n                \"value_end\": 18,\n                \"entropy\": 3.16993\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.993,\n        \"line_data_list\": [\n            {\n                \"line\": \"pw:Prl23Db#@\",\n                \"line_num\": 3,\n                \"path\": \"./tests/samples/doc_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_passwd_pair|RAW\",\n                \"variable\": \"pw\",\n                \"variable_start\": 0,\n                \"variable_end\": 2,\n                \"value\": \"Prl23Db#@\",\n                \"value_start\": 3,\n                \"value_end\": 12,\n                \"entropy\": 3.16993\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.987,\n        \"line_data_list\": [\n            {\n                \"line\": \"Password=Prl23Db#@\",\n                \"line_num\": 4,\n                \"path\": \"./tests/samples/doc_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_passwd_pair|RAW\",\n                \"variable\": \"Password\",\n                \"variable_start\": 0,\n                \"variable_end\": 8,\n                \"value\": \"Prl23Db#@\",\n                \"value_start\": 9,\n                \"value_end\": 18,\n                \"entropy\": 3.16993\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.996,\n        \"line_data_list\": [\n            {\n                \"line\": \"pwd:Prl23Db#@\",\n                \"line_num\": 5,\n                \"path\": \"./tests/samples/doc_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_passwd_pair|RAW\",\n                \"variable\": \"pwd\",\n                \"variable_start\": 0,\n                \"variable_end\": 3,\n                \"value\": \"Prl23Db#@\",\n                \"value_start\": 4,\n                \"value_end\": 13,\n                \"entropy\": 3.16993\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.997,\n        \"line_data_list\": [\n            {\n                \"line\": \"ANY_password=Prl23Db#@\",\n                \"line_num\": 8,\n                \"path\": \"./tests/samples/doc_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_passwd_pair|RAW\",\n                \"variable\": \"ANY_password\",\n                \"variable_start\": 0,\n                \"variable_end\": 12,\n                \"value\": \"Prl23Db#@\",\n                \"value_start\": 13,\n                \"value_end\": 22,\n                \"entropy\": 3.16993\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.988,\n        \"line_data_list\": [\n            {\n                \"line\": \"pass:Prl23Db#@\",\n                \"line_num\": 10,\n                \"path\": \"./tests/samples/doc_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_passwd_pair|RAW\",\n                \"variable\": \"pass\",\n                \"variable_start\": 0,\n                \"variable_end\": 4,\n                \"value\": \"Prl23Db#@\",\n                \"value_start\": 5,\n                \"value_end\": 14,\n                \"entropy\": 3.16993\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.999,\n        \"line_data_list\": [\n            {\n                \"line\": \"ANY-password=Prl23Db#@\",\n                \"line_num\": 11,\n                \"path\": \"./tests/samples/doc_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_passwd_pair|RAW\",\n                \"variable\": \"ANY-password\",\n                \"variable_start\": 0,\n                \"variable_end\": 12,\n                \"value\": \"Prl23Db#@\",\n                \"value_start\": 13,\n                \"value_end\": 22,\n                \"entropy\": 3.16993\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"master@98.76.54.32 password:Prl23Db#@\",\n                \"line_num\": 14,\n                \"path\": \"./tests/samples/doc_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_passwd_pair|RAW\",\n                \"variable\": \"password\",\n                \"variable_start\": 19,\n                \"variable_end\": 27,\n                \"value\": \"Prl23Db#@\",\n                \"value_start\": 28,\n                \"value_end\": 37,\n                \"entropy\": 3.16993\n            }\n        ]\n    },\n    {\n        \"rule\": \"CMD Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.998,\n        \"line_data_list\": [\n            {\n                \"line\": \"--Password Prl23Db#@\",\n                \"line_num\": 15,\n                \"path\": \"./tests/samples/doc_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_passwd_pair|RAW\",\n                \"variable\": \"Password\",\n                \"variable_start\": 2,\n                \"variable_end\": 10,\n                \"value\": \"Prl23Db#@\",\n                \"value_start\": 11,\n                \"value_end\": 20,\n                \"entropy\": 3.16993\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.989,\n        \"line_data_list\": [\n            {\n                \"line\": \"ANY_PW:Prl23Db#@\",\n                \"line_num\": 17,\n                \"path\": \"./tests/samples/doc_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_passwd_pair|RAW\",\n                \"variable\": \"ANY_PW\",\n                \"variable_start\": 0,\n                \"variable_end\": 6,\n                \"value\": \"Prl23Db#@\",\n                \"value_start\": 7,\n                \"value_end\": 16,\n                \"entropy\": 3.16993\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"default password:Prl23Db#@\",\n                \"line_num\": 18,\n                \"path\": \"./tests/samples/doc_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_passwd_pair|RAW\",\n                \"variable\": \"password\",\n                \"variable_start\": 8,\n                \"variable_end\": 16,\n                \"value\": \"Prl23Db#@\",\n                \"value_start\": 17,\n                \"value_end\": 26,\n                \"entropy\": 3.16993\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"\\\"password\\\":\\\"Prl23Db#@\\\"\",\n                \"line_num\": 21,\n                \"path\": \"./tests/samples/doc_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_passwd_pair|RAW\",\n                \"variable\": \"password\",\n                \"variable_start\": 1,\n                \"variable_end\": 9,\n                \"value\": \"Prl23Db#@\",\n                \"value_start\": 12,\n                \"value_end\": 21,\n                \"entropy\": 3.16993\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.99,\n        \"line_data_list\": [\n            {\n                \"line\": \"Passwd:Prl23Db#@ Prl23Db#@\",\n                \"line_num\": 23,\n                \"path\": \"./tests/samples/doc_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_passwd_pair|RAW\",\n                \"variable\": \"Passwd\",\n                \"variable_start\": 0,\n                \"variable_end\": 6,\n                \"value\": \"Prl23Db#@\",\n                \"value_start\": 7,\n                \"value_end\": 16,\n                \"entropy\": 3.16993\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.999,\n        \"line_data_list\": [\n            {\n                \"line\": \"PW:Prl23Db#@,password:Prl23Db#@\",\n                \"line_num\": 24,\n                \"path\": \"./tests/samples/doc_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_passwd_pair|RAW\",\n                \"variable\": \"password\",\n                \"variable_start\": 13,\n                \"variable_end\": 21,\n                \"value\": \"Prl23Db#@\",\n                \"value_start\": 22,\n                \"value_end\": 31,\n                \"entropy\": 3.16993\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.999,\n        \"line_data_list\": [\n            {\n                \"line\": \"password:Prl23Db#@,\\ube44\\ubc88:Prl23Db#@\",\n                \"line_num\": 25,\n                \"path\": \"./tests/samples/doc_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_passwd_pair|RAW\",\n                \"variable\": \"password\",\n                \"variable_start\": 0,\n                \"variable_end\": 8,\n                \"value\": \"Prl23Db#@\",\n                \"value_start\": 9,\n                \"value_end\": 18,\n                \"entropy\": 3.16993\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.989,\n        \"line_data_list\": [\n            {\n                \"line\": \"passwd=Prl23Db#@\",\n                \"line_num\": 26,\n                \"path\": \"./tests/samples/doc_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_passwd_pair|RAW\",\n                \"variable\": \"passwd\",\n                \"variable_start\": 0,\n                \"variable_end\": 6,\n                \"value\": \"Prl23Db#@\",\n                \"value_start\": 7,\n                \"value_end\": 16,\n                \"entropy\": 3.16993\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.998,\n        \"line_data_list\": [\n            {\n                \"line\": \"password:Prl23Db#@, paasword:Prl23Db#@\",\n                \"line_num\": 30,\n                \"path\": \"./tests/samples/doc_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_passwd_pair|RAW\",\n                \"variable\": \"password\",\n                \"variable_start\": 0,\n                \"variable_end\": 8,\n                \"value\": \"Prl23Db#@\",\n                \"value_start\": 9,\n                \"value_end\": 18,\n                \"entropy\": 3.16993\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.988,\n        \"line_data_list\": [\n            {\n                \"line\": \"password:Prl23Db#@,ANYPassword:Prl23Db#@\",\n                \"line_num\": 31,\n                \"path\": \"./tests/samples/doc_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_passwd_pair|RAW\",\n                \"variable\": \"password\",\n                \"variable_start\": 0,\n                \"variable_end\": 8,\n                \"value\": \"Prl23Db#@\",\n                \"value_start\": 9,\n                \"value_end\": 18,\n                \"entropy\": 3.16993\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.995,\n        \"line_data_list\": [\n            {\n                \"line\": \"password:Prl23Db#@,ANYPassword:Prl23Db#@\",\n                \"line_num\": 31,\n                \"path\": \"./tests/samples/doc_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_passwd_pair|RAW\",\n                \"variable\": \"ANYPassword\",\n                \"variable_start\": 19,\n                \"variable_end\": 30,\n                \"value\": \"Prl23Db#@\",\n                \"value_start\": 31,\n                \"value_end\": 40,\n                \"entropy\": 3.16993\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.983,\n        \"line_data_list\": [\n            {\n                \"line\": \"Password:Prl23Db#@,pwd=Prl23Db#@\",\n                \"line_num\": 32,\n                \"path\": \"./tests/samples/doc_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_passwd_pair|RAW\",\n                \"variable\": \"Password\",\n                \"variable_start\": 0,\n                \"variable_end\": 8,\n                \"value\": \"Prl23Db#@\",\n                \"value_start\": 9,\n                \"value_end\": 18,\n                \"entropy\": 3.16993\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.926,\n        \"line_data_list\": [\n            {\n                \"line\": \"Password:Prl23Db#@,pwd=Prl23Db#@\",\n                \"line_num\": 32,\n                \"path\": \"./tests/samples/doc_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_passwd_pair|RAW\",\n                \"variable\": \"pwd\",\n                \"variable_start\": 19,\n                \"variable_end\": 22,\n                \"value\": \"Prl23Db#@\",\n                \"value_start\": 23,\n                \"value_end\": 32,\n                \"entropy\": 3.16993\n            }\n        ]\n    },\n    {\n        \"rule\": \"CMD Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"-password \\\"Prl23Db#@\\\"\",\n                \"line_num\": 33,\n                \"path\": \"./tests/samples/doc_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_passwd_pair|RAW\",\n                \"variable\": \"password\",\n                \"variable_start\": 1,\n                \"variable_end\": 9,\n                \"value\": \"Prl23Db#@\",\n                \"value_start\": 11,\n                \"value_end\": 20,\n                \"entropy\": 3.16993\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.997,\n        \"line_data_list\": [\n            {\n                \"line\": \"ANY_password:Prl23Db#@\",\n                \"line_num\": 34,\n                \"path\": \"./tests/samples/doc_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_passwd_pair|RAW\",\n                \"variable\": \"ANY_password\",\n                \"variable_start\": 0,\n                \"variable_end\": 12,\n                \"value\": \"Prl23Db#@\",\n                \"value_start\": 13,\n                \"value_end\": 22,\n                \"entropy\": 3.16993\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.998,\n        \"line_data_list\": [\n            {\n                \"line\": \"--password=Prl23Db#@\",\n                \"line_num\": 37,\n                \"path\": \"./tests/samples/doc_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_passwd_pair|RAW\",\n                \"variable\": \"password\",\n                \"variable_start\": 2,\n                \"variable_end\": 10,\n                \"value\": \"Prl23Db#@\",\n                \"value_start\": 11,\n                \"value_end\": 20,\n                \"entropy\": 3.16993\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.999,\n        \"line_data_list\": [\n            {\n                \"line\": \"root/Prl23Db#@,root password:Prl23Db#@\",\n                \"line_num\": 38,\n                \"path\": \"./tests/samples/doc_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_passwd_pair|RAW\",\n                \"variable\": \"password\",\n                \"variable_start\": 20,\n                \"variable_end\": 28,\n                \"value\": \"Prl23Db#@\",\n                \"value_start\": 29,\n                \"value_end\": 38,\n                \"entropy\": 3.16993\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"Prl23Db#@ username:Prl23Db#@,Prl23Db#@ password:Prl23Db#@\",\n                \"line_num\": 40,\n                \"path\": \"./tests/samples/doc_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_passwd_pair|RAW\",\n                \"variable\": \"password\",\n                \"variable_start\": 39,\n                \"variable_end\": 47,\n                \"value\": \"Prl23Db#@\",\n                \"value_start\": 48,\n                \"value_end\": 57,\n                \"entropy\": 3.16993\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.999,\n        \"line_data_list\": [\n            {\n                \"line\": \"Prl23Db#@:password:Prl23Db#@\",\n                \"line_num\": 41,\n                \"path\": \"./tests/samples/doc_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_passwd_pair|RAW\",\n                \"variable\": \"password\",\n                \"variable_start\": 10,\n                \"variable_end\": 18,\n                \"value\": \"Prl23Db#@\",\n                \"value_start\": 19,\n                \"value_end\": 28,\n                \"entropy\": 3.16993\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.998,\n        \"line_data_list\": [\n            {\n                \"line\": \"ANYpassword=Prl23Db#@\",\n                \"line_num\": 45,\n                \"path\": \"./tests/samples/doc_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_passwd_pair|RAW\",\n                \"variable\": \"ANYpassword\",\n                \"variable_start\": 0,\n                \"variable_end\": 11,\n                \"value\": \"Prl23Db#@\",\n                \"value_start\": 12,\n                \"value_end\": 21,\n                \"entropy\": 3.16993\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.997,\n        \"line_data_list\": [\n            {\n                \"line\": \"passwords:Prl23Db#@\",\n                \"line_num\": 46,\n                \"path\": \"./tests/samples/doc_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_passwd_pair|RAW\",\n                \"variable\": \"passwords\",\n                \"variable_start\": 0,\n                \"variable_end\": 9,\n                \"value\": \"Prl23Db#@\",\n                \"value_start\": 10,\n                \"value_end\": 19,\n                \"entropy\": 3.16993\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.994,\n        \"line_data_list\": [\n            {\n                \"line\": \"password=>Prl23Db#@\",\n                \"line_num\": 48,\n                \"path\": \"./tests/samples/doc_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_passwd_pair|RAW\",\n                \"variable\": \"password\",\n                \"variable_start\": 0,\n                \"variable_end\": 8,\n                \"value\": \"Prl23Db#@\",\n                \"value_start\": 10,\n                \"value_end\": 19,\n                \"entropy\": 3.16993\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.984,\n        \"line_data_list\": [\n            {\n                \"line\": \"# password: keep empty\",\n                \"line_num\": 56,\n                \"path\": \"./tests/samples/doc_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_passwd_pair|RAW\",\n                \"variable\": \"password\",\n                \"variable_start\": 2,\n                \"variable_end\": 10,\n                \"value\": \"keep\",\n                \"value_start\": 12,\n                \"value_end\": 16,\n                \"entropy\": 1.5\n            }\n        ]\n    },\n    {\n        \"rule\": \"Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"ANY-Token:AIhq5Xyb1Gga9Q0\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/doc_secret_pair\",\n                \"info\": \"FILE:./tests/samples/doc_secret_pair|RAW\",\n                \"variable\": \"ANY-Token\",\n                \"variable_start\": 0,\n                \"variable_end\": 9,\n                \"value\": \"AIhq5Xyb1Gga9Q0\",\n                \"value_start\": 10,\n                \"value_end\": 25,\n                \"entropy\": 3.90689\n            }\n        ]\n    },\n    {\n        \"rule\": \"Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"token:AIhq5Xyb1Gga9Q2\",\n                \"line_num\": 3,\n                \"path\": \"./tests/samples/doc_secret_pair\",\n                \"info\": \"FILE:./tests/samples/doc_secret_pair|RAW\",\n                \"variable\": \"token\",\n                \"variable_start\": 0,\n                \"variable_end\": 5,\n                \"value\": \"AIhq5Xyb1Gga9Q2\",\n                \"value_start\": 6,\n                \"value_end\": 21,\n                \"entropy\": 3.90689\n            }\n        ]\n    },\n    {\n        \"rule\": \"Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"SECRET KEY:AIhq5Xyb1Gga9Q3\",\n                \"line_num\": 4,\n                \"path\": \"./tests/samples/doc_secret_pair\",\n                \"info\": \"FILE:./tests/samples/doc_secret_pair|RAW\",\n                \"variable\": \"KEY\",\n                \"variable_start\": 7,\n                \"variable_end\": 10,\n                \"value\": \"AIhq5Xyb1Gga9Q3\",\n                \"value_start\": 11,\n                \"value_end\": 26,\n                \"entropy\": 3.90689\n            }\n        ]\n    },\n    {\n        \"rule\": \"Secret\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"SECRET KEY:AIhq5Xyb1Gga9Q3\",\n                \"line_num\": 4,\n                \"path\": \"./tests/samples/doc_secret_pair\",\n                \"info\": \"FILE:./tests/samples/doc_secret_pair|RAW\",\n                \"variable\": \"SECRET KEY\",\n                \"variable_start\": 0,\n                \"variable_end\": 10,\n                \"value\": \"AIhq5Xyb1Gga9Q3\",\n                \"value_start\": 11,\n                \"value_end\": 26,\n                \"entropy\": 3.90689\n            }\n        ]\n    },\n    {\n        \"rule\": \"Secret\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"secret=AIhq5Xyb1Gga9Q4\",\n                \"line_num\": 5,\n                \"path\": \"./tests/samples/doc_secret_pair\",\n                \"info\": \"FILE:./tests/samples/doc_secret_pair|RAW\",\n                \"variable\": \"secret\",\n                \"variable_start\": 0,\n                \"variable_end\": 6,\n                \"value\": \"AIhq5Xyb1Gga9Q4\",\n                \"value_start\": 7,\n                \"value_end\": 22,\n                \"entropy\": 3.90689\n            }\n        ]\n    },\n    {\n        \"rule\": \"CMD Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"--token AIhq5Xyb1Gga9Q5\",\n                \"line_num\": 6,\n                \"path\": \"./tests/samples/doc_secret_pair\",\n                \"info\": \"FILE:./tests/samples/doc_secret_pair|RAW\",\n                \"variable\": \"token\",\n                \"variable_start\": 2,\n                \"variable_end\": 7,\n                \"value\": \"AIhq5Xyb1Gga9Q5\",\n                \"value_start\": 8,\n                \"value_end\": 23,\n                \"entropy\": 3.77356\n            }\n        ]\n    },\n    {\n        \"rule\": \"Secret\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"secret:AIhq5Xyb1Gga9Q6\",\n                \"line_num\": 7,\n                \"path\": \"./tests/samples/doc_secret_pair\",\n                \"info\": \"FILE:./tests/samples/doc_secret_pair|RAW\",\n                \"variable\": \"secret\",\n                \"variable_start\": 0,\n                \"variable_end\": 6,\n                \"value\": \"AIhq5Xyb1Gga9Q6\",\n                \"value_start\": 7,\n                \"value_end\": 22,\n                \"entropy\": 3.90689\n            }\n        ]\n    },\n    {\n        \"rule\": \"Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"ANY_token=AIhq5Xyb1Gga9Q7\",\n                \"line_num\": 8,\n                \"path\": \"./tests/samples/doc_secret_pair\",\n                \"info\": \"FILE:./tests/samples/doc_secret_pair|RAW\",\n                \"variable\": \"ANY_token\",\n                \"variable_start\": 0,\n                \"variable_end\": 9,\n                \"value\": \"AIhq5Xyb1Gga9Q7\",\n                \"value_start\": 10,\n                \"value_end\": 25,\n                \"entropy\": 3.90689\n            }\n        ]\n    },\n    {\n        \"rule\": \"CMD Secret\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"-secret AIhq5Xyb1Gga9Q10\",\n                \"line_num\": 11,\n                \"path\": \"./tests/samples/doc_secret_pair\",\n                \"info\": \"FILE:./tests/samples/doc_secret_pair|RAW\",\n                \"variable\": \"secret\",\n                \"variable_start\": 1,\n                \"variable_end\": 7,\n                \"value\": \"AIhq5Xyb1Gga9Q10\",\n                \"value_start\": 8,\n                \"value_end\": 24,\n                \"entropy\": 3.875\n            }\n        ]\n    },\n    {\n        \"rule\": \"Secret\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"ANY.secret=AIhq5Xyb1Gga9Q19\",\n                \"line_num\": 20,\n                \"path\": \"./tests/samples/doc_secret_pair\",\n                \"info\": \"FILE:./tests/samples/doc_secret_pair|RAW\",\n                \"variable\": \"ANY.secret\",\n                \"variable_start\": 0,\n                \"variable_end\": 10,\n                \"value\": \"AIhq5Xyb1Gga9Q19\",\n                \"value_start\": 11,\n                \"value_end\": 27,\n                \"entropy\": 3.75\n            }\n        ]\n    },\n    {\n        \"rule\": \"Secret\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"--secret=AIhq5Xyb1Gga9Q21\",\n                \"line_num\": 22,\n                \"path\": \"./tests/samples/doc_secret_pair\",\n                \"info\": \"FILE:./tests/samples/doc_secret_pair|RAW\",\n                \"variable\": \"secret\",\n                \"variable_start\": 2,\n                \"variable_end\": 8,\n                \"value\": \"AIhq5Xyb1Gga9Q21\",\n                \"value_start\": 9,\n                \"value_end\": 25,\n                \"entropy\": 3.875\n            }\n        ]\n    },\n    {\n        \"rule\": \"Secret\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"ANY_secret:AIhq5Xyb1Gga9Q22\",\n                \"line_num\": 23,\n                \"path\": \"./tests/samples/doc_secret_pair\",\n                \"info\": \"FILE:./tests/samples/doc_secret_pair|RAW\",\n                \"variable\": \"ANY_secret\",\n                \"variable_start\": 0,\n                \"variable_end\": 10,\n                \"value\": \"AIhq5Xyb1Gga9Q22\",\n                \"value_start\": 11,\n                \"value_end\": 27,\n                \"entropy\": 3.875\n            }\n        ]\n    },\n    {\n        \"rule\": \"Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"-Token:AIhq5Xyb1Gga9Q23\",\n                \"line_num\": 24,\n                \"path\": \"./tests/samples/doc_secret_pair\",\n                \"info\": \"FILE:./tests/samples/doc_secret_pair|RAW\",\n                \"variable\": \"Token\",\n                \"variable_start\": 1,\n                \"variable_end\": 6,\n                \"value\": \"AIhq5Xyb1Gga9Q23\",\n                \"value_start\": 7,\n                \"value_end\": 23,\n                \"entropy\": 4.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"API\",\n        \"severity\": \"low\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"API Secret:AIhq5Xyb1Gga9Q24\",\n                \"line_num\": 25,\n                \"path\": \"./tests/samples/doc_secret_pair\",\n                \"info\": \"FILE:./tests/samples/doc_secret_pair|RAW\",\n                \"variable\": \"API Secret\",\n                \"variable_start\": 0,\n                \"variable_end\": 10,\n                \"value\": \"AIhq5Xyb1Gga9Q24\",\n                \"value_start\": 11,\n                \"value_end\": 27,\n                \"entropy\": 4.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"Secret\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"API Secret:AIhq5Xyb1Gga9Q24\",\n                \"line_num\": 25,\n                \"path\": \"./tests/samples/doc_secret_pair\",\n                \"info\": \"FILE:./tests/samples/doc_secret_pair|RAW\",\n                \"variable\": \"Secret\",\n                \"variable_start\": 4,\n                \"variable_end\": 10,\n                \"value\": \"AIhq5Xyb1Gga9Q24\",\n                \"value_start\": 11,\n                \"value_end\": 27,\n                \"entropy\": 4.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"access key:AIhq5Xyb1Gga9Q26\",\n                \"line_num\": 27,\n                \"path\": \"./tests/samples/doc_secret_pair\",\n                \"info\": \"FILE:./tests/samples/doc_secret_pair|RAW\",\n                \"variable\": \"key\",\n                \"variable_start\": 7,\n                \"variable_end\": 10,\n                \"value\": \"AIhq5Xyb1Gga9Q26\",\n                \"value_start\": 11,\n                \"value_end\": 27,\n                \"entropy\": 4.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"Secret Key:AIhq5Xyb1Gga9Q27\",\n                \"line_num\": 28,\n                \"path\": \"./tests/samples/doc_secret_pair\",\n                \"info\": \"FILE:./tests/samples/doc_secret_pair|RAW\",\n                \"variable\": \"Key\",\n                \"variable_start\": 7,\n                \"variable_end\": 10,\n                \"value\": \"AIhq5Xyb1Gga9Q27\",\n                \"value_start\": 11,\n                \"value_end\": 27,\n                \"entropy\": 4.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"Secret\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"Secret Key:AIhq5Xyb1Gga9Q27\",\n                \"line_num\": 28,\n                \"path\": \"./tests/samples/doc_secret_pair\",\n                \"info\": \"FILE:./tests/samples/doc_secret_pair|RAW\",\n                \"variable\": \"Secret Key\",\n                \"variable_start\": 0,\n                \"variable_end\": 10,\n                \"value\": \"AIhq5Xyb1Gga9Q27\",\n                \"value_start\": 11,\n                \"value_end\": 27,\n                \"entropy\": 4.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"ANY_key=AIhq5Xyb1Gga9Q29\",\n                \"line_num\": 30,\n                \"path\": \"./tests/samples/doc_secret_pair\",\n                \"info\": \"FILE:./tests/samples/doc_secret_pair|RAW\",\n                \"variable\": \"ANY_key\",\n                \"variable_start\": 0,\n                \"variable_end\": 7,\n                \"value\": \"AIhq5Xyb1Gga9Q29\",\n                \"value_start\": 8,\n                \"value_end\": 24,\n                \"entropy\": 3.875\n            }\n        ]\n    },\n    {\n        \"rule\": \"Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"secret-ANYkey:AIhq5Xyb1Gga9Q30\",\n                \"line_num\": 31,\n                \"path\": \"./tests/samples/doc_secret_pair\",\n                \"info\": \"FILE:./tests/samples/doc_secret_pair|RAW\",\n                \"variable\": \"secret-ANYkey\",\n                \"variable_start\": 0,\n                \"variable_end\": 13,\n                \"value\": \"AIhq5Xyb1Gga9Q30\",\n                \"value_start\": 14,\n                \"value_end\": 30,\n                \"entropy\": 4.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"Secret\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"secret-ANYkey:AIhq5Xyb1Gga9Q30\",\n                \"line_num\": 31,\n                \"path\": \"./tests/samples/doc_secret_pair\",\n                \"info\": \"FILE:./tests/samples/doc_secret_pair|RAW\",\n                \"variable\": \"secret-ANYkey\",\n                \"variable_start\": 0,\n                \"variable_end\": 13,\n                \"value\": \"AIhq5Xyb1Gga9Q30\",\n                \"value_start\": 14,\n                \"value_end\": 30,\n                \"entropy\": 4.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"ANY_id=AIhq5Xyb1Gga9Q31 ANY_token=AIhq5Xyb1Gga9Q31\",\n                \"line_num\": 32,\n                \"path\": \"./tests/samples/doc_secret_pair\",\n                \"info\": \"FILE:./tests/samples/doc_secret_pair|RAW\",\n                \"variable\": \"ANY_token\",\n                \"variable_start\": 24,\n                \"variable_end\": 33,\n                \"value\": \"AIhq5Xyb1Gga9Q31\",\n                \"value_start\": 34,\n                \"value_end\": 50,\n                \"entropy\": 3.875\n            }\n        ]\n    },\n    {\n        \"rule\": \"Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"access_token:AIhq5Xyb1Gga9Q33\",\n                \"line_num\": 34,\n                \"path\": \"./tests/samples/doc_secret_pair\",\n                \"info\": \"FILE:./tests/samples/doc_secret_pair|RAW\",\n                \"variable\": \"access_token\",\n                \"variable_start\": 0,\n                \"variable_end\": 12,\n                \"value\": \"AIhq5Xyb1Gga9Q33\",\n                \"value_start\": 13,\n                \"value_end\": 29,\n                \"entropy\": 3.875\n            }\n        ]\n    },\n    {\n        \"rule\": \"Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"Authentication key:AIhq5Xyb1Gga9Q35\",\n                \"line_num\": 36,\n                \"path\": \"./tests/samples/doc_secret_pair\",\n                \"info\": \"FILE:./tests/samples/doc_secret_pair|RAW\",\n                \"variable\": \"key\",\n                \"variable_start\": 15,\n                \"variable_end\": 18,\n                \"value\": \"AIhq5Xyb1Gga9Q35\",\n                \"value_start\": 19,\n                \"value_end\": 35,\n                \"entropy\": 3.875\n            }\n        ]\n    },\n    {\n        \"rule\": \"Auth\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"Authentication key:AIhq5Xyb1Gga9Q35\",\n                \"line_num\": 36,\n                \"path\": \"./tests/samples/doc_secret_pair\",\n                \"info\": \"FILE:./tests/samples/doc_secret_pair|RAW\",\n                \"variable\": \"Authentication key\",\n                \"variable_start\": 0,\n                \"variable_end\": 18,\n                \"value\": \"AIhq5Xyb1Gga9Q35\",\n                \"value_start\": 19,\n                \"value_end\": 35,\n                \"entropy\": 3.875\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"master@98.76.54.32(pw:IhqSb1Gg)\",\n                \"line_num\": 3,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"FILE:./tests/samples/doc_various|RAW\",\n                \"variable\": \"pw\",\n                \"variable_start\": 19,\n                \"variable_end\": 21,\n                \"value\": \"IhqSb1Gg\",\n                \"value_start\": 22,\n                \"value_end\": 30,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.964,\n        \"line_data_list\": [\n            {\n                \"line\": \"ID:gildong.hong@example.com mailto:{1} PW:IhqSb1Gg\",\n                \"line_num\": 4,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"FILE:./tests/samples/doc_various|RAW\",\n                \"variable\": \"PW\",\n                \"variable_start\": 39,\n                \"variable_end\": 41,\n                \"value\": \"IhqSb1Gg\",\n                \"value_start\": 42,\n                \"value_end\": 50,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.999,\n        \"line_data_list\": [\n            {\n                \"line\": \"ssh gildong.hong@98.76.54.32 mailto:{1} (PW:IhqSb1Gg)\",\n                \"line_num\": 6,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"FILE:./tests/samples/doc_various|RAW\",\n                \"variable\": \"PW\",\n                \"variable_start\": 41,\n                \"variable_end\": 43,\n                \"value\": \"IhqSb1Gg\",\n                \"value_start\": 44,\n                \"value_end\": 52,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"ssh gildong.hong@98.76.54.32 mailto:{1} password:IhqSb1Gg\",\n                \"line_num\": 7,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"FILE:./tests/samples/doc_various|RAW\",\n                \"variable\": \"password\",\n                \"variable_start\": 40,\n                \"variable_end\": 48,\n                \"value\": \"IhqSb1Gg\",\n                \"value_start\": 49,\n                \"value_end\": 57,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"ssh -P IhqSb1Gg gildong.hong@98.76.54.32 mailto:{1} (password:IhqSb1Gg)\",\n                \"line_num\": 11,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"FILE:./tests/samples/doc_various|RAW\",\n                \"variable\": \"password\",\n                \"variable_start\": 53,\n                \"variable_end\": 61,\n                \"value\": \"IhqSb1Gg\",\n                \"value_start\": 62,\n                \"value_end\": 70,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"gildong.hong@98.76.54.32 pwd:IhqSb1Gg\",\n                \"line_num\": 15,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"FILE:./tests/samples/doc_various|RAW\",\n                \"variable\": \"pwd\",\n                \"variable_start\": 25,\n                \"variable_end\": 28,\n                \"value\": \"IhqSb1Gg\",\n                \"value_start\": 29,\n                \"value_end\": 37,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.999,\n        \"line_data_list\": [\n            {\n                \"line\": \"98.76.54.32(pw:IhqSb1Gg)\",\n                \"line_num\": 17,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"FILE:./tests/samples/doc_various|RAW\",\n                \"variable\": \"pw\",\n                \"variable_start\": 12,\n                \"variable_end\": 14,\n                \"value\": \"IhqSb1Gg\",\n                \"value_start\": 15,\n                \"value_end\": 23,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.999,\n        \"line_data_list\": [\n            {\n                \"line\": \"98.76.54.32/pw:IhqSb1Gg\",\n                \"line_num\": 19,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"FILE:./tests/samples/doc_various|RAW\",\n                \"variable\": \"pw\",\n                \"variable_start\": 12,\n                \"variable_end\": 14,\n                \"value\": \"IhqSb1Gg\",\n                \"value_start\": 15,\n                \"value_end\": 23,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.998,\n        \"line_data_list\": [\n            {\n                \"line\": \"ID:gildong.hong@example.com mailto:{1}/pw:IhqSb1Gg\",\n                \"line_num\": 20,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"FILE:./tests/samples/doc_various|RAW\",\n                \"variable\": \"pw\",\n                \"variable_start\": 39,\n                \"variable_end\": 41,\n                \"value\": \"IhqSb1Gg\",\n                \"value_start\": 42,\n                \"value_end\": 50,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.97,\n        \"line_data_list\": [\n            {\n                \"line\": \"ID:gildong.hong@any.example.com mailto:{1} PWD:IhqSb1Gg\",\n                \"line_num\": 21,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"FILE:./tests/samples/doc_various|RAW\",\n                \"variable\": \"PWD\",\n                \"variable_start\": 43,\n                \"variable_end\": 46,\n                \"value\": \"IhqSb1Gg\",\n                \"value_start\": 47,\n                \"value_end\": 55,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"sftp gildong.hong@98.76.54.32 mailto:{1} (pw:IhqSb1Gg)\",\n                \"line_num\": 22,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"FILE:./tests/samples/doc_various|RAW\",\n                \"variable\": \"pw\",\n                \"variable_start\": 42,\n                \"variable_end\": 44,\n                \"value\": \"IhqSb1Gg\",\n                \"value_start\": 45,\n                \"value_end\": 53,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"gildong.hong@98.76.54.32 mailto:{1} (pw:IhqSb1Gg)\",\n                \"line_num\": 23,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"FILE:./tests/samples/doc_various|RAW\",\n                \"variable\": \"pw\",\n                \"variable_start\": 37,\n                \"variable_end\": 39,\n                \"value\": \"IhqSb1Gg\",\n                \"value_start\": 40,\n                \"value_end\": 48,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.997,\n        \"line_data_list\": [\n            {\n                \"line\": \"-id:gildong.hong@example.com mailto:{1} -pwd:IhqSb1Gg\",\n                \"line_num\": 24,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"FILE:./tests/samples/doc_various|RAW\",\n                \"variable\": \"pwd\",\n                \"variable_start\": 41,\n                \"variable_end\": 44,\n                \"value\": \"IhqSb1Gg\",\n                \"value_start\": 45,\n                \"value_end\": 53,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"ssh gildong.hong@98.76.54.32 mailto:{1} (password:IhqSb1Gg)\",\n                \"line_num\": 25,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"FILE:./tests/samples/doc_various|RAW\",\n                \"variable\": \"password\",\n                \"variable_start\": 41,\n                \"variable_end\": 49,\n                \"value\": \"IhqSb1Gg\",\n                \"value_start\": 50,\n                \"value_end\": 58,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"id:gildong.hong@example.com mailto:{1} password:IhqSb1Gg\",\n                \"line_num\": 28,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"FILE:./tests/samples/doc_various|RAW\",\n                \"variable\": \"password\",\n                \"variable_start\": 39,\n                \"variable_end\": 47,\n                \"value\": \"IhqSb1Gg\",\n                \"value_start\": 48,\n                \"value_end\": 56,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.997,\n        \"line_data_list\": [\n            {\n                \"line\": \"ANY_password,default:IhqSb1Gg\",\n                \"line_num\": 31,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"FILE:./tests/samples/doc_various|RAW\",\n                \"variable\": \"ANY_password,default\",\n                \"variable_start\": 0,\n                \"variable_end\": 20,\n                \"value\": \"IhqSb1Gg\",\n                \"value_start\": 21,\n                \"value_end\": 29,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"Secret\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.996,\n        \"line_data_list\": [\n            {\n                \"line\": \"Key(ANYSecret):IhqSb1Gg\",\n                \"line_num\": 32,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"FILE:./tests/samples/doc_various|RAW\",\n                \"variable\": \"ANYSecret)\",\n                \"variable_start\": 4,\n                \"variable_end\": 14,\n                \"value\": \"IhqSb1Gg\",\n                \"value_start\": 15,\n                \"value_end\": 23,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.999,\n        \"line_data_list\": [\n            {\n                \"line\": \"98.76.54.32 ANY_PW:IhqSb1Gg\",\n                \"line_num\": 34,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"FILE:./tests/samples/doc_various|RAW\",\n                \"variable\": \"ANY_PW\",\n                \"variable_start\": 12,\n                \"variable_end\": 18,\n                \"value\": \"IhqSb1Gg\",\n                \"value_start\": 19,\n                \"value_end\": 27,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.995,\n        \"line_data_list\": [\n            {\n                \"line\": \"98.76.54.32(ID/PW:IhqSb1Gg)\",\n                \"line_num\": 36,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"FILE:./tests/samples/doc_various|RAW\",\n                \"variable\": \"PW\",\n                \"variable_start\": 15,\n                \"variable_end\": 17,\n                \"value\": \"IhqSb1Gg\",\n                \"value_start\": 18,\n                \"value_end\": 26,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"gildong.hong@98.76.54.32 (pwd:IhqSb1Gg)\",\n                \"line_num\": 38,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"FILE:./tests/samples/doc_various|RAW\",\n                \"variable\": \"pwd\",\n                \"variable_start\": 26,\n                \"variable_end\": 29,\n                \"value\": \"IhqSb1Gg\",\n                \"value_start\": 30,\n                \"value_end\": 38,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.996,\n        \"line_data_list\": [\n            {\n                \"line\": \"password for master:IhqSb1Gg\",\n                \"line_num\": 43,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"FILE:./tests/samples/doc_various|RAW\",\n                \"variable\": \"password for master\",\n                \"variable_start\": 0,\n                \"variable_end\": 19,\n                \"value\": \"IhqSb1Gg\",\n                \"value_start\": 20,\n                \"value_end\": 28,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.992,\n        \"line_data_list\": [\n            {\n                \"line\": \"id:xxxx(ANYpw:IhqSb1Ga)\",\n                \"line_num\": 46,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"FILE:./tests/samples/doc_various|RAW\",\n                \"variable\": \"ANYpw\",\n                \"variable_start\": 8,\n                \"variable_end\": 13,\n                \"value\": \"IhqSb1Ga\",\n                \"value_start\": 14,\n                \"value_end\": 22,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"gildong.hong@98.76.54.32,pw:IhqSb1Gg\",\n                \"line_num\": 47,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"FILE:./tests/samples/doc_various|RAW\",\n                \"variable\": \"pw\",\n                \"variable_start\": 25,\n                \"variable_end\": 27,\n                \"value\": \"IhqSb1Gg\",\n                \"value_start\": 28,\n                \"value_end\": 36,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.998,\n        \"line_data_list\": [\n            {\n                \"line\": \"98.76.54.32:xxxx(PW:IhqSb1Gg)\",\n                \"line_num\": 51,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"FILE:./tests/samples/doc_various|RAW\",\n                \"variable\": \"PW\",\n                \"variable_start\": 17,\n                \"variable_end\": 19,\n                \"value\": \"IhqSb1Gg\",\n                \"value_start\": 20,\n                \"value_end\": 28,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.999,\n        \"line_data_list\": [\n            {\n                \"line\": \"gildong.hong@98.76.54.32 PW:IhqSb1Gg\",\n                \"line_num\": 56,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"FILE:./tests/samples/doc_various|RAW\",\n                \"variable\": \"PW\",\n                \"variable_start\": 25,\n                \"variable_end\": 27,\n                \"value\": \"IhqSb1Gg\",\n                \"value_start\": 28,\n                \"value_end\": 36,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.999,\n        \"line_data_list\": [\n            {\n                \"line\": \"ANY_user:xxxx ANY_pwd:IhqSb1Gg\",\n                \"line_num\": 61,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"FILE:./tests/samples/doc_various|RAW\",\n                \"variable\": \"ANY_pwd\",\n                \"variable_start\": 14,\n                \"variable_end\": 21,\n                \"value\": \"IhqSb1Gg\",\n                \"value_start\": 22,\n                \"value_end\": 30,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"Acount name:xxxx Initial Password:IhqSb1Gg\",\n                \"line_num\": 62,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"FILE:./tests/samples/doc_various|RAW\",\n                \"variable\": \"Password\",\n                \"variable_start\": 25,\n                \"variable_end\": 33,\n                \"value\": \"IhqSb1Gg\",\n                \"value_start\": 34,\n                \"value_end\": 42,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.997,\n        \"line_data_list\": [\n            {\n                \"line\": \"Access wifi:xxxx(PW:IhqSb1Gg)\",\n                \"line_num\": 63,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"FILE:./tests/samples/doc_various|RAW\",\n                \"variable\": \"PW\",\n                \"variable_start\": 17,\n                \"variable_end\": 19,\n                \"value\": \"IhqSb1Gg\",\n                \"value_start\": 20,\n                \"value_end\": 28,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"-User:master -PasswordANY:IhqSb1Gg\",\n                \"line_num\": 66,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"FILE:./tests/samples/doc_various|RAW\",\n                \"variable\": \"PasswordANY\",\n                \"variable_start\": 14,\n                \"variable_end\": 25,\n                \"value\": \"IhqSb1Gg\",\n                \"value_start\": 26,\n                \"value_end\": 34,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"master@98.76.54.32(pw:IhqSb1Gg)\",\n                \"line_num\": 73,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"FILE:./tests/samples/doc_various|RAW\",\n                \"variable\": \"pw\",\n                \"variable_start\": 19,\n                \"variable_end\": 21,\n                \"value\": \"IhqSb1Gg\",\n                \"value_start\": 22,\n                \"value_end\": 30,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.999,\n        \"line_data_list\": [\n            {\n                \"line\": \"master@98.76.54.32,PW:IhqSb1Gg\",\n                \"line_num\": 74,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"FILE:./tests/samples/doc_various|RAW\",\n                \"variable\": \"PW\",\n                \"variable_start\": 19,\n                \"variable_end\": 21,\n                \"value\": \"IhqSb1Gg\",\n                \"value_start\": 22,\n                \"value_end\": 30,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"98.76.54.32 pw:IhqSb1Gg\",\n                \"line_num\": 75,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"FILE:./tests/samples/doc_various|RAW\",\n                \"variable\": \"pw\",\n                \"variable_start\": 12,\n                \"variable_end\": 14,\n                \"value\": \"IhqSb1Gg\",\n                \"value_start\": 15,\n                \"value_end\": 23,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.996,\n        \"line_data_list\": [\n            {\n                \"line\": \"config:xxxx,PW:IhqSb1Gg\",\n                \"line_num\": 78,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"FILE:./tests/samples/doc_various|RAW\",\n                \"variable\": \"PW\",\n                \"variable_start\": 12,\n                \"variable_end\": 14,\n                \"value\": \"IhqSb1Gg\",\n                \"value_start\": 15,\n                \"value_end\": 23,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"scp gildong.hong@98.76.54.32 mailto:{1} pw:IhqSb1Gg\",\n                \"line_num\": 82,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"FILE:./tests/samples/doc_various|RAW\",\n                \"variable\": \"pw\",\n                \"variable_start\": 40,\n                \"variable_end\": 42,\n                \"value\": \"IhqSb1Gg\",\n                \"value_start\": 43,\n                \"value_end\": 51,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"id:gildong.hong@xxx.com mailto:{1} pw:IhqSb1Gg\",\n                \"line_num\": 83,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"FILE:./tests/samples/doc_various|RAW\",\n                \"variable\": \"pw\",\n                \"variable_start\": 35,\n                \"variable_end\": 37,\n                \"value\": \"IhqSb1Gg\",\n                \"value_start\": 38,\n                \"value_end\": 46,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"gildong.hong@98.76.54.32 mailto:{1} pw:IhqSb1Gg\",\n                \"line_num\": 84,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"FILE:./tests/samples/doc_various|RAW\",\n                \"variable\": \"pw\",\n                \"variable_start\": 36,\n                \"variable_end\": 38,\n                \"value\": \"IhqSb1Gg\",\n                \"value_start\": 39,\n                \"value_end\": 47,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"ssh gildong.hong@98.76.54.32 mailto:{1},pw:IhqSb1Gg\",\n                \"line_num\": 85,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"FILE:./tests/samples/doc_various|RAW\",\n                \"variable\": \"pw\",\n                \"variable_start\": 40,\n                \"variable_end\": 42,\n                \"value\": \"IhqSb1Gg\",\n                \"value_start\": 43,\n                \"value_end\": 51,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"(ssh gildong.hong@98.76.54.32 mailto{1}) pwd:IhqSb1Gg\",\n                \"line_num\": 87,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"FILE:./tests/samples/doc_various|RAW\",\n                \"variable\": \"pwd\",\n                \"variable_start\": 41,\n                \"variable_end\": 44,\n                \"value\": \"IhqSb1Gg\",\n                \"value_start\": 45,\n                \"value_end\": 53,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"ssh gildong.hong@98.76.54.32 mailto:{1}, pw:IhqSb1Gg\",\n                \"line_num\": 90,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"FILE:./tests/samples/doc_various|RAW\",\n                \"variable\": \"pw\",\n                \"variable_start\": 41,\n                \"variable_end\": 43,\n                \"value\": \"IhqSb1Gg\",\n                \"value_start\": 44,\n                \"value_end\": 52,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"ssh gildong.hong@98.76.54.32 mailto:{1} (pwd:IhqSb1Gg)\",\n                \"line_num\": 93,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"FILE:./tests/samples/doc_various|RAW\",\n                \"variable\": \"pwd\",\n                \"variable_start\": 41,\n                \"variable_end\": 44,\n                \"value\": \"IhqSb1Gg\",\n                \"value_start\": 45,\n                \"value_end\": 53,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"gildong.hong@98.76.54.32 mailto:{1} (password:IhqSb1Gg)\",\n                \"line_num\": 94,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"FILE:./tests/samples/doc_various|RAW\",\n                \"variable\": \"password\",\n                \"variable_start\": 37,\n                \"variable_end\": 45,\n                \"value\": \"IhqSb1Gg\",\n                \"value_start\": 46,\n                \"value_end\": 54,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"gildong.hong@98.76.54.32 mailto:{1} Password:IhqSb1Gg\",\n                \"line_num\": 96,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"FILE:./tests/samples/doc_various|RAW\",\n                \"variable\": \"Password\",\n                \"variable_start\": 36,\n                \"variable_end\": 44,\n                \"value\": \"IhqSb1Gg\",\n                \"value_start\": 45,\n                \"value_end\": 53,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"gildong.hong@98.76.54.32 mailto:{1} (pass:IhqSb1Gg)\",\n                \"line_num\": 97,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"FILE:./tests/samples/doc_various|RAW\",\n                \"variable\": \"pass\",\n                \"variable_start\": 37,\n                \"variable_end\": 41,\n                \"value\": \"IhqSb1Gg\",\n                \"value_start\": 42,\n                \"value_end\": 50,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"ssh gildong.hong@98.76.54.32 mailto:{1} pw:IhqSb1Gg\",\n                \"line_num\": 100,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"FILE:./tests/samples/doc_various|RAW\",\n                \"variable\": \"pw\",\n                \"variable_start\": 40,\n                \"variable_end\": 42,\n                \"value\": \"IhqSb1Gg\",\n                \"value_start\": 43,\n                \"value_end\": 51,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"ssh gildong.hong@98.76.54.32 mailto:{1} pass:IhqSb1Gg\",\n                \"line_num\": 101,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"FILE:./tests/samples/doc_various|RAW\",\n                \"variable\": \"pass\",\n                \"variable_start\": 40,\n                \"variable_end\": 44,\n                \"value\": \"IhqSb1Gg\",\n                \"value_start\": 45,\n                \"value_end\": 53,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"id:gildong.hong@xxx.com mailto:{1}/password:IhqSb1Gg\",\n                \"line_num\": 102,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"FILE:./tests/samples/doc_various|RAW\",\n                \"variable\": \"password\",\n                \"variable_start\": 35,\n                \"variable_end\": 43,\n                \"value\": \"IhqSb1Gg\",\n                \"value_start\": 44,\n                \"value_end\": 52,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"ssh gildong.hong@98.76.54.32 mailto:{1}/password:IhqSb1Gg\",\n                \"line_num\": 104,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"FILE:./tests/samples/doc_various|RAW\",\n                \"variable\": \"password\",\n                \"variable_start\": 40,\n                \"variable_end\": 48,\n                \"value\": \"IhqSb1Gg\",\n                \"value_start\": 49,\n                \"value_end\": 57,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.998,\n        \"line_data_list\": [\n            {\n                \"line\": \"-ANYID:gildong.hong@example.com mailto:{1} -pw:IhqSb1Gg\",\n                \"line_num\": 105,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"FILE:./tests/samples/doc_various|RAW\",\n                \"variable\": \"pw\",\n                \"variable_start\": 44,\n                \"variable_end\": 46,\n                \"value\": \"IhqSb1Gg\",\n                \"value_start\": 47,\n                \"value_end\": 55,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"ID:gildong.hong@xxxx.net mailto:{1} pw:IhqSb1Gg\",\n                \"line_num\": 106,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"FILE:./tests/samples/doc_various|RAW\",\n                \"variable\": \"pw\",\n                \"variable_start\": 36,\n                \"variable_end\": 38,\n                \"value\": \"IhqSb1Gg\",\n                \"value_start\": 39,\n                \"value_end\": 47,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.998,\n        \"line_data_list\": [\n            {\n                \"line\": \"http://98.76.54.32:xxx(pw:IhqSb1Gg)\",\n                \"line_num\": 108,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"FILE:./tests/samples/doc_various|RAW\",\n                \"variable\": \"pw\",\n                \"variable_start\": 23,\n                \"variable_end\": 25,\n                \"value\": \"IhqSb1Gg\",\n                \"value_start\": 26,\n                \"value_end\": 34,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"Docker Access Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"POSITIVE: dckr_pat_mcF-hLK_JoBxXUNJy1kU7-WSbk0\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/docker\",\n                \"info\": \"FILE:./tests/samples/docker|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"dckr_pat_mcF-hLK_JoBxXUNJy1kU7-WSbk0\",\n                \"value_start\": 10,\n                \"value_end\": 46,\n                \"entropy\": 4.68354\n            }\n        ]\n    },\n    {\n        \"rule\": \"Docker Access Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"NEGATIVE: dckr_pat_EXAMPLE-EXAMPLE-EXAMPLE-123\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/docker\",\n                \"info\": \"FILE:./tests/samples/docker|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"dckr_pat_EXAMPLE-EXAMPLE-EXAMPLE-123\",\n                \"value_start\": 10,\n                \"value_end\": 46,\n                \"entropy\": 3.89106\n            }\n        ]\n    },\n    {\n        \"rule\": \"Docker Access Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"POSITIVE: dckr_oat_fXUgJy1nU2WSbk_0vH2S-mcF-hLKJoB-\",\n                \"line_num\": 3,\n                \"path\": \"./tests/samples/docker\",\n                \"info\": \"FILE:./tests/samples/docker|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"dckr_oat_fXUgJy1nU2WSbk_0vH2S-mcF-hLKJoB-\",\n                \"value_start\": 10,\n                \"value_end\": 51,\n                \"entropy\": 4.78414\n            }\n        ]\n    },\n    {\n        \"rule\": \"Docker Swarm Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"POSITIVE: SWMTKN-1-edmua5ub12inlget8wkvz35kckxkeyznuvc49brsy84wgfssrw-otjll8wdy3yikfrksskvqzqh1\",\n                \"line_num\": 4,\n                \"path\": \"./tests/samples/docker\",\n                \"info\": \"FILE:./tests/samples/docker|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"SWMTKN-1-edmua5ub12inlget8wkvz35kckxkeyznuvc49brsy84wgfssrw-otjll8wdy3yikfrksskvqzqh1\",\n                \"value_start\": 10,\n                \"value_end\": 95,\n                \"entropy\": 5.06757\n            }\n        ]\n    },\n    {\n        \"rule\": \"Docker Swarm Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"POSITIVE: SWMKEY-1-fySn8TY4w5lKcWcJPIpKufejh9hxx5KYwx6XZigx3Q4\",\n                \"line_num\": 6,\n                \"path\": \"./tests/samples/docker\",\n                \"info\": \"FILE:./tests/samples/docker|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"SWMKEY-1-fySn8TY4w5lKcWcJPIpKufejh9hxx5KYwx6XZigx3Q4\",\n                \"value_start\": 10,\n                \"value_end\": 62,\n                \"entropy\": 4.95515\n            }\n        ]\n    },\n    {\n        \"rule\": \"UUID\",\n        \"severity\": \"info\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"password is NsIdksKJdj\\ttoken is bace4d19-fa7e-b2e4-1afe-9129474bcd81\\tPassword: \\\"Dw7^&nd<dj\\\"\",\n                \"line_num\": 13,\n                \"path\": \"./tests/samples/drawio\",\n                \"info\": \"FILE:./tests/samples/drawio|MXFILE\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"bace4d19-fa7e-b2e4-1afe-9129474bcd81\",\n                \"value_start\": 32,\n                \"value_end\": 68,\n                \"entropy\": 3.60702\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"textpassword: Df34D<345&>gf\",\n                \"line_num\": 16,\n                \"path\": \"./tests/samples/drawio\",\n                \"info\": \"FILE:./tests/samples/drawio|MXFILE\",\n                \"variable\": \"textpassword\",\n                \"variable_start\": 0,\n                \"variable_end\": 12,\n                \"value\": \"Df34D<345&>gf\",\n                \"value_start\": 14,\n                \"value_end\": 27,\n                \"entropy\": 3.08506\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.999,\n        \"line_data_list\": [\n            {\n                \"line\": \"pass: Dsfgh%$d<>s&\",\n                \"line_num\": 34,\n                \"path\": \"./tests/samples/drawio\",\n                \"info\": \"FILE:./tests/samples/drawio|MXFILE\",\n                \"variable\": \"pass\",\n                \"variable_start\": 0,\n                \"variable_end\": 4,\n                \"value\": \"Dsfgh%$d<>s&\",\n                \"value_start\": 6,\n                \"value_end\": 18,\n                \"entropy\": 3.4183\n            }\n        ]\n    },\n    {\n        \"rule\": \"UUID\",\n        \"severity\": \"info\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"page2 secret is ce49dba1-e4fe-b2a7-4ffa-132bcd819474\",\n                \"line_num\": 45,\n                \"path\": \"./tests/samples/drawio\",\n                \"info\": \"FILE:./tests/samples/drawio|MXFILE\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"ce49dba1-e4fe-b2a7-4ffa-132bcd819474\",\n                \"value_start\": 16,\n                \"value_end\": 52,\n                \"entropy\": 3.68703\n            }\n        ]\n    },\n    {\n        \"rule\": \"Dropbox API secret (long term)\",\n        \"severity\": \"high\",\n        \"confidence\": \"weak\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"var g = '7rBynGo0b1cAAAAAAAAAAc72L3T6rQK51mB5a06ijnwRG91deTxvSqdZNAlxq8pZ'\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/dropbox_api_secret_long_term\",\n                \"info\": \"FILE:./tests/samples/dropbox_api_secret_long_term|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"7rBynGo0b1cAAAAAAAAAAc72L3T6rQK51mB5a06ijnwRG91deTxvSqdZNAlxq8pZ\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 4.89362\n            }\n        ]\n    },\n    {\n        \"rule\": \"Dropbox App secret\",\n        \"severity\": \"info\",\n        \"confidence\": \"weak\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"var app_unique_val_s = 'wpv1jq9xwanbn3n';\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/dropbox_app_secret\",\n                \"info\": \"FILE:./tests/samples/dropbox_app_secret|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"wpv1jq9xwanbn3n\",\n                \"value_start\": 24,\n                \"value_end\": 39,\n                \"entropy\": 3.45656\n            }\n        ]\n    },\n    {\n        \"rule\": \"Dropbox OAuth2 API Access Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"var dropbox = 'sl.BdmpmC82mhhySscKk2oQGyE5l--8LdAQftLTXVGQhP39Z8FtAK1BhePhyevurA-Elt7ToIr6OpwzKAYE7RBqpu6VVyQU5WlCTL_Q7N4gElXahaWou6aPpOIwgGCIOq9aeC3YFoc';\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/dropbox_oauth_token\",\n                \"info\": \"FILE:./tests/samples/dropbox_oauth_token|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"sl.BdmpmC82mhhySscKk2oQGyE5l--8LdAQftLTXVGQhP39Z8FtAK1BhePhyevurA-Elt7ToIr6OpwzKAYE7RBqpu6VVyQU5WlCTL_Q7N4gElXahaWou6aPpOIwgGCIOq9aeC3YFoc\",\n                \"value_start\": 15,\n                \"value_end\": 153,\n                \"entropy\": 5.61894\n            }\n        ]\n    },\n    {\n        \"rule\": \"Dynatrace API Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"dt0c01.ST2EY72KQINMH574WMNVI7YN.G3DFPBEJYMOD1DAEX454M7YWBUVEFOWKPRVMWFASS64NFH52PX6BNDVFFM572RZM\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/dynatrace_api.hs\",\n                \"info\": \"FILE:./tests/samples/dynatrace_api.hs|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"dt0c01.ST2EY72KQINMH574WMNVI7YN.G3DFPBEJYMOD1DAEX454M7YWBUVEFOWKPRVMWFASS64NFH52PX6BNDVFFM572RZM\",\n                \"value_start\": 0,\n                \"value_end\": 96,\n                \"entropy\": 4.93241\n            }\n        ]\n    },\n    {\n        \"rule\": \"Facebook Access Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"GI_REO_GI_FACEBOOK_TOKEN = \\\"EAACEb00Kse0BAlGy7KeQ5YnaCEd09Eose0cBAlGy7KeQ5Yna9CoDsup39tiYdoQ4jH9Coup39tiYdWoQ4jHFZD\\\"\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/facebook_key\",\n                \"info\": \"FILE:./tests/samples/facebook_key|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"EAACEb00Kse0BAlGy7KeQ5YnaCEd09Eose0cBAlGy7KeQ5Yna9CoDsup39tiYdoQ4jH9Coup39tiYdWoQ4jHFZD\",\n                \"value_start\": 28,\n                \"value_end\": 115,\n                \"entropy\": 4.93612\n            }\n        ]\n    },\n    {\n        \"rule\": \"Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.964,\n        \"line_data_list\": [\n            {\n                \"line\": \"GI_REO_GI_FACEBOOK_TOKEN = \\\"EAACEb00Kse0BAlGy7KeQ5YnaCEd09Eose0cBAlGy7KeQ5Yna9CoDsup39tiYdoQ4jH9Coup39tiYdWoQ4jHFZD\\\"\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/facebook_key\",\n                \"info\": \"FILE:./tests/samples/facebook_key|RAW\",\n                \"variable\": \"GI_REO_GI_FACEBOOK_TOKEN\",\n                \"variable_start\": 0,\n                \"variable_end\": 24,\n                \"value\": \"EAACEb00Kse0BAlGy7KeQ5YnaCEd09Eose0cBAlGy7KeQ5Yna9CoDsup39tiYdoQ4jH9Coup39tiYdWoQ4jHFZD\",\n                \"value_start\": 28,\n                \"value_end\": 115,\n                \"entropy\": 4.93612\n            }\n        ]\n    },\n    {\n        \"rule\": \"Facebook App Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"1527194624358273|qbBf2-fdB9zZpqLA0_2nNzZDw2M\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/facebook_key\",\n                \"info\": \"FILE:./tests/samples/facebook_key|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"1527194624358273|qbBf2-fdB9zZpqLA0_2nNzZDw2M\",\n                \"value_start\": 0,\n                \"value_end\": 44,\n                \"entropy\": 4.60694\n            }\n        ]\n    },\n    {\n        \"rule\": \"Figma Personal Access Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"figd__fU7rxH-KUAmCv5vI78kKlnEF6bne_yvSvPLz3JO\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/figma\",\n                \"info\": \"FILE:./tests/samples/figma|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"figd__fU7rxH-KUAmCv5vI78kKlnEF6bne_yvSvPLz3JO\",\n                \"value_start\": 0,\n                \"value_end\": 45,\n                \"entropy\": 4.98619\n            }\n        ]\n    },\n    {\n        \"rule\": \"Figma Personal Access Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"figd_h65Ugiu76WD3xf233a6KAmo9ZmbWNnNrny9Q6IHl\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/figma\",\n                \"info\": \"FILE:./tests/samples/figma|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"figd_h65Ugiu76WD3xf233a6KAmo9ZmbWNnNrny9Q6IHl\",\n                \"value_start\": 0,\n                \"value_end\": 45,\n                \"entropy\": 4.85286\n            }\n        ]\n    },\n    {\n        \"rule\": \"Firebase Domain\",\n        \"severity\": \"info\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"test-app-domain-42.firebaseapp.com\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/firebase_domain\",\n                \"info\": \"FILE:./tests/samples/firebase_domain|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"test-app-domain-42.firebaseapp.com\",\n                \"value_start\": 0,\n                \"value_end\": 34,\n                \"entropy\": 3.98423\n            }\n        ]\n    },\n    {\n        \"rule\": \"Firebase Domain\",\n        \"severity\": \"info\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"test2.io.firebaseio.com\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/firebase_domain\",\n                \"info\": \"FILE:./tests/samples/firebase_domain|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"test2.io.firebaseio.com\",\n                \"value_start\": 0,\n                \"value_end\": 23,\n                \"entropy\": 3.52271\n            }\n        ]\n    },\n    {\n        \"rule\": \"Github Classic Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"ghp_00000000000000000000000000000004WZ4EQ # classic\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/github_classic_token\",\n                \"info\": \"FILE:./tests/samples/github_classic_token|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"ghp_00000000000000000000000000000004WZ4EQ\",\n                \"value_start\": 0,\n                \"value_end\": 41,\n                \"entropy\": 1.56292\n            }\n        ]\n    },\n    {\n        \"rule\": \"Github Fine-granted Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"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\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/github_fine_granted_token\",\n                \"info\": \"FILE:./tests/samples/github_fine_granted_token|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"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\",\n                \"value_start\": 0,\n                \"value_end\": 93,\n                \"entropy\": 5.41519\n            }\n        ]\n    },\n    {\n        \"rule\": \"Gitlab Prefix Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"glpat-8d5ri2n9g85LAnC9YW85.01.cgpAsnEmP # Personal access token, Impersonation token, Project access token, Group access token\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/gitlab_prefix_token\",\n                \"info\": \"FILE:./tests/samples/gitlab_prefix_token|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"glpat-8d5ri2n9g85LAnC9YW85.01.cgpAsnEmP\",\n                \"value_start\": 0,\n                \"value_end\": 39,\n                \"entropy\": 4.59259\n            }\n        ]\n    },\n    {\n        \"rule\": \"Gitlab Prefix Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"gloas-7fc1974b38580e6ceca8c077863cd5e88745895dfcbe1ae3c36eab9c498103dc # OAuth Application Secret\",\n                \"line_num\": 3,\n                \"path\": \"./tests/samples/gitlab_prefix_token\",\n                \"info\": \"FILE:./tests/samples/gitlab_prefix_token|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"gloas-7fc1974b38580e6ceca8c077863cd5e88745895dfcbe1ae3c36eab9c498103dc\",\n                \"value_start\": 0,\n                \"value_end\": 70,\n                \"entropy\": 4.0466\n            }\n        ]\n    },\n    {\n        \"rule\": \"Gitlab Prefix Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"gldt-9BeUoeWu2V9uUS3uLoMy # Deploy token\",\n                \"line_num\": 4,\n                \"path\": \"./tests/samples/gitlab_prefix_token\",\n                \"info\": \"FILE:./tests/samples/gitlab_prefix_token|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"gldt-9BeUoeWu2V9uUS3uLoMy\",\n                \"value_start\": 0,\n                \"value_end\": 25,\n                \"entropy\": 4.13366\n            }\n        ]\n    },\n    {\n        \"rule\": \"Gitlab Prefix Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"glrt-2CR8_eVxiio-1QmzPZwa # Runner authentication token\",\n                \"line_num\": 5,\n                \"path\": \"./tests/samples/gitlab_prefix_token\",\n                \"info\": \"FILE:./tests/samples/gitlab_prefix_token|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"glrt-2CR8_eVxiio-1QmzPZwa\",\n                \"value_start\": 0,\n                \"value_end\": 25,\n                \"entropy\": 4.48386\n            }\n        ]\n    },\n    {\n        \"rule\": \"Gitlab Prefix Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"glcbt-1375_cgpAsnEmP-79kcfRLyK_\",\n                \"line_num\": 6,\n                \"path\": \"./tests/samples/gitlab_prefix_token\",\n                \"info\": \"FILE:./tests/samples/gitlab_prefix_token|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"glcbt-1375_cgpAsnEmP-79kcfRLyK_\",\n                \"value_start\": 0,\n                \"value_end\": 31,\n                \"entropy\": 4.54275\n            }\n        ]\n    },\n    {\n        \"rule\": \"Gitlab Prefix Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"glcbt-0_c1k_AsgyRp4mP-Kcn8fL # CI/CD Job token\",\n                \"line_num\": 7,\n                \"path\": \"./tests/samples/gitlab_prefix_token\",\n                \"info\": \"FILE:./tests/samples/gitlab_prefix_token|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"glcbt-0_c1k_AsgyRp4mP-Kcn8fL\",\n                \"value_start\": 0,\n                \"value_end\": 28,\n                \"entropy\": 4.42325\n            }\n        ]\n    },\n    {\n        \"rule\": \"Gitlab Prefix Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"glptt-33276248c9748113e978392e5c074b7f974f8683 # Trigger token\",\n                \"line_num\": 8,\n                \"path\": \"./tests/samples/gitlab_prefix_token\",\n                \"info\": \"FILE:./tests/samples/gitlab_prefix_token|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"glptt-33276248c9748113e978392e5c074b7f974f8683\",\n                \"value_start\": 0,\n                \"value_end\": 46,\n                \"entropy\": 3.96956\n            }\n        ]\n    },\n    {\n        \"rule\": \"Gitlab Prefix Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"glft-Aafqn5A31G-2VipZMh28 # Feed token\",\n                \"line_num\": 9,\n                \"path\": \"./tests/samples/gitlab_prefix_token\",\n                \"info\": \"FILE:./tests/samples/gitlab_prefix_token|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"glft-Aafqn5A31G-2VipZMh28\",\n                \"value_start\": 0,\n                \"value_end\": 25,\n                \"entropy\": 4.32386\n            }\n        ]\n    },\n    {\n        \"rule\": \"Gitlab Prefix Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"glimt-1jpqzsnw2n71om0r9kgt06os3 # Incoming mail token\",\n                \"line_num\": 10,\n                \"path\": \"./tests/samples/gitlab_prefix_token\",\n                \"info\": \"FILE:./tests/samples/gitlab_prefix_token|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"glimt-1jpqzsnw2n71om0r9kgt06os3\",\n                \"value_start\": 0,\n                \"value_end\": 31,\n                \"entropy\": 4.43807\n            }\n        ]\n    },\n    {\n        \"rule\": \"Gitlab Prefix Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"glagent-ZQmgbRr-Ydu5YehnXCGiiSLxjd53EkFnYapS7A4TwyNE8Y2XVg # GitLab agent for Kubernetes token\",\n                \"line_num\": 11,\n                \"path\": \"./tests/samples/gitlab_prefix_token\",\n                \"info\": \"FILE:./tests/samples/gitlab_prefix_token|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"glagent-ZQmgbRr-Ydu5YehnXCGiiSLxjd53EkFnYapS7A4TwyNE8Y2XVg\",\n                \"value_start\": 0,\n                \"value_end\": 58,\n                \"entropy\": 5.18979\n            }\n        ]\n    },\n    {\n        \"rule\": \"Gitlab Prefix Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"_gitlab_session=8d2a78c080a3af1e6a4677be474432f2 # GitLab session cookies\",\n                \"line_num\": 12,\n                \"path\": \"./tests/samples/gitlab_prefix_token\",\n                \"info\": \"FILE:./tests/samples/gitlab_prefix_token|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"_gitlab_session=8d2a78c080a3af1e6a4677be474432f2\",\n                \"value_start\": 0,\n                \"value_end\": 48,\n                \"entropy\": 4.32185\n            }\n        ]\n    },\n    {\n        \"rule\": \"Gitlab Prefix Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"glsoat-971om0ecn5A386r9k481 # SCIM Tokens\",\n                \"line_num\": 13,\n                \"path\": \"./tests/samples/gitlab_prefix_token\",\n                \"info\": \"FILE:./tests/samples/gitlab_prefix_token|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"glsoat-971om0ecn5A386r9k481\",\n                \"value_start\": 0,\n                \"value_end\": 27,\n                \"entropy\": 4.45859\n            }\n        ]\n    },\n    {\n        \"rule\": \"Gitlab Prefix Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"glffct-AnRWYdo3Si_Xm2Q6n7zu # Feature Flags Client token\",\n                \"line_num\": 14,\n                \"path\": \"./tests/samples/gitlab_prefix_token\",\n                \"info\": \"FILE:./tests/samples/gitlab_prefix_token|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"glffct-AnRWYdo3Si_Xm2Q6n7zu\",\n                \"value_start\": 0,\n                \"value_end\": 27,\n                \"entropy\": 4.60674\n            }\n        ]\n    },\n    {\n        \"rule\": \"Gitlab Prefix Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"glrtr-KZX7Mizo7RYFKh2JScz6aeqZ3WG8nxujE21QpZVIr # Registration runner token\",\n                \"line_num\": 15,\n                \"path\": \"./tests/samples/gitlab_prefix_token\",\n                \"info\": \"FILE:./tests/samples/gitlab_prefix_token|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"glrtr-KZX7Mizo7RYFKh2JScz6aeqZ3WG8nxujE21QpZVIr\",\n                \"value_start\": 0,\n                \"value_end\": 47,\n                \"entropy\": 5.18204\n            }\n        ]\n    },\n    {\n        \"rule\": \"Gitlab Prefix Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"glwt-G9dr9LJjGiSfBdxzDVyHi7vSdDcAftOmJ # Workspace token\",\n                \"line_num\": 16,\n                \"path\": \"./tests/samples/gitlab_prefix_token\",\n                \"info\": \"FILE:./tests/samples/gitlab_prefix_token|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"glwt-G9dr9LJjGiSfBdxzDVyHi7vSdDcAftOmJ\",\n                \"value_start\": 0,\n                \"value_end\": 38,\n                \"entropy\": 4.70175\n            }\n        ]\n    },\n    {\n        \"rule\": \"Gitlab Prefix Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"GR1348941jG6xeSsmN8DFVKoyBYu2 # Runner registration token\",\n                \"line_num\": 18,\n                \"path\": \"./tests/samples/gitlab_prefix_token\",\n                \"info\": \"FILE:./tests/samples/gitlab_prefix_token|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"GR1348941jG6xeSsmN8DFVKoyBYu2\",\n                \"value_start\": 0,\n                \"value_end\": 29,\n                \"entropy\": 4.58212\n            }\n        ]\n    },\n    {\n        \"rule\": \"Google API Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"AIzaGiReoG-Cr0ckleCr0ckle12315618_12315 # Google API Key\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/google_creds\",\n                \"info\": \"FILE:./tests/samples/google_creds|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"AIzaGiReoG-Cr0ckleCr0ckle12315618_12315\",\n                \"value_start\": 0,\n                \"value_end\": 39,\n                \"entropy\": 4.35298\n            }\n        ]\n    },\n    {\n        \"rule\": \"Google OAuth Secret\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"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 # Google OAuth Secret\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/google_creds\",\n                \"info\": \"FILE:./tests/samples/google_creds|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"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\",\n                \"value_start\": 0,\n                \"value_end\": 35,\n                \"entropy\": 4.67214\n            }\n        ]\n    },\n    {\n        \"rule\": \"Google OAuth Access Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"ya29.zmZDrADaFxE_IS6fl4sbDxCpH-ltO2BoHEwXOglsXbgd_S # Google OAuth Access Token\",\n                \"line_num\": 3,\n                \"path\": \"./tests/samples/google_creds\",\n                \"info\": \"FILE:./tests/samples/google_creds|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"ya29.zmZDrADaFxE_IS6fl4sbDxCpH-ltO2BoHEwXOglsXbgd_S\",\n                \"value_start\": 0,\n                \"value_end\": 51,\n                \"entropy\": 5.01537\n            }\n        ]\n    },\n    {\n        \"rule\": \"Google OAuth Refresh Token\",\n        \"severity\": \"medium\",\n        \"confidence\": \"weak\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"1//0T4eRe15N0tT4Et0kEHY0U4Rel0Ok1ng4-hPyg7SWC7tZ1WE5vZvtCwqrJF9rLsyiKFeDGT_0ZHafDhc4-Y2qij02mClU1InwQ_ # Google OAuth Refresh Token\",\n                \"line_num\": 4,\n                \"path\": \"./tests/samples/google_creds\",\n                \"info\": \"FILE:./tests/samples/google_creds|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"1//0T4eRe15N0tT4Et0kEHY0U4Rel0Ok1ng4-hPyg7SWC7tZ1WE5vZvtCwqrJF9rLsyiKFeDGT_0ZHafDhc4-Y2qij02mClU1InwQ_\",\n                \"value_start\": 0,\n                \"value_end\": 102,\n                \"entropy\": 5.43821\n            }\n        ]\n    },\n    {\n        \"rule\": \"Google Multi\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"194206074328-qp89pdv6fi35vsi71258g1eh31q6h7c3.apps.googleusercontent.com\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/google_multi\",\n                \"info\": \"FILE:./tests/samples/google_multi|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"194206074328-qp89pdv6fi35vsi71258g1eh31q6h7c3.apps.googleusercontent.com\",\n                \"value_start\": 0,\n                \"value_end\": 72,\n                \"entropy\": 4.80827\n            },\n            {\n                \"line\": \"4L2QMyTm6Rr0o46ytGiReoG1\",\n                \"line_num\": 4,\n                \"path\": \"./tests/samples/google_multi\",\n                \"info\": \"FILE:./tests/samples/google_multi|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"4L2QMyTm6Rr0o46ytGiReoG1\",\n                \"value_start\": 0,\n                \"value_end\": 24,\n                \"entropy\": 4.08496\n            }\n        ]\n    },\n    {\n        \"rule\": \"Google Multi\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"\\\"id\\\":\\\"194206074328-qdv6fi3eh31q6h7c35vsi7p89p1258g1.apps.googleusercontent.com\\\",\\\"CEKPET\\\":\\\"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\\\",\",\n                \"line_num\": 18,\n                \"path\": \"./tests/samples/google_multi\",\n                \"info\": \"FILE:./tests/samples/google_multi|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"194206074328-qdv6fi3eh31q6h7c35vsi7p89p1258g1.apps.googleusercontent.com\",\n                \"value_start\": 6,\n                \"value_end\": 78,\n                \"entropy\": 4.80827\n            },\n            {\n                \"line\": \"\\\"id\\\":\\\"194206074328-qdv6fi3eh31q6h7c35vsi7p89p1258g1.apps.googleusercontent.com\\\",\\\"CEKPET\\\":\\\"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\\\",\",\n                \"line_num\": 18,\n                \"path\": \"./tests/samples/google_multi\",\n                \"info\": \"FILE:./tests/samples/google_multi|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"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\",\n                \"value_start\": 90,\n                \"value_end\": 125,\n                \"entropy\": 4.67214\n            }\n        ]\n    },\n    {\n        \"rule\": \"Google OAuth Secret\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"\\\"id\\\":\\\"194206074328-qdv6fi3eh31q6h7c35vsi7p89p1258g1.apps.googleusercontent.com\\\",\\\"CEKPET\\\":\\\"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\\\",\",\n                \"line_num\": 18,\n                \"path\": \"./tests/samples/google_multi\",\n                \"info\": \"FILE:./tests/samples/google_multi|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"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\",\n                \"value_start\": 90,\n                \"value_end\": 125,\n                \"entropy\": 4.67214\n            }\n        ]\n    },\n    {\n        \"rule\": \"Grafana Access Policy Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"grafana_policy = 'glc_eyJvIjoiMjA0NjMwIiwibiI6InRlc3QtdG9rZW4iLCJrIjoidklnbjJ2WHc5MTVXOWtNOWxsNHcyZHEyIiwibSI6eyJyIjoicHJvZC0wIn19'\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/grafana_access_policy_token\",\n                \"info\": \"FILE:./tests/samples/grafana_access_policy_token|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"glc_eyJvIjoiMjA0NjMwIiwibiI6InRlc3QtdG9rZW4iLCJrIjoidklnbjJ2WHc5MTVXOWtNOWxsNHcyZHEyIiwibSI6eyJyIjoicHJvZC0wIn19\",\n                \"value_start\": 18,\n                \"value_end\": 130,\n                \"entropy\": 5.15841\n            }\n        ]\n    },\n    {\n        \"rule\": \"Grafana Provisioned API Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"grafana = 'eyJrIjoiMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCIsIm4iOiJ4eHh4IiwiaWQiOjIwNDM2MH0='\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/grafana_provisioned_api_key\",\n                \"info\": \"FILE:./tests/samples/grafana_provisioned_api_key|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"eyJrIjoiMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCIsIm4iOiJ4eHh4IiwiaWQiOjIwNDM2MH0=\",\n                \"value_start\": 11,\n                \"value_end\": 107,\n                \"entropy\": 3.81531\n            }\n        ]\n    },\n    {\n        \"rule\": \"Grafana Service Account Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"glsa_ThisI5NtTheTok3nYou8reLo0k1ngF0r_0a2a3df7\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/grafana_service_accounts\",\n                \"info\": \"FILE:./tests/samples/grafana_service_accounts|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"glsa_ThisI5NtTheTok3nYou8reLo0k1ngF0r_0a2a3df7\",\n                \"value_start\": 0,\n                \"value_end\": 46,\n                \"entropy\": 4.71879\n            }\n        ]\n    },\n    {\n        \"rule\": \"Groq API Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"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\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/groq_api_key\",\n                \"info\": \"FILE:./tests/samples/groq_api_key|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"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\",\n                \"value_start\": 0,\n                \"value_end\": 56,\n                \"entropy\": 5.01691\n            }\n        ]\n    },\n    {\n        \"rule\": \"Groq API Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"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\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/groq_api_key\",\n                \"info\": \"FILE:./tests/samples/groq_api_key|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"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\",\n                \"value_start\": 0,\n                \"value_end\": 56,\n                \"entropy\": 5.02567\n            }\n        ]\n    },\n    {\n        \"rule\": \"Groq API Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"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\",\n                \"line_num\": 3,\n                \"path\": \"./tests/samples/groq_api_key\",\n                \"info\": \"FILE:./tests/samples/groq_api_key|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"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\",\n                \"value_start\": 0,\n                \"value_end\": 56,\n                \"entropy\": 5.02567\n            }\n        ]\n    },\n    {\n        \"rule\": \"Hashicorp Terraform Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"Z28P3STmkBQi1Y.atlasv1.YE7RBqu6VVyQIOq9a1eC3YFU5Elt7ToIr6OwzKAWlCTQ7N4gElXaWou6aPpOIwGCoc0\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/hashicorp\",\n                \"info\": \"FILE:./tests/samples/hashicorp|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"Z28P3STmkBQi1Y.atlasv1.YE7RBqu6VVyQIOq9a1eC3YFU5Elt7ToIr6OwzKAWlCTQ7N4gElXaWou6aPpOIwGCoc0\",\n                \"value_start\": 0,\n                \"value_end\": 90,\n                \"entropy\": 5.47059\n            }\n        ]\n    },\n    {\n        \"rule\": \"Hashicorp Vault Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"hvs.atlasv1-Z28P3STmkBQi1Y-YE7RBqu6VVyQIOq9a1eC3YFU5Elt7ToIr6OwzKAWlCTQ7N4gElXaWou6aPpOIwGCoc0\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/hashicorp\",\n                \"info\": \"FILE:./tests/samples/hashicorp|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"hvs.atlasv1-Z28P3STmkBQi1Y-YE7RBqu6VVyQIOq9a1eC3YFU5Elt7ToIr6OwzKAWlCTQ7N4gElXaWou6aPpOIwGCoc0\",\n                \"value_start\": 0,\n                \"value_end\": 94,\n                \"entropy\": 5.53423\n            }\n        ]\n    },\n    {\n        \"rule\": \"Heroku Credentials\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"HRKU-RAjCYR7Mai1JAIhHASD6ITENvdVydAPCnNcAlrMrTLozPkj9_BGqh1J5P4Wf\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/heroku\",\n                \"info\": \"FILE:./tests/samples/heroku|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"HRKU-RAjCYR7Mai1JAIhHASD6ITENvdVydAPCnNcAlrMrTLozPkj9_BGqh1J5P4Wf\",\n                \"value_start\": 0,\n                \"value_end\": 65,\n                \"entropy\": 5.32822\n            }\n        ]\n    },\n    {\n        \"rule\": \"Heroku Credentials\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"HRKU-f1274537-88fb-deaf-beda-453bd9a496ef\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/heroku\",\n                \"info\": \"FILE:./tests/samples/heroku|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"HRKU-f1274537-88fb-deaf-beda-453bd9a496ef\",\n                \"value_start\": 0,\n                \"value_end\": 41,\n                \"entropy\": 4.0555\n            }\n        ]\n    },\n    {\n        \"rule\": \"Hugging Face User Access Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"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\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/huggingface\",\n                \"info\": \"FILE:./tests/samples/huggingface|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"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\",\n                \"value_start\": 0,\n                \"value_end\": 37,\n                \"entropy\": 4.70256\n            }\n        ]\n    },\n    {\n        \"rule\": \"Hugging Face User Access Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"url/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/part\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/huggingface\",\n                \"info\": \"FILE:./tests/samples/huggingface|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"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\",\n                \"value_start\": 4,\n                \"value_end\": 41,\n                \"entropy\": 4.77702\n            }\n        ]\n    },\n    {\n        \"rule\": \"Hugging Face User Access Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"hf_UdYjVqYvybBLEhIrwwEUYjOgkeyexample\",\n                \"line_num\": 6,\n                \"path\": \"./tests/samples/huggingface\",\n                \"info\": \"FILE:./tests/samples/huggingface|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"hf_UdYjVqYvybBLEhIrwwEUYjOgkeyexample\",\n                \"value_start\": 0,\n                \"value_end\": 37,\n                \"entropy\": 4.62811\n            }\n        ]\n    },\n    {\n        \"rule\": \"Instagram Access Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"IGQVJWS3pUNmZA2MUJDVlRwLW9ac1lrU05nZAmpzWHQtWHFJSEFRMF9tWVpRdEd70HQ5Wk8wSnY0R0VEQnVQdUU0MnpxNWxocUYyNmZAXSTUtVVNrMmh1ZAHZAQQno2ZA0VHR0lLWkk1N1R5RDFvM0dmVEpIYQZGZX\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/instagram_access_token\",\n                \"info\": \"FILE:./tests/samples/instagram_access_token|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"IGQVJWS3pUNmZA2MUJDVlRwLW9ac1lrU05nZAmpzWHQtWHFJSEFRMF9tWVpRdEd70HQ5Wk8wSnY0R0VEQnVQdUU0MnpxNWxocUYyNmZAXSTUtVVNrMmh1ZAHZAQQno2ZA0VHR0lLWkk1N1R5RDFvM0dmVEpIYQZGZX\",\n                \"value_start\": 0,\n                \"value_end\": 162,\n                \"entropy\": 5.23164\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"+  \\\"password\\\": \\\"dkajco1\\\"\",\n                \"line_num\": 10,\n                \"path\": \"./tests/samples/iso_ir_111.patch\",\n                \"info\": \"FILE:./tests/samples/iso_ir_111.patch|RAW\",\n                \"variable\": \"password\",\n                \"variable_start\": 4,\n                \"variable_end\": 12,\n                \"value\": \"dkajco1\",\n                \"value_start\": 16,\n                \"value_end\": 23,\n                \"entropy\": 2.80735\n            }\n        ]\n    },\n    {\n        \"rule\": \"Jfrog Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"cmVmdGtuOjAxOjAxMjM0NTY3ODk6QWJjZGVmR2hpamtsbW5vUHFyc3R1dnd4eXow\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/jfrog_p\",\n                \"info\": \"FILE:./tests/samples/jfrog_p|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"cmVmdGtuOjAxOjAxMjM0NTY3ODk6QWJjZGVmR2hpamtsbW5vUHFyc3R1dnd4eXow\",\n                \"value_start\": 0,\n                \"value_end\": 64,\n                \"entropy\": 5.28891\n            }\n        ]\n    },\n    {\n        \"rule\": \"Jfrog Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"AKCp2UNCd8uK7hQoxZnFE4PGtRHnAcBHr43HgLcj7nJmWb4JhVUqBwa2iwXszftnogpo2EVFa\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/jfrog_p\",\n                \"info\": \"FILE:./tests/samples/jfrog_p|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"AKCp2UNCd8uK7hQoxZnFE4PGtRHnAcBHr43HgLcj7nJmWb4JhVUqBwa2iwXszftnogpo2EVFa\",\n                \"value_start\": 0,\n                \"value_end\": 73,\n                \"entropy\": 5.35394\n            }\n        ]\n    },\n    {\n        \"rule\": \"Jira / Confluence PAT token\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"TP: https://www.example.com/api/verification/version2322/token/OTI2NjA3NjU1NTI2Oh2DOnASdOHoIhEGyqIuYrdkYaQZ\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/jira_confluence_pat\",\n                \"info\": \"FILE:./tests/samples/jira_confluence_pat|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"OTI2NjA3NjU1NTI2Oh2DOnASdOHoIhEGyqIuYrdkYaQZ\",\n                \"value_start\": 63,\n                \"value_end\": 107,\n                \"entropy\": 4.60694\n            }\n        ]\n    },\n    {\n        \"rule\": \"Jira / Confluence PAT token\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"TP: \\\"image/png\\\": \\\"iVBORx09VIskhxhCe7sh03R1dnENPiB66xQSIZjEYN13vafX/OTI2NjA3NjU1NTI2Oh2DOnASdOHoIhEGyqIuYrdkYaQZ/hZwUteHsmN+z+aoEAAAAvL+Q5FSQGyqIuYrdkYaQZuW1TvI=\\\\n\\\",\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/jira_confluence_pat\",\n                \"info\": \"FILE:./tests/samples/jira_confluence_pat|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"OTI2NjA3NjU1NTI2Oh2DOnASdOHoIhEGyqIuYrdkYaQZ\",\n                \"value_start\": 67,\n                \"value_end\": 111,\n                \"entropy\": 4.60694\n            }\n        ]\n    },\n    {\n        \"rule\": \"JSON Web Key\",\n        \"severity\": \"medium\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"WwogICAgewogICAgICAgICJrdHkiOiAiRUMiLAogICAgICAgICJkIjogInNsYVFxeUhRUHVkT3BxMm1iRHNrdW04ck91OUlNa0xHaklOQUZXd2Zxci0iCiAgICB9LAogICAgewogICAgICAgICJrdHkiOiAiUlNBIiwKICAgICAgICAiZCI6ICItcGhaOE40R3V3WmNoeTdGQ01CMTRJQTM1ZEJVM3NXeTJPUnh3V044UGJLcUtPa1piOG1oNHZfZ1Fnd2c3ajE2dVNkOTFDT0JOUEdIMGhOemFIMmpPWSIKICAgIH0sCiAgICB7CiAgICAgICAgImt0eSI6ICJvY3QiLAogICAgICAgICJrIjogIldyTXdRZm9OYUhUZ1hVNWZadlJHQUQiCiAgICB9Cl0=\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/json_web_key\",\n                \"info\": \"FILE:./tests/samples/json_web_key|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"WwogICAgewogICAgICAgICJrdHkiOiAiRUMiLAogICAgICAgICJkIjogInNsYVFxeUhRUHVkT3BxMm1iRHNrdW04ck91OUlNa0xHaklOQUZXd2Zxci0iCiAgICB9LAogICAgewogICAgICAgICJrdHkiOiAiUlNBIiwKICAgICAgICAiZCI6ICItcGhaOE40R3V3WmNoeTdGQ01CMTRJQTM1ZEJVM3NXeTJPUnh3V044UGJLcUtPa1piOG1oNHZfZ1Fnd2c3ajE2dVNkOTFDT0JOUEdIMGhOemFIMmpPWSIKICAgIH0sCiAgICB7CiAgICAgICAgImt0eSI6ICJvY3QiLAogICAgICAgICJrIjogIldyTXdRZm9OYUhUZ1hVNWZadlJHQUQiCiAgICB9Cl0\",\n                \"value_start\": 0,\n                \"value_end\": 407,\n                \"entropy\": 5.27189\n            }\n        ]\n    },\n    {\n        \"rule\": \"JWK\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"        \\\"kty\\\": \\\"EC\\\",\",\n                \"line_num\": 3,\n                \"path\": \"./tests/samples/json_web_key\",\n                \"info\": \"FILE:./tests/samples/json_web_key|BASE64|RAW\",\n                \"variable\": \"kty\",\n                \"variable_start\": 9,\n                \"variable_end\": 12,\n                \"value\": \"\\\"kty\\\": \\\"EC\\\"\",\n                \"value_start\": 8,\n                \"value_end\": 19,\n                \"entropy\": 2.73216\n            },\n            {\n                \"line\": \"        \\\"d\\\": \\\"slaQqyHQPudOpq2mbDskum8rOu9IMkLGjINAFWwfqr-\\\"\",\n                \"line_num\": 4,\n                \"path\": \"./tests/samples/json_web_key\",\n                \"info\": \"FILE:./tests/samples/json_web_key|BASE64|RAW\",\n                \"variable\": \"d\",\n                \"variable_start\": 9,\n                \"variable_end\": 10,\n                \"value\": \"slaQqyHQPudOpq2mbDskum8rOu9IMkLGjINAFWwfqr-\",\n                \"value_start\": 14,\n                \"value_end\": 57,\n                \"entropy\": 4.87953\n            }\n        ]\n    },\n    {\n        \"rule\": \"JWK\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"        \\\"kty\\\": \\\"RSA\\\",\",\n                \"line_num\": 7,\n                \"path\": \"./tests/samples/json_web_key\",\n                \"info\": \"FILE:./tests/samples/json_web_key|BASE64|RAW\",\n                \"variable\": \"kty\",\n                \"variable_start\": 9,\n                \"variable_end\": 12,\n                \"value\": \"\\\"kty\\\": \\\"RSA\\\"\",\n                \"value_start\": 8,\n                \"value_end\": 20,\n                \"entropy\": 2.9183\n            },\n            {\n                \"line\": \"        \\\"d\\\": \\\"-phZ8N4GuwZchy7FCMB14IA35dBU3sWy2ORxwWN8PbKqKOkZb8mh4v_gQgwg7j16uSd91COBNPGH0hNzaH2jOY\\\"\",\n                \"line_num\": 8,\n                \"path\": \"./tests/samples/json_web_key\",\n                \"info\": \"FILE:./tests/samples/json_web_key|BASE64|RAW\",\n                \"variable\": \"d\",\n                \"variable_start\": 9,\n                \"variable_end\": 10,\n                \"value\": \"-phZ8N4GuwZchy7FCMB14IA35dBU3sWy2ORxwWN8PbKqKOkZb8mh4v_gQgwg7j16uSd91COBNPGH0hNzaH2jOY\",\n                \"value_start\": 14,\n                \"value_end\": 100,\n                \"entropy\": 5.43459\n            }\n        ]\n    },\n    {\n        \"rule\": \"JWK\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"        \\\"kty\\\": \\\"oct\\\",\",\n                \"line_num\": 11,\n                \"path\": \"./tests/samples/json_web_key\",\n                \"info\": \"FILE:./tests/samples/json_web_key|BASE64|RAW\",\n                \"variable\": \"kty\",\n                \"variable_start\": 9,\n                \"variable_end\": 12,\n                \"value\": \"\\\"kty\\\": \\\"oct\\\"\",\n                \"value_start\": 8,\n                \"value_end\": 20,\n                \"entropy\": 2.75163\n            },\n            {\n                \"line\": \"        \\\"k\\\": \\\"WrMwQfoNaHTgXU5fZvRGAD\\\"\",\n                \"line_num\": 12,\n                \"path\": \"./tests/samples/json_web_key\",\n                \"info\": \"FILE:./tests/samples/json_web_key|BASE64|RAW\",\n                \"variable\": \"k\",\n                \"variable_start\": 9,\n                \"variable_end\": 10,\n                \"value\": \"WrMwQfoNaHTgXU5fZvRGAD\",\n                \"value_start\": 14,\n                \"value_end\": 36,\n                \"entropy\": 4.36852\n            }\n        ]\n    },\n    {\n        \"rule\": \"JSON Web Token\",\n        \"severity\": \"medium\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"detected: eyJhbGciOiJSUzI1NiJ9Cg.eyJleHAiOjY1NTM2fQo.Ce7sh0ENPiBlE_dose0cBA\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/json_web_token\",\n                \"info\": \"FILE:./tests/samples/json_web_token|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"eyJhbGciOiJSUzI1NiJ9Cg.eyJleHAiOjY1NTM2fQo.Ce7sh0ENPiBlE_dose0cBA\",\n                \"value_start\": 10,\n                \"value_end\": 75,\n                \"entropy\": 5.03815\n            }\n        ]\n    },\n    {\n        \"rule\": \"JWK\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"        \\\"kty\\\": \\\"[EC]\\\",\",\n                \"line_num\": 3,\n                \"path\": \"./tests/samples/jwk.json\",\n                \"info\": \"FILE:./tests/samples/jwk.json|RAW\",\n                \"variable\": \"kty\",\n                \"variable_start\": 9,\n                \"variable_end\": 12,\n                \"value\": \"\\\"kty\\\": \\\"[EC\",\n                \"value_start\": 8,\n                \"value_end\": 19,\n                \"entropy\": 3.02717\n            },\n            {\n                \"line\": \"        \\\"d\\\": \\\"slaQqyHQPudOpq2mbDskum8rOu9IMkLGjINAFWwfqr-\\\"\",\n                \"line_num\": 4,\n                \"path\": \"./tests/samples/jwk.json\",\n                \"info\": \"FILE:./tests/samples/jwk.json|RAW\",\n                \"variable\": \"d\",\n                \"variable_start\": 9,\n                \"variable_end\": 10,\n                \"value\": \"slaQqyHQPudOpq2mbDskum8rOu9IMkLGjINAFWwfqr-\",\n                \"value_start\": 14,\n                \"value_end\": 57,\n                \"entropy\": 4.87953\n            }\n        ]\n    },\n    {\n        \"rule\": \"JWK\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"        \\\"kty\\\": \\\"RSA\\\",\",\n                \"line_num\": 7,\n                \"path\": \"./tests/samples/jwk.json\",\n                \"info\": \"FILE:./tests/samples/jwk.json|RAW\",\n                \"variable\": \"kty\",\n                \"variable_start\": 9,\n                \"variable_end\": 12,\n                \"value\": \"\\\"kty\\\": \\\"RSA\\\"\",\n                \"value_start\": 8,\n                \"value_end\": 20,\n                \"entropy\": 2.9183\n            },\n            {\n                \"line\": \"        \\\"d\\\": \\\"-phZ8N4GuwZchy7FCMB14IA35dBU3sWy2ORxwWN8PbKqKOkZb8mh4v_gQgwg7j16uSd91COBNPGH0hNzaH2jOY\\\"\",\n                \"line_num\": 10,\n                \"path\": \"./tests/samples/jwk.json\",\n                \"info\": \"FILE:./tests/samples/jwk.json|RAW\",\n                \"variable\": \"d\",\n                \"variable_start\": 9,\n                \"variable_end\": 10,\n                \"value\": \"-phZ8N4GuwZchy7FCMB14IA35dBU3sWy2ORxwWN8PbKqKOkZb8mh4v_gQgwg7j16uSd91COBNPGH0hNzaH2jOY\",\n                \"value_start\": 14,\n                \"value_end\": 100,\n                \"entropy\": 5.43459\n            }\n        ]\n    },\n    {\n        \"rule\": \"JWK\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"        \\\"kty\\\": \\\"oct\\\",\",\n                \"line_num\": 13,\n                \"path\": \"./tests/samples/jwk.json\",\n                \"info\": \"FILE:./tests/samples/jwk.json|RAW\",\n                \"variable\": \"kty\",\n                \"variable_start\": 9,\n                \"variable_end\": 12,\n                \"value\": \"\\\"kty\\\": \\\"oct\\\"\",\n                \"value_start\": 8,\n                \"value_end\": 20,\n                \"entropy\": 2.75163\n            },\n            {\n                \"line\": \"        \\\"k\\\": \\\"WrMwQfoNaHTgXU5fZvRGAD\\\"\",\n                \"line_num\": 16,\n                \"path\": \"./tests/samples/jwk.json\",\n                \"info\": \"FILE:./tests/samples/jwk.json|RAW\",\n                \"variable\": \"k\",\n                \"variable_start\": 9,\n                \"variable_end\": 10,\n                \"value\": \"WrMwQfoNaHTgXU5fZvRGAD\",\n                \"value_start\": 14,\n                \"value_end\": 36,\n                \"entropy\": 4.36852\n            }\n        ]\n    },\n    {\n        \"rule\": \"PEM Private Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"var PKEY = `-----BEGIN OPENSSH PRIVATE KEY-----\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/key.go\",\n                \"info\": \"FILE:./tests/samples/key.go|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"-----BEGIN OPENSSH PRIVATE KEY-----\",\n                \"value_start\": 12,\n                \"value_end\": 47,\n                \"entropy\": 3.58716\n            },\n            {\n                \"line\": \"b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAAAMwAAAAtzc2gtZWQyNTUx\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/key.go\",\n                \"info\": \"FILE:./tests/samples/key.go|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAAAMwAAAAtzc2gtZWQyNTUx\",\n                \"value_start\": 0,\n                \"value_end\": 76,\n                \"entropy\": 4.18903\n            },\n            {\n                \"line\": \"OQAAABWHkoN5N0V0OCSXOHWSOHAxRYMJSGc4clgVA0gJgFlIBAAAAJimRM7VpkTO1QAAAAtzc2gt\",\n                \"line_num\": 3,\n                \"path\": \"./tests/samples/key.go\",\n                \"info\": \"FILE:./tests/samples/key.go|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"OQAAABWHkoN5N0V0OCSXOHWSOHAxRYMJSGc4clgVA0gJgFlIBAAAAJimRM7VpkTO1QAAAAtzc2gt\",\n                \"value_start\": 0,\n                \"value_end\": 76,\n                \"entropy\": 4.74471\n            },\n            {\n                \"line\": \"ZWQyNTUxOQAAACBqIPMG94HL7zedFzsvi45mHS8ZuyLQXqvHpHobcdNCJAAAAFRoZXJlXzE1LU4w\",\n                \"line_num\": 4,\n                \"path\": \"./tests/samples/key.go\",\n                \"info\": \"FILE:./tests/samples/key.go|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"ZWQyNTUxOQAAACBqIPMG94HL7zedFzsvi45mHS8ZuyLQXqvHpHobcdNCJAAAAFRoZXJlXzE1LU4w\",\n                \"value_start\": 0,\n                \"value_end\": 76,\n                \"entropy\": 5.24555\n            },\n            {\n                \"line\": \"dF9UaGVLZXlZb3VBcmVMb29raW5nRm9S8wb3Mj0tZT1hc3A7ZHprejsuZm5tbmRmbmVuZm5pAAAA\",\n                \"line_num\": 5,\n                \"path\": \"./tests/samples/key.go\",\n                \"info\": \"FILE:./tests/samples/key.go|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"dF9UaGVLZXlZb3VBcmVMb29raW5nRm9S8wb3Mj0tZT1hc3A7ZHprejsuZm5tbmRmbmVuZm5pAAAA\",\n                \"value_start\": 0,\n                \"value_end\": 76,\n                \"entropy\": 4.94996\n            },\n            {\n                \"line\": \"EXRpemVuQGNyZWRzd2VlcGVyAQIDBA==\",\n                \"line_num\": 6,\n                \"path\": \"./tests/samples/key.go\",\n                \"info\": \"FILE:./tests/samples/key.go|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"EXRpemVuQGNyZWRzd2VlcGVyAQIDBA==\",\n                \"value_start\": 0,\n                \"value_end\": 32,\n                \"entropy\": 4.47641\n            },\n            {\n                \"line\": \"-----END OPENSSH PRIVATE KEY-----\",\n                \"line_num\": 7,\n                \"path\": \"./tests/samples/key.go\",\n                \"info\": \"FILE:./tests/samples/key.go|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"-----END OPENSSH PRIVATE KEY-----\",\n                \"value_start\": 0,\n                \"value_end\": 33,\n                \"entropy\": 3.46942\n            }\n        ]\n    },\n    {\n        \"rule\": \"Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"$key = 'gmUGWxhQW9KQWdhd0lCQVFRZ0ViVnpwrLzZYdDJPNG1PQjYxMXNPaFJ1\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/key.php\",\n                \"info\": \"FILE:./tests/samples/key.php|RAW\",\n                \"variable\": \"$key\",\n                \"variable_start\": 0,\n                \"variable_end\": 4,\n                \"value\": \"gmUGWxhQW9KQWdhd0lCQVFRZ0ViVnpwrLzZYdDJPNG1PQjYxMXNPaFJ1\",\n                \"value_start\": 8,\n                \"value_end\": 64,\n                \"entropy\": 4.96772\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"define( 'PASSWORD' , '2Arh5dA1Sn0ywiVYdnpwr3aLzZDJPNG' );\",\n                \"line_num\": 3,\n                \"path\": \"./tests/samples/key.php\",\n                \"info\": \"FILE:./tests/samples/key.php|RAW\",\n                \"variable\": \"PASSWORD\",\n                \"variable_start\": 9,\n                \"variable_end\": 17,\n                \"value\": \"2Arh5dA1Sn0ywiVYdnpwr3aLzZDJPNG\",\n                \"value_start\": 22,\n                \"value_end\": 53,\n                \"entropy\": 4.63162\n            }\n        ]\n    },\n    {\n        \"rule\": \"Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.96,\n        \"line_data_list\": [\n            {\n                \"line\": \"PKEY = '-----BEGIN OPENSSH PRIVATE KEY-----\\\\nb3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAAAMwAAAAtzc2gtZWQyNTUx\\\\nOQAAABWHkoN5N0V0OCSXOHWSOHAxRYMJSGc4clgVA0gJgFlIBAAAAJimRM7VpkTO1QAAAAtzc2gt\\\\nZWQyNTUxOQAAACBqIPMG94HL7zedFzsvi45mHS8ZuyLQXqvHpHobcdNCJAAAAFRoZXJlXzE1LU4w\\\\ndF9UaGVLZXlZb3VBcmVMb29raW5nRm9S8wb3Mj0tZT1hc3A7ZHprejsuZm5tbmRmbmVuZm5pAAAA\\\\nEXRpemVuQGNyZWRzd2VlcGVyAQIDBA==\\\\n-----END OPENSSH PRIVATE KEY-----'\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/key.py\",\n                \"info\": \"FILE:./tests/samples/key.py|STRUCT|STRING:2|RAW\",\n                \"variable\": \"PKEY\",\n                \"variable_start\": 0,\n                \"variable_end\": 4,\n                \"value\": \"-----BEGIN OPENSSH PRIVATE KEY-----\\\\nb3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAAAMwAAAAtzc2gtZWQyNTUx\\\\nOQAAABWHkoN5N0V0OCSXOHWSOHAxRYMJSGc4clgVA0gJgFlIBAAAAJimRM7VpkTO1QAAAAtzc2gt\\\\nZWQyNTUxOQAAACBqIPMG94HL7zedFzsvi45mHS8ZuyLQXqvHpHobcdNCJAAAAFRoZXJlXzE1LU4w\\\\ndF9UaGVLZXlZb3VBcmVMb29raW5nRm9S8wb3Mj0tZT1hc3A7ZHprejsuZm5tbmRmbmVuZm5pAAAA\\\\nEXRpemVuQGNyZWRzd2VlcGVyAQIDBA==\\\\n-----END OPENSSH PRIVATE KEY-----\",\n                \"value_start\": 8,\n                \"value_end\": 424,\n                \"entropy\": 5.55221\n            }\n        ]\n    },\n    {\n        \"rule\": \"PEM Private Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"PKEY = '-----BEGIN OPENSSH PRIVATE KEY-----\\\\nb3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAAAMwAAAAtzc2gtZWQyNTUx\\\\nOQAAABWHkoN5N0V0OCSXOHWSOHAxRYMJSGc4clgVA0gJgFlIBAAAAJimRM7VpkTO1QAAAAtzc2gt\\\\nZWQyNTUxOQAAACBqIPMG94HL7zedFzsvi45mHS8ZuyLQXqvHpHobcdNCJAAAAFRoZXJlXzE1LU4w\\\\ndF9UaGVLZXlZb3VBcmVMb29raW5nRm9S8wb3Mj0tZT1hc3A7ZHprejsuZm5tbmRmbmVuZm5pAAAA\\\\nEXRpemVuQGNyZWRzd2VlcGVyAQIDBA==\\\\n-----END OPENSSH PRIVATE KEY-----'\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/key.py\",\n                \"info\": \"FILE:./tests/samples/key.py|STRUCT|STRING:2|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"-----BEGIN OPENSSH PRIVATE KEY-----\\\\nb3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAAAMwAAAAtzc2gtZWQyNTUx\\\\nOQAAABWHkoN5N0V0OCSXOHWSOHAxRYMJSGc4clgVA0gJgFlIBAAAAJimRM7VpkTO1QAAAAtzc2gt\\\\nZWQyNTUxOQAAACBqIPMG94HL7zedFzsvi45mHS8ZuyLQXqvHpHobcdNCJAAAAFRoZXJlXzE1LU4w\\\\ndF9UaGVLZXlZb3VBcmVMb29raW5nRm9S8wb3Mj0tZT1hc3A7ZHprejsuZm5tbmRmbmVuZm5pAAAA\\\\nEXRpemVuQGNyZWRzd2VlcGVyAQIDBA==\\\\n-----END OPENSSH PRIVATE KEY-----\",\n                \"value_start\": 8,\n                \"value_end\": 424,\n                \"entropy\": 5.55221\n            }\n        ]\n    },\n    {\n        \"rule\": \"Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.993,\n        \"line_data_list\": [\n            {\n                \"line\": \"pkey = (\\\"LS0tLS1CRUdJTiBQUklWQVRFIENDcUdTTTQ5QXdFSEJHMHdhd0lCQVFRZ0ViVn\\\"\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/key.py\",\n                \"info\": \"FILE:./tests/samples/key.py|RAW\",\n                \"variable\": \"pkey\",\n                \"variable_start\": 0,\n                \"variable_end\": 4,\n                \"value\": \"LS0tLS1CRUdJTiBQUklWQVRFIENDcUdTTTQ5QXdFSEJHMHdhd0lCQVFRZ0ViVn\",\n                \"value_start\": 9,\n                \"value_end\": 71,\n                \"entropy\": 4.71236\n            }\n        ]\n    },\n    {\n        \"rule\": \"Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"pkey = 'LS0tLS1CRUdJTiBQUklWQVRFIENDcUdTTTQ5QXdFSEJHMHdhd0lCQVFRZ0ViVnpmUGWxhQW9KQWwrLzZYdDJPNG1PQjYxMXNPaFJBTkNBQVNnRlRLandKQUFVOTVnKysvdnpLV0hrekFWbU5NSQp0QjV2VGpaT09Jd25FYjcwTXNXWkZJeVVGRDFQOUd3c3R6NCtha0hYN3ZJOEJINmhIbUJtZmVRbAotLS0tLUVORCBQUklWJNR0J5cUdTTTQ5QW5aUHhmQXl4cUUKWlYwNdFR0QVRFIEtFWS0tLS0tCgtFWS0tLS0tCk1JR0hBZ0VBTU=='\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/key.py\",\n                \"info\": \"FILE:./tests/samples/key.py|STRUCT|STRING:0|RAW\",\n                \"variable\": \"pkey\",\n                \"variable_start\": 0,\n                \"variable_end\": 4,\n                \"value\": \"LS0tLS1CRUdJTiBQUklWQVRFIENDcUdTTTQ5QXdFSEJHMHdhd0lCQVFRZ0ViVnpmUGWxhQW9KQWwrLzZYdDJPNG1PQjYxMXNPaFJBTkNBQVNnRlRLandKQUFVOTVnKysvdnpLV0hrekFWbU5NSQp0QjV2VGpaT09Jd25FYjcwTXNXWkZJeVVGRDFQOUd3c3R6NCtha0hYN3ZJOEJINmhIbUJtZmVRbAotLS0tLUVORCBQUklWJNR0J5cUdTTTQ5QW5aUHhmQXl4cUUKWlYwNdFR0QVRFIEtFWS0tLS0tCgtFWS0tLS0tCk1JR0hBZ0VBTU==\",\n                \"value_start\": 8,\n                \"value_end\": 332,\n                \"entropy\": 5.42881\n            }\n        ]\n    },\n    {\n        \"rule\": \"Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"print(\\\"https://example.com/api/js?key=dhd0lCQVFRZ0ViVnpmUGWxhQW9KQWwrLzZYdDJPNG1PQjYxMXNPaFJB&bug=true\\\")\",\n                \"line_num\": 7,\n                \"path\": \"./tests/samples/key.py\",\n                \"info\": \"FILE:./tests/samples/key.py|RAW\",\n                \"variable\": \"key\",\n                \"variable_start\": 34,\n                \"variable_end\": 37,\n                \"value\": \"dhd0lCQVFRZ0ViVnpmUGWxhQW9KQWwrLzZYdDJPNG1PQjYxMXNPaFJB\",\n                \"value_start\": 38,\n                \"value_end\": 93,\n                \"entropy\": 4.96282\n            }\n        ]\n    },\n    {\n        \"rule\": \"PEM Private Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"PKEY = \\\"\\\"\\\"-----BEGIN OPENSSH PRIVATE KEY-----\",\n                \"line_num\": 9,\n                \"path\": \"./tests/samples/key.py\",\n                \"info\": \"FILE:./tests/samples/key.py|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"-----BEGIN OPENSSH PRIVATE KEY-----\",\n                \"value_start\": 10,\n                \"value_end\": 45,\n                \"entropy\": 3.58716\n            },\n            {\n                \"line\": \"b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAAAMwAAAAtzc2gtZWQyNTUx\",\n                \"line_num\": 10,\n                \"path\": \"./tests/samples/key.py\",\n                \"info\": \"FILE:./tests/samples/key.py|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAAAMwAAAAtzc2gtZWQyNTUx\",\n                \"value_start\": 0,\n                \"value_end\": 76,\n                \"entropy\": 4.18903\n            },\n            {\n                \"line\": \"OQAAABWHkoN5N0V0OCSXOHWSOHAxRYMJSGc4clgVA0gJgFlIBAAAAJimRM7VpkTO1QAAAAtzc2gt\",\n                \"line_num\": 11,\n                \"path\": \"./tests/samples/key.py\",\n                \"info\": \"FILE:./tests/samples/key.py|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"OQAAABWHkoN5N0V0OCSXOHWSOHAxRYMJSGc4clgVA0gJgFlIBAAAAJimRM7VpkTO1QAAAAtzc2gt\",\n                \"value_start\": 0,\n                \"value_end\": 76,\n                \"entropy\": 4.74471\n            },\n            {\n                \"line\": \"ZWQyNTUxOQAAACBqIPMG94HL7zedFzsvi45mHS8ZuyLQXqvHpHobcdNCJAAAAFRoZXJlXzE1LU4w\",\n                \"line_num\": 12,\n                \"path\": \"./tests/samples/key.py\",\n                \"info\": \"FILE:./tests/samples/key.py|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"ZWQyNTUxOQAAACBqIPMG94HL7zedFzsvi45mHS8ZuyLQXqvHpHobcdNCJAAAAFRoZXJlXzE1LU4w\",\n                \"value_start\": 0,\n                \"value_end\": 76,\n                \"entropy\": 5.24555\n            },\n            {\n                \"line\": \"dF9UaGVLZXlZb3VBcmVMb29raW5nRm9S8wb3Mj0tZT1hc3A7ZHprejsuZm5tbmRmbmVuZm5pAAAA\",\n                \"line_num\": 13,\n                \"path\": \"./tests/samples/key.py\",\n                \"info\": \"FILE:./tests/samples/key.py|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"dF9UaGVLZXlZb3VBcmVMb29raW5nRm9S8wb3Mj0tZT1hc3A7ZHprejsuZm5tbmRmbmVuZm5pAAAA\",\n                \"value_start\": 0,\n                \"value_end\": 76,\n                \"entropy\": 4.94996\n            },\n            {\n                \"line\": \"EXRpemVuQGNyZWRzd2VlcGVyAQIDBA==\",\n                \"line_num\": 14,\n                \"path\": \"./tests/samples/key.py\",\n                \"info\": \"FILE:./tests/samples/key.py|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"EXRpemVuQGNyZWRzd2VlcGVyAQIDBA==\",\n                \"value_start\": 0,\n                \"value_end\": 32,\n                \"entropy\": 4.47641\n            },\n            {\n                \"line\": \"-----END OPENSSH PRIVATE KEY-----\\\"\\\"\\\"\",\n                \"line_num\": 15,\n                \"path\": \"./tests/samples/key.py\",\n                \"info\": \"FILE:./tests/samples/key.py|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"-----END OPENSSH PRIVATE KEY-----\",\n                \"value_start\": 0,\n                \"value_end\": 33,\n                \"entropy\": 3.46942\n            }\n        ]\n    },\n    {\n        \"rule\": \"Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.994,\n        \"line_data_list\": [\n            {\n                \"line\": \"api_key = 'QMEFk2TZGlkGcOkG-R9UwV1ZmlNkWEYvQzF'\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/key_value.json\",\n                \"info\": \"FILE:./tests/samples/key_value.json|STRUCT|KEYWORD\",\n                \"variable\": \"api_key\",\n                \"variable_start\": 0,\n                \"variable_end\": 7,\n                \"value\": \"QMEFk2TZGlkGcOkG-R9UwV1ZmlNkWEYvQzF\",\n                \"value_start\": 11,\n                \"value_end\": 46,\n                \"entropy\": 4.47914\n            }\n        ]\n    },\n    {\n        \"rule\": \"API\",\n        \"severity\": \"low\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.994,\n        \"line_data_list\": [\n            {\n                \"line\": \"api_key = 'QMEFk2TZGlkGcOkG-R9UwV1ZmlNkWEYvQzF'\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/key_value.json\",\n                \"info\": \"FILE:./tests/samples/key_value.json|STRUCT|KEYWORD\",\n                \"variable\": \"api_key\",\n                \"variable_start\": 0,\n                \"variable_end\": 7,\n                \"value\": \"QMEFk2TZGlkGcOkG-R9UwV1ZmlNkWEYvQzF\",\n                \"value_start\": 11,\n                \"value_end\": 46,\n                \"entropy\": 4.47914\n            }\n        ]\n    },\n    {\n        \"rule\": \"LLAMA API Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"llx-gOpoyW2vlgfBcYEYlSu8x3Tk3lrtW1AWJU8nXQ6XOCZah4h1\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/llama\",\n                \"info\": \"FILE:./tests/samples/llama|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"llx-gOpoyW2vlgfBcYEYlSu8x3Tk3lrtW1AWJU8nXQ6XOCZah4h1\",\n                \"value_start\": 0,\n                \"value_end\": 52,\n                \"entropy\": 5.03958\n            }\n        ]\n    },\n    {\n        \"rule\": \"LLAMA API Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"llx-vYx_tfO1AgW73_hwAET-u7p7YVDTBERNn4ij4a8wrDrGM6RT\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/llama\",\n                \"info\": \"FILE:./tests/samples/llama|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"llx-vYx_tfO1AgW73_hwAET-u7p7YVDTBERNn4ij4a8wrDrGM6RT\",\n                \"value_start\": 0,\n                \"value_end\": 52,\n                \"entropy\": 5.05602\n            }\n        ]\n    },\n    {\n        \"rule\": \"MailChimp API Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"mailchimp = \\\"LRINSm5Vdi9BMCzCWSJ8M3TMysUHwDzB-us36\\\"\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/mailchimp_key\",\n                \"info\": \"FILE:./tests/samples/mailchimp_key|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"LRINSm5Vdi9BMCzCWSJ8M3TMysUHwDzB-us36\",\n                \"value_start\": 13,\n                \"value_end\": 50,\n                \"entropy\": 4.75662\n            }\n        ]\n    },\n    {\n        \"rule\": \"MailGun API Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"key-a25a4ac62a074cd52c668c6b9937cf40\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/mailgun\",\n                \"info\": \"FILE:./tests/samples/mailgun|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"key-a25a4ac62a074cd52c668c6b9937cf40\",\n                \"value_start\": 0,\n                \"value_end\": 36,\n                \"entropy\": 3.91661\n            }\n        ]\n    },\n    {\n        \"rule\": \"MailGun API Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"a25a4ac62a074cd52c668c6b9937cf40-432f2836-db15b420\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/mailgun\",\n                \"info\": \"FILE:./tests/samples/mailgun|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"a25a4ac62a074cd52c668c6b9937cf40-432f2836-db15b420\",\n                \"value_start\": 0,\n                \"value_end\": 50,\n                \"entropy\": 3.85669\n            }\n        ]\n    },\n    {\n        \"rule\": \"Google API Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"AIzaGiReoGiCrackleCrackle12315618112315\\u0000\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/multifile.patch\",\n                \"info\": \"FILE:./tests/samples/multifile.patch|PATCH:google_api_key_with_null_terminator:added|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"AIzaGiReoGiCrackleCrackle12315618112315\",\n                \"value_start\": 0,\n                \"value_end\": 39,\n                \"entropy\": 4.13105\n            }\n        ]\n    },\n    {\n        \"rule\": \"Google API Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"AIzaGiReoGiCrackleCrackle12315618112315\\u0000\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/multifile.patch\",\n                \"info\": \"FILE:./tests/samples/multifile.patch|PATCH:google_api_key_with_null_terminator:deleted|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"AIzaGiReoGiCrackleCrackle12315618112315\",\n                \"value_start\": 0,\n                \"value_end\": 39,\n                \"entropy\": 4.13105\n            }\n        ]\n    },\n    {\n        \"rule\": \"Dynatrace API Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"dt0c01.ST2EY72KQINMH574WMNVI7YN.G3DFPBEJYMODIDAEX454M7YWBUVEFOWKPRVMWFASS64NFH52PX6BNDVFFM572RZM\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/multifile.patch\",\n                \"info\": \"FILE:./tests/samples/multifile.patch|PATCH:dynatrace_api.zip:added|ZIP:dynatrace_api|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"dt0c01.ST2EY72KQINMH574WMNVI7YN.G3DFPBEJYMODIDAEX454M7YWBUVEFOWKPRVMWFASS64NFH52PX6BNDVFFM572RZM\",\n                \"value_start\": 0,\n                \"value_end\": 96,\n                \"entropy\": 4.92454\n            }\n        ]\n    },\n    {\n        \"rule\": \"Dynatrace API Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"dt0c01.ST2EY72KQINMH574WMNVI7YN.G3DFPBEJYMODIDAEX454M7YWBUVEFOWKPRVMWFASS64NFH52PX6BNDVFFM572RZM\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/multifile.patch\",\n                \"info\": \"FILE:./tests/samples/multifile.patch|PATCH:dynatrace_api.zip:deleted|ZIP:dynatrace_api|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"dt0c01.ST2EY72KQINMH574WMNVI7YN.G3DFPBEJYMODIDAEX454M7YWBUVEFOWKPRVMWFASS64NFH52PX6BNDVFFM572RZM\",\n                \"value_start\": 0,\n                \"value_end\": 96,\n                \"entropy\": 4.92454\n            }\n        ]\n    },\n    {\n        \"rule\": \"AWS Client ID\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"+  clid = \\\"AKIAQWADE5R42RDZ4JEM\\\"\",\n                \"line_num\": 45,\n                \"path\": \"./tests/samples/multifile.patch\",\n                \"info\": \"FILE:./tests/samples/multifile.patch|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"AKIAQWADE5R42RDZ4JEM\",\n                \"value_start\": 11,\n                \"value_end\": 31,\n                \"entropy\": 3.68418\n            }\n        ]\n    },\n    {\n        \"rule\": \"AWS Multi\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"+  clid = \\\"AKIAQWADE5R42RDZ4JEM\\\"\",\n                \"line_num\": 45,\n                \"path\": \"./tests/samples/multifile.patch\",\n                \"info\": \"FILE:./tests/samples/multifile.patch|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"AKIAQWADE5R42RDZ4JEM\",\n                \"value_start\": 11,\n                \"value_end\": 31,\n                \"entropy\": 3.68418\n            },\n            {\n                \"line\": \"+  token = \\\"V84C7sDU001tFFodKU95USNy97TkqXymnvsFmYhQ\\\"\",\n                \"line_num\": 46,\n                \"path\": \"./tests/samples/multifile.patch\",\n                \"info\": \"FILE:./tests/samples/multifile.patch|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"V84C7sDU001tFFodKU95USNy97TkqXymnvsFmYhQ\",\n                \"value_start\": 12,\n                \"value_end\": 52,\n                \"entropy\": 4.78418\n            }\n        ]\n    },\n    {\n        \"rule\": \"Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"+  token = \\\"V84C7sDU001tFFodKU95USNy97TkqXymnvsFmYhQ\\\"\",\n                \"line_num\": 46,\n                \"path\": \"./tests/samples/multifile.patch\",\n                \"info\": \"FILE:./tests/samples/multifile.patch|RAW\",\n                \"variable\": \"token\",\n                \"variable_start\": 3,\n                \"variable_end\": 8,\n                \"value\": \"V84C7sDU001tFFodKU95USNy97TkqXymnvsFmYhQ\",\n                \"value_start\": 12,\n                \"value_end\": 52,\n                \"entropy\": 4.78418\n            }\n        ]\n    },\n    {\n        \"rule\": \"AWS Client ID\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"+  clid = \\\"AKIAQWADE5R42RDZ4JEM\\\"\",\n                \"line_num\": 8,\n                \"path\": \"./tests/samples/multiline.patch\",\n                \"info\": \"FILE:./tests/samples/multiline.patch|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"AKIAQWADE5R42RDZ4JEM\",\n                \"value_start\": 11,\n                \"value_end\": 31,\n                \"entropy\": 3.68418\n            }\n        ]\n    },\n    {\n        \"rule\": \"AWS Multi\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"+  clid = \\\"AKIAQWADE5R42RDZ4JEM\\\"\",\n                \"line_num\": 8,\n                \"path\": \"./tests/samples/multiline.patch\",\n                \"info\": \"FILE:./tests/samples/multiline.patch|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"AKIAQWADE5R42RDZ4JEM\",\n                \"value_start\": 11,\n                \"value_end\": 31,\n                \"entropy\": 3.68418\n            },\n            {\n                \"line\": \"+  token = \\\"V84C7sDU001tFFodKU95USNy97TkqXymnvsFmYhQ\\\"\",\n                \"line_num\": 9,\n                \"path\": \"./tests/samples/multiline.patch\",\n                \"info\": \"FILE:./tests/samples/multiline.patch|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"V84C7sDU001tFFodKU95USNy97TkqXymnvsFmYhQ\",\n                \"value_start\": 12,\n                \"value_end\": 52,\n                \"entropy\": 4.78418\n            }\n        ]\n    },\n    {\n        \"rule\": \"Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"+  token = \\\"V84C7sDU001tFFodKU95USNy97TkqXymnvsFmYhQ\\\"\",\n                \"line_num\": 9,\n                \"path\": \"./tests/samples/multiline.patch\",\n                \"info\": \"FILE:./tests/samples/multiline.patch|RAW\",\n                \"variable\": \"token\",\n                \"variable_start\": 3,\n                \"variable_end\": 8,\n                \"value\": \"V84C7sDU001tFFodKU95USNy97TkqXymnvsFmYhQ\",\n                \"value_start\": 12,\n                \"value_end\": 52,\n                \"entropy\": 4.78418\n            }\n        ]\n    },\n    {\n        \"rule\": \"Netlify Token\",\n        \"severity\": \"medium\",\n        \"confidence\": \"weak\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"nfp_0i5OM4MV7L02wV3E6rrwiTwhvEkkkPJ9C3EP\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/netlify\",\n                \"info\": \"FILE:./tests/samples/netlify|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"nfp_0i5OM4MV7L02wV3E6rrwiTwhvEkkkPJ9C3EP\",\n                \"value_start\": 0,\n                \"value_end\": 40,\n                \"entropy\": 4.61531\n            }\n        ]\n    },\n    {\n        \"rule\": \"NKEY Seed\",\n        \"severity\": \"high\",\n        \"confidence\": \"weak\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"// SUAML2GCZ7IK7E7UD4VZ7ELPZW7DK2ZNL35WSMW3IORHC3BWBSDQXUQRBU\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/nkey_seed\",\n                \"info\": \"FILE:./tests/samples/nkey_seed|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"SUAML2GCZ7IK7E7UD4VZ7ELPZW7DK2ZNL35WSMW3IORHC3BWBSDQXUQRBU\",\n                \"value_start\": 3,\n                \"value_end\": 61,\n                \"entropy\": 4.55826\n            }\n        ]\n    },\n    {\n        \"rule\": \"Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"key_multi = 'KJHfdjs8767gr54534wsFHGf5hJKhK\\\\nU7yguyuyFHGf5=='\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/nonce.py\",\n                \"info\": \"FILE:./tests/samples/nonce.py|STRUCT|STRING:3|RAW\",\n                \"variable\": \"key_multi\",\n                \"variable_start\": 0,\n                \"variable_end\": 9,\n                \"value\": \"KJHfdjs8767gr54534wsFHGf5hJKhK\\\\nU7yguyuyFHGf5==\",\n                \"value_start\": 13,\n                \"value_end\": 60,\n                \"entropy\": 4.49556\n            }\n        ]\n    },\n    {\n        \"rule\": \"Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"key_wrap = 'KJHhJKhKU7yguyuyfrtsdESffhjgkhYTfdjs8Gf5jlli=='\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/nonce.py\",\n                \"info\": \"FILE:./tests/samples/nonce.py|STRUCT|STRING:2|RAW\",\n                \"variable\": \"key_wrap\",\n                \"variable_start\": 0,\n                \"variable_end\": 8,\n                \"value\": \"KJHhJKhKU7yguyuyfrtsdESffhjgkhYTfdjs8Gf5jlli==\",\n                \"value_start\": 12,\n                \"value_end\": 58,\n                \"entropy\": 4.48282\n            }\n        ]\n    },\n    {\n        \"rule\": \"Nonce\",\n        \"severity\": \"low\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"nonce = 'bsfcvir57nt40rydvtbhs8lzbgljmet5'\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/nonce.py\",\n                \"info\": \"FILE:./tests/samples/nonce.py|RAW\",\n                \"variable\": \"nonce\",\n                \"variable_start\": 0,\n                \"variable_end\": 5,\n                \"value\": \"bsfcvir57nt40rydvtbhs8lzbgljmet5\",\n                \"value_start\": 9,\n                \"value_end\": 41,\n                \"entropy\": 4.39032\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"password: F1lT3ReDw17hQoT3s\",\n                \"line_num\": 3,\n                \"path\": \"./tests/samples/nonce.py\",\n                \"info\": \"FILE:./tests/samples/nonce.py|RAW\",\n                \"variable\": \"password\",\n                \"variable_start\": 0,\n                \"variable_end\": 8,\n                \"value\": \"F1lT3ReDw17hQoT3s\",\n                \"value_start\": 10,\n                \"value_end\": 27,\n                \"entropy\": 3.73452\n            }\n        ]\n    },\n    {\n        \"rule\": \"Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"key_wrap = 'KJHhJKhKU7yguyuyfrtsdESffhjgkhYT\\\\\",\n                \"line_num\": 7,\n                \"path\": \"./tests/samples/nonce.py\",\n                \"info\": \"FILE:./tests/samples/nonce.py|RAW\",\n                \"variable\": \"key_wrap\",\n                \"variable_start\": 0,\n                \"variable_end\": 8,\n                \"value\": \"KJHhJKhKU7yguyuyfrtsdESffhjgkhYT\",\n                \"value_start\": 12,\n                \"value_end\": 44,\n                \"entropy\": 4.11673\n            }\n        ]\n    },\n    {\n        \"rule\": \"Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"key_multi = '''KJHfdjs8767gr54534wsFHGf5hJKhK\",\n                \"line_num\": 11,\n                \"path\": \"./tests/samples/nonce.py\",\n                \"info\": \"FILE:./tests/samples/nonce.py|RAW\",\n                \"variable\": \"key_multi\",\n                \"variable_start\": 0,\n                \"variable_end\": 9,\n                \"value\": \"KJHfdjs8767gr54534wsFHGf5hJKhK\",\n                \"value_start\": 15,\n                \"value_end\": 45,\n                \"entropy\": 4.12323\n            }\n        ]\n    },\n    {\n        \"rule\": \"Notion Integration Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"ntn_123465789l62YMNJKXLKpjiCVEXbx4CBxkfprOA96Y15wZ\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/notion\",\n                \"info\": \"FILE:./tests/samples/notion|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"ntn_123465789l62YMNJKXLKpjiCVEXbx4CBxkfprOA96Y15wZ\",\n                \"value_start\": 0,\n                \"value_end\": 50,\n                \"entropy\": 5.06876\n            }\n        ]\n    },\n    {\n        \"rule\": \"NPM Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"positive: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\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/npm\",\n                \"info\": \"FILE:./tests/samples/npm|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"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\",\n                \"value_start\": 9,\n                \"value_end\": 49,\n                \"entropy\": 4.80306\n            }\n        ]\n    },\n    {\n        \"rule\": \"NTLM Token\",\n        \"severity\": \"medium\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"Positive: TlRMTVNTUAADAAAAGAAYAFYAAAAYABgAbgAAAAAAAABIAAAADgAOAEgAAAAAAAAAVgAAAAAAAACGAAAARmFLZURhVGEAAAAPQwByAGUAZABTAHcAZQBlAHCgZQBy3wAAAAAAAAAAAAAAAAAAAAAph0MQmDQmCVaJEmhiOGSYIXNJMoc2KLo=\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/ntlm\",\n                \"info\": \"FILE:./tests/samples/ntlm|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"TlRMTVNTUAADAAAAGAAYAFYAAAAYABgAbgAAAAAAAABIAAAADgAOAEgAAAAAAAAAVgAAAAAAAACGAAAARmFLZURhVGEAAAAPQwByAGUAZABTAHcAZQBlAHCgZQBy3wAAAAAAAAAAAAAAAAAAAAAph0MQmDQmCVaJEmhiOGSYIXNJMoc2KLo=\",\n                \"value_start\": 10,\n                \"value_end\": 190,\n                \"entropy\": 3.79713\n            }\n        ]\n    },\n    {\n        \"rule\": \"NuGet API key\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"k = 'oy2mlf2v7jl2firuegfqwzc4zxyebz3ethzd14g4hw4iam'\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/nuget_api_key\",\n                \"info\": \"FILE:./tests/samples/nuget_api_key|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"oy2mlf2v7jl2firuegfqwzc4zxyebz3ethzd14g4hw4iam\",\n                \"value_start\": 5,\n                \"value_end\": 51,\n                \"entropy\": 4.56129\n            }\n        ]\n    },\n    {\n        \"rule\": \"OpenAI Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"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\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/open_ai_token\",\n                \"info\": \"FILE:./tests/samples/open_ai_token|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"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\",\n                \"value_start\": 0,\n                \"value_end\": 51,\n                \"entropy\": 5.22625\n            }\n        ]\n    },\n    {\n        \"rule\": \"OpenAI Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"sk-proj-qa25MV9c7Qu0EjDIEWdcT3BlbkFJ83uCF0K4yw7RzpY39bio\",\n                \"line_num\": 3,\n                \"path\": \"./tests/samples/open_ai_token\",\n                \"info\": \"FILE:./tests/samples/open_ai_token|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"sk-proj-qa25MV9c7Qu0EjDIEWdcT3BlbkFJ83uCF0K4yw7RzpY39bio\",\n                \"value_start\": 0,\n                \"value_end\": 56,\n                \"entropy\": 5.25816\n            }\n        ]\n    },\n    {\n        \"rule\": \"OpenAI Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"sk-proj-asdfgasdfasdfdcQbzdcT3BlbkFJ83uCasdfgasdfgasdfjk\",\n                \"line_num\": 7,\n                \"path\": \"./tests/samples/open_ai_token\",\n                \"info\": \"FILE:./tests/samples/open_ai_token|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"sk-proj-asdfgasdfasdfdcQbzdcT3BlbkFJ83uCasdfgasdfgasdfjk\",\n                \"value_start\": 0,\n                \"value_end\": 56,\n                \"entropy\": 4.12555\n            }\n        ]\n    },\n    {\n        \"rule\": \"OTP / 2FA Secret\",\n        \"severity\": \"info\",\n        \"confidence\": \"weak\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"WXFES7QNTET5DQYC\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/otp_2fa\",\n                \"info\": \"FILE:./tests/samples/otp_2fa|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"WXFES7QNTET5DQYC\",\n                \"value_start\": 0,\n                \"value_end\": 16,\n                \"entropy\": 3.625\n            }\n        ]\n    },\n    {\n        \"rule\": \"OTP / 2FA Secret\",\n        \"severity\": \"info\",\n        \"confidence\": \"weak\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"JERZOR2XLQYTUQG7YBZYHLK3KSLRYTWB\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/otp_2fa\",\n                \"info\": \"FILE:./tests/samples/otp_2fa|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"JERZOR2XLQYTUQG7YBZYHLK3KSLRYTWB\",\n                \"value_start\": 0,\n                \"value_end\": 32,\n                \"entropy\": 4.14032\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.99,\n        \"line_data_list\": [\n            {\n                \"line\": \"gi_reo_gi_passwd = \\\"cAc48k1Zd7\\\"; password_confirmation = \\\"cAc48k1Zd7\\\";\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/passwd.groovy\",\n                \"info\": \"FILE:./tests/samples/passwd.groovy|RAW\",\n                \"variable\": \"gi_reo_gi_passwd\",\n                \"variable_start\": 0,\n                \"variable_end\": 16,\n                \"value\": \"cAc48k1Zd7\",\n                \"value_start\": 20,\n                \"value_end\": 30,\n                \"entropy\": 3.12193\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"gi_reo_gi_passwd = \\\"cAc48k1Zd7\\\"; password_confirmation = \\\"cAc48k1Zd7\\\";\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/passwd.groovy\",\n                \"info\": \"FILE:./tests/samples/passwd.groovy|RAW\",\n                \"variable\": \"password_confirmation\",\n                \"variable_start\": 33,\n                \"variable_end\": 54,\n                \"value\": \"cAc48k1Zd7\",\n                \"value_start\": 58,\n                \"value_end\": 68,\n                \"entropy\": 3.12193\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.993,\n        \"line_data_list\": [\n            {\n                \"line\": \"password = \\\"cackle!\\\"\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/password.gradle\",\n                \"info\": \"FILE:./tests/samples/password.gradle|RAW\",\n                \"variable\": \"password\",\n                \"variable_start\": 0,\n                \"variable_end\": 8,\n                \"value\": \"cackle!\",\n                \"value_start\": 12,\n                \"value_end\": 19,\n                \"entropy\": 2.52164\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"+  \\\"password\\\": \\\"dkajco1\\\"\",\n                \"line_num\": 9,\n                \"path\": \"./tests/samples/password.patch\",\n                \"info\": \"FILE:./tests/samples/password.patch|RAW\",\n                \"variable\": \"password\",\n                \"variable_start\": 4,\n                \"variable_end\": 12,\n                \"value\": \"dkajco1\",\n                \"value_start\": 16,\n                \"value_end\": 23,\n                \"entropy\": 2.80735\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"password = \\\"MYPSWRD!@#$%^&*\\\"\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/password.tfvars\",\n                \"info\": \"FILE:./tests/samples/password.tfvars|RAW\",\n                \"variable\": \"password\",\n                \"variable_start\": 0,\n                \"variable_end\": 8,\n                \"value\": \"MYPSWRD!@#$%^&*\",\n                \"value_start\": 12,\n                \"value_end\": 27,\n                \"entropy\": 3.90689\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.996,\n        \"line_data_list\": [\n            {\n                \"line\": \"MYSQLPASS: Ce7shE0ENPiBlE_EdEose0cBAA\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/password_TRUE\",\n                \"info\": \"FILE:./tests/samples/password_TRUE|RAW\",\n                \"variable\": \"MYSQLPASS\",\n                \"variable_start\": 0,\n                \"variable_end\": 9,\n                \"value\": \"Ce7shE0ENPiBlE_EdEose0cBAA\",\n                \"value_start\": 11,\n                \"value_end\": 37,\n                \"entropy\": 3.8693\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.997,\n        \"line_data_list\": [\n            {\n                \"line\": \"my_pw: nCzx8A8#!\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/password_TRUE\",\n                \"info\": \"FILE:./tests/samples/password_TRUE|RAW\",\n                \"variable\": \"my_pw\",\n                \"variable_start\": 0,\n                \"variable_end\": 5,\n                \"value\": \"nCzx8A8#!\",\n                \"value_start\": 7,\n                \"value_end\": 16,\n                \"entropy\": 2.9477\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"val password: String = \\\"exord13Paw64\\\", // scala\",\n                \"line_num\": 3,\n                \"path\": \"./tests/samples/password_TRUE\",\n                \"info\": \"FILE:./tests/samples/password_TRUE|RAW\",\n                \"variable\": \"password\",\n                \"variable_start\": 4,\n                \"variable_end\": 12,\n                \"value\": \"exord13Paw64\",\n                \"value_start\": 24,\n                \"value_end\": 36,\n                \"entropy\": 3.58496\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.993,\n        \"line_data_list\": [\n            {\n                \"line\": \"def connect(passwd: str = \\\"cq2tPr1a2\\\"): # python default arg\",\n                \"line_num\": 4,\n                \"path\": \"./tests/samples/password_TRUE\",\n                \"info\": \"FILE:./tests/samples/password_TRUE|RAW\",\n                \"variable\": \"passwd\",\n                \"variable_start\": 12,\n                \"variable_end\": 18,\n                \"value\": \"cq2tPr1a2\",\n                \"value_start\": 27,\n                \"value_end\": 36,\n                \"entropy\": 2.9477\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"if passworsd == \\\"q4c1a2oPd\\\": # __eq__ separator\",\n                \"line_num\": 5,\n                \"path\": \"./tests/samples/password_TRUE\",\n                \"info\": \"FILE:./tests/samples/password_TRUE|RAW\",\n                \"variable\": \"passworsd\",\n                \"variable_start\": 3,\n                \"variable_end\": 12,\n                \"value\": \"q4c1a2oPd\",\n                \"value_start\": 17,\n                \"value_end\": 26,\n                \"entropy\": 3.16993\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"if passworsd != \\\"x6s7djtEa\\\": # __ne__ separator\",\n                \"line_num\": 6,\n                \"path\": \"./tests/samples/password_TRUE\",\n                \"info\": \"FILE:./tests/samples/password_TRUE|RAW\",\n                \"variable\": \"passworsd\",\n                \"variable_start\": 3,\n                \"variable_end\": 12,\n                \"value\": \"x6s7djtEa\",\n                \"value_start\": 17,\n                \"value_end\": 26,\n                \"entropy\": 3.16993\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"password=2bkJgtJDiLcq1t\",\n                \"line_num\": 7,\n                \"path\": \"./tests/samples/password_TRUE\",\n                \"info\": \"FILE:./tests/samples/password_TRUE|RAW\",\n                \"variable\": \"password\",\n                \"variable_start\": 0,\n                \"variable_end\": 8,\n                \"value\": \"2bkJgtJDiLcq1t\",\n                \"value_start\": 9,\n                \"value_end\": 23,\n                \"entropy\": 3.52164\n            }\n        ]\n    },\n    {\n        \"rule\": \"CMD Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"RUN openssl x509 -req -days 365 -passin \\\"pass:nCzx8A8#!\\\" -sha256 -in server.csr -CA ca.pem -CAkey ca-key\",\n                \"line_num\": 8,\n                \"path\": \"./tests/samples/password_TRUE\",\n                \"info\": \"FILE:./tests/samples/password_TRUE|RAW\",\n                \"variable\": \"passin\",\n                \"variable_start\": 33,\n                \"variable_end\": 39,\n                \"value\": \"nCzx8A8#!\",\n                \"value_start\": 46,\n                \"value_end\": 55,\n                \"entropy\": 2.9477\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"RUN openssl x509 -req -days 365 -passin \\\"pass:nCzx8A8#!\\\" -sha256 -in server.csr -CA ca.pem -CAkey ca-key\",\n                \"line_num\": 8,\n                \"path\": \"./tests/samples/password_TRUE\",\n                \"info\": \"FILE:./tests/samples/password_TRUE|RAW\",\n                \"variable\": \"pass\",\n                \"variable_start\": 41,\n                \"variable_end\": 45,\n                \"value\": \"nCzx8A8#!\",\n                \"value_start\": 46,\n                \"value_end\": 55,\n                \"entropy\": 2.9477\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"MYSQL_DATABASE_USER=CRED;MYSQL_DATABASE_PASSWORD=2IWJD88FH4Y;\",\n                \"line_num\": 12,\n                \"path\": \"./tests/samples/password_TRUE\",\n                \"info\": \"FILE:./tests/samples/password_TRUE|RAW\",\n                \"variable\": \"MYSQL_DATABASE_PASSWORD\",\n                \"variable_start\": 25,\n                \"variable_end\": 48,\n                \"value\": \"2IWJD88FH4Y\",\n                \"value_start\": 49,\n                \"value_end\": 60,\n                \"entropy\": 3.27761\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"#define password \\\"n84ASM54y4\\\"\",\n                \"line_num\": 15,\n                \"path\": \"./tests/samples/password_TRUE\",\n                \"info\": \"FILE:./tests/samples/password_TRUE|RAW\",\n                \"variable\": \"password\",\n                \"variable_start\": 8,\n                \"variable_end\": 16,\n                \"value\": \"n84ASM54y4\",\n                \"value_start\": 18,\n                \"value_end\": 28,\n                \"entropy\": 2.84644\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"%define PASSWORD \\\"n84ASM54y4\\\"\",\n                \"line_num\": 18,\n                \"path\": \"./tests/samples/password_TRUE\",\n                \"info\": \"FILE:./tests/samples/password_TRUE|RAW\",\n                \"variable\": \"PASSWORD\",\n                \"variable_start\": 8,\n                \"variable_end\": 16,\n                \"value\": \"n84ASM54y4\",\n                \"value_start\": 18,\n                \"value_end\": 28,\n                \"entropy\": 2.84644\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"%global PASSWORD \\\"n84RPM54y4\\\"\",\n                \"line_num\": 19,\n                \"path\": \"./tests/samples/password_TRUE\",\n                \"info\": \"FILE:./tests/samples/password_TRUE|RAW\",\n                \"variable\": \"PASSWORD\",\n                \"variable_start\": 8,\n                \"variable_end\": 16,\n                \"value\": \"n84RPM54y4\",\n                \"value_start\": 18,\n                \"value_end\": 28,\n                \"entropy\": 2.84644\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"SET password \\\"n83.bat47Fy4\\\"\",\n                \"line_num\": 21,\n                \"path\": \"./tests/samples/password_TRUE\",\n                \"info\": \"FILE:./tests/samples/password_TRUE|RAW\",\n                \"variable\": \"password\",\n                \"variable_start\": 4,\n                \"variable_end\": 12,\n                \"value\": \"n83.bat47Fy4\",\n                \"value_start\": 14,\n                \"value_end\": 26,\n                \"entropy\": 3.4183\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"\\\"#define\\\\tpassword\\\\t\\\\\\\"n84ASM54y4\\\\\\\"\\\"\",\n                \"line_num\": 23,\n                \"path\": \"./tests/samples/password_TRUE\",\n                \"info\": \"FILE:./tests/samples/password_TRUE|RAW\",\n                \"variable\": \"password\",\n                \"variable_start\": 10,\n                \"variable_end\": 18,\n                \"value\": \"n84ASM54y4\",\n                \"value_start\": 22,\n                \"value_end\": 32,\n                \"entropy\": 2.84644\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.991,\n        \"line_data_list\": [\n            {\n                \"line\": \"WPA2_PASSWORD: e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\",\n                \"line_num\": 25,\n                \"path\": \"./tests/samples/password_TRUE\",\n                \"info\": \"FILE:./tests/samples/password_TRUE|RAW\",\n                \"variable\": \"WPA2_PASSWORD\",\n                \"variable_start\": 0,\n                \"variable_end\": 13,\n                \"value\": \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\",\n                \"value_start\": 15,\n                \"value_end\": 79,\n                \"entropy\": 3.67082\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"+  \\\"password\\\": \\\"dkajco1\\\"\",\n                \"line_num\": 10,\n                \"path\": \"./tests/samples/password_utf16.patch\",\n                \"info\": \"FILE:./tests/samples/password_utf16.patch|RAW\",\n                \"variable\": \"password\",\n                \"variable_start\": 4,\n                \"variable_end\": 12,\n                \"value\": \"dkajco1\",\n                \"value_start\": 16,\n                \"value_end\": 23,\n                \"entropy\": 2.80735\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.914,\n        \"line_data_list\": [\n            {\n                \"line\": \"+  \\\"password\\\": \\\"dkajc\\u00f61\\\"\",\n                \"line_num\": 9,\n                \"path\": \"./tests/samples/password_western.patch\",\n                \"info\": \"FILE:./tests/samples/password_western.patch|RAW\",\n                \"variable\": \"password\",\n                \"variable_start\": 4,\n                \"variable_end\": 12,\n                \"value\": \"dkajc\\u00f61\",\n                \"value_start\": 16,\n                \"value_end\": 23,\n                \"entropy\": 2.80735\n            }\n        ]\n    },\n    {\n        \"rule\": \"PayPal Braintree Access Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"access_token$production$gireogi121451781$abcaeaabadef01134517891121451781\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/paypal_key\",\n                \"info\": \"FILE:./tests/samples/paypal_key|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"access_token$production$gireogi121451781$abcaeaabadef01134517891121451781\",\n                \"value_start\": 0,\n                \"value_end\": 73,\n                \"entropy\": 4.39985\n            }\n        ]\n    },\n    {\n        \"rule\": \"PEM Private Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"-----BEGIN RSA PRIVATE KEY-----\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/pem_key\",\n                \"info\": \"FILE:./tests/samples/pem_key.bz2|BZIP2:./tests/samples/pem_key.bz2|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"-----BEGIN RSA PRIVATE KEY-----\",\n                \"value_start\": 0,\n                \"value_end\": 31,\n                \"entropy\": 3.38229\n            },\n            {\n                \"line\": \"MIICXAIBAAKBgQCqGKukO1De7zhZj6+H0qtjTkVxwTCpvKe4eCZ0FPqri0cb2JZfXJ/DgYSF6vUp\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/pem_key\",\n                \"info\": \"FILE:./tests/samples/pem_key.bz2|BZIP2:./tests/samples/pem_key.bz2|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"MIICXAIBAAKBgQCqGKukO1De7zhZj6+H0qtjTkVxwTCpvKe4eCZ0FPqri0cb2JZfXJ/DgYSF6vUp\",\n                \"value_start\": 0,\n                \"value_end\": 76,\n                \"entropy\": 5.38892\n            },\n            {\n                \"line\": \"wmJG8wVQZKjeGcjDOL5UlsuusFncCzWBQ7RKNUSesmQRMSGkVb1/3j+skZ6UtW+5u09lHNsj6tQ5\",\n                \"line_num\": 3,\n                \"path\": \"./tests/samples/pem_key\",\n                \"info\": \"FILE:./tests/samples/pem_key.bz2|BZIP2:./tests/samples/pem_key.bz2|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"wmJG8wVQZKjeGcjDOL5UlsuusFncCzWBQ7RKNUSesmQRMSGkVb1/3j+skZ6UtW+5u09lHNsj6tQ5\",\n                \"value_start\": 0,\n                \"value_end\": 76,\n                \"entropy\": 5.21333\n            },\n            {\n                \"line\": \"1s1SPrCBkedbNf0Tp0GbMJDyR4e9T04ZZwIDAQABAoGAFijko56+qGyN8M0RVyaRAXz++xTqHBLh\",\n                \"line_num\": 4,\n                \"path\": \"./tests/samples/pem_key\",\n                \"info\": \"FILE:./tests/samples/pem_key.bz2|BZIP2:./tests/samples/pem_key.bz2|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"1s1SPrCBkedbNf0Tp0GbMJDyR4e9T04ZZwIDAQABAoGAFijko56+qGyN8M0RVyaRAXz++xTqHBLh\",\n                \"value_start\": 0,\n                \"value_end\": 76,\n                \"entropy\": 5.32505\n            },\n            {\n                \"line\": \"3tx4VgMtrQ+WEgCjhoTwo23KMBAuJGSYnRmoBZM3lMfTKevIkAidPExvYCdm5dYq3XToLkkLv5L2\",\n                \"line_num\": 5,\n                \"path\": \"./tests/samples/pem_key\",\n                \"info\": \"FILE:./tests/samples/pem_key.bz2|BZIP2:./tests/samples/pem_key.bz2|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"3tx4VgMtrQ+WEgCjhoTwo23KMBAuJGSYnRmoBZM3lMfTKevIkAidPExvYCdm5dYq3XToLkkLv5L2\",\n                \"value_start\": 0,\n                \"value_end\": 76,\n                \"entropy\": 5.26728\n            },\n            {\n                \"line\": \"pIIVOFMDG+KESnAFV7l2c+cnzRMW0+b6f8mR1CJzZuxVLL6Q02fvLi55/mbSYxECQQDeAw6fiIQX\",\n                \"line_num\": 6,\n                \"path\": \"./tests/samples/pem_key\",\n                \"info\": \"FILE:./tests/samples/pem_key.bz2|BZIP2:./tests/samples/pem_key.bz2|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"pIIVOFMDG+KESnAFV7l2c+cnzRMW0+b6f8mR1CJzZuxVLL6Q02fvLi55/mbSYxECQQDeAw6fiIQX\",\n                \"value_start\": 0,\n                \"value_end\": 76,\n                \"entropy\": 5.29359\n            },\n            {\n                \"line\": \"GukBI4eMZZt4nscy2o12KyYner3VpoeE+Np2q+Z3pvAMd/aNzQ/W9WaI+NRfcxUJrmfPwIGm63il\",\n                \"line_num\": 7,\n                \"path\": \"./tests/samples/pem_key\",\n                \"info\": \"FILE:./tests/samples/pem_key.bz2|BZIP2:./tests/samples/pem_key.bz2|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"GukBI4eMZZt4nscy2o12KyYner3VpoeE+Np2q+Z3pvAMd/aNzQ/W9WaI+NRfcxUJrmfPwIGm63il\",\n                \"value_start\": 0,\n                \"value_end\": 76,\n                \"entropy\": 5.40531\n            },\n            {\n                \"line\": \"AkEAxCL5HQb2bQr4ByorcMWm/hEP2MZzROV73yF41hPsRC9m66KrheO9HPTJuo3/9s5p+sqGxOlF\",\n                \"line_num\": 8,\n                \"path\": \"./tests/samples/pem_key\",\n                \"info\": \"FILE:./tests/samples/pem_key.bz2|BZIP2:./tests/samples/pem_key.bz2|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"AkEAxCL5HQb2bQr4ByorcMWm/hEP2MZzROV73yF41hPsRC9m66KrheO9HPTJuo3/9s5p+sqGxOlF\",\n                \"value_start\": 0,\n                \"value_end\": 76,\n                \"entropy\": 5.37254\n            },\n            {\n                \"line\": \"L0NDt4SkosjgGwJAFklyR1uZ/wPJjj611cdBcztlPdqoxssQGnh85BzCj/u3WqBpE2vjvyyvyI5k\",\n                \"line_num\": 9,\n                \"path\": \"./tests/samples/pem_key\",\n                \"info\": \"FILE:./tests/samples/pem_key.bz2|BZIP2:./tests/samples/pem_key.bz2|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"L0NDt4SkosjgGwJAFklyR1uZ/wPJjj611cdBcztlPdqoxssQGnh85BzCj/u3WqBpE2vjvyyvyI5k\",\n                \"value_start\": 0,\n                \"value_end\": 76,\n                \"entropy\": 5.30866\n            },\n            {\n                \"line\": \"X6zk7S0ljKtt2jny2+00VsBerQJBAJGC1Mg5Oydo5NwD6BiROrPxGo2bpTbu/fhrT8ebHkTz2epl\",\n                \"line_num\": 10,\n                \"path\": \"./tests/samples/pem_key\",\n                \"info\": \"FILE:./tests/samples/pem_key.bz2|BZIP2:./tests/samples/pem_key.bz2|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"X6zk7S0ljKtt2jny2+00VsBerQJBAJGC1Mg5Oydo5NwD6BiROrPxGo2bpTbu/fhrT8ebHkTz2epl\",\n                \"value_start\": 0,\n                \"value_end\": 76,\n                \"entropy\": 5.42517\n            },\n            {\n                \"line\": \"U9VQQSQzY1oZMVX8i1m5WUTLPz2yLJIBQVdXqhMCQBGoiuSoSjafUhV7i1cEGpb88h5NBYZzWXGZ\",\n                \"line_num\": 11,\n                \"path\": \"./tests/samples/pem_key\",\n                \"info\": \"FILE:./tests/samples/pem_key.bz2|BZIP2:./tests/samples/pem_key.bz2|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"U9VQQSQzY1oZMVX8i1m5WUTLPz2yLJIBQVdXqhMCQBGoiuSoSjafUhV7i1cEGpb88h5NBYZzWXGZ\",\n                \"value_start\": 0,\n                \"value_end\": 76,\n                \"entropy\": 5.10756\n            },\n            {\n                \"line\": \"37sJ5QsW+sJyoNde3xH8vdXhzU7eT82D6X/scw9RZz+/6rCJ4p0=\",\n                \"line_num\": 12,\n                \"path\": \"./tests/samples/pem_key\",\n                \"info\": \"FILE:./tests/samples/pem_key.bz2|BZIP2:./tests/samples/pem_key.bz2|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"37sJ5QsW+sJyoNde3xH8vdXhzU7eT82D6X/scw9RZz+/6rCJ4p0=\",\n                \"value_start\": 0,\n                \"value_end\": 52,\n                \"entropy\": 5.07054\n            },\n            {\n                \"line\": \"-----END RSA PRIVATE KEY-----\",\n                \"line_num\": 13,\n                \"path\": \"./tests/samples/pem_key\",\n                \"info\": \"FILE:./tests/samples/pem_key.bz2|BZIP2:./tests/samples/pem_key.bz2|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"-----END RSA PRIVATE KEY-----\",\n                \"value_start\": 0,\n                \"value_end\": 29,\n                \"entropy\": 3.24663\n            }\n        ]\n    },\n    {\n        \"rule\": \"PEM Private Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"-----BEGIN RSA PRIVATE KEY-----\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/pem_key\",\n                \"info\": \"FILE:./tests/samples/pem_key.gz|GZIP:./tests/samples/pem_key|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"-----BEGIN RSA PRIVATE KEY-----\",\n                \"value_start\": 0,\n                \"value_end\": 31,\n                \"entropy\": 3.38229\n            },\n            {\n                \"line\": \"MIICXAIBAAKBgQCqGKukO1De7zhZj6+H0qtjTkVxwTCpvKe4eCZ0FPqri0cb2JZfXJ/DgYSF6vUp\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/pem_key\",\n                \"info\": \"FILE:./tests/samples/pem_key.gz|GZIP:./tests/samples/pem_key|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"MIICXAIBAAKBgQCqGKukO1De7zhZj6+H0qtjTkVxwTCpvKe4eCZ0FPqri0cb2JZfXJ/DgYSF6vUp\",\n                \"value_start\": 0,\n                \"value_end\": 76,\n                \"entropy\": 5.38892\n            },\n            {\n                \"line\": \"wmJG8wVQZKjeGcjDOL5UlsuusFncCzWBQ7RKNUSesmQRMSGkVb1/3j+skZ6UtW+5u09lHNsj6tQ5\",\n                \"line_num\": 3,\n                \"path\": \"./tests/samples/pem_key\",\n                \"info\": \"FILE:./tests/samples/pem_key.gz|GZIP:./tests/samples/pem_key|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"wmJG8wVQZKjeGcjDOL5UlsuusFncCzWBQ7RKNUSesmQRMSGkVb1/3j+skZ6UtW+5u09lHNsj6tQ5\",\n                \"value_start\": 0,\n                \"value_end\": 76,\n                \"entropy\": 5.21333\n            },\n            {\n                \"line\": \"1s1SPrCBkedbNf0Tp0GbMJDyR4e9T04ZZwIDAQABAoGAFijko56+qGyN8M0RVyaRAXz++xTqHBLh\",\n                \"line_num\": 4,\n                \"path\": \"./tests/samples/pem_key\",\n                \"info\": \"FILE:./tests/samples/pem_key.gz|GZIP:./tests/samples/pem_key|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"1s1SPrCBkedbNf0Tp0GbMJDyR4e9T04ZZwIDAQABAoGAFijko56+qGyN8M0RVyaRAXz++xTqHBLh\",\n                \"value_start\": 0,\n                \"value_end\": 76,\n                \"entropy\": 5.32505\n            },\n            {\n                \"line\": \"3tx4VgMtrQ+WEgCjhoTwo23KMBAuJGSYnRmoBZM3lMfTKevIkAidPExvYCdm5dYq3XToLkkLv5L2\",\n                \"line_num\": 5,\n                \"path\": \"./tests/samples/pem_key\",\n                \"info\": \"FILE:./tests/samples/pem_key.gz|GZIP:./tests/samples/pem_key|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"3tx4VgMtrQ+WEgCjhoTwo23KMBAuJGSYnRmoBZM3lMfTKevIkAidPExvYCdm5dYq3XToLkkLv5L2\",\n                \"value_start\": 0,\n                \"value_end\": 76,\n                \"entropy\": 5.26728\n            },\n            {\n                \"line\": \"pIIVOFMDG+KESnAFV7l2c+cnzRMW0+b6f8mR1CJzZuxVLL6Q02fvLi55/mbSYxECQQDeAw6fiIQX\",\n                \"line_num\": 6,\n                \"path\": \"./tests/samples/pem_key\",\n                \"info\": \"FILE:./tests/samples/pem_key.gz|GZIP:./tests/samples/pem_key|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"pIIVOFMDG+KESnAFV7l2c+cnzRMW0+b6f8mR1CJzZuxVLL6Q02fvLi55/mbSYxECQQDeAw6fiIQX\",\n                \"value_start\": 0,\n                \"value_end\": 76,\n                \"entropy\": 5.29359\n            },\n            {\n                \"line\": \"GukBI4eMZZt4nscy2o12KyYner3VpoeE+Np2q+Z3pvAMd/aNzQ/W9WaI+NRfcxUJrmfPwIGm63il\",\n                \"line_num\": 7,\n                \"path\": \"./tests/samples/pem_key\",\n                \"info\": \"FILE:./tests/samples/pem_key.gz|GZIP:./tests/samples/pem_key|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"GukBI4eMZZt4nscy2o12KyYner3VpoeE+Np2q+Z3pvAMd/aNzQ/W9WaI+NRfcxUJrmfPwIGm63il\",\n                \"value_start\": 0,\n                \"value_end\": 76,\n                \"entropy\": 5.40531\n            },\n            {\n                \"line\": \"AkEAxCL5HQb2bQr4ByorcMWm/hEP2MZzROV73yF41hPsRC9m66KrheO9HPTJuo3/9s5p+sqGxOlF\",\n                \"line_num\": 8,\n                \"path\": \"./tests/samples/pem_key\",\n                \"info\": \"FILE:./tests/samples/pem_key.gz|GZIP:./tests/samples/pem_key|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"AkEAxCL5HQb2bQr4ByorcMWm/hEP2MZzROV73yF41hPsRC9m66KrheO9HPTJuo3/9s5p+sqGxOlF\",\n                \"value_start\": 0,\n                \"value_end\": 76,\n                \"entropy\": 5.37254\n            },\n            {\n                \"line\": \"L0NDt4SkosjgGwJAFklyR1uZ/wPJjj611cdBcztlPdqoxssQGnh85BzCj/u3WqBpE2vjvyyvyI5k\",\n                \"line_num\": 9,\n                \"path\": \"./tests/samples/pem_key\",\n                \"info\": \"FILE:./tests/samples/pem_key.gz|GZIP:./tests/samples/pem_key|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"L0NDt4SkosjgGwJAFklyR1uZ/wPJjj611cdBcztlPdqoxssQGnh85BzCj/u3WqBpE2vjvyyvyI5k\",\n                \"value_start\": 0,\n                \"value_end\": 76,\n                \"entropy\": 5.30866\n            },\n            {\n                \"line\": \"X6zk7S0ljKtt2jny2+00VsBerQJBAJGC1Mg5Oydo5NwD6BiROrPxGo2bpTbu/fhrT8ebHkTz2epl\",\n                \"line_num\": 10,\n                \"path\": \"./tests/samples/pem_key\",\n                \"info\": \"FILE:./tests/samples/pem_key.gz|GZIP:./tests/samples/pem_key|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"X6zk7S0ljKtt2jny2+00VsBerQJBAJGC1Mg5Oydo5NwD6BiROrPxGo2bpTbu/fhrT8ebHkTz2epl\",\n                \"value_start\": 0,\n                \"value_end\": 76,\n                \"entropy\": 5.42517\n            },\n            {\n                \"line\": \"U9VQQSQzY1oZMVX8i1m5WUTLPz2yLJIBQVdXqhMCQBGoiuSoSjafUhV7i1cEGpb88h5NBYZzWXGZ\",\n                \"line_num\": 11,\n                \"path\": \"./tests/samples/pem_key\",\n                \"info\": \"FILE:./tests/samples/pem_key.gz|GZIP:./tests/samples/pem_key|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"U9VQQSQzY1oZMVX8i1m5WUTLPz2yLJIBQVdXqhMCQBGoiuSoSjafUhV7i1cEGpb88h5NBYZzWXGZ\",\n                \"value_start\": 0,\n                \"value_end\": 76,\n                \"entropy\": 5.10756\n            },\n            {\n                \"line\": \"37sJ5QsW+sJyoNde3xH8vdXhzU7eT82D6X/scw9RZz+/6rCJ4p0=\",\n                \"line_num\": 12,\n                \"path\": \"./tests/samples/pem_key\",\n                \"info\": \"FILE:./tests/samples/pem_key.gz|GZIP:./tests/samples/pem_key|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"37sJ5QsW+sJyoNde3xH8vdXhzU7eT82D6X/scw9RZz+/6rCJ4p0=\",\n                \"value_start\": 0,\n                \"value_end\": 52,\n                \"entropy\": 5.07054\n            },\n            {\n                \"line\": \"-----END RSA PRIVATE KEY-----\",\n                \"line_num\": 13,\n                \"path\": \"./tests/samples/pem_key\",\n                \"info\": \"FILE:./tests/samples/pem_key.gz|GZIP:./tests/samples/pem_key|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"-----END RSA PRIVATE KEY-----\",\n                \"value_start\": 0,\n                \"value_end\": 29,\n                \"entropy\": 3.24663\n            }\n        ]\n    },\n    {\n        \"rule\": \"PEM Private Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"str value = \\\"-----BEGIN RSA PRIVATE KEY-----\\\\n\\\" +\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/pem_key\",\n                \"info\": \"FILE:./tests/samples/pem_key.lzma|LZMA:./tests/samples/pem_key.lzma|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"-----BEGIN RSA PRIVATE KEY-----\",\n                \"value_start\": 13,\n                \"value_end\": 44,\n                \"entropy\": 3.38229\n            },\n            {\n                \"line\": \"\\\"MIICXQIBAAKBgQDwcEN7vZygGg6DvPpsw17hRD6S5N8+huaqs1JGXQfPhbvLTUsHdzGLVNQ/Z0wQVGdPiaJDflqhcT1IH8BLD4SHn+  \\\\n\\\"\",\n                \"line_num\": 3,\n                \"path\": \"./tests/samples/pem_key\",\n                \"info\": \"FILE:./tests/samples/pem_key.lzma|LZMA:./tests/samples/pem_key.lzma|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"\\\"MIICXQIBAAKBgQDwcEN7vZygGg6DvPpsw17hRD6S5N8+huaqs1JGXQfPhbvLTUsHdzGLVNQ/Z0wQVGdPiaJDflqhcT1IH8BLD4SHn+  \\\\n\\\"\",\n                \"value_start\": 0,\n                \"value_end\": 108,\n                \"entropy\": 5.52555\n            },\n            {\n                \"line\": \"\\t+ \\\"WuRIzX77P7oVKM2CoTA6VzT6s/bvr7HxFLl4NhohfyDsV0YCDc4I6EHGWMCUHZb0IWxzEGRWD3jbG8KAZUsQIDAQABAoGAOD7a2o\\\\r \\\\n\\\"\",\n                \"line_num\": 4,\n                \"path\": \"./tests/samples/pem_key\",\n                \"info\": \"FILE:./tests/samples/pem_key.lzma|LZMA:./tests/samples/pem_key.lzma|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"\\t+ \\\"WuRIzX77P7oVKM2CoTA6VzT6s/bvr7HxFLl4NhohfyDsV0YCDc4I6EHGWMCUHZb0IWxzEGRWD3jbG8KAZUsQIDAQABAoGAOD7a2o\\\\r \\\\n\\\"\",\n                \"value_start\": 0,\n                \"value_end\": 110,\n                \"entropy\": 5.49388\n            },\n            {\n                \"line\": \"\\\"  CRujY+PP0hS/4sHOBdDvnxa2wdW8NVNNagdCBhvP5Y1edBNMnkWOyuM4e7HzUgO0+8ndWis1OSJTz9EFTyHJm6GOn+/JR62NWNr   \\\"\",\n                \"line_num\": 5,\n                \"path\": \"./tests/samples/pem_key\",\n                \"info\": \"FILE:./tests/samples/pem_key.lzma|LZMA:./tests/samples/pem_key.lzma|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"\\\"  CRujY+PP0hS/4sHOBdDvnxa2wdW8NVNNagdCBhvP5Y1edBNMnkWOyuM4e7HzUgO0+8ndWis1OSJTz9EFTyHJm6GOn+/JR62NWNr   \\\"\",\n                \"value_start\": 0,\n                \"value_end\": 106,\n                \"entropy\": 5.44383\n            },\n            {\n                \"line\": \"\\t\\t\\\"9lfCb8cWq0eoOk3UUO9P+1nZNHjE/iDhuTi3x/5naW4SzdkZfxHo/NMI6i5w1ZnQ60CQQD9d0G9gBy6lPhC  \\\\\\\\\",\n                \"line_num\": 6,\n                \"path\": \"./tests/samples/pem_key\",\n                \"info\": \"FILE:./tests/samples/pem_key.lzma|LZMA:./tests/samples/pem_key.lzma|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"\\t\\t\\\"9lfCb8cWq0eoOk3UUO9P+1nZNHjE/iDhuTi3x/5naW4SzdkZfxHo/NMI6i5w1ZnQ60CQQD9d0G9gBy6lPhC  \\\\\\\\\",\n                \"value_start\": 0,\n                \"value_end\": 90,\n                \"entropy\": 5.53586\n            },\n            {\n                \"line\": \"\\\"\\\"\\\" mbHzYovVjSnyfzUtyWPNSrXNiUCR5vu2f6eCgSVzFZ0oHAv8nLaYnXrhyT25lwzNK5OhR/oPAkEA8tep3NmfxV \\\"\\\"\\\" +\",\n                \"line_num\": 7,\n                \"path\": \"./tests/samples/pem_key\",\n                \"info\": \"FILE:./tests/samples/pem_key.lzma|LZMA:./tests/samples/pem_key.lzma|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"\\\"\\\"\\\" mbHzYovVjSnyfzUtyWPNSrXNiUCR5vu2f6eCgSVzFZ0oHAv8nLaYnXrhyT25lwzNK5OhR/oPAkEA8tep3NmfxV \\\"\\\"\\\" +\",\n                \"value_start\": 0,\n                \"value_end\": 96,\n                \"entropy\": 5.46977\n            },\n            {\n                \"line\": \"QSBfKGfotblIG709xxfd6vHfDS0eZuTFUxkZDcayZDhMDjTMZxP8rokSbMaOSqUseUeYhx5TqFPwJAAhC0smyWz1ZjZ3eFIayN4yGRU+6B\\\\r\\\\n\",\n                \"line_num\": 8,\n                \"path\": \"./tests/samples/pem_key\",\n                \"info\": \"FILE:./tests/samples/pem_key.lzma|LZMA:./tests/samples/pem_key.lzma|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"QSBfKGfotblIG709xxfd6vHfDS0eZuTFUxkZDcayZDhMDjTMZxP8rokSbMaOSqUseUeYhx5TqFPwJAAhC0smyWz1ZjZ3eFIayN4yGRU+6B\\\\r\\\\n\",\n                \"value_start\": 0,\n                \"value_end\": 110,\n                \"entropy\": 5.55951\n            },\n            {\n                \"line\": \"\\\"amwXqhaPwKr7obS2HFiR7thKi9ODQk5oMpi8TCYMWEahgB+g9RMD0u6ZNQJBAMla\\\\\\\\\\\\\\\\nUJmySGuRnbAYu7PJURH90AOG0QOQ1Jp6yBMKgYIB\\\\\\\\\",\n                \"line_num\": 9,\n                \"path\": \"./tests/samples/pem_key\",\n                \"info\": \"FILE:./tests/samples/pem_key.lzma|LZMA:./tests/samples/pem_key.lzma|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"\\\"amwXqhaPwKr7obS2HFiR7thKi9ODQk5oMpi8TCYMWEahgB+g9RMD0u6ZNQJBAMla\\\\\\\\\\\\\\\\nUJmySGuRnbAYu7PJURH90AOG0QOQ1Jp6yBMKgYIB\\\\\\\\\",\n                \"value_start\": 0,\n                \"value_end\": 112,\n                \"entropy\": 5.49108\n            },\n            {\n                \"line\": \"Uaxk9J5Th8BXPyC1mclPMS7J\\\\\\\\\\\\\\\\ngMuobiFdIpryq51pvHkCQQDInvDaKI24Ho+cj6SCKnEO4kbjh/yx1XGwNmY0ld1i\\\\\\\\r5micHFiMI7/IcVZ4\\\\n\",\n                \"line_num\": 10,\n                \"path\": \"./tests/samples/pem_key\",\n                \"info\": \"FILE:./tests/samples/pem_key.lzma|LZMA:./tests/samples/pem_key.lzma|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"Uaxk9J5Th8BXPyC1mclPMS7J\\\\\\\\\\\\\\\\ngMuobiFdIpryq51pvHkCQQDInvDaKI24Ho+cj6SCKnEO4kbjh/yx1XGwNmY0ld1i\\\\\\\\r5micHFiMI7/IcVZ4\\\\n\",\n                \"value_start\": 0,\n                \"value_end\": 114,\n                \"entropy\": 5.57587\n            },\n            {\n                \"line\": \"2cl1OwdGjRdmO1LT6P1cl8UYIj/S\\\\n-----END RSA PRIVATE KEY-----\\\"\\\"\\\";\",\n                \"line_num\": 11,\n                \"path\": \"./tests/samples/pem_key\",\n                \"info\": \"FILE:./tests/samples/pem_key.lzma|LZMA:./tests/samples/pem_key.lzma|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"2cl1OwdGjRdmO1LT6P1cl8UYIj/S\\\\n-----END RSA PRIVATE KEY-----\\\"\\\"\\\";\",\n                \"value_start\": 0,\n                \"value_end\": 63,\n                \"entropy\": 4.72341\n            }\n        ]\n    },\n    {\n        \"rule\": \"PEM Private Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"str value = \\\"-----BEGIN RSA PRIVATE KEY-----\\\\n\\\" +\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/pem_key\",\n                \"info\": \"FILE:./tests/samples/pem_key.xz|LZMA:./tests/samples/pem_key.xz|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"-----BEGIN RSA PRIVATE KEY-----\",\n                \"value_start\": 13,\n                \"value_end\": 44,\n                \"entropy\": 3.38229\n            },\n            {\n                \"line\": \"\\\"MIICXQIBAAKBgQDwcEN7vZygGg6DvPpsw17hRD6S5N8+huaqs1JGXQfPhbvLTUsHdzGLVNQ/Z0wQVGdPiaJDflqhcT1IH8BLD4SHn+  \\\\n\\\"\",\n                \"line_num\": 3,\n                \"path\": \"./tests/samples/pem_key\",\n                \"info\": \"FILE:./tests/samples/pem_key.xz|LZMA:./tests/samples/pem_key.xz|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"\\\"MIICXQIBAAKBgQDwcEN7vZygGg6DvPpsw17hRD6S5N8+huaqs1JGXQfPhbvLTUsHdzGLVNQ/Z0wQVGdPiaJDflqhcT1IH8BLD4SHn+  \\\\n\\\"\",\n                \"value_start\": 0,\n                \"value_end\": 108,\n                \"entropy\": 5.52555\n            },\n            {\n                \"line\": \"\\t+ \\\"WuRIzX77P7oVKM2CoTA6VzT6s/bvr7HxFLl4NhohfyDsV0YCDc4I6EHGWMCUHZb0IWxzEGRWD3jbG8KAZUsQIDAQABAoGAOD7a2o\\\\r \\\\n\\\"\",\n                \"line_num\": 4,\n                \"path\": \"./tests/samples/pem_key\",\n                \"info\": \"FILE:./tests/samples/pem_key.xz|LZMA:./tests/samples/pem_key.xz|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"\\t+ \\\"WuRIzX77P7oVKM2CoTA6VzT6s/bvr7HxFLl4NhohfyDsV0YCDc4I6EHGWMCUHZb0IWxzEGRWD3jbG8KAZUsQIDAQABAoGAOD7a2o\\\\r \\\\n\\\"\",\n                \"value_start\": 0,\n                \"value_end\": 110,\n                \"entropy\": 5.49388\n            },\n            {\n                \"line\": \"\\\"  CRujY+PP0hS/4sHOBdDvnxa2wdW8NVNNagdCBhvP5Y1edBNMnkWOyuM4e7HzUgO0+8ndWis1OSJTz9EFTyHJm6GOn+/JR62NWNr   \\\"\",\n                \"line_num\": 5,\n                \"path\": \"./tests/samples/pem_key\",\n                \"info\": \"FILE:./tests/samples/pem_key.xz|LZMA:./tests/samples/pem_key.xz|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"\\\"  CRujY+PP0hS/4sHOBdDvnxa2wdW8NVNNagdCBhvP5Y1edBNMnkWOyuM4e7HzUgO0+8ndWis1OSJTz9EFTyHJm6GOn+/JR62NWNr   \\\"\",\n                \"value_start\": 0,\n                \"value_end\": 106,\n                \"entropy\": 5.44383\n            },\n            {\n                \"line\": \"\\t\\t\\\"9lfCb8cWq0eoOk3UUO9P+1nZNHjE/iDhuTi3x/5naW4SzdkZfxHo/NMI6i5w1ZnQ60CQQD9d0G9gBy6lPhC  \\\\\\\\\",\n                \"line_num\": 6,\n                \"path\": \"./tests/samples/pem_key\",\n                \"info\": \"FILE:./tests/samples/pem_key.xz|LZMA:./tests/samples/pem_key.xz|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"\\t\\t\\\"9lfCb8cWq0eoOk3UUO9P+1nZNHjE/iDhuTi3x/5naW4SzdkZfxHo/NMI6i5w1ZnQ60CQQD9d0G9gBy6lPhC  \\\\\\\\\",\n                \"value_start\": 0,\n                \"value_end\": 90,\n                \"entropy\": 5.53586\n            },\n            {\n                \"line\": \"\\\"\\\"\\\" mbHzYovVjSnyfzUtyWPNSrXNiUCR5vu2f6eCgSVzFZ0oHAv8nLaYnXrhyT25lwzNK5OhR/oPAkEA8tep3NmfxV \\\"\\\"\\\" +\",\n                \"line_num\": 7,\n                \"path\": \"./tests/samples/pem_key\",\n                \"info\": \"FILE:./tests/samples/pem_key.xz|LZMA:./tests/samples/pem_key.xz|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"\\\"\\\"\\\" mbHzYovVjSnyfzUtyWPNSrXNiUCR5vu2f6eCgSVzFZ0oHAv8nLaYnXrhyT25lwzNK5OhR/oPAkEA8tep3NmfxV \\\"\\\"\\\" +\",\n                \"value_start\": 0,\n                \"value_end\": 96,\n                \"entropy\": 5.46977\n            },\n            {\n                \"line\": \"QSBfKGfotblIG709xxfd6vHfDS0eZuTFUxkZDcayZDhMDjTMZxP8rokSbMaOSqUseUeYhx5TqFPwJAAhC0smyWz1ZjZ3eFIayN4yGRU+6B\\\\r\\\\n\",\n                \"line_num\": 8,\n                \"path\": \"./tests/samples/pem_key\",\n                \"info\": \"FILE:./tests/samples/pem_key.xz|LZMA:./tests/samples/pem_key.xz|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"QSBfKGfotblIG709xxfd6vHfDS0eZuTFUxkZDcayZDhMDjTMZxP8rokSbMaOSqUseUeYhx5TqFPwJAAhC0smyWz1ZjZ3eFIayN4yGRU+6B\\\\r\\\\n\",\n                \"value_start\": 0,\n                \"value_end\": 110,\n                \"entropy\": 5.55951\n            },\n            {\n                \"line\": \"\\\"amwXqhaPwKr7obS2HFiR7thKi9ODQk5oMpi8TCYMWEahgB+g9RMD0u6ZNQJBAMla\\\\\\\\\\\\\\\\nUJmySGuRnbAYu7PJURH90AOG0QOQ1Jp6yBMKgYIB\\\\\\\\\",\n                \"line_num\": 9,\n                \"path\": \"./tests/samples/pem_key\",\n                \"info\": \"FILE:./tests/samples/pem_key.xz|LZMA:./tests/samples/pem_key.xz|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"\\\"amwXqhaPwKr7obS2HFiR7thKi9ODQk5oMpi8TCYMWEahgB+g9RMD0u6ZNQJBAMla\\\\\\\\\\\\\\\\nUJmySGuRnbAYu7PJURH90AOG0QOQ1Jp6yBMKgYIB\\\\\\\\\",\n                \"value_start\": 0,\n                \"value_end\": 112,\n                \"entropy\": 5.49108\n            },\n            {\n                \"line\": \"Uaxk9J5Th8BXPyC1mclPMS7J\\\\\\\\\\\\\\\\ngMuobiFdIpryq51pvHkCQQDInvDaKI24Ho+cj6SCKnEO4kbjh/yx1XGwNmY0ld1i\\\\\\\\r5micHFiMI7/IcVZ4\\\\n\",\n                \"line_num\": 10,\n                \"path\": \"./tests/samples/pem_key\",\n                \"info\": \"FILE:./tests/samples/pem_key.xz|LZMA:./tests/samples/pem_key.xz|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"Uaxk9J5Th8BXPyC1mclPMS7J\\\\\\\\\\\\\\\\ngMuobiFdIpryq51pvHkCQQDInvDaKI24Ho+cj6SCKnEO4kbjh/yx1XGwNmY0ld1i\\\\\\\\r5micHFiMI7/IcVZ4\\\\n\",\n                \"value_start\": 0,\n                \"value_end\": 114,\n                \"entropy\": 5.57587\n            },\n            {\n                \"line\": \"2cl1OwdGjRdmO1LT6P1cl8UYIj/S\\\\n-----END RSA PRIVATE KEY-----\\\"\\\"\\\";\",\n                \"line_num\": 11,\n                \"path\": \"./tests/samples/pem_key\",\n                \"info\": \"FILE:./tests/samples/pem_key.xz|LZMA:./tests/samples/pem_key.xz|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"2cl1OwdGjRdmO1LT6P1cl8UYIj/S\\\\n-----END RSA PRIVATE KEY-----\\\"\\\"\\\";\",\n                \"value_start\": 0,\n                \"value_end\": 63,\n                \"entropy\": 4.72341\n            }\n        ]\n    },\n    {\n        \"rule\": \"PEM Private Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"str value = \\\"-----BEGIN RSA PRIVATE KEY-----\\\\n\\\" +\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/pem_key\",\n                \"info\": \"FILE:./tests/samples/pem_key|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"-----BEGIN RSA PRIVATE KEY-----\",\n                \"value_start\": 13,\n                \"value_end\": 44,\n                \"entropy\": 3.38229\n            },\n            {\n                \"line\": \"\\\"MIICXQIBAAKBgQDwcEN7vZygGg6DvPpsw17hRD6S5N8+huaqs1JGXQfPhbvLTUsHdzGLVNQ/Z0wQVGdPiaJDflqhcT1IH8BLD4SHn+  \\\\n\\\"\",\n                \"line_num\": 3,\n                \"path\": \"./tests/samples/pem_key\",\n                \"info\": \"FILE:./tests/samples/pem_key|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"\\\"MIICXQIBAAKBgQDwcEN7vZygGg6DvPpsw17hRD6S5N8+huaqs1JGXQfPhbvLTUsHdzGLVNQ/Z0wQVGdPiaJDflqhcT1IH8BLD4SHn+  \\\\n\\\"\",\n                \"value_start\": 0,\n                \"value_end\": 108,\n                \"entropy\": 5.52555\n            },\n            {\n                \"line\": \"\\t+ \\\"WuRIzX77P7oVKM2CoTA6VzT6s/bvr7HxFLl4NhohfyDsV0YCDc4I6EHGWMCUHZb0IWxzEGRWD3jbG8KAZUsQIDAQABAoGAOD7a2o\\\\r \\\\n\\\"\",\n                \"line_num\": 4,\n                \"path\": \"./tests/samples/pem_key\",\n                \"info\": \"FILE:./tests/samples/pem_key|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"\\t+ \\\"WuRIzX77P7oVKM2CoTA6VzT6s/bvr7HxFLl4NhohfyDsV0YCDc4I6EHGWMCUHZb0IWxzEGRWD3jbG8KAZUsQIDAQABAoGAOD7a2o\\\\r \\\\n\\\"\",\n                \"value_start\": 0,\n                \"value_end\": 110,\n                \"entropy\": 5.49388\n            },\n            {\n                \"line\": \"\\\"  CRujY+PP0hS/4sHOBdDvnxa2wdW8NVNNagdCBhvP5Y1edBNMnkWOyuM4e7HzUgO0+8ndWis1OSJTz9EFTyHJm6GOn+/JR62NWNr   \\\"\",\n                \"line_num\": 5,\n                \"path\": \"./tests/samples/pem_key\",\n                \"info\": \"FILE:./tests/samples/pem_key|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"\\\"  CRujY+PP0hS/4sHOBdDvnxa2wdW8NVNNagdCBhvP5Y1edBNMnkWOyuM4e7HzUgO0+8ndWis1OSJTz9EFTyHJm6GOn+/JR62NWNr   \\\"\",\n                \"value_start\": 0,\n                \"value_end\": 106,\n                \"entropy\": 5.44383\n            },\n            {\n                \"line\": \"\\t\\t\\\"9lfCb8cWq0eoOk3UUO9P+1nZNHjE/iDhuTi3x/5naW4SzdkZfxHo/NMI6i5w1ZnQ60CQQD9d0G9gBy6lPhC  \\\\\\\\\",\n                \"line_num\": 6,\n                \"path\": \"./tests/samples/pem_key\",\n                \"info\": \"FILE:./tests/samples/pem_key|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"\\t\\t\\\"9lfCb8cWq0eoOk3UUO9P+1nZNHjE/iDhuTi3x/5naW4SzdkZfxHo/NMI6i5w1ZnQ60CQQD9d0G9gBy6lPhC  \\\\\\\\\",\n                \"value_start\": 0,\n                \"value_end\": 90,\n                \"entropy\": 5.53586\n            },\n            {\n                \"line\": \"\\\"\\\"\\\" mbHzYovVjSnyfzUtyWPNSrXNiUCR5vu2f6eCgSVzFZ0oHAv8nLaYnXrhyT25lwzNK5OhR/oPAkEA8tep3NmfxV \\\"\\\"\\\" +\",\n                \"line_num\": 7,\n                \"path\": \"./tests/samples/pem_key\",\n                \"info\": \"FILE:./tests/samples/pem_key|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"\\\"\\\"\\\" mbHzYovVjSnyfzUtyWPNSrXNiUCR5vu2f6eCgSVzFZ0oHAv8nLaYnXrhyT25lwzNK5OhR/oPAkEA8tep3NmfxV \\\"\\\"\\\" +\",\n                \"value_start\": 0,\n                \"value_end\": 96,\n                \"entropy\": 5.46977\n            },\n            {\n                \"line\": \"QSBfKGfotblIG709xxfd6vHfDS0eZuTFUxkZDcayZDhMDjTMZxP8rokSbMaOSqUseUeYhx5TqFPwJAAhC0smyWz1ZjZ3eFIayN4yGRU+6B\\\\r\\\\n\",\n                \"line_num\": 8,\n                \"path\": \"./tests/samples/pem_key\",\n                \"info\": \"FILE:./tests/samples/pem_key|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"QSBfKGfotblIG709xxfd6vHfDS0eZuTFUxkZDcayZDhMDjTMZxP8rokSbMaOSqUseUeYhx5TqFPwJAAhC0smyWz1ZjZ3eFIayN4yGRU+6B\\\\r\\\\n\",\n                \"value_start\": 0,\n                \"value_end\": 110,\n                \"entropy\": 5.55951\n            },\n            {\n                \"line\": \"\\\"amwXqhaPwKr7obS2HFiR7thKi9ODQk5oMpi8TCYMWEahgB+g9RMD0u6ZNQJBAMla\\\\\\\\\\\\\\\\nUJmySGuRnbAYu7PJURH90AOG0QOQ1Jp6yBMKgYIB\\\\\\\\\",\n                \"line_num\": 9,\n                \"path\": \"./tests/samples/pem_key\",\n                \"info\": \"FILE:./tests/samples/pem_key|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"\\\"amwXqhaPwKr7obS2HFiR7thKi9ODQk5oMpi8TCYMWEahgB+g9RMD0u6ZNQJBAMla\\\\\\\\\\\\\\\\nUJmySGuRnbAYu7PJURH90AOG0QOQ1Jp6yBMKgYIB\\\\\\\\\",\n                \"value_start\": 0,\n                \"value_end\": 112,\n                \"entropy\": 5.49108\n            },\n            {\n                \"line\": \"Uaxk9J5Th8BXPyC1mclPMS7J\\\\\\\\\\\\\\\\ngMuobiFdIpryq51pvHkCQQDInvDaKI24Ho+cj6SCKnEO4kbjh/yx1XGwNmY0ld1i\\\\\\\\r5micHFiMI7/IcVZ4\\\\n\",\n                \"line_num\": 10,\n                \"path\": \"./tests/samples/pem_key\",\n                \"info\": \"FILE:./tests/samples/pem_key|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"Uaxk9J5Th8BXPyC1mclPMS7J\\\\\\\\\\\\\\\\ngMuobiFdIpryq51pvHkCQQDInvDaKI24Ho+cj6SCKnEO4kbjh/yx1XGwNmY0ld1i\\\\\\\\r5micHFiMI7/IcVZ4\\\\n\",\n                \"value_start\": 0,\n                \"value_end\": 114,\n                \"entropy\": 5.57587\n            },\n            {\n                \"line\": \"2cl1OwdGjRdmO1LT6P1cl8UYIj/S\\\\n-----END RSA PRIVATE KEY-----\\\"\\\"\\\";\",\n                \"line_num\": 11,\n                \"path\": \"./tests/samples/pem_key\",\n                \"info\": \"FILE:./tests/samples/pem_key|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"2cl1OwdGjRdmO1LT6P1cl8UYIj/S\\\\n-----END RSA PRIVATE KEY-----\\\"\\\"\\\";\",\n                \"value_start\": 0,\n                \"value_end\": 63,\n                \"entropy\": 4.72341\n            }\n        ]\n    },\n    {\n        \"rule\": \"PEM Private Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"char pk[] = \\\"\\\\\\\\n-----BEGIN EC PRIVATE KEY-----\\\\nMHcCAQEEID4VC4s0b2n3yvypHb2GO9prFUctYt\\\\r\\\\r\\\\n\\\\nHmGCMvpxkpexbHoAoGCCqGSM49\\\\\\\\\\\\\\\\\\\\nAwEHoUQDQgAE2GwUUuO9/dKl51bOryWzHF8wTSezSqdRIucGhDRsmDITLcNEZw3V\\\\\\\\\\\\\\\\rIaQP59Ufkz8NIkLeIAa1HZGZxCVMQ907FA==\\\\\\\\n-----END EC PRIVATE KEY-----\\\\n\\\";\",\n                \"line_num\": 14,\n                \"path\": \"./tests/samples/pem_key\",\n                \"info\": \"FILE:./tests/samples/pem_key.lzma|LZMA:./tests/samples/pem_key.lzma|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"-----BEGIN EC PRIVATE KEY-----\\\\nMHcCAQEEID4VC4s0b2n3yvypHb2GO9prFUctYt\\\\r\\\\r\\\\n\\\\nHmGCMvpxkpexbHoAoGCCqGSM49\\\\\\\\\\\\\\\\\\\\nAwEHoUQDQgAE2GwUUuO9/dKl51bOryWzHF8wTSezSqdRIucGhDRsmDITLcNEZw3V\\\\\\\\\\\\\\\\rIaQP59Ufkz8NIkLeIAa1HZGZxCVMQ907FA==\\\\\\\\n-----END EC PRIVATE KEY-----\",\n                \"value_start\": 16,\n                \"value_end\": 262,\n                \"entropy\": 5.56558\n            }\n        ]\n    },\n    {\n        \"rule\": \"PEM Private Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"char pk[] = \\\"\\\\\\\\n-----BEGIN EC PRIVATE KEY-----\\\\nMHcCAQEEID4VC4s0b2n3yvypHb2GO9prFUctYt\\\\r\\\\r\\\\n\\\\nHmGCMvpxkpexbHoAoGCCqGSM49\\\\\\\\\\\\\\\\\\\\nAwEHoUQDQgAE2GwUUuO9/dKl51bOryWzHF8wTSezSqdRIucGhDRsmDITLcNEZw3V\\\\\\\\\\\\\\\\rIaQP59Ufkz8NIkLeIAa1HZGZxCVMQ907FA==\\\\\\\\n-----END EC PRIVATE KEY-----\\\\n\\\";\",\n                \"line_num\": 14,\n                \"path\": \"./tests/samples/pem_key\",\n                \"info\": \"FILE:./tests/samples/pem_key.xz|LZMA:./tests/samples/pem_key.xz|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"-----BEGIN EC PRIVATE KEY-----\\\\nMHcCAQEEID4VC4s0b2n3yvypHb2GO9prFUctYt\\\\r\\\\r\\\\n\\\\nHmGCMvpxkpexbHoAoGCCqGSM49\\\\\\\\\\\\\\\\\\\\nAwEHoUQDQgAE2GwUUuO9/dKl51bOryWzHF8wTSezSqdRIucGhDRsmDITLcNEZw3V\\\\\\\\\\\\\\\\rIaQP59Ufkz8NIkLeIAa1HZGZxCVMQ907FA==\\\\\\\\n-----END EC PRIVATE KEY-----\",\n                \"value_start\": 16,\n                \"value_end\": 262,\n                \"entropy\": 5.56558\n            }\n        ]\n    },\n    {\n        \"rule\": \"PEM Private Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"char pk[] = \\\"\\\\\\\\n-----BEGIN EC PRIVATE KEY-----\\\\nMHcCAQEEID4VC4s0b2n3yvypHb2GO9prFUctYt\\\\r\\\\r\\\\n\\\\nHmGCMvpxkpexbHoAoGCCqGSM49\\\\\\\\\\\\\\\\\\\\nAwEHoUQDQgAE2GwUUuO9/dKl51bOryWzHF8wTSezSqdRIucGhDRsmDITLcNEZw3V\\\\\\\\\\\\\\\\rIaQP59Ufkz8NIkLeIAa1HZGZxCVMQ907FA==\\\\\\\\n-----END EC PRIVATE KEY-----\\\\n\\\";\",\n                \"line_num\": 14,\n                \"path\": \"./tests/samples/pem_key\",\n                \"info\": \"FILE:./tests/samples/pem_key|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"-----BEGIN EC PRIVATE KEY-----\\\\nMHcCAQEEID4VC4s0b2n3yvypHb2GO9prFUctYt\\\\r\\\\r\\\\n\\\\nHmGCMvpxkpexbHoAoGCCqGSM49\\\\\\\\\\\\\\\\\\\\nAwEHoUQDQgAE2GwUUuO9/dKl51bOryWzHF8wTSezSqdRIucGhDRsmDITLcNEZw3V\\\\\\\\\\\\\\\\rIaQP59Ufkz8NIkLeIAa1HZGZxCVMQ907FA==\\\\\\\\n-----END EC PRIVATE KEY-----\",\n                \"value_start\": 16,\n                \"value_end\": 262,\n                \"entropy\": 5.56558\n            }\n        ]\n    },\n    {\n        \"rule\": \"PEM Private Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"-----BEGIN OPENSSH LOW ENTROPY PRIVATE KEY-----\",\n                \"line_num\": 27,\n                \"path\": \"./tests/samples/pem_key\",\n                \"info\": \"FILE:./tests/samples/pem_key.lzma|LZMA:./tests/samples/pem_key.lzma|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"-----BEGIN OPENSSH LOW ENTROPY PRIVATE KEY-----\",\n                \"value_start\": 0,\n                \"value_end\": 47,\n                \"entropy\": 3.8375\n            },\n            {\n                \"line\": \"12345678901231278634987284736283548102438723941563428762374129402103402394932746672734543664375t7323341253845186253784==\",\n                \"line_num\": 28,\n                \"path\": \"./tests/samples/pem_key\",\n                \"info\": \"FILE:./tests/samples/pem_key.lzma|LZMA:./tests/samples/pem_key.lzma|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"12345678901231278634987284736283548102438723941563428762374129402103402394932746672734543664375t7323341253845186253784==\",\n                \"value_start\": 0,\n                \"value_end\": 120,\n                \"entropy\": 3.30679\n            },\n            {\n                \"line\": \"-----END LOW ENTROPY PRIVATE KEY-----\",\n                \"line_num\": 29,\n                \"path\": \"./tests/samples/pem_key\",\n                \"info\": \"FILE:./tests/samples/pem_key.lzma|LZMA:./tests/samples/pem_key.lzma|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"-----END LOW ENTROPY PRIVATE KEY-----\",\n                \"value_start\": 0,\n                \"value_end\": 37,\n                \"entropy\": 3.55488\n            }\n        ]\n    },\n    {\n        \"rule\": \"PEM Private Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"-----BEGIN OPENSSH LOW ENTROPY PRIVATE KEY-----\",\n                \"line_num\": 27,\n                \"path\": \"./tests/samples/pem_key\",\n                \"info\": \"FILE:./tests/samples/pem_key.xz|LZMA:./tests/samples/pem_key.xz|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"-----BEGIN OPENSSH LOW ENTROPY PRIVATE KEY-----\",\n                \"value_start\": 0,\n                \"value_end\": 47,\n                \"entropy\": 3.8375\n            },\n            {\n                \"line\": \"12345678901231278634987284736283548102438723941563428762374129402103402394932746672734543664375t7323341253845186253784==\",\n                \"line_num\": 28,\n                \"path\": \"./tests/samples/pem_key\",\n                \"info\": \"FILE:./tests/samples/pem_key.xz|LZMA:./tests/samples/pem_key.xz|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"12345678901231278634987284736283548102438723941563428762374129402103402394932746672734543664375t7323341253845186253784==\",\n                \"value_start\": 0,\n                \"value_end\": 120,\n                \"entropy\": 3.30679\n            },\n            {\n                \"line\": \"-----END LOW ENTROPY PRIVATE KEY-----\",\n                \"line_num\": 29,\n                \"path\": \"./tests/samples/pem_key\",\n                \"info\": \"FILE:./tests/samples/pem_key.xz|LZMA:./tests/samples/pem_key.xz|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"-----END LOW ENTROPY PRIVATE KEY-----\",\n                \"value_start\": 0,\n                \"value_end\": 37,\n                \"entropy\": 3.55488\n            }\n        ]\n    },\n    {\n        \"rule\": \"PEM Private Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"-----BEGIN OPENSSH LOW ENTROPY PRIVATE KEY-----\",\n                \"line_num\": 27,\n                \"path\": \"./tests/samples/pem_key\",\n                \"info\": \"FILE:./tests/samples/pem_key|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"-----BEGIN OPENSSH LOW ENTROPY PRIVATE KEY-----\",\n                \"value_start\": 0,\n                \"value_end\": 47,\n                \"entropy\": 3.8375\n            },\n            {\n                \"line\": \"12345678901231278634987284736283548102438723941563428762374129402103402394932746672734543664375t7323341253845186253784==\",\n                \"line_num\": 28,\n                \"path\": \"./tests/samples/pem_key\",\n                \"info\": \"FILE:./tests/samples/pem_key|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"12345678901231278634987284736283548102438723941563428762374129402103402394932746672734543664375t7323341253845186253784==\",\n                \"value_start\": 0,\n                \"value_end\": 120,\n                \"entropy\": 3.30679\n            },\n            {\n                \"line\": \"-----END LOW ENTROPY PRIVATE KEY-----\",\n                \"line_num\": 29,\n                \"path\": \"./tests/samples/pem_key\",\n                \"info\": \"FILE:./tests/samples/pem_key|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"-----END LOW ENTROPY PRIVATE KEY-----\",\n                \"value_start\": 0,\n                \"value_end\": 37,\n                \"entropy\": 3.55488\n            }\n        ]\n    },\n    {\n        \"rule\": \"PEM Private Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"  *  -----BEGIN PGP PRIVATE KEY BLOCK-----\",\n                \"line_num\": 35,\n                \"path\": \"./tests/samples/pem_key\",\n                \"info\": \"FILE:./tests/samples/pem_key|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"-----BEGIN PGP PRIVATE KEY BLOCK-----\",\n                \"value_start\": 5,\n                \"value_end\": 42,\n                \"entropy\": 3.62218\n            },\n            {\n                \"line\": \"  *  Version: GnuPG v1.4.12 (GNU/Linux)\",\n                \"line_num\": 36,\n                \"path\": \"./tests/samples/pem_key\",\n                \"info\": \"FILE:./tests/samples/pem_key|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"  *  Version: GnuPG v1.4.12 (GNU/Linux)\",\n                \"value_start\": 0,\n                \"value_end\": 39,\n                \"entropy\": 4.33255\n            },\n            {\n                \"line\": \"\",\n                \"line_num\": 37,\n                \"path\": \"./tests/samples/pem_key\",\n                \"info\": \"FILE:./tests/samples/pem_key|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"\",\n                \"value_start\": 0,\n                \"value_end\": 0,\n                \"entropy\": 0.0\n            },\n            {\n                \"line\": \"  *  KzUsCyhuzSRrWk74aarzJ6i3z4wB01Y6wUn5rkbB8ig3eRjZtke1iX8c5cLtx3Mj\",\n                \"line_num\": 38,\n                \"path\": \"./tests/samples/pem_key\",\n                \"info\": \"FILE:./tests/samples/pem_key|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"KzUsCyhuzSRrWk74aarzJ6i3z4wB01Y6wUn5rkbB8ig3eRjZtke1iX8c5cLtx3Mj\",\n                \"value_start\": 5,\n                \"value_end\": 69,\n                \"entropy\": 5.14032\n            },\n            {\n                \"line\": \"  *  SkMlXtGJEXbSEcN4wyPJkLZ6YxI76+WKuWlHZWdMXTrDYJLhvN6X7xUx4LgsGtb8\",\n                \"line_num\": 39,\n                \"path\": \"./tests/samples/pem_key\",\n                \"info\": \"FILE:./tests/samples/pem_key|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"SkMlXtGJEXbSEcN4wyPJkLZ6YxI76+WKuWlHZWdMXTrDYJLhvN6X7xUx4LgsGtb8\",\n                \"value_start\": 5,\n                \"value_end\": 69,\n                \"entropy\": 5.09727\n            },\n            {\n                \"line\": \" //\\tGuVDoS4h4fZPyksjPyNpjUklFOZT6vTT2/QvOYxRTt/NLBleEpQEIHu6lHiwqsqB\",\n                \"line_num\": 40,\n                \"path\": \"./tests/samples/pem_key\",\n                \"info\": \"FILE:./tests/samples/pem_key|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"GuVDoS4h4fZPyksjPyNpjUklFOZT6vTT2/QvOYxRTt/NLBleEpQEIHu6lHiwqsqB\",\n                \"value_start\": 4,\n                \"value_end\": 68,\n                \"entropy\": 5.20695\n            },\n            {\n                \"line\": \" ///\\t57KDXUMrZH/hk9Rr8mgdCT/evvhuKLBljh6ShBqn+jrMy101jHBlhxRefDjq9pmI\",\n                \"line_num\": 41,\n                \"path\": \"./tests/samples/pem_key\",\n                \"info\": \"FILE:./tests/samples/pem_key|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"57KDXUMrZH/hk9Rr8mgdCT/evvhuKLBljh6ShBqn+jrMy101jHBlhxRefDjq9pmI\",\n                \"value_start\": 5,\n                \"value_end\": 69,\n                \"entropy\": 5.13876\n            },\n            {\n                \"line\": \"  //  UhZRwnRxgNb86LEEcgcK35SZCFnQu+POJWwWwWpkzpPiYHS+G66c3k0ApdIJjn2k\",\n                \"line_num\": 42,\n                \"path\": \"./tests/samples/pem_key\",\n                \"info\": \"FILE:./tests/samples/pem_key|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"UhZRwnRxgNb86LEEcgcK35SZCFnQu+POJWwWwWpkzpPiYHS+G66c3k0ApdIJjn2k\",\n                \"value_start\": 6,\n                \"value_end\": 70,\n                \"entropy\": 5.19868\n            },\n            {\n                \"line\": \"  ///  q1yJq3TyI0Uc/snUIboAFHI5HIJHXQX/lwmeY/pDtuT6S+tf7XFMHXWWDtzb2xkI\",\n                \"line_num\": 43,\n                \"path\": \"./tests/samples/pem_key\",\n                \"info\": \"FILE:./tests/samples/pem_key|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"q1yJq3TyI0Uc/snUIboAFHI5HIJHXQX/lwmeY/pDtuT6S+tf7XFMHXWWDtzb2xkI\",\n                \"value_start\": 7,\n                \"value_end\": 71,\n                \"entropy\": 5.13876\n            },\n            {\n                \"line\": \"// # /*iO/qjWpQtL6R1C03xMpECkmQaMOY/k9Hwg4JJa9YTe3DrehBz/NDw9iKaBHHKxf1*/\",\n                \"line_num\": 44,\n                \"path\": \"./tests/samples/pem_key\",\n                \"info\": \"FILE:./tests/samples/pem_key|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"iO/qjWpQtL6R1C03xMpECkmQaMOY/k9Hwg4JJa9YTe3DrehBz/NDw9iKaBHHKxf1\",\n                \"value_start\": 7,\n                \"value_end\": 71,\n                \"entropy\": 5.17157\n            },\n            {\n                \"line\": \"# # # *  874RZktKcNFG9Yx0CZH7mRhAxiQG1iTbzLzM/rN+rb8DZnt8ijlp5/YzZeAVXUi9\",\n                \"line_num\": 45,\n                \"path\": \"./tests/samples/pem_key\",\n                \"info\": \"FILE:./tests/samples/pem_key|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"874RZktKcNFG9Yx0CZH7mRhAxiQG1iTbzLzM/rN+rb8DZnt8ijlp5/YzZeAVXUi9\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.22641\n            },\n            {\n                \"line\": \"#+#+#+# *  IunznTXS1QmfDC6dVyRGfaJwzf6hk8RlM24JuZ3ATLaZ9sY5uZuXVa8syNwAGqVb\",\n                \"line_num\": 46,\n                \"path\": \"./tests/samples/pem_key\",\n                \"info\": \"FILE:./tests/samples/pem_key|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"IunznTXS1QmfDC6dVyRGfaJwzf6hk8RlM24JuZ3ATLaZ9sY5uZuXVa8syNwAGqVb\",\n                \"value_start\": 11,\n                \"value_end\": 75,\n                \"entropy\": 5.17157\n            },\n            {\n                \"line\": \"  +  'yGeBfo8L8SigTUdhFrLc1AlgAGPh99fYyscpE+U+Tqm3Jl3vDLJ/VGGOLRlqLKgi' +\",\n                \"line_num\": 47,\n                \"path\": \"./tests/samples/pem_key\",\n                \"info\": \"FILE:./tests/samples/pem_key|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"yGeBfo8L8SigTUdhFrLc1AlgAGPh99fYyscpE+U+Tqm3Jl3vDLJ/VGGOLRlqLKgi\",\n                \"value_start\": 6,\n                \"value_end\": 70,\n                \"entropy\": 5.10751\n            },\n            {\n                \"line\": \" +\\\"\\\" +\\\" 1DDOZJIuWH1Yo5/FUyH7x7McRO7ckDnCwknuXUlaCCzjomFZkoAUSym59+u0LlAh\\\"+\",\n                \"line_num\": 48,\n                \"path\": \"./tests/samples/pem_key\",\n                \"info\": \"FILE:./tests/samples/pem_key|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"1DDOZJIuWH1Yo5/FUyH7x7McRO7ckDnCwknuXUlaCCzjomFZkoAUSym59+u0LlAh\",\n                \"value_start\": 8,\n                \"value_end\": 72,\n                \"entropy\": 5.10493\n            },\n            {\n                \"line\": \"  *  pBUvFiIZFQb3auylOTyOvXI4ZG8lPQfHKdpK3x2U4nUdCD9z7/awEpODLPWkdzjf\",\n                \"line_num\": 49,\n                \"path\": \"./tests/samples/pem_key\",\n                \"info\": \"FILE:./tests/samples/pem_key|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"pBUvFiIZFQb3auylOTyOvXI4ZG8lPQfHKdpK3x2U4nUdCD9z7/awEpODLPWkdzjf\",\n                \"value_start\": 5,\n                \"value_end\": 69,\n                \"entropy\": 5.23407\n            },\n            {\n                \"line\": \"  *  gUjuP7eJrK/5p2iJ9PSz6+fytneqnUdwVbKOdlcj7UFnVUAIxlBiA2xdwVKqNo70\",\n                \"line_num\": 50,\n                \"path\": \"./tests/samples/pem_key\",\n                \"info\": \"FILE:./tests/samples/pem_key|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"gUjuP7eJrK/5p2iJ9PSz6+fytneqnUdwVbKOdlcj7UFnVUAIxlBiA2xdwVKqNo70\",\n                \"value_start\": 5,\n                \"value_end\": 69,\n                \"entropy\": 5.15977\n            },\n            {\n                \"line\": \"  *  QMnczlCtGqUmeAwimQ+IyMkyV0KJYwV/PFCXjfQ2G/mnN88OtWcz793omSsWmwGc\",\n                \"line_num\": 51,\n                \"path\": \"./tests/samples/pem_key\",\n                \"info\": \"FILE:./tests/samples/pem_key|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"QMnczlCtGqUmeAwimQ+IyMkyV0KJYwV/PFCXjfQ2G/mnN88OtWcz793omSsWmwGc\",\n                \"value_start\": 5,\n                \"value_end\": 69,\n                \"entropy\": 5.20892\n            },\n            {\n                \"line\": \"  *  iAViSZ0A0JWpTZHnZs8DDpmuDcydnyLMJDXHyOqtVe0lmWxpSTmfESFlSKeveYeY\",\n                \"line_num\": 52,\n                \"path\": \"./tests/samples/pem_key\",\n                \"info\": \"FILE:./tests/samples/pem_key|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"iAViSZ0A0JWpTZHnZs8DDpmuDcydnyLMJDXHyOqtVe0lmWxpSTmfESFlSKeveYeY\",\n                \"value_start\": 5,\n                \"value_end\": 69,\n                \"entropy\": 4.94102\n            },\n            {\n                \"line\": \"  *  5Wq3vumtleWydYNgxgwwaPEApnr+uCk2J0Ye0+BjFRJHfPT4oBHzfrvWZq3lTnMJ\",\n                \"line_num\": 53,\n                \"path\": \"./tests/samples/pem_key\",\n                \"info\": \"FILE:./tests/samples/pem_key|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"5Wq3vumtleWydYNgxgwwaPEApnr+uCk2J0Ye0+BjFRJHfPT4oBHzfrvWZq3lTnMJ\",\n                \"value_start\": 5,\n                \"value_end\": 69,\n                \"entropy\": 5.28891\n            },\n            {\n                \"line\": \"  *  HFNAoTz9q//Ty/CsKdla5HOsOgFJx42T12tb+N0eK9Bc5/Fj3FBLKtXUgI7gqOcw\",\n                \"line_num\": 54,\n                \"path\": \"./tests/samples/pem_key\",\n                \"info\": \"FILE:./tests/samples/pem_key|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"HFNAoTz9q//Ty/CsKdla5HOsOgFJx42T12tb+N0eK9Bc5/Fj3FBLKtXUgI7gqOcw\",\n                \"value_start\": 5,\n                \"value_end\": 69,\n                \"entropy\": 5.14032\n            },\n            {\n                \"line\": \"  *  pFZSbyaPPMRZ/4kPx0+KaDZcZ7r2roCJFKxpeIeyeMXvLr0C2dAmB/oBWBuHuAsw\",\n                \"line_num\": 55,\n                \"path\": \"./tests/samples/pem_key\",\n                \"info\": \"FILE:./tests/samples/pem_key|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"pFZSbyaPPMRZ/4kPx0+KaDZcZ7r2roCJFKxpeIeyeMXvLr0C2dAmB/oBWBuHuAsw\",\n                \"value_start\": 5,\n                \"value_end\": 69,\n                \"entropy\": 5.14032\n            },\n            {\n                \"line\": \"  *  ESn0CmT7gTwJ33lQHYBFAUeNMXPERcAFAWUXPxWGfgmOBBADCwDFcKVwnhM9UGTy\",\n                \"line_num\": 56,\n                \"path\": \"./tests/samples/pem_key\",\n                \"info\": \"FILE:./tests/samples/pem_key|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"ESn0CmT7gTwJ33lQHYBFAUeNMXPERcAFAWUXPxWGfgmOBBADCwDFcKVwnhM9UGTy\",\n                \"value_start\": 5,\n                \"value_end\": 69,\n                \"entropy\": 5.09727\n            },\n            {\n                \"line\": \"  *  OBDjurirbyR6QM4cbq2qAzR0CRO6yyI9aXGkzy4P6y0LKQ0hJ9je2rp/4Ud2CdY4\",\n                \"line_num\": 57,\n                \"path\": \"./tests/samples/pem_key\",\n                \"info\": \"FILE:./tests/samples/pem_key|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"OBDjurirbyR6QM4cbq2qAzR0CRO6yyI9aXGkzy4P6y0LKQ0hJ9je2rp/4Ud2CdY4\",\n                \"value_start\": 5,\n                \"value_end\": 69,\n                \"entropy\": 5.04087\n            },\n            {\n                \"line\": \"  *  idZTtlIeiFfpHqjCQLjH+zaEG2pqRGuBHxqeGTuJKcpTzDeJkUr278hNDUSFtCQI\",\n                \"line_num\": 58,\n                \"path\": \"./tests/samples/pem_key\",\n                \"info\": \"FILE:./tests/samples/pem_key|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"idZTtlIeiFfpHqjCQLjH+zaEG2pqRGuBHxqeGTuJKcpTzDeJkUr278hNDUSFtCQI\",\n                \"value_start\": 5,\n                \"value_end\": 69,\n                \"entropy\": 5.14798\n            },\n            {\n                \"line\": \"  *  TGnx4JlcYHYLAvcjg0a2YhQyOcaS8iJhxaF+4yoMIh0DB5FA0V3ifF364h/o5wN7\",\n                \"line_num\": 59,\n                \"path\": \"./tests/samples/pem_key\",\n                \"info\": \"FILE:./tests/samples/pem_key|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"TGnx4JlcYHYLAvcjg0a2YhQyOcaS8iJhxaF+4yoMIh0DB5FA0V3ifF364h/o5wN7\",\n                \"value_start\": 5,\n                \"value_end\": 69,\n                \"entropy\": 5.17923\n            },\n            {\n                \"line\": \"  *  /XOifXctwWKfR91qGtltlCWeVdFuumSOPG2hxLPW4HOlOWkhdOCRFtkqQuYd+bRz\",\n                \"line_num\": 60,\n                \"path\": \"./tests/samples/pem_key\",\n                \"info\": \"FILE:./tests/samples/pem_key|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"/XOifXctwWKfR91qGtltlCWeVdFuumSOPG2hxLPW4HOlOWkhdOCRFtkqQuYd+bRz\",\n                \"value_start\": 5,\n                \"value_end\": 69,\n                \"entropy\": 4.99017\n            },\n            {\n                \"line\": \"  *  OoMgCLuFYDUvd7bso+IjrhPLTPHhr8V1CYz9jsKDXLvoz5XHvobkyijxOt+332SB\",\n                \"line_num\": 61,\n                \"path\": \"./tests/samples/pem_key\",\n                \"info\": \"FILE:./tests/samples/pem_key|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"OoMgCLuFYDUvd7bso+IjrhPLTPHhr8V1CYz9jsKDXLvoz5XHvobkyijxOt+332SB\",\n                \"value_start\": 5,\n                \"value_end\": 69,\n                \"entropy\": 5.21461\n            },\n            {\n                \"line\": \"  *  4Rez5/vpHftx6pHbCa+LfdUZDYPeTUHgtTvqmbDMvwHMMwgMJP6gF6jyQINYXTIN\",\n                \"line_num\": 62,\n                \"path\": \"./tests/samples/pem_key\",\n                \"info\": \"FILE:./tests/samples/pem_key|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"4Rez5/vpHftx6pHbCa+LfdUZDYPeTUHgtTvqmbDMvwHMMwgMJP6gF6jyQINYXTIN\",\n                \"value_start\": 5,\n                \"value_end\": 69,\n                \"entropy\": 5.07782\n            },\n            {\n                \"line\": \"  *  sTFVBS2exAu1uy/2onjE1ROZJqsKF6At24LzlZJZvKJRVh8n0Jrchs+8EluojWyv\",\n                \"line_num\": 63,\n                \"path\": \"./tests/samples/pem_key\",\n                \"info\": \"FILE:./tests/samples/pem_key|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"sTFVBS2exAu1uy/2onjE1ROZJqsKF6At24LzlZJZvKJRVh8n0Jrchs+8EluojWyv\",\n                \"value_start\": 5,\n                \"value_end\": 69,\n                \"entropy\": 5.10907\n            },\n            {\n                \"line\": \"  *  ZIgdqdWv+SLPoZX7+2X/3DptmnL4PWZgjoW5n9fEkmr9LgblEpKp5z6vyN2kGdvk\",\n                \"line_num\": 64,\n                \"path\": \"./tests/samples/pem_key\",\n                \"info\": \"FILE:./tests/samples/pem_key|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"ZIgdqdWv+SLPoZX7+2X/3DptmnL4PWZgjoW5n9fEkmr9LgblEpKp5z6vyN2kGdvk\",\n                \"value_start\": 5,\n                \"value_end\": 69,\n                \"entropy\": 5.09314\n            },\n            {\n                \"line\": \"  *  n57vMlC96VDbJkJ4ZwLx+XCdbSArsmOJ9QIKaxXSH2lV\",\n                \"line_num\": 65,\n                \"path\": \"./tests/samples/pem_key\",\n                \"info\": \"FILE:./tests/samples/pem_key|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"n57vMlC96VDbJkJ4ZwLx+XCdbSArsmOJ9QIKaxXSH2lV\",\n                \"value_start\": 5,\n                \"value_end\": 49,\n                \"entropy\": 4.98773\n            },\n            {\n                \"line\": \"  *  =JG+I\",\n                \"line_num\": 66,\n                \"path\": \"./tests/samples/pem_key\",\n                \"info\": \"FILE:./tests/samples/pem_key|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"=JG+I\",\n                \"value_start\": 5,\n                \"value_end\": 10,\n                \"entropy\": 2.32193\n            },\n            {\n                \"line\": \"  *  -----END PGP PRIVATE KEY BLOCK-----\",\n                \"line_num\": 67,\n                \"path\": \"./tests/samples/pem_key\",\n                \"info\": \"FILE:./tests/samples/pem_key|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"-----END PGP PRIVATE KEY BLOCK-----\",\n                \"value_start\": 5,\n                \"value_end\": 40,\n                \"entropy\": 3.62274\n            }\n        ]\n    },\n    {\n        \"rule\": \"PEM Private Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"-----BEGIN PRIVATE KEY-----\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/pem_key.crx\",\n                \"info\": \"FILE:./tests/samples/pem_key.crx|CRX|ZIP:pem_key_|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"-----BEGIN PRIVATE KEY-----\",\n                \"value_start\": 0,\n                \"value_end\": 27,\n                \"entropy\": 3.20029\n            },\n            {\n                \"line\": \"MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgyK82YrlPyJb7FLsk\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/pem_key.crx\",\n                \"info\": \"FILE:./tests/samples/pem_key.crx|CRX|ZIP:pem_key_|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgyK82YrlPyJb7FLsk\",\n                \"value_start\": 0,\n                \"value_end\": 64,\n                \"entropy\": 4.72268\n            },\n            {\n                \"line\": \"1hg6SN+UI2R/QIVPPomtVY0yeH6hRANCAAStXqONgR32XCE3nfIkmYjk28Kn0wsK\",\n                \"line_num\": 3,\n                \"path\": \"./tests/samples/pem_key.crx\",\n                \"info\": \"FILE:./tests/samples/pem_key.crx|CRX|ZIP:pem_key_|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"1hg6SN+UI2R/QIVPPomtVY0yeH6hRANCAAStXqONgR32XCE3nfIkmYjk28Kn0wsK\",\n                \"value_start\": 0,\n                \"value_end\": 64,\n                \"entropy\": 5.12852\n            },\n            {\n                \"line\": \"+7OCsLnRoqJfWJAf8MV5nbMDiox7WFgRSOtt+l3u3zjpOznhmQyeN26Y\",\n                \"line_num\": 4,\n                \"path\": \"./tests/samples/pem_key.crx\",\n                \"info\": \"FILE:./tests/samples/pem_key.crx|CRX|ZIP:pem_key_|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"+7OCsLnRoqJfWJAf8MV5nbMDiox7WFgRSOtt+l3u3zjpOznhmQyeN26Y\",\n                \"value_start\": 0,\n                \"value_end\": 56,\n                \"entropy\": 5.24468\n            },\n            {\n                \"line\": \"-----END PRIVATE KEY-----\",\n                \"line_num\": 5,\n                \"path\": \"./tests/samples/pem_key.crx\",\n                \"info\": \"FILE:./tests/samples/pem_key.crx|CRX|ZIP:pem_key_|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"-----END PRIVATE KEY-----\",\n                \"value_start\": 0,\n                \"value_end\": 25,\n                \"entropy\": 3.04489\n            }\n        ]\n    },\n    {\n        \"rule\": \"PEM Private Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"k = \\\"\\\\\\\"-----BEGIN PRIVATE KEY-----\\\\\\\\n\\\"\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/pem_key.p.code\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.code|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"-----BEGIN PRIVATE KEY-----\",\n                \"value_start\": 7,\n                \"value_end\": 34,\n                \"entropy\": 3.20029\n            },\n            {\n                \"line\": \" +   \\\"MIIBVAIBADANBgkqhkiG9w0BAQEFAASCAT4wggE6AgEAAkEAxAIxg6QtxmnJ0Bsj\\\\\\\\n\\\"\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/pem_key.p.code\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.code|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"MIIBVAIBADANBgkqhkiG9w0BAQEFAASCAT4wggE6AgEAAkEAxAIxg6QtxmnJ0Bsj\",\n                \"value_start\": 6,\n                \"value_end\": 70,\n                \"entropy\": 4.44143\n            },\n            {\n                \"line\": \" +   \\\"VRsEhjLB9lSY9CaFvvEbXK9eBezqR6x6epxm4w/bx1xAK1O9m4iyEN72+jhpZHZs\\\\\\\\n\\\"\",\n                \"line_num\": 3,\n                \"path\": \"./tests/samples/pem_key.p.code\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.code|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"VRsEhjLB9lSY9CaFvvEbXK9eBezqR6x6epxm4w/bx1xAK1O9m4iyEN72+jhpZHZs\",\n                \"value_start\": 6,\n                \"value_end\": 70,\n                \"entropy\": 5.16391\n            },\n            {\n                \"line\": \" +   \\\"6RZsxQIDAQABAkBbzksyxWtLS7Fi79MUwZrU4GFI50bc1E5AqN2QA/OeAg+tdgRC\\\\\\\\n\\\"\",\n                \"line_num\": 4,\n                \"path\": \"./tests/samples/pem_key.p.code\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.code|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"6RZsxQIDAQABAkBbzksyxWtLS7Fi79MUwZrU4GFI50bc1E5AqN2QA/OeAg+tdgRC\",\n                \"value_start\": 6,\n                \"value_end\": 70,\n                \"entropy\": 5.24586\n            },\n            {\n                \"line\": \" +   \\\"eTVV2eZEM750xZUCoqDwLsLeYrGFR7zy0VkBAiEA5ljPCFu3UIVOgZXhSr342mTX\\\\\\\\n\\\"\",\n                \"line_num\": 5,\n                \"path\": \"./tests/samples/pem_key.p.code\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.code|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"eTVV2eZEM750xZUCoqDwLsLeYrGFR7zy0VkBAiEA5ljPCFu3UIVOgZXhSr342mTX\",\n                \"value_start\": 6,\n                \"value_end\": 70,\n                \"entropy\": 5.28891\n            },\n            {\n                \"line\": \" +   \\\"vC9/t9XrGuHCQU8oOW0CIQDZ1mYBOniJmPD0h5j1wadmLkmmZRPUNyMTEHiBUEmB\\\\\\\\n\\\"\",\n                \"line_num\": 6,\n                \"path\": \"./tests/samples/pem_key.p.code\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.code|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"vC9/t9XrGuHCQU8oOW0CIQDZ1mYBOniJmPD0h5j1wadmLkmmZRPUNyMTEHiBUEmB\",\n                \"value_start\": 6,\n                \"value_end\": 70,\n                \"entropy\": 5.19102\n            },\n            {\n                \"line\": \" +   \\\"uQIgSpG1dB882PRO1eSPaoLVbN34eRNnZTv7QFiVak8V1oECIGk3tKdtPaGAnQoP\\\\\\\\n\\\"\",\n                \"line_num\": 7,\n                \"path\": \"./tests/samples/pem_key.p.code\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.code|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"uQIgSpG1dB882PRO1eSPaoLVbN34eRNnZTv7QFiVak8V1oECIGk3tKdtPaGAnQoP\",\n                \"value_start\": 6,\n                \"value_end\": 70,\n                \"entropy\": 5.04243\n            },\n            {\n                \"line\": \" +   \\\"oOM7eYbSXsKfWdeMFkX0E7CqPgcJAiEAlydP8ln92gy4LefZuIJn1/M5PEeRFKrq\\\\\\\\n\\\"\",\n                \"line_num\": 8,\n                \"path\": \"./tests/samples/pem_key.p.code\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.code|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"oOM7eYbSXsKfWdeMFkX0E7CqPgcJAiEAlydP8ln92gy4LefZuIJn1/M5PEeRFKrq\",\n                \"value_start\": 6,\n                \"value_end\": 70,\n                \"entropy\": 5.24586\n            },\n            {\n                \"line\": \" +   \\\"aAjRMKT7uCM=\\\\\\\\n\\\"\",\n                \"line_num\": 9,\n                \"path\": \"./tests/samples/pem_key.p.code\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.code|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"aAjRMKT7uCM=\",\n                \"value_start\": 6,\n                \"value_end\": 18,\n                \"entropy\": 3.4183\n            },\n            {\n                \"line\": \" +   \\\"-----END RSA PRIVATE KEY-----\\\\\\\"\\\";\",\n                \"line_num\": 10,\n                \"path\": \"./tests/samples/pem_key.p.code\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.code|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"-----END RSA PRIVATE KEY-----\",\n                \"value_start\": 6,\n                \"value_end\": 35,\n                \"entropy\": 3.24663\n            }\n        ]\n    },\n    {\n        \"rule\": \"PEM Private Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"#6 0.245 -----BEGIN PRIVATE KEY-----\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.docker.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"-----BEGIN PRIVATE KEY-----\",\n                \"value_start\": 9,\n                \"value_end\": 36,\n                \"entropy\": 3.20029\n            },\n            {\n                \"line\": \"#6 0.245 MIITXgIBADALBglghkgBZQMEAxMEghNKMIITRgQgD1HmdulwXADuIR7CZpjn+kQ0\",\n                \"line_num\": 3,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.docker.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"MIITXgIBADALBglghkgBZQMEAxMEghNKMIITRgQgD1HmdulwXADuIR7CZpjn+kQ0\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 4.69647\n            },\n            {\n                \"line\": \"#6 0.245 YQQLBsEKL+QJ4mm5BhsEghMg0QKJZBJu8a93tNmECcVyVI3601WKlimBrior84u+\",\n                \"line_num\": 4,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.docker.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"YQQLBsEKL+QJ4mm5BhsEghMg0QKJZBJu8a93tNmECcVyVI3601WKlimBrior84u+\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 4.99586\n            },\n            {\n                \"line\": \"#6 0.245 9hLuy5J9PtjU05AGBBMW2LmlLopK1mROkYdqKofmVjQ625mx0+VmcrlcPBwO2Ows\",\n                \"line_num\": 5,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.docker.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"9hLuy5J9PtjU05AGBBMW2LmlLopK1mROkYdqKofmVjQ625mx0+VmcrlcPBwO2Ows\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.13462\n            },\n            {\n                \"line\": \"#6 0.245 P0F354UFIsuK8u9gKDv1QUuJBcub6W/4aPBBmCSlKK6t4X6ODXmTZm0q4krMQsAk\",\n                \"line_num\": 6,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.docker.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"P0F354UFIsuK8u9gKDv1QUuJBcub6W/4aPBBmCSlKK6t4X6ODXmTZm0q4krMQsAk\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.12086\n            },\n            {\n                \"line\": \"#6 0.245 doxhFgUQJS6SAAGTwoDjEIAckTAao1AQsQkUBA3SOEzQwDGTyJCQFI0IkRARl4kS\",\n                \"line_num\": 7,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.docker.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"doxhFgUQJS6SAAGTwoDjEIAckTAao1AQsQkUBA3SOEzQwDGTyJCQFI0IkRARl4kS\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 4.78866\n            },\n            {\n                \"line\": \"#6 0.245 BInUAmzcgGHjBE3MmEXTQAFjiCnIFgAApYSToJAMFYASoBHaIHEUJy2KGIbSAhIB\",\n                \"line_num\": 8,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.docker.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"BInUAmzcgGHjBE3MmEXTQAFjiCnIFgAApYSToJAMFYASoBHaIHEUJy2KGIbSAhIB\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 4.74561\n            },\n            {\n                \"line\": \"#6 0.245 QRKCGIUgkWkhMI4JIZHRhGWBllELxIxhkCRJwinIFGIMqTHJRm6jEoBJAI0SBQVD\",\n                \"line_num\": 9,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.docker.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"QRKCGIUgkWkhMI4JIZHRhGWBllELxIxhkCRJwinIFGIMqTHJRm6jEoBJAI0SBQVD\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 4.89577\n            },\n            {\n                \"line\": \"#6 0.245 qBAgEQERJoVIgE0Ct42IMEJIMoxJAggSQwYhsiXjmEkMR3HZNAXRFiqjFgAkwUgE\",\n                \"line_num\": 10,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.docker.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"qBAgEQERJoVIgE0Ct42IMEJIMoxJAggSQwYhsiXjmEkMR3HZNAXRFiqjFgAkwUgE\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 4.81189\n            },\n            {\n                \"line\": \"#6 0.245 A4YTFQ1aFgrYNo7TGApJBkTggC0kR0wDAJKUGDBBNoqjAAkTKWEBto0AAIYERWxE\",\n                \"line_num\": 11,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.docker.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"A4YTFQ1aFgrYNo7TGApJBkTggC0kR0wDAJKUGDBBNoqjAAkTKWEBto0AAIYERWxE\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 4.74717\n            },\n            {\n                \"line\": \"#6 0.245 xEwiqYgUxxGAKICTkEQIwRDDFmgQhEGbEgySGDASuUhbIkWJtCAKgGGhBoXDImGY\",\n                \"line_num\": 12,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.docker.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"xEwiqYgUxxGAKICTkEQIwRDDFmgQhEGbEgySGDASuUhbIkWJtCAKgGGhBoXDImGY\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 4.72227\n            },\n            {\n                \"line\": \"#6 0.245 JEULtzEQMCIhKY0jwGThQIwBQY6QhpDDGAwUQCHUJpDhAiwiIZJTME6kFipBGA3R\",\n                \"line_num\": 13,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.docker.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"JEULtzEQMCIhKY0jwGThQIwBQY6QhpDDGAwUQCHUJpDhAiwiIZJTME6kFipBGA3R\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 4.71244\n            },\n            {\n                \"line\": \"#6 0.245 qCzDQDKiAiUDBDEZuGXhAnASMDCMNpAEsWChJBATpUFUMilgyIlgyEwYJoUZGVGY\",\n                \"line_num\": 14,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.docker.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"qCzDQDKiAiUDBDEZuGXhAnASMDCMNpAEsWChJBATpUFUMilgyIlgyEwYJoUZGVGY\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 4.85947\n            },\n            {\n                \"line\": \"#6 0.245 ogjZhJHTECwUFgUjQCkBRgbMEI4blUSEyAHklAXklgUYw0xaSDIJIkGDFiJRkkiK\",\n                \"line_num\": 15,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.docker.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"ogjZhJHTECwUFgUjQCkBRgbMEI4blUSEyAHklAXklgUYw0xaSDIJIkGDFiJRkkiK\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 4.86673\n            },\n            {\n                \"line\": \"#6 0.245 gCDTQITBBBGRsmGcBJIYBXIQp4yDtA3QmE3UJI0QgCVawCwLBRCKNDAcMoIDAxII\",\n                \"line_num\": 16,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.docker.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"gCDTQITBBBGRsmGcBJIYBXIQp4yDtA3QmE3UJI0QgCVawCwLBRCKNDAcMoIDAxII\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 4.72006\n            },\n            {\n                \"line\": \"#6 0.245 RmJCsmCaAojIQg0MtQzDmEQZgYESQSQZpY0kqUDgOEoQgoRCREyMJE0YJkojyCgg\",\n                \"line_num\": 17,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.docker.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"RmJCsmCaAojIQg0MtQzDmEQZgYESQSQZpY0kqUDgOEoQgoRCREyMJE0YJkojyCgg\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 4.49369\n            },\n            {\n                \"line\": \"#6 0.245 EQ5cGA4hNI0TBoKbIkiQOCyMAjIhl1DgKAlbwnCYKAzKQECCGHDiBJBJNBEiE4Ia\",\n                \"line_num\": 18,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.docker.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"EQ5cGA4hNI0TBoKbIkiQOCyMAjIhl1DgKAlbwnCYKAzKQECCGHDiBJBJNBEiE4Ia\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 4.85141\n            },\n            {\n                \"line\": \"#6 0.245 xo0CIoRcNiUapW1UmGHLREVihg0ZRiYUxwzEwEHToCQDMIiSAFGaQAhSNIpaIo3g\",\n                \"line_num\": 19,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.docker.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"xo0CIoRcNiUapW1UmGHLREVihg0ZRiYUxwzEwEHToCQDMIiSAFGaQAhSNIpaIo3g\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 4.92157\n            },\n            {\n                \"line\": \"#6 0.245 kgCjgoDAEEXKOGYYmGhaNArJGEQiCASkliCaIoohtAlRQhJIBE6EICFREm4DAnEK\",\n                \"line_num\": 20,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.docker.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"kgCjgoDAEEXKOGYYmGhaNArJGEQiCASkliCaIoohtAlRQhJIBE6EICFREm4DAnEK\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 4.71436\n            },\n            {\n                \"line\": \"#6 0.245 pihYGGLKmIxiRC4DOEwaEwICwQxbEgAiBwILEWKKCE1aiAzYOI0joyGCxoAEBG3h\",\n                \"line_num\": 21,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.docker.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"pihYGGLKmIxiRC4DOEwaEwICwQxbEgAiBwILEWKKCE1aiAzYOI0joyGCxoAEBG3h\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 4.69102\n            },\n            {\n                \"line\": \"#6 0.245 towIwBDkRFJaKI4CQEEKQ3ASuEEKQ24JOI4DIQYckyjJQDGRQIQKISUMImyQoGkA\",\n                \"line_num\": 22,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.docker.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"towIwBDkRFJaKI4CQEEKQ3ASuEEKQ24JOI4DIQYckyjJQDGRQIQKISUMImyQoGkA\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 4.55202\n            },\n            {\n                \"line\": \"#6 0.245 NjEgRFLgFIKRQHEEJpAcCAIIhISbxgwLQU3koAxBIgoTFomElASihhBhME4jhiQA\",\n                \"line_num\": 23,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.docker.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"NjEgRFLgFIKRQHEEJpAcCAIIhISbxgwLQU3koAxBIgoTFomElASihhBhME4jhiQA\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 4.70776\n            },\n            {\n                \"line\": \"#6 0.245 BgCSAkUioBHhKE2IkGUCkhBDEALcQJEYowwbF2lKCIETEUqSBFEKQGnBtpCYQoBU\",\n                \"line_num\": 24,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.docker.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"BgCSAkUioBHhKE2IkGUCkhBDEALcQJEYowwbF2lKCIETEUqSBFEKQGnBtpCYQoBU\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 4.68689\n            },\n            {\n                \"line\": \"#6 0.245 tHFbJHEaiYxKAmEaB21buAgKNiFBpkUbMjIJsYCEhEVBIBHZMiAaRg0hCVAjMxDE\",\n                \"line_num\": 25,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.docker.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"tHFbJHEaiYxKAmEaB21buAgKNiFBpkUbMjIJsYCEhEVBIBHZMiAaRg0hCVAjMxDE\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 4.85337\n            },\n            {\n                \"line\": \"#6 0.245 mADZMHAIEw4QoFFgKFIgMikiMmUJgZGLwmEBsQUihmBbJhIEMGYSN4iSRkDbECba\",\n                \"line_num\": 26,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.docker.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"mADZMHAIEw4QoFFgKFIgMikiMmUJgZGLwmEBsQUihmBbJhIEMGYSN4iSRkDbECba\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 4.79657\n            },\n            {\n                \"line\": \"#6 0.245 BmghyVBJiGTjwClJRJIMyWUAQgWAIAmDEHCKwoiBEEJKEBFiMiXcRIGZwCCLwA1U\",\n                \"line_num\": 27,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.docker.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"BmghyVBJiGTjwClJRJIMyWUAQgWAIAmDEHCKwoiBEEJKEBFiMiXcRIGZwCCLwA1U\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 4.76945\n            },\n            {\n                \"line\": \"#6 0.245 EDACECUiEDLQCEyLImIghxAZSEgks4SUOAULowVbOCCTtETJRHJjhkFEAmoQIEIY\",\n                \"line_num\": 28,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.docker.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"EDACECUiEDLQCEyLImIghxAZSEgks4SUOAULowVbOCCTtETJRHJjhkFEAmoQIEIY\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 4.70126\n            },\n            {\n                \"line\": \"#6 0.245 GQWUhkEcBioKqJDQhAkjJwYYkw3MoAwZCCEDRGphtnEDkAnSyGSRxkUBQkojJGSI\",\n                \"line_num\": 29,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.docker.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"GQWUhkEcBioKqJDQhAkjJwYYkw3MoAwZCCEDRGphtnEDkAnSyGSRxkUBQkojJGSI\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 4.74525\n            },\n            {\n                \"line\": \"#6 0.245 sAkYGBDRMmQJIg0bhIhcuCXgiGABCI1RNG4bw4zUKImRMAxSAi0MskRCEG0aA2Qi\",\n                \"line_num\": 30,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.docker.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"sAkYGBDRMmQJIg0bhIhcuCXgiGABCI1RNG4bw4zUKImRMAxSAi0MskRCEG0aA2Qi\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 4.86517\n            },\n            {\n                \"line\": \"#6 0.245 AoDYpAwUoGgSpYgCQUVbFgGahIkMRBDUBASCoARauIWZKEyYmFHIyEGhRFCYiAzc\",\n                \"line_num\": 31,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.docker.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"AoDYpAwUoGgSpYgCQUVbFgGahIkMRBDUBASCoARauIWZKEyYmFHIyEGhRFCYiAzc\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 4.84924\n            },\n            {\n                \"line\": \"#6 0.245 EojbGBGTtIwiRWhUsBBABlLCxgkMNooBIzAkEnICGGqLpkjkNFAKmGghCUTgEIJU\",\n                \"line_num\": 32,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.docker.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"EojbGBGTtIwiRWhUsBBABlLCxgkMNooBIzAkEnICGGqLpkjkNFAKmGghCUTgEIJU\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 4.78518\n            },\n            {\n                \"line\": \"#6 0.245 lEhEgoESMREbkEXYtGELMxASxyQLoJHEiHEImBAEyGHZkiWTJjKgokWhuIghlRAa\",\n                \"line_num\": 33,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.docker.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"lEhEgoESMREbkEXYtGELMxASxyQLoJHEiHEImBAEyGHZkiWTJjKgokWhuIghlRAa\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 4.73346\n            },\n            {\n                \"line\": \"#6 0.245 xSwckCRCRHARNooERYIiBU1TCAYMBopcNAaIJhHRgA0jgVFiBoaTIjBYBgXkooxZ\",\n                \"line_num\": 34,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.docker.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"xSwckCRCRHARNooERYIiBU1TCAYMBopcNAaIJhHRgA0jgVFiBoaTIjBYBgXkooxZ\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 4.69143\n            },\n            {\n                \"line\": \"#6 0.245 GJASFABhsEWQGIWkkIHbIAhCwAmUopFjEoTMwECREi3YSBIgKGWcNnABJCCjMo4U\",\n                \"line_num\": 35,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.docker.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"GJASFABhsEWQGIWkkIHbIAhCwAmUopFjEoTMwECREi3YSBIgKGWcNnABJCCjMo4U\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 4.86517\n            },\n            {\n                \"line\": \"#6 0.245 FyHgloRKOGSUFC0UBmYBSW3SooTSslEjKAHISIbMpDAcJWWLIi2MoHEMB2yQkklI\",\n                \"line_num\": 36,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.docker.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"FyHgloRKOGSUFC0UBmYBSW3SooTSslEjKAHISIbMpDAcJWWLIi2MoHEMB2yQkklI\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 4.94712\n            },\n            {\n                \"line\": \"#6 0.245 BChIpAeQQHOr3D0Iep/D+4IgaEAVpnwPXeexBdx0o3BUailbyZ/noQlEd13bgvWN\",\n                \"line_num\": 37,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.docker.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"BChIpAeQQHOr3D0Iep/D+4IgaEAVpnwPXeexBdx0o3BUailbyZ/noQlEd13bgvWN\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.09727\n            },\n            {\n                \"line\": \"#6 0.245 NSFX9xz99vb3aSIaargvQ4Hq4bUvZ/y/qgXCAgs2PcNXqDAHd1EPWV5TIs4l3Qug\",\n                \"line_num\": 38,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.docker.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"NSFX9xz99vb3aSIaargvQ4Hq4bUvZ/y/qgXCAgs2PcNXqDAHd1EPWV5TIs4l3Qug\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.08548\n            },\n            {\n                \"line\": \"#6 0.245 TTdPyoEV7/+hokQ6ucVaSk7qiV0r/7DI2Kth2TlKbmiXRl9Lx/EshuhoiqWCxCjh\",\n                \"line_num\": 39,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.docker.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"TTdPyoEV7/+hokQ6ucVaSk7qiV0r/7DI2Kth2TlKbmiXRl9Lx/EshuhoiqWCxCjh\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.09158\n            },\n            {\n                \"line\": \"#6 0.245 na22XUltZ62l2/8f+Bi3vIrEz7jrNWRdeVbVykqeHxwsTsc9oWnFpY7F+GATH0RO\",\n                \"line_num\": 40,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.docker.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"na22XUltZ62l2/8f+Bi3vIrEz7jrNWRdeVbVykqeHxwsTsc9oWnFpY7F+GATH0RO\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.46875\n            },\n            {\n                \"line\": \"#6 0.245 1rD2oX9QyI6wcv4bePHzjtJuTz3V0w/bh4n+xmleu4chQwL2aLwlLa62jcKXgun8\",\n                \"line_num\": 41,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.docker.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"1rD2oX9QyI6wcv4bePHzjtJuTz3V0w/bh4n+xmleu4chQwL2aLwlLa62jcKXgun8\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.15977\n            },\n            {\n                \"line\": \"#6 0.245 tXVVGteOYcsQVmS/YOMLveYAT8GmwWOd+4h4dCjWZB/6xI6DUv9pCYGbzNdZ5qt/\",\n                \"line_num\": 42,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.docker.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"tXVVGteOYcsQVmS/YOMLveYAT8GmwWOd+4h4dCjWZB/6xI6DUv9pCYGbzNdZ5qt/\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.17923\n            },\n            {\n                \"line\": \"#6 0.245 x3r5LF4b4teVUFwqvPcGn2+h/MLZ8VcilPb7bfR0pcHaWqynggr6EtnMACOsQrp6\",\n                \"line_num\": 43,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.docker.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"x3r5LF4b4teVUFwqvPcGn2+h/MLZ8VcilPb7bfR0pcHaWqynggr6EtnMACOsQrp6\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.35907\n            },\n            {\n                \"line\": \"#6 0.245 20lFJR/EHrv7uuXCyEaUVzi3pzq/J1u9EKXsuqtNFZWI0RA7Pdk7Sk/EV9tzeOJu\",\n                \"line_num\": 44,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.docker.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"20lFJR/EHrv7uuXCyEaUVzi3pzq/J1u9EKXsuqtNFZWI0RA7Pdk7Sk/EV9tzeOJu\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.11517\n            },\n            {\n                \"line\": \"#6 0.245 ES62pC7vlJ1Wo8vpXx1wzEL3pKdnKxNCWfKaTO25qoo4t0+8WkM2w1oKWEAKVFBb\",\n                \"line_num\": 45,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.docker.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"ES62pC7vlJ1Wo8vpXx1wzEL3pKdnKxNCWfKaTO25qoo4t0+8WkM2w1oKWEAKVFBb\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.11517\n            },\n            {\n                \"line\": \"#6 0.245 5Zus63oUSjTaLGPXdoE/wk5P6mW3BmwmFfKeHZuUNnBwlhIcrlnyFc7UklmNsUm9\",\n                \"line_num\": 46,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.docker.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"5Zus63oUSjTaLGPXdoE/wk5P6mW3BmwmFfKeHZuUNnBwlhIcrlnyFc7UklmNsUm9\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.10751\n            },\n            {\n                \"line\": \"#6 0.245 WPDIyiFjey7GcRbVAXnl5JftLLPun9/Sl6WPoP9bsDpdTkKZFD3Jy0MAnA6gwi6G\",\n                \"line_num\": 47,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.docker.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"WPDIyiFjey7GcRbVAXnl5JftLLPun9/Sl6WPoP9bsDpdTkKZFD3Jy0MAnA6gwi6G\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.22227\n            },\n            {\n                \"line\": \"#6 0.245 A1Un/skxl2PDwdSYu/Yqk2F7BSz5x/D9QUTnkXm/W0uG3wmFVMI08OYwtCB1xXW8\",\n                \"line_num\": 48,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.docker.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"A1Un/skxl2PDwdSYu/Yqk2F7BSz5x/D9QUTnkXm/W0uG3wmFVMI08OYwtCB1xXW8\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.14032\n            },\n            {\n                \"line\": \"#6 0.245 kQbalUGvAscvoaXkkD2JjjZrxAOnkZxJqwzP84Sa33HEYMVPEtvucp2gd6du2weG\",\n                \"line_num\": 49,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.docker.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"kQbalUGvAscvoaXkkD2JjjZrxAOnkZxJqwzP84Sa33HEYMVPEtvucp2gd6du2weG\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.24586\n            },\n            {\n                \"line\": \"#6 0.245 v8X1Qy6SePZ/L2pIQHHG0t5aO5fBmUc1UJh9BmG15oE0rzqEiopaCDbFkEguFjhs\",\n                \"line_num\": 50,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.docker.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"v8X1Qy6SePZ/L2pIQHHG0t5aO5fBmUc1UJh9BmG15oE0rzqEiopaCDbFkEguFjhs\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.40211\n            },\n            {\n                \"line\": \"#6 0.245 2BI6NiY798TaKwkaWFy8irSLb3CvU8IrAm3VM9Lcp1vhwsnyGvMq78fC+SjxKcWQ\",\n                \"line_num\": 51,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.docker.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"2BI6NiY798TaKwkaWFy8irSLb3CvU8IrAm3VM9Lcp1vhwsnyGvMq78fC+SjxKcWQ\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.3007\n            },\n            {\n                \"line\": \"#6 0.245 QwCdrsgLZerfct0uWaaA/1yVRH0g8ceBIuoj2Kkv9E6xTKeAwsMi9vhwqgkjsSG/\",\n                \"line_num\": 52,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.docker.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"QwCdrsgLZerfct0uWaaA/1yVRH0g8ceBIuoj2Kkv9E6xTKeAwsMi9vhwqgkjsSG/\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.32782\n            },\n            {\n                \"line\": \"#6 0.245 Ts54V2KurNiPKb5WSwteBOD7TvkdwMfmK7jYMWH1oc98V70YxPgnkURW2IXs8H23\",\n                \"line_num\": 53,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.docker.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"Ts54V2KurNiPKb5WSwteBOD7TvkdwMfmK7jYMWH1oc98V70YxPgnkURW2IXs8H23\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.35907\n            },\n            {\n                \"line\": \"#6 0.245 5EQsx7aiwzXBB5F5xIy3yNJIpFUGQGU1oy2L8FQhuKdyMjXEAEiuJtzdyTtgnoJR\",\n                \"line_num\": 54,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.docker.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"5EQsx7aiwzXBB5F5xIy3yNJIpFUGQGU1oy2L8FQhuKdyMjXEAEiuJtzdyTtgnoJR\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.07212\n            },\n            {\n                \"line\": \"#6 0.245 7N0evDEzqUuUVvtXb32GoTuLzlPM32+cBbDr80mIphfmyr/RQLlZIxgv6LsV4pgU\",\n                \"line_num\": 55,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.docker.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"7N0evDEzqUuUVvtXb32GoTuLzlPM32+cBbDr80mIphfmyr/RQLlZIxgv6LsV4pgU\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.33961\n            },\n            {\n                \"line\": \"#6 0.245 VTS/P3VLXRX6oclTn7UZ1+5L4dosP2pjoAmSEeQe9DiDDKb9DRcYRP09ePylma2i\",\n                \"line_num\": 56,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.docker.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"VTS/P3VLXRX6oclTn7UZ1+5L4dosP2pjoAmSEeQe9DiDDKb9DRcYRP09ePylma2i\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.14032\n            },\n            {\n                \"line\": \"#6 0.245 2BD0oJ81P4A/tl9ojqyz4dSJuIo2deDaQs8cme0lNxAR0uO8FbiHnnkXFalberVl\",\n                \"line_num\": 57,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.docker.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"2BD0oJ81P4A/tl9ojqyz4dSJuIo2deDaQs8cme0lNxAR0uO8FbiHnnkXFalberVl\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.23407\n            },\n            {\n                \"line\": \"#6 0.245 V1ZSX4aPC9DBvrxYL1hh51umejg5GoIOWVLZtAVThRVyhUEg1krkM0zNGGjT0o4E\",\n                \"line_num\": 58,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.docker.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"V1ZSX4aPC9DBvrxYL1hh51umejg5GoIOWVLZtAVThRVyhUEg1krkM0zNGGjT0o4E\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.1757\n            },\n            {\n                \"line\": \"#6 0.245 R42sWTjNMxSB99ZQbpuySMtisaB2WPcdTdIWwnBytzy/XGezCicBJHMMCA36m4K/\",\n                \"line_num\": 59,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.docker.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"R42sWTjNMxSB99ZQbpuySMtisaB2WPcdTdIWwnBytzy/XGezCicBJHMMCA36m4K/\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.19516\n            },\n            {\n                \"line\": \"#6 0.245 rkFyjWHI73ahgE3nsfg3zQui9bZMCThlRV07cFbsh4Vrz8V84kWceTIBTB/NMGIH\",\n                \"line_num\": 60,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.docker.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"rkFyjWHI73ahgE3nsfg3zQui9bZMCThlRV07cFbsh4Vrz8V84kWceTIBTB/NMGIH\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.15977\n            },\n            {\n                \"line\": \"#6 0.245 N7gW2wDhlzJFmM1DI6fc/Yv1/zFEqW+GwAEmlCdBYd0KK2Uw+DjvuTpoUAj0N5EA\",\n                \"line_num\": 61,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.docker.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"N7gW2wDhlzJFmM1DI6fc/Yv1/zFEqW+GwAEmlCdBYd0KK2Uw+DjvuTpoUAj0N5EA\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.17157\n            },\n            {\n                \"line\": \"#6 0.245 eKwQvUVLxerWkelYq7XTtuj+cf/ni9cwUUCaO8CZ3qfO6qlESAASZ3Zs8dLj2ScI\",\n                \"line_num\": 62,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.docker.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"eKwQvUVLxerWkelYq7XTtuj+cf/ni9cwUUCaO8CZ3qfO6qlESAASZ3Zs8dLj2ScI\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.24173\n            },\n            {\n                \"line\": \"#6 0.245 7F4zmeFxp+adjBRR2vj0iTdckA5tSmEOANrJ7Ncq0JGZBuwKyAkUneJ+VPxGavrX\",\n                \"line_num\": 63,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.docker.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"7F4zmeFxp+adjBRR2vj0iTdckA5tSmEOANrJ7Ncq0JGZBuwKyAkUneJ+VPxGavrX\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.28891\n            },\n            {\n                \"line\": \"#6 0.245 WvV5rQ7BNgz7+ZAKGjvq78AyQZVS9MEpxe6qKy7OMclg75op8zCJ54IzpGkfcPWa\",\n                \"line_num\": 64,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.docker.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"WvV5rQ7BNgz7+ZAKGjvq78AyQZVS9MEpxe6qKy7OMclg75op8zCJ54IzpGkfcPWa\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.15821\n            },\n            {\n                \"line\": \"#6 0.245 NhOa5n1kEdNm2a5u6tzdxJVvpFEQDkta6OpfSX76YeNLpy7bSdBdBWmNzWkuDMFK\",\n                \"line_num\": 65,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.docker.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"NhOa5n1kEdNm2a5u6tzdxJVvpFEQDkta6OpfSX76YeNLpy7bSdBdBWmNzWkuDMFK\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.04657\n            },\n            {\n                \"line\": \"#6 0.245 z2ZRcjbQFJ657Y7MWy7/4kzBPBG/OcNAi/9h1y+Sm84LZhLkH59okLFuklK5F/e4\",\n                \"line_num\": 66,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.docker.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"z2ZRcjbQFJ657Y7MWy7/4kzBPBG/OcNAi/9h1y+Sm84LZhLkH59okLFuklK5F/e4\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.15977\n            },\n            {\n                \"line\": \"#6 0.245 QmGx1sx+wlPtQ3q1f9tFYFMAwpIWsCGFd3DDKyA5QTBSc2wfcyBgIcZotBV0Ic2H\",\n                \"line_num\": 67,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.docker.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"QmGx1sx+wlPtQ3q1f9tFYFMAwpIWsCGFd3DDKyA5QTBSc2wfcyBgIcZotBV0Ic2H\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.11673\n            },\n            {\n                \"line\": \"#6 0.245 /Xa/US2QGYlpDtm/RDaq/kqlbMPZhBLE+M2W/dGYSuyPoL0GPC0bML0LLlavP5xB\",\n                \"line_num\": 68,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.docker.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"/Xa/US2QGYlpDtm/RDaq/kqlbMPZhBLE+M2W/dGYSuyPoL0GPC0bML0LLlavP5xB\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 4.92197\n            },\n            {\n                \"line\": \"#6 0.245 4EuYIB54jmYwLcO7ZK8wpQhR6kk/gAwLnIDApOH5iiv+1sb0IJpjZmFmZUdUllpb\",\n                \"line_num\": 69,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.docker.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"4EuYIB54jmYwLcO7ZK8wpQhR6kk/gAwLnIDApOH5iiv+1sb0IJpjZmFmZUdUllpb\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.20282\n            },\n            {\n                \"line\": \"#6 0.245 PppwUoy0NzBPjq/PksCd6fVWkmDpIuI+SLJyNhRNKEOTMTrVYuPSUvnFf9NaHkUi\",\n                \"line_num\": 70,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.docker.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"PppwUoy0NzBPjq/PksCd6fVWkmDpIuI+SLJyNhRNKEOTMTrVYuPSUvnFf9NaHkUi\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.30836\n            },\n            {\n                \"line\": \"#6 0.245 ifzK2eAEfx2UBE7o+YQR+QC6/pJQIMX7FXQjx78cVTKlybuJkpDggsUJ25SszaMk\",\n                \"line_num\": 71,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.docker.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"ifzK2eAEfx2UBE7o+YQR+QC6/pJQIMX7FXQjx78cVTKlybuJkpDggsUJ25SszaMk\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.24586\n            },\n            {\n                \"line\": \"#6 0.245 KA0xTnsP5gx8lUGmyWMuJ5JgDWUP1jOHdadTmX/xtEy5Wqw/DQKn2bG2NnpQrbIJ\",\n                \"line_num\": 72,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.docker.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"KA0xTnsP5gx8lUGmyWMuJ5JgDWUP1jOHdadTmX/xtEy5Wqw/DQKn2bG2NnpQrbIJ\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.19102\n            },\n            {\n                \"line\": \"#6 0.245 EcXsCgMeziOzNqqJk9QrnAAu/eB1XdnhbC3UJ/caEI7gofJxMYiO20/OHtnkLhgf\",\n                \"line_num\": 73,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.docker.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"EcXsCgMeziOzNqqJk9QrnAAu/eB1XdnhbC3UJ/caEI7gofJxMYiO20/OHtnkLhgf\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.22227\n            },\n            {\n                \"line\": \"#6 0.245 82N3qrG5oZP8oQVmgO4Ww58rWn2U5f9F+tFjrSjj8OR1NkY39x/kgRXg538T0TEL\",\n                \"line_num\": 74,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.docker.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"82N3qrG5oZP8oQVmgO4Ww58rWn2U5f9F+tFjrSjj8OR1NkY39x/kgRXg538T0TEL\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.08392\n            },\n            {\n                \"line\": \"#6 0.245 JmFGqBYBW5YkhS4E6cQ+s8Me76ZYMcIEyrb7vGpQ6sATjVuendOfq/nG/E1vVoQ8\",\n                \"line_num\": 75,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.docker.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"JmFGqBYBW5YkhS4E6cQ+s8Me76ZYMcIEyrb7vGpQ6sATjVuendOfq/nG/E1vVoQ8\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.25352\n            },\n            {\n                \"line\": \"#6 0.245 xSd1FGfwoVOhRp3I2ygdcz4l1RQzqunVff1A8ejjoMJ4+N/JUaL3rDF6KDPLuG1n\",\n                \"line_num\": 76,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.docker.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"xSd1FGfwoVOhRp3I2ygdcz4l1RQzqunVff1A8ejjoMJ4+N/JUaL3rDF6KDPLuG1n\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.33195\n            },\n            {\n                \"line\": \"#6 0.245 aHkGr75LFfgMPc1oAqtMk5qdEfNqYBsbaPhu7GV9ewft3R8E5VJdTVu6ksE7+1HZ\",\n                \"line_num\": 77,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.docker.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"aHkGr75LFfgMPc1oAqtMk5qdEfNqYBsbaPhu7GV9ewft3R8E5VJdTVu6ksE7+1HZ\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.16743\n            },\n            {\n                \"line\": \"#6 0.245 XnH5jM4u1p9NF4iQmQhQI8fOX6wqBDWcekGs+baJcxA+5zkYgffkUX+MRjMAHUAW\",\n                \"line_num\": 78,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.docker.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"XnH5jM4u1p9NF4iQmQhQI8fOX6wqBDWcekGs+baJcxA+5zkYgffkUX+MRjMAHUAW\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.26118\n            },\n            {\n                \"line\": \"#6 0.245 hL1S3jeUuoh8YWqWkyCS/NDmEV0oFNey0hU/36YktwDByEMa6zAxDnQoRpq6dikI\",\n                \"line_num\": 79,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.docker.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"hL1S3jeUuoh8YWqWkyCS/NDmEV0oFNey0hU/36YktwDByEMa6zAxDnQoRpq6dikI\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.21048\n            },\n            {\n                \"line\": \"#6 0.245 S//brXmHlWb++g5HLAPTV94FLiWnEEW7Ozn0HD6R5psyW0Csx2vt95FF3cmFziHd\",\n                \"line_num\": 80,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.docker.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"S//brXmHlWb++g5HLAPTV94FLiWnEEW7Ozn0HD6R5psyW0Csx2vt95FF3cmFziHd\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.1757\n            },\n            {\n                \"line\": \"#6 0.245 M7nqiDw5byw8wT/6cZmU5TJqSz3fKFOt13VXuG80yEtaDr68gDjxas2Tb/wTE0ZN\",\n                \"line_num\": 81,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.docker.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"M7nqiDw5byw8wT/6cZmU5TJqSz3fKFOt13VXuG80yEtaDr68gDjxas2Tb/wTE0ZN\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.22641\n            },\n            {\n                \"line\": \"#6 0.245 Y+4MmRj78Ffh74q87fX6FMQO1/HEKh7ltXGGNF5WlzEG8vVKHqbn487lBELkl00n\",\n                \"line_num\": 82,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.docker.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"Y+4MmRj78Ffh74q87fX6FMQO1/HEKh7ltXGGNF5WlzEG8vVKHqbn487lBELkl00n\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 4.99017\n            },\n            {\n                \"line\": \"#6 0.245 uP16MZvPDTHzhQ4l/fKuBW7MpuczsUpdHgSwLIeJS5354WhLYONRRz8yXqo/mfNd\",\n                \"line_num\": 83,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.docker.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"uP16MZvPDTHzhQ4l/fKuBW7MpuczsUpdHgSwLIeJS5354WhLYONRRz8yXqo/mfNd\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.38266\n            },\n            {\n                \"line\": \"#6 0.245 stWBI1ChlRmYkLyTri6kvajsDMPuGtDp/30UEi0zjVhwvJ9IcxrxArDOvlomTPsi\",\n                \"line_num\": 84,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.docker.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"stWBI1ChlRmYkLyTri6kvajsDMPuGtDp/30UEi0zjVhwvJ9IcxrxArDOvlomTPsi\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.28477\n            },\n            {\n                \"line\": \"#6 0.245 YBJrUWXblmmC9bR14vf3CWR+PK7q8BIjL1D6P//IAtU+ub3UvbCS8EbNyJAbVuns\",\n                \"line_num\": 85,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.docker.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"YBJrUWXblmmC9bR14vf3CWR+PK7q8BIjL1D6P//IAtU+ub3UvbCS8EbNyJAbVuns\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.14032\n            },\n            {\n                \"line\": \"#6 0.245 H8uWrQFtodTx7wQi5zaP97sP33deMtlEP1j0EQdwbrK1y/u1Fjk5V9lZmlWyDjMr\",\n                \"line_num\": 86,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.docker.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"H8uWrQFtodTx7wQi5zaP97sP33deMtlEP1j0EQdwbrK1y/u1Fjk5V9lZmlWyDjMr\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.10493\n            },\n            {\n                \"line\": \"#6 0.245 zIr286q6AWWttxwb3p5SY7A14GLh0rCsiCwP+almEouRr8UzdczrotBq4vh9NtWb\",\n                \"line_num\": 87,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.docker.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"zIr286q6AWWttxwb3p5SY7A14GLh0rCsiCwP+almEouRr8UzdczrotBq4vh9NtWb\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.28891\n            },\n            {\n                \"line\": \"#6 0.245 Dmu72duyz/6gP6tuwdDV7SnOS6ep1m/CnkxfB0eggCvHrIqwletSbpUAl2ddk578\",\n                \"line_num\": 88,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.docker.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"Dmu72duyz/6gP6tuwdDV7SnOS6ep1m/CnkxfB0eggCvHrIqwletSbpUAl2ddk578\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.08548\n            },\n            {\n                \"line\": \"#6 0.245 YdwaNjMhKHGNHJetGZqIn2sJVxcbN2rBIBzgRoHGe+NTq82HD/AKv7OKUxOVBZ/T\",\n                \"line_num\": 89,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.docker.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"YdwaNjMhKHGNHJetGZqIn2sJVxcbN2rBIBzgRoHGe+NTq82HD/AKv7OKUxOVBZ/T\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.14032\n            },\n            {\n                \"line\": \"#6 0.245 j8lwHWTgMP25Qt/7e2L916+HUfLVKj9YpOeEb1P81rRC7l9zRimlv1RYy4MsGdLj\",\n                \"line_num\": 90,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.docker.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"j8lwHWTgMP25Qt/7e2L916+HUfLVKj9YpOeEb1P81rRC7l9zRimlv1RYy4MsGdLj\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.25352\n            },\n            {\n                \"line\": \"#6 0.245 S3hXz3e4hRXAb23bT06aoU3RhubgZo7trwHy5mzbzAdOGPEXviXw9+ihjY4kWAJU\",\n                \"line_num\": 91,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.docker.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"S3hXz3e4hRXAb23bT06aoU3RhubgZo7trwHy5mzbzAdOGPEXviXw9+ihjY4kWAJU\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.16391\n            },\n            {\n                \"line\": \"#6 0.245 ADio3z2NMbz5ZYexpy5XyPmgOv0UECTdIjV+MYMFncdpZaO9YP4BG3c8k8z2R5OB\",\n                \"line_num\": 92,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.docker.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"ADio3z2NMbz5ZYexpy5XyPmgOv0UECTdIjV+MYMFncdpZaO9YP4BG3c8k8z2R5OB\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.31602\n            },\n            {\n                \"line\": \"#6 0.245 YjYDCT0R2kez6mfVL2kp1T5FGuZIIaSSYRz+zxzGTFWHFsJFPutSrGF3oILueAMO\",\n                \"line_num\": 93,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.docker.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"YjYDCT0R2kez6mfVL2kp1T5FGuZIIaSSYRz+zxzGTFWHFsJFPutSrGF3oILueAMO\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.09158\n            },\n            {\n                \"line\": \"#6 0.245 55mb2P24b44wCoVGNfFVDQOFE2DOOHvkgyvarxraYLmXVHfsZUSFDKLoEajb4bbd\",\n                \"line_num\": 94,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.docker.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"55mb2P24b44wCoVGNfFVDQOFE2DOOHvkgyvarxraYLmXVHfsZUSFDKLoEajb4bbd\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 4.96658\n            },\n            {\n                \"line\": \"#6 0.245 UcSqmGsFbKmJA7mxRw3uAzgFwN5uneHaAOVcloDrvmfyrEsbtCYe0QbHJanETdPA\",\n                \"line_num\": 95,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.docker.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"UcSqmGsFbKmJA7mxRw3uAzgFwN5uneHaAOVcloDrvmfyrEsbtCYe0QbHJanETdPA\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.3007\n            },\n            {\n                \"line\": \"#6 0.245 9webIXysF5t9KQRKAH+tKRpTM2XpxkLo5cZVfbnGCIGztuYYtr36I5wFCQBYprMY\",\n                \"line_num\": 96,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.docker.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"9webIXysF5t9KQRKAH+tKRpTM2XpxkLo5cZVfbnGCIGztuYYtr36I5wFCQBYprMY\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.10907\n            },\n            {\n                \"line\": \"#6 0.245 VCvAGX7LtBkfK+UKp+IN1MIwp3FqXCyY569gWA/lNXkqOxLR2Q2C1zs0G5y9uym4\",\n                \"line_num\": 97,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.docker.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"VCvAGX7LtBkfK+UKp+IN1MIwp3FqXCyY569gWA/lNXkqOxLR2Q2C1zs0G5y9uym4\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.33961\n            },\n            {\n                \"line\": \"#6 0.245 9EB0jFhFeH9pr2MWlFh+09iy+I2Gx2vqGT5huaPCi3g1sGUEsgXO+0K0FnkltKWL\",\n                \"line_num\": 98,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.docker.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"9EB0jFhFeH9pr2MWlFh+09iy+I2Gx2vqGT5huaPCi3g1sGUEsgXO+0K0FnkltKWL\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.15977\n            },\n            {\n                \"line\": \"#6 0.245 2/fkKb37wmkLxOm1AGfK8+jzJgROpQp5LweN6c2gBDnJfHIWhk5mE+YhvyxgU6ks\",\n                \"line_num\": 99,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.docker.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"2/fkKb37wmkLxOm1AGfK8+jzJgROpQp5LweN6c2gBDnJfHIWhk5mE+YhvyxgU6ks\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.27711\n            },\n            {\n                \"line\": \"#6 0.245 RUGiT43/IngQBwjH2IzE1BvaFhaLVnF5dAkjSVJX0NyVLdBLdEyotg8GHO2G0Y/c\",\n                \"line_num\": 100,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.docker.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"RUGiT43/IngQBwjH2IzE1BvaFhaLVnF5dAkjSVJX0NyVLdBLdEyotg8GHO2G0Y/c\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.25352\n            },\n            {\n                \"line\": \"#6 0.245 JHhz9tMGqN1/18UhsBdrfahJIqeNrIBuxbNk2sXi3/26XXDHe8HzYz9IGzwttclP\",\n                \"line_num\": 101,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.docker.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"JHhz9tMGqN1/18UhsBdrfahJIqeNrIBuxbNk2sXi3/26XXDHe8HzYz9IGzwttclP\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.05423\n            },\n            {\n                \"line\": \"#6 0.245 l9bwNLKlK6G6ey6CuGc+pk+ab+FTKYzDOYzUNuk9KVjks9abhojhKp+umdcg1ads\",\n                \"line_num\": 102,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.docker.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"l9bwNLKlK6G6ey6CuGc+pk+ab+FTKYzDOYzUNuk9KVjks9abhojhKp+umdcg1ads\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 4.90408\n            },\n            {\n                \"line\": \"#6 0.245 sFq7BZk0ud5rvSuHXFGaxdhZRkcTgWCfO3RnIb1nnU2s9baNjE6EiQlgXxtsDbco\",\n                \"line_num\": 103,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.docker.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"sFq7BZk0ud5rvSuHXFGaxdhZRkcTgWCfO3RnIb1nnU2s9baNjE6EiQlgXxtsDbco\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.40211\n            },\n            {\n                \"line\": \"#6 0.245 0sfTmAos3DRhn17vYxvBuIHQdsk9Lg2nRwJhKBhnQccl8k3fYTW8WZbBu9Ism+nS\",\n                \"line_num\": 104,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.docker.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"0sfTmAos3DRhn17vYxvBuIHQdsk9Lg2nRwJhKBhnQccl8k3fYTW8WZbBu9Ism+nS\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.13266\n            },\n            {\n                \"line\": \"#6 0.245 Bvz56M5Z+5wf6DGFitWOPDcrgXAy/H1G4byIXU06YwWEcGj/Dyte3EOWEeU+68kQ\",\n                \"line_num\": 105,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.docker.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"Bvz56M5Z+5wf6DGFitWOPDcrgXAy/H1G4byIXU06YwWEcGj/Dyte3EOWEeU+68kQ\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.14798\n            },\n            {\n                \"line\": \"#6 0.245 aANEEoU1dXIzisq6pQ0J8AKS\",\n                \"line_num\": 106,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.docker.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"aANEEoU1dXIzisq6pQ0J8AKS\",\n                \"value_start\": 9,\n                \"value_end\": 33,\n                \"entropy\": 4.4183\n            },\n            {\n                \"line\": \"#6 0.245 -----END PRIVATE KEY-----\",\n                \"line_num\": 107,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.docker.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"-----END PRIVATE KEY-----\",\n                \"value_start\": 9,\n                \"value_end\": 34,\n                \"entropy\": 3.04489\n            }\n        ]\n    },\n    {\n        \"rule\": \"PEM Private Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"{\\\"rsa512.log\\\": \\\"\\\\\\\\r\\\\\\\\n#5 [2/4] RUN openssl genrsa -out rsa512.pem 512 && cat rsa512.pem\\\\\\\\r\\\\\\\\n#5 0.228 -----BEGIN PRIVATE KEY-----\\\\\\\\r\\\\\\\\n#5 0.228 MIIBVQIBADANBgkqhkiG9w0BAQEFAASCAT8wggE7AgEAAkEAvKMMVSiEmVawE4EQ\\\\\\\\r\\\\\\\\n#5 0.228 GqXBumHAZco0bRhfhZjmeZ64SmmAM0NpM3j8hwhTyWHRXpW21gv8cumYJqb/ilf7\\\\\\\\r\\\\\\\\n#5 0.228 62oRDQIDAQABAkBYiY64SZQzBGUQQnt0hmgvOsI7BHUm31G2OtWyL7T/90UhnksH\\\\\\\\r\\\\\\\\n#5 0.228 w2YF31p/TJULL44SV3HpxiY+T1vOPl138ulhAiEA9LcC28UMotvF0z/CVofas5Fh\\\\\\\\r\\\\\\\\n#5 0.228 eKZSGLykNZ7FkKd0t+cCIQDFVgG6lreao/UzHcVk75fZG3lG3k0xvqdsZTIMAOjA\\\\\\\\r\\\\\\\\n#5 0.228 6wIgV033ehqJ0IxhvmUP2zkqoEeso5OK1IJwfyS+zUXA0V8CIQCvKySHvAgpRkd/\\\\\\\\r\\\\\\\\n#5 0.228 Y3r4mVICj8e859JASQwXRVECpL/3lwIhANcg6iGD9S4zdbvVxYjJogRVbi7U6YUU\\\\\\\\r\\\\\\\\n#5 0.228 ivYSmyJQhq+V\\\\\\\\r\\\\\\\\n#5 0.228 -----END PRIVATE KEY-----\\\\\\\\r\\\\\\\\n#5 DONE 0.3s\\\\\\\\r\\\\\\\\n\\\"}\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/pem_key.p.docker.log.json\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.docker.log.json|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"-----BEGIN PRIVATE KEY-----\\\\\\\\r\\\\\\\\n#5 0.228 MIIBVQIBADANBgkqhkiG9w0BAQEFAASCAT8wggE7AgEAAkEAvKMMVSiEmVawE4EQ\\\\\\\\r\\\\\\\\n#5 0.228 GqXBumHAZco0bRhfhZjmeZ64SmmAM0NpM3j8hwhTyWHRXpW21gv8cumYJqb/ilf7\\\\\\\\r\\\\\\\\n#5 0.228 62oRDQIDAQABAkBYiY64SZQzBGUQQnt0hmgvOsI7BHUm31G2OtWyL7T/90UhnksH\\\\\\\\r\\\\\\\\n#5 0.228 w2YF31p/TJULL44SV3HpxiY+T1vOPl138ulhAiEA9LcC28UMotvF0z/CVofas5Fh\\\\\\\\r\\\\\\\\n#5 0.228 eKZSGLykNZ7FkKd0t+cCIQDFVgG6lreao/UzHcVk75fZG3lG3k0xvqdsZTIMAOjA\\\\\\\\r\\\\\\\\n#5 0.228 6wIgV033ehqJ0IxhvmUP2zkqoEeso5OK1IJwfyS+zUXA0V8CIQCvKySHvAgpRkd/\\\\\\\\r\\\\\\\\n#5 0.228 Y3r4mVICj8e859JASQwXRVECpL/3lwIhANcg6iGD9S4zdbvVxYjJogRVbi7U6YUU\\\\\\\\r\\\\\\\\n#5 0.228 ivYSmyJQhq+V\\\\\\\\r\\\\\\\\n#5 0.228 -----END PRIVATE KEY-----\",\n                \"value_start\": 102,\n                \"value_end\": 749,\n                \"entropy\": 5.8742\n            }\n        ]\n    },\n    {\n        \"rule\": \"PEM Private Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"\\\\r\\\\n#5 [2/4] RUN openssl genrsa -out rsa512.pem 512 && cat rsa512.pem\\\\r\\\\n#5 0.228 -----BEGIN PRIVATE KEY-----\\\\r\\\\n#5 0.228 MIIBVQIBADANBgkqhkiG9w0BAQEFAASCAT8wggE7AgEAAkEAvKMMVSiEmVawE4EQ\\\\r\\\\n#5 0.228 GqXBumHAZco0bRhfhZjmeZ64SmmAM0NpM3j8hwhTyWHRXpW21gv8cumYJqb/ilf7\\\\r\\\\n#5 0.228 62oRDQIDAQABAkBYiY64SZQzBGUQQnt0hmgvOsI7BHUm31G2OtWyL7T/90UhnksH\\\\r\\\\n#5 0.228 w2YF31p/TJULL44SV3HpxiY+T1vOPl138ulhAiEA9LcC28UMotvF0z/CVofas5Fh\\\\r\\\\n#5 0.228 eKZSGLykNZ7FkKd0t+cCIQDFVgG6lreao/UzHcVk75fZG3lG3k0xvqdsZTIMAOjA\\\\r\\\\n#5 0.228 6wIgV033ehqJ0IxhvmUP2zkqoEeso5OK1IJwfyS+zUXA0V8CIQCvKySHvAgpRkd/\\\\r\\\\n#5 0.228 Y3r4mVICj8e859JASQwXRVECpL/3lwIhANcg6iGD9S4zdbvVxYjJogRVbi7U6YUU\\\\r\\\\n#5 0.228 ivYSmyJQhq+V\\\\r\\\\n#5 0.228 -----END PRIVATE KEY-----\\\\r\\\\n#5 DONE 0.3s\\\\r\\\\n\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/pem_key.p.docker.log.json\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.docker.log.json|STRUCT|STRING:rsa512.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"-----BEGIN PRIVATE KEY-----\\\\r\\\\n#5 0.228 MIIBVQIBADANBgkqhkiG9w0BAQEFAASCAT8wggE7AgEAAkEAvKMMVSiEmVawE4EQ\\\\r\\\\n#5 0.228 GqXBumHAZco0bRhfhZjmeZ64SmmAM0NpM3j8hwhTyWHRXpW21gv8cumYJqb/ilf7\\\\r\\\\n#5 0.228 62oRDQIDAQABAkBYiY64SZQzBGUQQnt0hmgvOsI7BHUm31G2OtWyL7T/90UhnksH\\\\r\\\\n#5 0.228 w2YF31p/TJULL44SV3HpxiY+T1vOPl138ulhAiEA9LcC28UMotvF0z/CVofas5Fh\\\\r\\\\n#5 0.228 eKZSGLykNZ7FkKd0t+cCIQDFVgG6lreao/UzHcVk75fZG3lG3k0xvqdsZTIMAOjA\\\\r\\\\n#5 0.228 6wIgV033ehqJ0IxhvmUP2zkqoEeso5OK1IJwfyS+zUXA0V8CIQCvKySHvAgpRkd/\\\\r\\\\n#5 0.228 Y3r4mVICj8e859JASQwXRVECpL/3lwIhANcg6iGD9S4zdbvVxYjJogRVbi7U6YUU\\\\r\\\\n#5 0.228 ivYSmyJQhq+V\\\\r\\\\n#5 0.228 -----END PRIVATE KEY-----\",\n                \"value_start\": 82,\n                \"value_end\": 711,\n                \"entropy\": 5.91095\n            }\n        ]\n    },\n    {\n        \"rule\": \"PEM Private Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"-----BEGIN PRIVATE KEY-----\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/pem_key.p.ec\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.ec|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"-----BEGIN PRIVATE KEY-----\",\n                \"value_start\": 0,\n                \"value_end\": 27,\n                \"entropy\": 3.20029\n            },\n            {\n                \"line\": \"MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgyK82YrlPyJb7FLsk\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/pem_key.p.ec\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.ec|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgyK82YrlPyJb7FLsk\",\n                \"value_start\": 0,\n                \"value_end\": 64,\n                \"entropy\": 4.72268\n            },\n            {\n                \"line\": \"1hg6SN+UI2R/QIVPPomtVY0yeH6hRANCAAStXqONgR32XCE3nfIkmYjk28Kn0wsK\",\n                \"line_num\": 3,\n                \"path\": \"./tests/samples/pem_key.p.ec\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.ec|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"1hg6SN+UI2R/QIVPPomtVY0yeH6hRANCAAStXqONgR32XCE3nfIkmYjk28Kn0wsK\",\n                \"value_start\": 0,\n                \"value_end\": 64,\n                \"entropy\": 5.12852\n            },\n            {\n                \"line\": \"+7OCsLnRoqJfWJAf8MV5nbMDiox7WFgRSOtt+l3u3zjpOznhmQyeN62Y\",\n                \"line_num\": 4,\n                \"path\": \"./tests/samples/pem_key.p.ec\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.ec|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"+7OCsLnRoqJfWJAf8MV5nbMDiox7WFgRSOtt+l3u3zjpOznhmQyeN62Y\",\n                \"value_start\": 0,\n                \"value_end\": 56,\n                \"entropy\": 5.24468\n            },\n            {\n                \"line\": \"-----END PRIVATE KEY-----\",\n                \"line_num\": 5,\n                \"path\": \"./tests/samples/pem_key.p.ec\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.ec|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"-----END PRIVATE KEY-----\",\n                \"value_start\": 0,\n                \"value_end\": 25,\n                \"entropy\": 3.04489\n            }\n        ]\n    },\n    {\n        \"rule\": \"PEM Private Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"const ecdsaPrivateKey = `-----BEGIN EC PRIVATE KEY-----\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/pem_key.p.go\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.go|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"-----BEGIN EC PRIVATE KEY-----\",\n                \"value_start\": 25,\n                \"value_end\": 55,\n                \"entropy\": 3.30775\n            },\n            {\n                \"line\": \"MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgv4Dj4ashv/uKUltV\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/pem_key.p.go\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.go|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgv4Dj4ashv/uKUltV\",\n                \"value_start\": 0,\n                \"value_end\": 64,\n                \"entropy\": 4.64072\n            },\n            {\n                \"line\": \"20VTUPnqXBPMDmPH43RG9WtK7cyhRANCAAQJameDIEe6M7PIpw6CPPAdHfN9+vxX\",\n                \"line_num\": 3,\n                \"path\": \"./tests/samples/pem_key.p.go\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.go|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"20VTUPnqXBPMDmPH43RG9WtK7cyhRANCAAQJameDIEe6M7PIpw6CPPAdHfN9+vxX\",\n                \"value_start\": 0,\n                \"value_end\": 64,\n                \"entropy\": 5.22641\n            },\n            {\n                \"line\": \"iptqkkBN/uRj9dkG5gDGhFzSqtSk8+d/b7VloKSdnH/nn4RxfMo6p1aC\",\n                \"line_num\": 4,\n                \"path\": \"./tests/samples/pem_key.p.go\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.go|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"iptqkkBN/uRj9dkG5gDGhFzSqtSk8+d/b7VloKSdnH/nn4RxfMo6p1aC\",\n                \"value_start\": 0,\n                \"value_end\": 56,\n                \"entropy\": 5.11058\n            },\n            {\n                \"line\": \"-----END EC PRIVATE KEY-----`\",\n                \"line_num\": 5,\n                \"path\": \"./tests/samples/pem_key.p.go\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.go|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"-----END EC PRIVATE KEY-----\",\n                \"value_start\": 0,\n                \"value_end\": 28,\n                \"entropy\": 3.16542\n            }\n        ]\n    },\n    {\n        \"rule\": \"PEM Private Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"    PRIVATE_KEY = \\\"-----BEGIN RSA PRIVATE KEY-----\\\\n\\\"\",\n                \"line_num\": 3,\n                \"path\": \"./tests/samples/pem_key.p.java\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.java|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"-----BEGIN RSA PRIVATE KEY-----\",\n                \"value_start\": 19,\n                \"value_end\": 50,\n                \"entropy\": 3.38229\n            },\n            {\n                \"line\": \"     +   \\\"MIIBVgIBADANBgkqhkiG9w0BAQEFAASCAUAwggE8AgEAAkEAplaRRGItayIi59+n\\\\n\\\"\",\n                \"line_num\": 4,\n                \"path\": \"./tests/samples/pem_key.p.java\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.java|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"MIIBVgIBADANBgkqhkiG9w0BAQEFAASCAUAwggE8AgEAAkEAplaRRGItayIi59+n\",\n                \"value_start\": 10,\n                \"value_end\": 74,\n                \"entropy\": 4.53081\n            },\n            {\n                \"line\": \"      +   \\\"FlVJfmQshKZo3MNry20h1xvoqks6Wndb0XLJ3s1A6Z2Qg+9xKHNT7QZTTGVatxrp\\\\n\\\"\",\n                \"line_num\": 5,\n                \"path\": \"./tests/samples/pem_key.p.java\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.java|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"FlVJfmQshKZo3MNry20h1xvoqks6Wndb0XLJ3s1A6Z2Qg+9xKHNT7QZTTGVatxrp\",\n                \"value_start\": 11,\n                \"value_end\": 75,\n                \"entropy\": 5.25352\n            },\n            {\n                \"line\": \"        +   \\\"CY1LcQIDAQABAkEAlXPKaercbBnryvLEqehPdGSFK1ppdZGQVOLlOOU2k2o5VpRP\\\\n\\\"\",\n                \"line_num\": 6,\n                \"path\": \"./tests/samples/pem_key.p.java\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.java|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"CY1LcQIDAQABAkEAlXPKaercbBnryvLEqehPdGSFK1ppdZGQVOLlOOU2k2o5VpRP\",\n                \"value_start\": 13,\n                \"value_end\": 77,\n                \"entropy\": 5.09727\n            },\n            {\n                \"line\": \"      +   \\\"AvHzS6VZsimd5XPxEIKPkJhWDLhRckpwOX6LkQIhAND0WUcohqwBHxvUvAexRxbI\\\\n\\\"\",\n                \"line_num\": 7,\n                \"path\": \"./tests/samples/pem_key.p.java\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.java|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"AvHzS6VZsimd5XPxEIKPkJhWDLhRckpwOX6LkQIhAND0WUcohqwBHxvUvAexRxbI\",\n                \"value_start\": 11,\n                \"value_end\": 75,\n                \"entropy\": 5.10907\n            },\n            {\n                \"line\": \"    +   \\\"FIizfZJfI9fC2dDepWvfAiEAy8npickbddF4NlWt+PVcPi9iSfe2h8LHZ/QLzNV5\\\\n\\\"\",\n                \"line_num\": 8,\n                \"path\": \"./tests/samples/pem_key.p.java\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.java|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"FIizfZJfI9fC2dDepWvfAiEAy8npickbddF4NlWt+PVcPi9iSfe2h8LHZ/QLzNV5\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.0629\n            },\n            {\n                \"line\": \"     +   \\\"Mq8CIQDMdXvyS+5S2hoVgnimUkoMOaUWCgOiOOP6mFfHsERPIwIhAMovKCnQwhLR\\\\n\\\"\",\n                \"line_num\": 9,\n                \"path\": \"./tests/samples/pem_key.p.java\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.java|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"Mq8CIQDMdXvyS+5S2hoVgnimUkoMOaUWCgOiOOP6mFfHsERPIwIhAMovKCnQwhLR\",\n                \"value_start\": 10,\n                \"value_end\": 74,\n                \"entropy\": 5.10907\n            },\n            {\n                \"line\": \"      +   \\\"YQAfX3yaCguUPWL/hjQJdodXZIGz5gv3AiBQ5WKTpyu8osL4CCi4aS6G/fSlCdu0\\\\n\\\"\",\n                \"line_num\": 10,\n                \"path\": \"./tests/samples/pem_key.p.java\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.java|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"YQAfX3yaCguUPWL/hjQJdodXZIGz5gv3AiBQ5WKTpyu8osL4CCi4aS6G/fSlCdu0\",\n                \"value_start\": 11,\n                \"value_end\": 75,\n                \"entropy\": 5.15211\n            },\n            {\n                \"line\": \"     +   \\\"GeGaqMojMT7//g==\\\\n\\\"\",\n                \"line_num\": 11,\n                \"path\": \"./tests/samples/pem_key.p.java\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.java|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"GeGaqMojMT7//g==\",\n                \"value_start\": 10,\n                \"value_end\": 26,\n                \"entropy\": 3.5\n            },\n            {\n                \"line\": \"      + \\\"-----END RSA PRIVATE KEY-----\\\\n\\\";\",\n                \"line_num\": 12,\n                \"path\": \"./tests/samples/pem_key.p.java\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.java|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"-----END RSA PRIVATE KEY-----\",\n                \"value_start\": 9,\n                \"value_end\": 38,\n                \"entropy\": 3.24663\n            }\n        ]\n    },\n    {\n        \"rule\": \"PEM Private Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \" = \\\"\\\\\\\"-----BEGIN PRIVATE KEY-----\\\\\\\\n\\\"\",\n                \"line_num\": 16,\n                \"path\": \"./tests/samples/pem_key.p.java\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.java|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"-----BEGIN PRIVATE KEY-----\",\n                \"value_start\": 6,\n                \"value_end\": 33,\n                \"entropy\": 3.20029\n            },\n            {\n                \"line\": \" +   \\\"MIIBVAIBADANBgkqhkiG9w0BAQEFAASCAT4wggE6AgEAAkEAxAIxg6QtxmnJ0Bsj\\\\\\\\n\\\"\",\n                \"line_num\": 17,\n                \"path\": \"./tests/samples/pem_key.p.java\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.java|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"MIIBVAIBADANBgkqhkiG9w0BAQEFAASCAT4wggE6AgEAAkEAxAIxg6QtxmnJ0Bsj\",\n                \"value_start\": 6,\n                \"value_end\": 70,\n                \"entropy\": 4.44143\n            },\n            {\n                \"line\": \" +   \\\"VRsEhjLB9lSY9CaFvvEbXK9eBezqR6x6epxm4w/bx1xAK1O9m4iyEN72+jhpZHZs\\\\\\\\n\\\"\",\n                \"line_num\": 18,\n                \"path\": \"./tests/samples/pem_key.p.java\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.java|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"VRsEhjLB9lSY9CaFvvEbXK9eBezqR6x6epxm4w/bx1xAK1O9m4iyEN72+jhpZHZs\",\n                \"value_start\": 6,\n                \"value_end\": 70,\n                \"entropy\": 5.16391\n            },\n            {\n                \"line\": \" +   \\\"6RZsxQIDAQABAkBbzksyxWtLS7Fi79MUwZrU4GFI50bc1E5AqN2QA/OeAg+tdgRC\\\\\\\\n\\\"\",\n                \"line_num\": 19,\n                \"path\": \"./tests/samples/pem_key.p.java\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.java|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"6RZsxQIDAQABAkBbzksyxWtLS7Fi79MUwZrU4GFI50bc1E5AqN2QA/OeAg+tdgRC\",\n                \"value_start\": 6,\n                \"value_end\": 70,\n                \"entropy\": 5.24586\n            },\n            {\n                \"line\": \" +   \\\"eTVV2eZEM750xZUCoqDwLsLeYrGFR7zy0VkBAiEA5ljPCFu3UIVOgZXhSr342mTX\\\\\\\\n\\\"\",\n                \"line_num\": 20,\n                \"path\": \"./tests/samples/pem_key.p.java\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.java|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"eTVV2eZEM750xZUCoqDwLsLeYrGFR7zy0VkBAiEA5ljPCFu3UIVOgZXhSr342mTX\",\n                \"value_start\": 6,\n                \"value_end\": 70,\n                \"entropy\": 5.28891\n            },\n            {\n                \"line\": \" +   \\\"vC9/t9XrGuHCQU8oOW0CIQDZ1mYBOniJmPD0h5j1wadmLkmmZRPUNyMTEHiBUEmB\\\\\\\\n\\\"\",\n                \"line_num\": 21,\n                \"path\": \"./tests/samples/pem_key.p.java\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.java|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"vC9/t9XrGuHCQU8oOW0CIQDZ1mYBOniJmPD0h5j1wadmLkmmZRPUNyMTEHiBUEmB\",\n                \"value_start\": 6,\n                \"value_end\": 70,\n                \"entropy\": 5.19102\n            },\n            {\n                \"line\": \" +   \\\"uQIgSpG1dB882PRO1eSPaoLVbN34eRNnZTv7QFiVak8V1oECIGk3tKdtPaGAnQoP\\\\\\\\n\\\"\",\n                \"line_num\": 22,\n                \"path\": \"./tests/samples/pem_key.p.java\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.java|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"uQIgSpG1dB882PRO1eSPaoLVbN34eRNnZTv7QFiVak8V1oECIGk3tKdtPaGAnQoP\",\n                \"value_start\": 6,\n                \"value_end\": 70,\n                \"entropy\": 5.04243\n            },\n            {\n                \"line\": \" +   \\\"oOM7eYbSXsKfWdeMFkX0E7CqPgcJAiEAlydP8ln92gy4LefZuIJn1/M5PEeRFKrq\\\\\\\\n\\\"\",\n                \"line_num\": 23,\n                \"path\": \"./tests/samples/pem_key.p.java\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.java|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"oOM7eYbSXsKfWdeMFkX0E7CqPgcJAiEAlydP8ln92gy4LefZuIJn1/M5PEeRFKrq\",\n                \"value_start\": 6,\n                \"value_end\": 70,\n                \"entropy\": 5.24586\n            },\n            {\n                \"line\": \" +   \\\"aAjRMKT7uCM=\\\\\\\\n\\\"\",\n                \"line_num\": 24,\n                \"path\": \"./tests/samples/pem_key.p.java\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.java|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"aAjRMKT7uCM=\",\n                \"value_start\": 6,\n                \"value_end\": 18,\n                \"entropy\": 3.4183\n            },\n            {\n                \"line\": \" +   \\\"-----END RSA PRIVATE KEY-----\\\\\\\"\\\";\",\n                \"line_num\": 25,\n                \"path\": \"./tests/samples/pem_key.p.java\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.java|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"-----END RSA PRIVATE KEY-----\",\n                \"value_start\": 6,\n                \"value_end\": 35,\n                \"entropy\": 3.24663\n            }\n        ]\n    },\n    {\n        \"rule\": \"PEM Private Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"2026-04-26 12:36:01 -----BEGIN PRIVATE KEY-----\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"-----BEGIN PRIVATE KEY-----\",\n                \"value_start\": 20,\n                \"value_end\": 47,\n                \"entropy\": 3.20029\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 MIIMvgIBADALBglghkgBZQMEBAMEggyqMIIMpgRATqJGETTwhb2gxXF41z3G5ztP\",\n                \"line_num\": 3,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"MIIMvgIBADALBglghkgBZQMEBAMEggyqMIIMpgRATqJGETTwhb2gxXF41z3G5ztP\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 4.67767\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 I+dcZ5zCOnpcALAIw+OAqVHjisQypIBH6K/pqnrVYzZkwV6M4bLhesOMuserAgSC\",\n                \"line_num\": 4,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"I+dcZ5zCOnpcALAIw+OAqVHjisQypIBH6K/pqnrVYzZkwV6M4bLhesOMuserAgSC\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.06602\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 DGAygxLkWHaG9AEmQJsg1MeFxsNyehNphDUdaKHxVmXPYUNVm3J4c5+xBZigd8pa\",\n                \"line_num\": 5,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"DGAygxLkWHaG9AEmQJsg1MeFxsNyehNphDUdaKHxVmXPYUNVm3J4c5+xBZigd8pa\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.17157\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 LEIX4H6JKVWAwKs5UkCLw3uB434w+6mWMJlUjDwWZSGgEiRjS21nx6eKyLqlLE16\",\n                \"line_num\": 6,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"LEIX4H6JKVWAwKs5UkCLw3uB434w+6mWMJlUjDwWZSGgEiRjS21nx6eKyLqlLE16\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.10907\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 XAZ5Rg2oJAL5CVj8uAe7pUdweySS4EBgdMPJ9o0cEZDP5aD9yTSIeXzi1bgGJQ/s\",\n                \"line_num\": 7,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"XAZ5Rg2oJAL5CVj8uAe7pUdweySS4EBgdMPJ9o0cEZDP5aD9yTSIeXzi1bgGJQ/s\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.27298\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 aJ5DxXUVXDWTZgA05CHuojS/R1WlO2o30rxV4azc+Yr7IcR89i4wNGHUNQFmhhBF\",\n                \"line_num\": 8,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"aJ5DxXUVXDWTZgA05CHuojS/R1WlO2o30rxV4azc+Yr7IcR89i4wNGHUNQFmhhBF\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.4375\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 OYyA41Ls/ESNS1UGWwfCuZ89CBzjjBQZhxp4ELW+ZLa+1w3iUhJZEYoc9GQm7E+v\",\n                \"line_num\": 9,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"OYyA41Ls/ESNS1UGWwfCuZ89CBzjjBQZhxp4ELW+ZLa+1w3iUhJZEYoc9GQm7E+v\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.12086\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 VIQvl4RxKF8WZAc4uTaisTwcNAhYK5m5gpX5ZHLgBndWRjE32kOvask2BLdgjJig\",\n                \"line_num\": 10,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"VIQvl4RxKF8WZAc4uTaisTwcNAhYK5m5gpX5ZHLgBndWRjE32kOvask2BLdgjJig\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.2382\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 Fs9mKlRU+ZqIQxukBDO6xkHjSr1JxIP2HJNyiiZxgCUKSi/I5h4UObW1yjNv0Ymw\",\n                \"line_num\": 11,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"Fs9mKlRU+ZqIQxukBDO6xkHjSr1JxIP2HJNyiiZxgCUKSi/I5h4UObW1yjNv0Ymw\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.27711\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 FE/csKq4gcWvPD/QuFeW4XFQcZaoqkQVILnjVG10NqOTlDJaywMhcgjQq2QQlVXH\",\n                \"line_num\": 12,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"FE/csKq4gcWvPD/QuFeW4XFQcZaoqkQVILnjVG10NqOTlDJaywMhcgjQq2QQlVXH\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.07782\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 zMBgJI3W9qLDYFY69rN/xnL68wg5B1xv62ChNo4eTLlppGmNlLfX6YleXLYK2pTj\",\n                \"line_num\": 13,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"zMBgJI3W9qLDYFY69rN/xnL68wg5B1xv62ChNo4eTLlppGmNlLfX6YleXLYK2pTj\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.09571\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 cmIbK3nvQ7BGLAXVMMYFOkkht0mHVC4sS3mwdUtS2l5KECOq1R+g4mrrAUyGpI1B\",\n                \"line_num\": 14,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"cmIbK3nvQ7BGLAXVMMYFOkkht0mHVC4sS3mwdUtS2l5KECOq1R+g4mrrAUyGpI1B\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.34375\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 68+Eg5DkM86BUYI9N86V4cUtNGDbsmaJgCurGJHHupeJQhWj+Q2CNlXmSaP+mCau\",\n                \"line_num\": 15,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"68+Eg5DkM86BUYI9N86V4cUtNGDbsmaJgCurGJHHupeJQhWj+Q2CNlXmSaP+mCau\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.14384\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 GUEMVn/PVmqhSJIj+yEsojeZykecYXo7LMxiJkuX8HZ9R3ynOHdedcfV4DdAJc1E\",\n                \"line_num\": 16,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"GUEMVn/PVmqhSJIj+yEsojeZykecYXo7LMxiJkuX8HZ9R3ynOHdedcfV4DdAJc1E\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.22993\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 t51bOzjJlLIlUEQicJcXMCrBJ8pL1bHJGkT7t7gxnC72Qz7D2Czh20oJIgFTs1yJ\",\n                \"line_num\": 17,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"t51bOzjJlLIlUEQicJcXMCrBJ8pL1bHJGkT7t7gxnC72Qz7D2Czh20oJIgFTs1yJ\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.05423\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 kQSTxDFcMsakyRRZAAcDyGMGUnrMxIVSyrQDhIQrORaeiTDHcaS6pDuz5kkJsT+Y\",\n                \"line_num\": 18,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"kQSTxDFcMsakyRRZAAcDyGMGUnrMxIVSyrQDhIQrORaeiTDHcaS6pDuz5kkJsT+Y\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 4.86869\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 ki/ZkkAldBpX4sDD1zvC6LyWU1IlZcx9F5V7I0P/BrpSwrvjNQEIeW4tNR1+fEYW\",\n                \"line_num\": 19,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"ki/ZkkAldBpX4sDD1zvC6LyWU1IlZcx9F5V7I0P/BrpSwrvjNQEIeW4tNR1+fEYW\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.35907\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 fE7gewlJZbTCVqTcQ7wQ+kA7JEQkU6I8YaIXuiwiG55EuSsO2MzpApgFtmAcWlT4\",\n                \"line_num\": 20,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"fE7gewlJZbTCVqTcQ7wQ+kA7JEQkU6I8YaIXuiwiG55EuSsO2MzpApgFtmAcWlT4\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.24173\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 ybWzhp7kqwRFolOi6hb9y8y4aDRkRltYcTPswcjh40k1spoCRlwCcgahgTnuWJ8O\",\n                \"line_num\": 21,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"ybWzhp7kqwRFolOi6hb9y8y4aDRkRltYcTPswcjh40k1spoCRlwCcgahgTnuWJ8O\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.00352\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 qq4uxkY8xkFvJ4VqZjcl7AbhdJg3R5gqlbhPZmEXBn3teYbihzMCBRI3RTI5/Hy2\",\n                \"line_num\": 22,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"qq4uxkY8xkFvJ4VqZjcl7AbhdJg3R5gqlbhPZmEXBn3teYbihzMCBRI3RTI5/Hy2\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.23407\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 Yh4VhW+MqaukgRTPk50aKFjEs0vj6D1RpLRUmq/EI2GKZbtZc4MDR8kZWXsP5yqO\",\n                \"line_num\": 23,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"Yh4VhW+MqaukgRTPk50aKFjEs0vj6D1RpLRUmq/EI2GKZbtZc4MDR8kZWXsP5yqO\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.24586\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 o2OcG66cSXR5KrzmNRNdci1GNafm5qHiqj5NsnDax1B8t1hkpV+VMkZKGxGXt2YP\",\n                \"line_num\": 24,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"o2OcG66cSXR5KrzmNRNdci1GNafm5qHiqj5NsnDax1B8t1hkpV+VMkZKGxGXt2YP\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.12086\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 gx1/q1EgS5w2ciAuC8u5gitd1ie43B5lsysO0MY31Qy1eGO1Sj0g4pxM2szbpwso\",\n                \"line_num\": 25,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"gx1/q1EgS5w2ciAuC8u5gitd1ie43B5lsysO0MY31Qy1eGO1Sj0g4pxM2szbpwso\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 4.95282\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 0RZL8aKk645hElitcXDx8wUVc0Zm/Av4FsSiZkhFeKaHSAXJtTtlAkLMMTZaNwBA\",\n                \"line_num\": 26,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"0RZL8aKk645hElitcXDx8wUVc0Zm/Av4FsSiZkhFeKaHSAXJtTtlAkLMMTZaNwBA\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.05836\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 hqmHqqtalptZmwGz2F0dmXF9cy+gOxzaBhQbVcH8SDdchpgTl14B93qh2iY2RjxY\",\n                \"line_num\": 27,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"hqmHqqtalptZmwGz2F0dmXF9cy+gOxzaBhQbVcH8SDdchpgTl14B93qh2iY2RjxY\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.12086\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 Eb3kpsPG0cdLTAAahEALuMu26YFpglJXAkwSwSLPYsGRPHjJFiXfWBR05x5y5wdB\",\n                \"line_num\": 28,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"Eb3kpsPG0cdLTAAahEALuMu26YFpglJXAkwSwSLPYsGRPHjJFiXfWBR05x5y5wdB\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.10907\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 1jhhqlV6ZHO/osEJKb6tSHH0mYf0uMNu2speu2DgsjCjHHJwtSJMayfO1WZcSF+G\",\n                \"line_num\": 29,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"1jhhqlV6ZHO/osEJKb6tSHH0mYf0uMNu2speu2DgsjCjHHJwtSJMayfO1WZcSF+G\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.13462\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 wFXOY77MgB3VwMRcCoTMNwoBswcJeZRyNL+cHLZZcK0kpEJbBY60W5pHUceKrDDJ\",\n                \"line_num\": 30,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"wFXOY77MgB3VwMRcCoTMNwoBswcJeZRyNL+cHLZZcK0kpEJbBY60W5pHUceKrDDJ\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.02142\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 sr63qzPaUVNj0Vu2zFG8sEEMES55/JIKCoj6O66j821/qJ97RLPP5pKUpp2gCS7F\",\n                \"line_num\": 31,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"sr63qzPaUVNj0Vu2zFG8sEEMES55/JIKCoj6O66j821/qJ97RLPP5pKUpp2gCS7F\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.02298\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 GyCzMBiTsF4zNCr+FA1rQUCZqa50S3Gu90KANsv7VX1krJXXaSXQFaiDAyB+zL0f\",\n                \"line_num\": 32,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"GyCzMBiTsF4zNCr+FA1rQUCZqa50S3Gu90KANsv7VX1krJXXaSXQFaiDAyB+zL0f\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.04243\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 SQR7WrimYwMQaGX8c75+8L7NK2zdxMQH0chtdqv79WmoOn+fWGupCq7NlA32s7rb\",\n                \"line_num\": 33,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"SQR7WrimYwMQaGX8c75+8L7NK2zdxMQH0chtdqv79WmoOn+fWGupCq7NlA32s7rb\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.26532\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 Cq4auSoIF5ovQqw2F2wgi2nBpHwfF5ka6qSaQA4wiACrxkC255lCaAzy9jky4Ldt\",\n                \"line_num\": 34,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"Cq4auSoIF5ovQqw2F2wgi2nBpHwfF5ka6qSaQA4wiACrxkC255lCaAzy9jky4Ldt\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 4.84727\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 1iSmA7q2JSu8HEN8NG9AQqP+l44HRXFzJsF3cXTaOzKZKYlhlx5btb8F+M9aCgXi\",\n                \"line_num\": 35,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"1iSmA7q2JSu8HEN8NG9AQqP+l44HRXFzJsF3cXTaOzKZKYlhlx5btb8F+M9aCgXi\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.26532\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 pICqo0FqkQ03ULwswnF8yXsjpYkx63lc0pLStKn7dxI+cSOYYCu0cbxcBoZyqmH1\",\n                \"line_num\": 36,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"pICqo0FqkQ03ULwswnF8yXsjpYkx63lc0pLStKn7dxI+cSOYYCu0cbxcBoZyqmH1\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.07782\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 Kqmr2XMicIWCxQoiW4YT5UYfNsfwmRUWkJwmCahUFSzo5swUpBbeCo6bsEdkyxMM\",\n                \"line_num\": 37,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"Kqmr2XMicIWCxQoiW4YT5UYfNsfwmRUWkJwmCahUFSzo5swUpBbeCo6bsEdkyxMM\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.13618\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 I5bNV1cjSII5liHOyxnvZ77+giZAKglsiI3ZmmVh+l8fvDBDaLVmmMRfcwRHOxu1\",\n                \"line_num\": 38,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"I5bNV1cjSII5liHOyxnvZ77+giZAKglsiI3ZmmVh+l8fvDBDaLVmmMRfcwRHOxu1\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.04657\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 UMRr047T8ggKgEnyhQLK/FJh+Yp8ubo6wsTUwyyVcRULUVWeJbka6EDkMbPucHHb\",\n                \"line_num\": 39,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"UMRr047T8ggKgEnyhQLK/FJh+Yp8ubo6wsTUwyyVcRULUVWeJbka6EDkMbPucHHb\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.10141\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 vDdO61eP2yB+uQlwbBr1UquiQD1XrBHXFVwDw6rJoJxTkGQggaofpsUPa3F561LV\",\n                \"line_num\": 40,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"vDdO61eP2yB+uQlwbBr1UquiQD1XrBHXFVwDw6rJoJxTkGQggaofpsUPa3F561LV\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.11673\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 aQAFxU9BAgmdYb4uJxtlt46DCbx2tFW2OnoqQrpFW7nWlwmLJ2dUhIRkySTyhJpq\",\n                \"line_num\": 41,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"aQAFxU9BAgmdYb4uJxtlt46DCbx2tFW2OnoqQrpFW7nWlwmLJ2dUhIRkySTyhJpq\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.14798\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 K0hnrLThhA1tu8q3dTXOCDs+8csKnI9vVSqAFm6ax3lI6ilBFVIgyZi7dBI1TCKp\",\n                \"line_num\": 42,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"K0hnrLThhA1tu8q3dTXOCDs+8csKnI9vVSqAFm6ax3lI6ilBFVIgyZi7dBI1TCKp\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.18336\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 rDbvCzcWY6dxEUzHqTELG5sd955LQgoei2/86QDquRIgB2PGqblBYylUOA9tBTAv\",\n                \"line_num\": 43,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"rDbvCzcWY6dxEUzHqTELG5sd955LQgoei2/86QDquRIgB2PGqblBYylUOA9tBTAv\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.21461\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 wSVKoZuonI4ijDZz5yec2C9DiCZva6MbxASOLBl05qfeeDbzkhOWsas2ZpMRmaS8\",\n                \"line_num\": 44,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"wSVKoZuonI4ijDZz5yec2C9DiCZva6MbxASOLBl05qfeeDbzkhOWsas2ZpMRmaS8\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.26532\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 dI0Tmp732GkddM2R879ULHp0x4CI4Vh42mN/m22OInwW4mlPaUAy4MQUOWvuWb6/\",\n                \"line_num\": 45,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"dI0Tmp732GkddM2R879ULHp0x4CI4Vh42mN/m22OInwW4mlPaUAy4MQUOWvuWb6/\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.02752\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 o2/HcXJCoj9JsULCKXchFrawJHTgCTpi9BicMpmnPHpnpxlYRw77p4qWcmGqs2Yi\",\n                \"line_num\": 46,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"o2/HcXJCoj9JsULCKXchFrawJHTgCTpi9BicMpmnPHpnpxlYRw77p4qWcmGqs2Yi\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.02142\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 gQLAAQhZxzpT8MPgsomgC2nySQthEHsvF4XVbL60ImBv9Qig2hd7Jh4cI0D/+TdC\",\n                \"line_num\": 47,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"gQLAAQhZxzpT8MPgsomgC2nySQthEHsvF4XVbL60ImBv9Qig2hd7Jh4cI0D/+TdC\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.25\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 tky6B1MyPAxYCTN2QXXCo6CbdzMoVBhXuAI7prv2DA5zUwNCpxBKs2BgSIZ9677J\",\n                \"line_num\": 48,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"tky6B1MyPAxYCTN2QXXCo6CbdzMoVBhXuAI7prv2DA5zUwNCpxBKs2BgSIZ9677J\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.12852\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 RlxpsqbbVLVJl6BdbJcMRjIWEW0flKwbSb/PdEuEGheu5UuRZ4/MxrzrciW35CxX\",\n                \"line_num\": 49,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"RlxpsqbbVLVJl6BdbJcMRjIWEW0flKwbSb/PdEuEGheu5UuRZ4/MxrzrciW35CxX\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.12283\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 +XYlHBLCOQ6MCCSYtAy9olSBxQ1iMkiP0V20Crzm6JapZWxTC1EEFgMXAJERMXin\",\n                \"line_num\": 50,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"+XYlHBLCOQ6MCCSYtAy9olSBxQ1iMkiP0V20Crzm6JapZWxTC1EEFgMXAJERMXin\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.12696\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 NiY0wK8f8JFABRBxMZeHyBtT6EobR2Q1Ozcjmhb98rK6wUVhorCGV0mbZ4jzVFtH\",\n                \"line_num\": 51,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"NiY0wK8f8JFABRBxMZeHyBtT6EobR2Q1Ozcjmhb98rK6wUVhorCGV0mbZ4jzVFtH\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.23407\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 YD9UoTAQrI22NGLy+BupkM7OmaQ82SWZlZ8eiSqv5z7aBI8AAWOORHCYW07i9kCy\",\n                \"line_num\": 52,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"YD9UoTAQrI22NGLy+BupkM7OmaQ82SWZlZ8eiSqv5z7aBI8AAWOORHCYW07i9kCy\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.17923\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 OJ4nB3/Ko4OTiUeGYamtlj9/k7alhM5BE2fkEoygYFvL1cfFXMHH+wOEonSMi5qo\",\n                \"line_num\": 53,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"OJ4nB3/Ko4OTiUeGYamtlj9/k7alhM5BE2fkEoygYFvL1cfFXMHH+wOEonSMi5qo\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.24586\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 smQrWalr8aPEPGkXWYDjMsBZ4rHQ00z+cE3YiXJXMj2Y8JMY9LJrR1asaEY3IoBx\",\n                \"line_num\": 54,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"smQrWalr8aPEPGkXWYDjMsBZ4rHQ00z+cE3YiXJXMj2Y8JMY9LJrR1asaEY3IoBx\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 4.94712\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 ose+UxmIsZr1OD/Jy1euBJo0IQX3gnrvdGl9u8zQeCes+g5xl68gAU8n1J/Z4DoB\",\n                \"line_num\": 55,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"ose+UxmIsZr1OD/Jy1euBJo0IQX3gnrvdGl9u8zQeCes+g5xl68gAU8n1J/Z4DoB\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.02298\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 Y0mUMEgOuMu6aAvmQc/lqqP7lwrCKCfVe6SS6w2w3I9GrL2/3GkQkXJSc4rmZb7u\",\n                \"line_num\": 56,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"Y0mUMEgOuMu6aAvmQc/lqqP7lwrCKCfVe6SS6w2w3I9GrL2/3GkQkXJSc4rmZb7u\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.17923\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 JoAFyHleVFAnDFXlhLKFl0h3x7TD26LK2LApnLI344MvE6ZG9RFA6w2Q6JtRIEWU\",\n                \"line_num\": 57,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"JoAFyHleVFAnDFXlhLKFl0h3x7TD26LK2LApnLI344MvE6ZG9RFA6w2Q6JtRIEWU\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 4.98251\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 lheqsm3z9sfcOiHW/GWw0nTkC8btOFZ0uBTThDnHg0BvuXzmBDcle1GpXJdyzLyl\",\n                \"line_num\": 58,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"lheqsm3z9sfcOiHW/GWw0nTkC8btOFZ0uBTThDnHg0BvuXzmBDcle1GpXJdyzLyl\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.19102\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 cW4qlLb15J1zMb/hVBNGagquATVVclvcVKYGYkNsxGpWBC8/8iJTEUKEMwqti7PR\",\n                \"line_num\": 59,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"cW4qlLb15J1zMb/hVBNGagquATVVclvcVKYGYkNsxGpWBC8/8iJTEUKEMwqti7PR\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.18336\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 yh+r058rdhlVML+0F5aDJwjslkCppGpJF5nGQn4pwBzViz752YFUgRRz2jrhFYHE\",\n                \"line_num\": 60,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"yh+r058rdhlVML+0F5aDJwjslkCppGpJF5nGQn4pwBzViz752YFUgRRz2jrhFYHE\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.02711\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 KaVCtcczpnZhtqNMY49aRMaTphHu4YpgglMjbDuZ5wiK27Fq5RM+lF6sIG6SGycb\",\n                \"line_num\": 61,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"KaVCtcczpnZhtqNMY49aRMaTphHu4YpgglMjbDuZ5wiK27Fq5RM+lF6sIG6SGycb\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.15211\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 4whptwXeepJbATEQ55FWWckLVJ5lVWuZ0pCOMguparXRwXECzGnIHLxehCexiZqA\",\n                \"line_num\": 62,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"4whptwXeepJbATEQ55FWWckLVJ5lVWuZ0pCOMguparXRwXECzGnIHLxehCexiZqA\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.09727\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 QLJZNAFOyB3IhHZo5TrJY5sNIMXU94yraZLmQQ3cRMntNiW8kp6Pqj3I40bqlL3F\",\n                \"line_num\": 63,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"QLJZNAFOyB3IhHZo5TrJY5sNIMXU94yraZLmQQ3cRMntNiW8kp6Pqj3I40bqlL3F\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.25352\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 ahwNl8qwsjl44hMmWMfQk1c5OpCtkGJcIpIF08ILxDknAyBTQ35BJXMJ9XtI0nt2\",\n                \"line_num\": 64,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"ahwNl8qwsjl44hMmWMfQk1c5OpCtkGJcIpIF08ILxDknAyBTQ35BJXMJ9XtI0nt2\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.17157\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 OiGGA6YUqbb68bmXbEhzKQhulHs8GWh/sgXiN3NoI5ns6nU0a3e6Oz2BkXY708iM\",\n                \"line_num\": 65,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"OiGGA6YUqbb68bmXbEhzKQhulHs8GWh/sgXiN3NoI5ns6nU0a3e6Oz2BkXY708iM\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.05423\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 oxrQxsZ4uoM/pjlHG5xeOM62B3tpeghU5iFfOgr+hH9mGcOx4cSoNjn3a5gvMJqc\",\n                \"line_num\": 66,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"oxrQxsZ4uoM/pjlHG5xeOM62B3tpeghU5iFfOgr+hH9mGcOx4cSoNjn3a5gvMJqc\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.14798\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 Ycc60cOGalwlpLruUy4rdDwhInvsGAmaapDq8IxRpS/AIpij4Y/SmMl9uisvqBr9\",\n                \"line_num\": 67,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"Ycc60cOGalwlpLruUy4rdDwhInvsGAmaapDq8IxRpS/AIpij4Y/SmMl9uisvqBr9\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.03477\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 ypg1olTOJ8rk08AXY0Kl2D9lS5GK11g2VWtCgKiMdS/RvAXJnJGkdStVTGYiCnHJ\",\n                \"line_num\": 68,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"ypg1olTOJ8rk08AXY0Kl2D9lS5GK11g2VWtCgKiMdS/RvAXJnJGkdStVTGYiCnHJ\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 4.99173\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 OjgyHTrR2a+N2ZiYTldYtmF6H9pm/lfv6FNtw2cNQzqGoSSsrAHEugO0d94keir2\",\n                \"line_num\": 69,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"OjgyHTrR2a+N2ZiYTldYtmF6H9pm/lfv6FNtw2cNQzqGoSSsrAHEugO0d94keir2\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.24586\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 62w9ymkZWDurfZDVT8OIVWXhgKlR44rEMqSAR+iv6ap61WM2ZMFejOGy4XrDjLrH\",\n                \"line_num\": 70,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"62w9ymkZWDurfZDVT8OIVWXhgKlR44rEMqSAR+iv6ap61WM2ZMFejOGy4XrDjLrH\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.21048\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 qwI=\",\n                \"line_num\": 71,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"qwI=\",\n                \"value_start\": 20,\n                \"value_end\": 24,\n                \"entropy\": 2.0\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 -----END PRIVATE KEY-----\",\n                \"line_num\": 72,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"-----END PRIVATE KEY-----\",\n                \"value_start\": 20,\n                \"value_end\": 45,\n                \"entropy\": 3.04489\n            }\n        ]\n    },\n    {\n        \"rule\": \"PEM Private Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"{\\\"ML-KEM-1024.log\\\":\\\"\\\\r\\\\n\\\\r\\\\n#7 [4/4] RUN openssl genpkey -algorithm ML-KEM-1024 -out mlkem-privatekey.pem && cat mlkem-privatekey.pem\\\\r\\\\n2026-04-26 12:36:01 -----BEGIN PRIVATE KEY-----\\\\r\\\\n2026-04-26 12:36:01 MIIMvgIBADALBglghkgBZQMEBAMEggyqMIIMpgRATqJGETTwhb2gxXF41z3G5ztP\\\\r\\\\n2026-04-26 12:36:01 I+dcZ5zCOnpcALAIw+OAqVHjisQypIBH6K/pqnrVYzZkwV6M4bLhesOMuserAgSC\\\\r\\\\n2026-04-26 12:36:01 DGAygxLkWHaG9AEmQJsg1MeFxsNyehNphDUdaKHxVmXPYUNVm3J4c5+xBZigd8pa\\\\r\\\\n2026-04-26 12:36:01 LEIX4H6JKVWAwKs5UkCLw3uB434w+6mWMJlUjDwWZSGgEiRjS21nx6eKyLqlLE16\\\\r\\\\n2026-04-26 12:36:01 XAZ5Rg2oJAL5CVj8uAe7pUdweySS4EBgdMPJ9o0cEZDP5aD9yTSIeXzi1bgGJQ/s\\\\r\\\\n2026-04-26 12:36:01 aJ5DxXUVXDWTZgA05CHuojS/R1WlO2o30rxV4azc+Yr7IcR89i4wNGHUNQFmhhBF\\\\r\\\\n2026-04-26 12:36:01 OYyA41Ls/ESNS1UGWwfCuZ89CBzjjBQZhxp4ELW+ZLa+1w3iUhJZEYoc9GQm7E+v\\\\r\\\\n2026-04-26 12:36:01 VIQvl4RxKF8WZAc4uTaisTwcNAhYK5m5gpX5ZHLgBndWRjE32kOvask2BLdgjJig\\\\r\\\\n2026-04-26 12:36:01 Fs9mKlRU+ZqIQxukBDO6xkHjSr1JxIP2HJNyiiZxgCUKSi/I5h4UObW1yjNv0Ymw\\\\r\\\\n2026-04-26 12:36:01 FE/csKq4gcWvPD/QuFeW4XFQcZaoqkQVILnjVG10NqOTlDJaywMhcgjQq2QQlVXH\\\\r\\\\n2026-04-26 12:36:01 zMBgJI3W9qLDYFY69rN/xnL68wg5B1xv62ChNo4eTLlppGmNlLfX6YleXLYK2pTj\\\\r\\\\n2026-04-26 12:36:01 cmIbK3nvQ7BGLAXVMMYFOkkht0mHVC4sS3mwdUtS2l5KECOq1R+g4mrrAUyGpI1B\\\\r\\\\n2026-04-26 12:36:01 68+Eg5DkM86BUYI9N86V4cUtNGDbsmaJgCurGJHHupeJQhWj+Q2CNlXmSaP+mCau\\\\r\\\\n2026-04-26 12:36:01 GUEMVn/PVmqhSJIj+yEsojeZykecYXo7LMxiJkuX8HZ9R3ynOHdedcfV4DdAJc1E\\\\r\\\\n2026-04-26 12:36:01 t51bOzjJlLIlUEQicJcXMCrBJ8pL1bHJGkT7t7gxnC72Qz7D2Czh20oJIgFTs1yJ\\\\r\\\\n2026-04-26 12:36:01 kQSTxDFcMsakyRRZAAcDyGMGUnrMxIVSyrQDhIQrORaeiTDHcaS6pDuz5kkJsT+Y\\\\r\\\\n2026-04-26 12:36:01 ki/ZkkAldBpX4sDD1zvC6LyWU1IlZcx9F5V7I0P/BrpSwrvjNQEIeW4tNR1+fEYW\\\\r\\\\n2026-04-26 12:36:01 fE7gewlJZbTCVqTcQ7wQ+kA7JEQkU6I8YaIXuiwiG55EuSsO2MzpApgFtmAcWlT4\\\\r\\\\n2026-04-26 12:36:01 ybWzhp7kqwRFolOi6hb9y8y4aDRkRltYcTPswcjh40k1spoCRlwCcgahgTnuWJ8O\\\\r\\\\n2026-04-26 12:36:01 qq4uxkY8xkFvJ4VqZjcl7AbhdJg3R5gqlbhPZmEXBn3teYbihzMCBRI3RTI5/Hy2\\\\r\\\\n2026-04-26 12:36:01 Yh4VhW+MqaukgRTPk50aKFjEs0vj6D1RpLRUmq/EI2GKZbtZc4MDR8kZWXsP5yqO\\\\r\\\\n2026-04-26 12:36:01 o2OcG66cSXR5KrzmNRNdci1GNafm5qHiqj5NsnDax1B8t1hkpV+VMkZKGxGXt2YP\\\\r\\\\n2026-04-26 12:36:01 gx1/q1EgS5w2ciAuC8u5gitd1ie43B5lsysO0MY31Qy1eGO1Sj0g4pxM2szbpwso\\\\r\\\\n2026-04-26 12:36:01 0RZL8aKk645hElitcXDx8wUVc0Zm/Av4FsSiZkhFeKaHSAXJtTtlAkLMMTZaNwBA\\\\r\\\\n2026-04-26 12:36:01 hqmHqqtalptZmwGz2F0dmXF9cy+gOxzaBhQbVcH8SDdchpgTl14B93qh2iY2RjxY\\\\r\\\\n2026-04-26 12:36:01 Eb3kpsPG0cdLTAAahEALuMu26YFpglJXAkwSwSLPYsGRPHjJFiXfWBR05x5y5wdB\\\\r\\\\n2026-04-26 12:36:01 1jhhqlV6ZHO/osEJKb6tSHH0mYf0uMNu2speu2DgsjCjHHJwtSJMayfO1WZcSF+G\\\\r\\\\n2026-04-26 12:36:01 wFXOY77MgB3VwMRcCoTMNwoBswcJeZRyNL+cHLZZcK0kpEJbBY60W5pHUceKrDDJ\\\\r\\\\n2026-04-26 12:36:01 sr63qzPaUVNj0Vu2zFG8sEEMES55/JIKCoj6O66j821/qJ97RLPP5pKUpp2gCS7F\\\\r\\\\n2026-04-26 12:36:01 GyCzMBiTsF4zNCr+FA1rQUCZqa50S3Gu90KANsv7VX1krJXXaSXQFaiDAyB+zL0f\\\\r\\\\n2026-04-26 12:36:01 SQR7WrimYwMQaGX8c75+8L7NK2zdxMQH0chtdqv79WmoOn+fWGupCq7NlA32s7rb\\\\r\\\\n2026-04-26 12:36:01 Cq4auSoIF5ovQqw2F2wgi2nBpHwfF5ka6qSaQA4wiACrxkC255lCaAzy9jky4Ldt\\\\r\\\\n2026-04-26 12:36:01 1iSmA7q2JSu8HEN8NG9AQqP+l44HRXFzJsF3cXTaOzKZKYlhlx5btb8F+M9aCgXi\\\\r\\\\n2026-04-26 12:36:01 pICqo0FqkQ03ULwswnF8yXsjpYkx63lc0pLStKn7dxI+cSOYYCu0cbxcBoZyqmH1\\\\r\\\\n2026-04-26 12:36:01 Kqmr2XMicIWCxQoiW4YT5UYfNsfwmRUWkJwmCahUFSzo5swUpBbeCo6bsEdkyxMM\\\\r\\\\n2026-04-26 12:36:01 I5bNV1cjSII5liHOyxnvZ77+giZAKglsiI3ZmmVh+l8fvDBDaLVmmMRfcwRHOxu1\\\\r\\\\n2026-04-26 12:36:01 UMRr047T8ggKgEnyhQLK/FJh+Yp8ubo6wsTUwyyVcRULUVWeJbka6EDkMbPucHHb\\\\r\\\\n2026-04-26 12:36:01 vDdO61eP2yB+uQlwbBr1UquiQD1XrBHXFVwDw6rJoJxTkGQggaofpsUPa3F561LV\\\\r\\\\n2026-04-26 12:36:01 aQAFxU9BAgmdYb4uJxtlt46DCbx2tFW2OnoqQrpFW7nWlwmLJ2dUhIRkySTyhJpq\\\\r\\\\n2026-04-26 12:36:01 K0hnrLThhA1tu8q3dTXOCDs+8csKnI9vVSqAFm6ax3lI6ilBFVIgyZi7dBI1TCKp\\\\r\\\\n2026-04-26 12:36:01 rDbvCzcWY6dxEUzHqTELG5sd955LQgoei2/86QDquRIgB2PGqblBYylUOA9tBTAv\\\\r\\\\n2026-04-26 12:36:01 wSVKoZuonI4ijDZz5yec2C9DiCZva6MbxASOLBl05qfeeDbzkhOWsas2ZpMRmaS8\\\\r\\\\n2026-04-26 12:36:01 dI0Tmp732GkddM2R879ULHp0x4CI4Vh42mN/m22OInwW4mlPaUAy4MQUOWvuWb6/\\\\r\\\\n2026-04-26 12:36:01 o2/HcXJCoj9JsULCKXchFrawJHTgCTpi9BicMpmnPHpnpxlYRw77p4qWcmGqs2Yi\\\\r\\\\n2026-04-26 12:36:01 gQLAAQhZxzpT8MPgsomgC2nySQthEHsvF4XVbL60ImBv9Qig2hd7Jh4cI0D/+TdC\\\\r\\\\n2026-04-26 12:36:01 tky6B1MyPAxYCTN2QXXCo6CbdzMoVBhXuAI7prv2DA5zUwNCpxBKs2BgSIZ9677J\\\\r\\\\n2026-04-26 12:36:01 RlxpsqbbVLVJl6BdbJcMRjIWEW0flKwbSb/PdEuEGheu5UuRZ4/MxrzrciW35CxX\\\\r\\\\n2026-04-26 12:36:01 +XYlHBLCOQ6MCCSYtAy9olSBxQ1iMkiP0V20Crzm6JapZWxTC1EEFgMXAJERMXin\\\\r\\\\n2026-04-26 12:36:01 NiY0wK8f8JFABRBxMZeHyBtT6EobR2Q1Ozcjmhb98rK6wUVhorCGV0mbZ4jzVFtH\\\\r\\\\n2026-04-26 12:36:01 YD9UoTAQrI22NGLy+BupkM7OmaQ82SWZlZ8eiSqv5z7aBI8AAWOORHCYW07i9kCy\\\\r\\\\n2026-04-26 12:36:01 OJ4nB3/Ko4OTiUeGYamtlj9/k7alhM5BE2fkEoygYFvL1cfFXMHH+wOEonSMi5qo\\\\r\\\\n2026-04-26 12:36:01 smQrWalr8aPEPGkXWYDjMsBZ4rHQ00z+cE3YiXJXMj2Y8JMY9LJrR1asaEY3IoBx\\\\r\\\\n2026-04-26 12:36:01 ose+UxmIsZr1OD/Jy1euBJo0IQX3gnrvdGl9u8zQeCes+g5xl68gAU8n1J/Z4DoB\\\\r\\\\n2026-04-26 12:36:01 Y0mUMEgOuMu6aAvmQc/lqqP7lwrCKCfVe6SS6w2w3I9GrL2/3GkQkXJSc4rmZb7u\\\\r\\\\n2026-04-26 12:36:01 JoAFyHleVFAnDFXlhLKFl0h3x7TD26LK2LApnLI344MvE6ZG9RFA6w2Q6JtRIEWU\\\\r\\\\n2026-04-26 12:36:01 lheqsm3z9sfcOiHW/GWw0nTkC8btOFZ0uBTThDnHg0BvuXzmBDcle1GpXJdyzLyl\\\\r\\\\n2026-04-26 12:36:01 cW4qlLb15J1zMb/hVBNGagquATVVclvcVKYGYkNsxGpWBC8/8iJTEUKEMwqti7PR\\\\r\\\\n2026-04-26 12:36:01 yh+r058rdhlVML+0F5aDJwjslkCppGpJF5nGQn4pwBzViz752YFUgRRz2jrhFYHE\\\\r\\\\n2026-04-26 12:36:01 KaVCtcczpnZhtqNMY49aRMaTphHu4YpgglMjbDuZ5wiK27Fq5RM+lF6sIG6SGycb\\\\r\\\\n2026-04-26 12:36:01 4whptwXeepJbATEQ55FWWckLVJ5lVWuZ0pCOMguparXRwXECzGnIHLxehCexiZqA\\\\r\\\\n2026-04-26 12:36:01 QLJZNAFOyB3IhHZo5TrJY5sNIMXU94yraZLmQQ3cRMntNiW8kp6Pqj3I40bqlL3F\\\\r\\\\n2026-04-26 12:36:01 ahwNl8qwsjl44hMmWMfQk1c5OpCtkGJcIpIF08ILxDknAyBTQ35BJXMJ9XtI0nt2\\\\r\\\\n2026-04-26 12:36:01 OiGGA6YUqbb68bmXbEhzKQhulHs8GWh/sgXiN3NoI5ns6nU0a3e6Oz2BkXY708iM\\\\r\\\\n2026-04-26 12:36:01 oxrQxsZ4uoM/pjlHG5xeOM62B3tpeghU5iFfOgr+hH9mGcOx4cSoNjn3a5gvMJqc\\\\r\\\\n2026-04-26 12:36:01 Ycc60cOGalwlpLruUy4rdDwhInvsGAmaapDq8IxRpS/AIpij4Y/SmMl9uisvqBr9\\\\r\\\\n2026-04-26 12:36:01 ypg1olTOJ8rk08AXY0Kl2D9lS5GK11g2VWtCgKiMdS/RvAXJnJGkdStVTGYiCnHJ\\\\r\\\\n2026-04-26 12:36:01 OjgyHTrR2a+N2ZiYTldYtmF6H9pm/lfv6FNtw2cNQzqGoSSsrAHEugO0d94keir2\\\\r\\\\n2026-04-26 12:36:01 62w9ymkZWDurfZDVT8OIVWXhgKlR44rEMqSAR+iv6ap61WM2ZMFejOGy4XrDjLrH\\\\r\\\\n2026-04-26 12:36:01 qwI=\\\\r\\\\n2026-04-26 12:36:01 -----END PRIVATE KEY-----\\\\r\\\\n#7 DONE 0.3s\\\\r\\\\n\\\\r\\\\n#8 exporting to image\\\\r\\\\n#8 exporting layers 0.1s done\\\\r\\\\n#8 writing image sha256:3ed48eb4eb0c17e6baaf691a361afd8c75572517e5b729849da4e5344bf7f244 done\\\\r\\\\n#8 DONE 0.2s\\\"}\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/pem_key.p.log.json\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.log.json|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"-----BEGIN PRIVATE KEY-----\\\\r\\\\n2026-04-26 12:36:01 MIIMvgIBADALBglghkgBZQMEBAMEggyqMIIMpgRATqJGETTwhb2gxXF41z3G5ztP\\\\r\\\\n2026-04-26 12:36:01 I+dcZ5zCOnpcALAIw+OAqVHjisQypIBH6K/pqnrVYzZkwV6M4bLhesOMuserAgSC\\\\r\\\\n2026-04-26 12:36:01 DGAygxLkWHaG9AEmQJsg1MeFxsNyehNphDUdaKHxVmXPYUNVm3J4c5+xBZigd8pa\\\\r\\\\n2026-04-26 12:36:01 LEIX4H6JKVWAwKs5UkCLw3uB434w+6mWMJlUjDwWZSGgEiRjS21nx6eKyLqlLE16\\\\r\\\\n2026-04-26 12:36:01 XAZ5Rg2oJAL5CVj8uAe7pUdweySS4EBgdMPJ9o0cEZDP5aD9yTSIeXzi1bgGJQ/s\\\\r\\\\n2026-04-26 12:36:01 aJ5DxXUVXDWTZgA05CHuojS/R1WlO2o30rxV4azc+Yr7IcR89i4wNGHUNQFmhhBF\\\\r\\\\n2026-04-26 12:36:01 OYyA41Ls/ESNS1UGWwfCuZ89CBzjjBQZhxp4ELW+ZLa+1w3iUhJZEYoc9GQm7E+v\\\\r\\\\n2026-04-26 12:36:01 VIQvl4RxKF8WZAc4uTaisTwcNAhYK5m5gpX5ZHLgBndWRjE32kOvask2BLdgjJig\\\\r\\\\n2026-04-26 12:36:01 Fs9mKlRU+ZqIQxukBDO6xkHjSr1JxIP2HJNyiiZxgCUKSi/I5h4UObW1yjNv0Ymw\\\\r\\\\n2026-04-26 12:36:01 FE/csKq4gcWvPD/QuFeW4XFQcZaoqkQVILnjVG10NqOTlDJaywMhcgjQq2QQlVXH\\\\r\\\\n2026-04-26 12:36:01 zMBgJI3W9qLDYFY69rN/xnL68wg5B1xv62ChNo4eTLlppGmNlLfX6YleXLYK2pTj\\\\r\\\\n2026-04-26 12:36:01 cmIbK3nvQ7BGLAXVMMYFOkkht0mHVC4sS3mwdUtS2l5KECOq1R+g4mrrAUyGpI1B\\\\r\\\\n2026-04-26 12:36:01 68+Eg5DkM86BUYI9N86V4cUtNGDbsmaJgCurGJHHupeJQhWj+Q2CNlXmSaP+mCau\\\\r\\\\n2026-04-26 12:36:01 GUEMVn/PVmqhSJIj+yEsojeZykecYXo7LMxiJkuX8HZ9R3ynOHdedcfV4DdAJc1E\\\\r\\\\n2026-04-26 12:36:01 t51bOzjJlLIlUEQicJcXMCrBJ8pL1bHJGkT7t7gxnC72Qz7D2Czh20oJIgFTs1yJ\\\\r\\\\n2026-04-26 12:36:01 kQSTxDFcMsakyRRZAAcDyGMGUnrMxIVSyrQDhIQrORaeiTDHcaS6pDuz5kkJsT+Y\\\\r\\\\n2026-04-26 12:36:01 ki/ZkkAldBpX4sDD1zvC6LyWU1IlZcx9F5V7I0P/BrpSwrvjNQEIeW4tNR1+fEYW\\\\r\\\\n2026-04-26 12:36:01 fE7gewlJZbTCVqTcQ7wQ+kA7JEQkU6I8YaIXuiwiG55EuSsO2MzpApgFtmAcWlT4\\\\r\\\\n2026-04-26 12:36:01 ybWzhp7kqwRFolOi6hb9y8y4aDRkRltYcTPswcjh40k1spoCRlwCcgahgTnuWJ8O\\\\r\\\\n2026-04-26 12:36:01 qq4uxkY8xkFvJ4VqZjcl7AbhdJg3R5gqlbhPZmEXBn3teYbihzMCBRI3RTI5/Hy2\\\\r\\\\n2026-04-26 12:36:01 Yh4VhW+MqaukgRTPk50aKFjEs0vj6D1RpLRUmq/EI2GKZbtZc4MDR8kZWXsP5yqO\\\\r\\\\n2026-04-26 12:36:01 o2OcG66cSXR5KrzmNRNdci1GNafm5qHiqj5NsnDax1B8t1hkpV+VMkZKGxGXt2YP\\\\r\\\\n2026-04-26 12:36:01 gx1/q1EgS5w2ciAuC8u5gitd1ie43B5lsysO0MY31Qy1eGO1Sj0g4pxM2szbpwso\\\\r\\\\n2026-04-26 12:36:01 0RZL8aKk645hElitcXDx8wUVc0Zm/Av4FsSiZkhFeKaHSAXJtTtlAkLMMTZaNwBA\\\\r\\\\n2026-04-26 12:36:01 hqmHqqtalptZmwGz2F0dmXF9cy+gOxzaBhQbVcH8SDdchpgTl14B93qh2iY2RjxY\\\\r\\\\n2026-04-26 12:36:01 Eb3kpsPG0cdLTAAahEALuMu26YFpglJXAkwSwSLPYsGRPHjJFiXfWBR05x5y5wdB\\\\r\\\\n2026-04-26 12:36:01 1jhhqlV6ZHO/osEJKb6tSHH0mYf0uMNu2speu2DgsjCjHHJwtSJMayfO1WZcSF+G\\\\r\\\\n2026-04-26 12:36:01 wFXOY77MgB3VwMRcCoTMNwoBswcJeZRyNL+cHLZZcK0kpEJbBY60W5pHUceKrDDJ\\\\r\\\\n2026-04-26 12:36:01 sr63qzPaUVNj0Vu2zFG8sEEMES55/JIKCoj6O66j821/qJ97RLPP5pKUpp2gCS7F\\\\r\\\\n2026-04-26 12:36:01 GyCzMBiTsF4zNCr+FA1rQUCZqa50S3Gu90KANsv7VX1krJXXaSXQFaiDAyB+zL0f\\\\r\\\\n2026-04-26 12:36:01 SQR7WrimYwMQaGX8c75+8L7NK2zdxMQH0chtdqv79WmoOn+fWGupCq7NlA32s7rb\\\\r\\\\n2026-04-26 12:36:01 Cq4auSoIF5ovQqw2F2wgi2nBpHwfF5ka6qSaQA4wiACrxkC255lCaAzy9jky4Ldt\\\\r\\\\n2026-04-26 12:36:01 1iSmA7q2JSu8HEN8NG9AQqP+l44HRXFzJsF3cXTaOzKZKYlhlx5btb8F+M9aCgXi\\\\r\\\\n2026-04-26 12:36:01 pICqo0FqkQ03ULwswnF8yXsjpYkx63lc0pLStKn7dxI+cSOYYCu0cbxcBoZyqmH1\\\\r\\\\n2026-04-26 12:36:01 Kqmr2XMicIWCxQoiW4YT5UYfNsfwmRUWkJwmCahUFSzo5swUpBbeCo6bsEdkyxMM\\\\r\\\\n2026-04-26 12:36:01 I5bNV1cjSII5liHOyxnvZ77+giZAKglsiI3ZmmVh+l8fvDBDaLVmmMRfcwRHOxu1\\\\r\\\\n2026-04-26 12:36:01 UMRr047T8ggKgEnyhQLK/FJh+Yp8ubo6wsTUwyyVcRULUVWeJbka6EDkMbPucHHb\\\\r\\\\n2026-04-26 12:36:01 vDdO61eP2yB+uQlwbBr1UquiQD1XrBHXFVwDw6rJoJxTkGQggaofpsUPa3F561LV\\\\r\\\\n2026-04-26 12:36:01 aQAFxU9BAgmdYb4uJxtlt46DCbx2tFW2OnoqQrpFW7nWlwmLJ2dUhIRkySTyhJpq\\\\r\\\\n2026-04-26 12:36:01 K0hnrLThhA1tu8q3dTXOCDs+8csKnI9vVSqAFm6ax3lI6ilBFVIgyZi7dBI1TCKp\\\\r\\\\n2026-04-26 12:36:01 rDbvCzcWY6dxEUzHqTELG5sd955LQgoei2/86QDquRIgB2PGqblBYylUOA9tBTAv\\\\r\\\\n2026-04-26 12:36:01 wSVKoZuonI4ijDZz5yec2C9DiCZva6MbxASOLBl05qfeeDbzkhOWsas2ZpMRmaS8\\\\r\\\\n2026-04-26 12:36:01 dI0Tmp732GkddM2R879ULHp0x4CI4Vh42mN/m22OInwW4mlPaUAy4MQUOWvuWb6/\\\\r\\\\n2026-04-26 12:36:01 o2/HcXJCoj9JsULCKXchFrawJHTgCTpi9BicMpmnPHpnpxlYRw77p4qWcmGqs2Yi\\\\r\\\\n2026-04-26 12:36:01 gQLAAQhZxzpT8MPgsomgC2nySQthEHsvF4XVbL60ImBv9Qig2hd7Jh4cI0D/+TdC\\\\r\\\\n2026-04-26 12:36:01 tky6B1MyPAxYCTN2QXXCo6CbdzMoVBhXuAI7prv2DA5zUwNCpxBKs2BgSIZ9677J\\\\r\\\\n2026-04-26 12:36:01 RlxpsqbbVLVJl6BdbJcMRjIWEW0flKwbSb/PdEuEGheu5UuRZ4/MxrzrciW35CxX\\\\r\\\\n2026-04-26 12:36:01 +XYlHBLCOQ6MCCSYtAy9olSBxQ1iMkiP0V20Crzm6JapZWxTC1EEFgMXAJERMXin\\\\r\\\\n2026-04-26 12:36:01 NiY0wK8f8JFABRBxMZeHyBtT6EobR2Q1Ozcjmhb98rK6wUVhorCGV0mbZ4jzVFtH\\\\r\\\\n2026-04-26 12:36:01 YD9UoTAQrI22NGLy+BupkM7OmaQ82SWZlZ8eiSqv5z7aBI8AAWOORHCYW07i9kCy\\\\r\\\\n2026-04-26 12:36:01 OJ4nB3/Ko4OTiUeGYamtlj9/k7alhM5BE2fkEoygYFvL1cfFXMHH+wOEonSMi5qo\\\\r\\\\n2026-04-26 12:36:01 smQrWalr8aPEPGkXWYDjMsBZ4rHQ00z+cE3YiXJXMj2Y8JMY9LJrR1asaEY3IoBx\\\\r\\\\n2026-04-26 12:36:01 ose+UxmIsZr1OD/Jy1euBJo0IQX3gnrvdGl9u8zQeCes+g5xl68gAU8n1J/Z4DoB\\\\r\\\\n2026-04-26 12:36:01 Y0mUMEgOuMu6aAvmQc/lqqP7lwrCKCfVe6SS6w2w3I9GrL2/3GkQkXJSc4rmZb7u\\\\r\\\\n2026-04-26 12:36:01 JoAFyHleVFAnDFXlhLKFl0h3x7TD26LK2LApnLI344MvE6ZG9RFA6w2Q6JtRIEWU\\\\r\\\\n2026-04-26 12:36:01 lheqsm3z9sfcOiHW/GWw0nTkC8btOFZ0uBTThDnHg0BvuXzmBDcle1GpXJdyzLyl\\\\r\\\\n2026-04-26 12:36:01 cW4qlLb15J1zMb/hVBNGagquATVVclvcVKYGYkNsxGpWBC8/8iJTEUKEMwqti7PR\\\\r\\\\n2026-04-26 12:36:01 yh+r058rdhlVML+0F5aDJwjslkCppGpJF5nGQn4pwBzViz752YFUgRRz2jrhFYHE\\\\r\\\\n2026-04-26 12:36:01 KaVCtcczpnZhtqNMY49aRMaTphHu4YpgglMjbDuZ5wiK27Fq5RM+lF6sIG6SGycb\\\\r\\\\n2026-04-26 12:36:01 4whptwXeepJbATEQ55FWWckLVJ5lVWuZ0pCOMguparXRwXECzGnIHLxehCexiZqA\\\\r\\\\n2026-04-26 12:36:01 QLJZNAFOyB3IhHZo5TrJY5sNIMXU94yraZLmQQ3cRMntNiW8kp6Pqj3I40bqlL3F\\\\r\\\\n2026-04-26 12:36:01 ahwNl8qwsjl44hMmWMfQk1c5OpCtkGJcIpIF08ILxDknAyBTQ35BJXMJ9XtI0nt2\\\\r\\\\n2026-04-26 12:36:01 OiGGA6YUqbb68bmXbEhzKQhulHs8GWh/sgXiN3NoI5ns6nU0a3e6Oz2BkXY708iM\\\\r\\\\n2026-04-26 12:36:01 oxrQxsZ4uoM/pjlHG5xeOM62B3tpeghU5iFfOgr+hH9mGcOx4cSoNjn3a5gvMJqc\\\\r\\\\n2026-04-26 12:36:01 Ycc60cOGalwlpLruUy4rdDwhInvsGAmaapDq8IxRpS/AIpij4Y/SmMl9uisvqBr9\\\\r\\\\n2026-04-26 12:36:01 ypg1olTOJ8rk08AXY0Kl2D9lS5GK11g2VWtCgKiMdS/RvAXJnJGkdStVTGYiCnHJ\\\\r\\\\n2026-04-26 12:36:01 OjgyHTrR2a+N2ZiYTldYtmF6H9pm/lfv6FNtw2cNQzqGoSSsrAHEugO0d94keir2\\\\r\\\\n2026-04-26 12:36:01 62w9ymkZWDurfZDVT8OIVWXhgKlR44rEMqSAR+iv6ap61WM2ZMFejOGy4XrDjLrH\\\\r\\\\n2026-04-26 12:36:01 qwI=\\\\r\\\\n2026-04-26 12:36:01 -----END PRIVATE KEY-----\",\n                \"value_start\": 157,\n                \"value_end\": 6245,\n                \"entropy\": 5.8771\n            }\n        ]\n    },\n    {\n        \"rule\": \"PEM Private Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"2026-04-26 12:36:01 -----BEGIN PRIVATE KEY-----\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/pem_key.p.log.json\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.log.json|STRUCT|STRING:ML-KEM-1024.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"-----BEGIN PRIVATE KEY-----\",\n                \"value_start\": 20,\n                \"value_end\": 47,\n                \"entropy\": 3.20029\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 MIIMvgIBADALBglghkgBZQMEBAMEggyqMIIMpgRATqJGETTwhb2gxXF41z3G5ztP\",\n                \"line_num\": 3,\n                \"path\": \"./tests/samples/pem_key.p.log.json\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.log.json|STRUCT|STRING:ML-KEM-1024.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"MIIMvgIBADALBglghkgBZQMEBAMEggyqMIIMpgRATqJGETTwhb2gxXF41z3G5ztP\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 4.67767\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 I+dcZ5zCOnpcALAIw+OAqVHjisQypIBH6K/pqnrVYzZkwV6M4bLhesOMuserAgSC\",\n                \"line_num\": 4,\n                \"path\": \"./tests/samples/pem_key.p.log.json\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.log.json|STRUCT|STRING:ML-KEM-1024.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"I+dcZ5zCOnpcALAIw+OAqVHjisQypIBH6K/pqnrVYzZkwV6M4bLhesOMuserAgSC\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.06602\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 DGAygxLkWHaG9AEmQJsg1MeFxsNyehNphDUdaKHxVmXPYUNVm3J4c5+xBZigd8pa\",\n                \"line_num\": 5,\n                \"path\": \"./tests/samples/pem_key.p.log.json\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.log.json|STRUCT|STRING:ML-KEM-1024.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"DGAygxLkWHaG9AEmQJsg1MeFxsNyehNphDUdaKHxVmXPYUNVm3J4c5+xBZigd8pa\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.17157\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 LEIX4H6JKVWAwKs5UkCLw3uB434w+6mWMJlUjDwWZSGgEiRjS21nx6eKyLqlLE16\",\n                \"line_num\": 6,\n                \"path\": \"./tests/samples/pem_key.p.log.json\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.log.json|STRUCT|STRING:ML-KEM-1024.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"LEIX4H6JKVWAwKs5UkCLw3uB434w+6mWMJlUjDwWZSGgEiRjS21nx6eKyLqlLE16\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.10907\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 XAZ5Rg2oJAL5CVj8uAe7pUdweySS4EBgdMPJ9o0cEZDP5aD9yTSIeXzi1bgGJQ/s\",\n                \"line_num\": 7,\n                \"path\": \"./tests/samples/pem_key.p.log.json\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.log.json|STRUCT|STRING:ML-KEM-1024.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"XAZ5Rg2oJAL5CVj8uAe7pUdweySS4EBgdMPJ9o0cEZDP5aD9yTSIeXzi1bgGJQ/s\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.27298\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 aJ5DxXUVXDWTZgA05CHuojS/R1WlO2o30rxV4azc+Yr7IcR89i4wNGHUNQFmhhBF\",\n                \"line_num\": 8,\n                \"path\": \"./tests/samples/pem_key.p.log.json\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.log.json|STRUCT|STRING:ML-KEM-1024.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"aJ5DxXUVXDWTZgA05CHuojS/R1WlO2o30rxV4azc+Yr7IcR89i4wNGHUNQFmhhBF\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.4375\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 OYyA41Ls/ESNS1UGWwfCuZ89CBzjjBQZhxp4ELW+ZLa+1w3iUhJZEYoc9GQm7E+v\",\n                \"line_num\": 9,\n                \"path\": \"./tests/samples/pem_key.p.log.json\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.log.json|STRUCT|STRING:ML-KEM-1024.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"OYyA41Ls/ESNS1UGWwfCuZ89CBzjjBQZhxp4ELW+ZLa+1w3iUhJZEYoc9GQm7E+v\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.12086\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 VIQvl4RxKF8WZAc4uTaisTwcNAhYK5m5gpX5ZHLgBndWRjE32kOvask2BLdgjJig\",\n                \"line_num\": 10,\n                \"path\": \"./tests/samples/pem_key.p.log.json\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.log.json|STRUCT|STRING:ML-KEM-1024.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"VIQvl4RxKF8WZAc4uTaisTwcNAhYK5m5gpX5ZHLgBndWRjE32kOvask2BLdgjJig\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.2382\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 Fs9mKlRU+ZqIQxukBDO6xkHjSr1JxIP2HJNyiiZxgCUKSi/I5h4UObW1yjNv0Ymw\",\n                \"line_num\": 11,\n                \"path\": \"./tests/samples/pem_key.p.log.json\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.log.json|STRUCT|STRING:ML-KEM-1024.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"Fs9mKlRU+ZqIQxukBDO6xkHjSr1JxIP2HJNyiiZxgCUKSi/I5h4UObW1yjNv0Ymw\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.27711\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 FE/csKq4gcWvPD/QuFeW4XFQcZaoqkQVILnjVG10NqOTlDJaywMhcgjQq2QQlVXH\",\n                \"line_num\": 12,\n                \"path\": \"./tests/samples/pem_key.p.log.json\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.log.json|STRUCT|STRING:ML-KEM-1024.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"FE/csKq4gcWvPD/QuFeW4XFQcZaoqkQVILnjVG10NqOTlDJaywMhcgjQq2QQlVXH\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.07782\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 zMBgJI3W9qLDYFY69rN/xnL68wg5B1xv62ChNo4eTLlppGmNlLfX6YleXLYK2pTj\",\n                \"line_num\": 13,\n                \"path\": \"./tests/samples/pem_key.p.log.json\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.log.json|STRUCT|STRING:ML-KEM-1024.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"zMBgJI3W9qLDYFY69rN/xnL68wg5B1xv62ChNo4eTLlppGmNlLfX6YleXLYK2pTj\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.09571\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 cmIbK3nvQ7BGLAXVMMYFOkkht0mHVC4sS3mwdUtS2l5KECOq1R+g4mrrAUyGpI1B\",\n                \"line_num\": 14,\n                \"path\": \"./tests/samples/pem_key.p.log.json\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.log.json|STRUCT|STRING:ML-KEM-1024.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"cmIbK3nvQ7BGLAXVMMYFOkkht0mHVC4sS3mwdUtS2l5KECOq1R+g4mrrAUyGpI1B\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.34375\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 68+Eg5DkM86BUYI9N86V4cUtNGDbsmaJgCurGJHHupeJQhWj+Q2CNlXmSaP+mCau\",\n                \"line_num\": 15,\n                \"path\": \"./tests/samples/pem_key.p.log.json\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.log.json|STRUCT|STRING:ML-KEM-1024.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"68+Eg5DkM86BUYI9N86V4cUtNGDbsmaJgCurGJHHupeJQhWj+Q2CNlXmSaP+mCau\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.14384\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 GUEMVn/PVmqhSJIj+yEsojeZykecYXo7LMxiJkuX8HZ9R3ynOHdedcfV4DdAJc1E\",\n                \"line_num\": 16,\n                \"path\": \"./tests/samples/pem_key.p.log.json\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.log.json|STRUCT|STRING:ML-KEM-1024.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"GUEMVn/PVmqhSJIj+yEsojeZykecYXo7LMxiJkuX8HZ9R3ynOHdedcfV4DdAJc1E\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.22993\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 t51bOzjJlLIlUEQicJcXMCrBJ8pL1bHJGkT7t7gxnC72Qz7D2Czh20oJIgFTs1yJ\",\n                \"line_num\": 17,\n                \"path\": \"./tests/samples/pem_key.p.log.json\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.log.json|STRUCT|STRING:ML-KEM-1024.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"t51bOzjJlLIlUEQicJcXMCrBJ8pL1bHJGkT7t7gxnC72Qz7D2Czh20oJIgFTs1yJ\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.05423\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 kQSTxDFcMsakyRRZAAcDyGMGUnrMxIVSyrQDhIQrORaeiTDHcaS6pDuz5kkJsT+Y\",\n                \"line_num\": 18,\n                \"path\": \"./tests/samples/pem_key.p.log.json\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.log.json|STRUCT|STRING:ML-KEM-1024.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"kQSTxDFcMsakyRRZAAcDyGMGUnrMxIVSyrQDhIQrORaeiTDHcaS6pDuz5kkJsT+Y\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 4.86869\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 ki/ZkkAldBpX4sDD1zvC6LyWU1IlZcx9F5V7I0P/BrpSwrvjNQEIeW4tNR1+fEYW\",\n                \"line_num\": 19,\n                \"path\": \"./tests/samples/pem_key.p.log.json\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.log.json|STRUCT|STRING:ML-KEM-1024.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"ki/ZkkAldBpX4sDD1zvC6LyWU1IlZcx9F5V7I0P/BrpSwrvjNQEIeW4tNR1+fEYW\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.35907\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 fE7gewlJZbTCVqTcQ7wQ+kA7JEQkU6I8YaIXuiwiG55EuSsO2MzpApgFtmAcWlT4\",\n                \"line_num\": 20,\n                \"path\": \"./tests/samples/pem_key.p.log.json\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.log.json|STRUCT|STRING:ML-KEM-1024.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"fE7gewlJZbTCVqTcQ7wQ+kA7JEQkU6I8YaIXuiwiG55EuSsO2MzpApgFtmAcWlT4\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.24173\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 ybWzhp7kqwRFolOi6hb9y8y4aDRkRltYcTPswcjh40k1spoCRlwCcgahgTnuWJ8O\",\n                \"line_num\": 21,\n                \"path\": \"./tests/samples/pem_key.p.log.json\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.log.json|STRUCT|STRING:ML-KEM-1024.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"ybWzhp7kqwRFolOi6hb9y8y4aDRkRltYcTPswcjh40k1spoCRlwCcgahgTnuWJ8O\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.00352\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 qq4uxkY8xkFvJ4VqZjcl7AbhdJg3R5gqlbhPZmEXBn3teYbihzMCBRI3RTI5/Hy2\",\n                \"line_num\": 22,\n                \"path\": \"./tests/samples/pem_key.p.log.json\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.log.json|STRUCT|STRING:ML-KEM-1024.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"qq4uxkY8xkFvJ4VqZjcl7AbhdJg3R5gqlbhPZmEXBn3teYbihzMCBRI3RTI5/Hy2\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.23407\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 Yh4VhW+MqaukgRTPk50aKFjEs0vj6D1RpLRUmq/EI2GKZbtZc4MDR8kZWXsP5yqO\",\n                \"line_num\": 23,\n                \"path\": \"./tests/samples/pem_key.p.log.json\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.log.json|STRUCT|STRING:ML-KEM-1024.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"Yh4VhW+MqaukgRTPk50aKFjEs0vj6D1RpLRUmq/EI2GKZbtZc4MDR8kZWXsP5yqO\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.24586\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 o2OcG66cSXR5KrzmNRNdci1GNafm5qHiqj5NsnDax1B8t1hkpV+VMkZKGxGXt2YP\",\n                \"line_num\": 24,\n                \"path\": \"./tests/samples/pem_key.p.log.json\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.log.json|STRUCT|STRING:ML-KEM-1024.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"o2OcG66cSXR5KrzmNRNdci1GNafm5qHiqj5NsnDax1B8t1hkpV+VMkZKGxGXt2YP\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.12086\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 gx1/q1EgS5w2ciAuC8u5gitd1ie43B5lsysO0MY31Qy1eGO1Sj0g4pxM2szbpwso\",\n                \"line_num\": 25,\n                \"path\": \"./tests/samples/pem_key.p.log.json\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.log.json|STRUCT|STRING:ML-KEM-1024.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"gx1/q1EgS5w2ciAuC8u5gitd1ie43B5lsysO0MY31Qy1eGO1Sj0g4pxM2szbpwso\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 4.95282\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 0RZL8aKk645hElitcXDx8wUVc0Zm/Av4FsSiZkhFeKaHSAXJtTtlAkLMMTZaNwBA\",\n                \"line_num\": 26,\n                \"path\": \"./tests/samples/pem_key.p.log.json\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.log.json|STRUCT|STRING:ML-KEM-1024.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"0RZL8aKk645hElitcXDx8wUVc0Zm/Av4FsSiZkhFeKaHSAXJtTtlAkLMMTZaNwBA\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.05836\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 hqmHqqtalptZmwGz2F0dmXF9cy+gOxzaBhQbVcH8SDdchpgTl14B93qh2iY2RjxY\",\n                \"line_num\": 27,\n                \"path\": \"./tests/samples/pem_key.p.log.json\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.log.json|STRUCT|STRING:ML-KEM-1024.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"hqmHqqtalptZmwGz2F0dmXF9cy+gOxzaBhQbVcH8SDdchpgTl14B93qh2iY2RjxY\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.12086\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 Eb3kpsPG0cdLTAAahEALuMu26YFpglJXAkwSwSLPYsGRPHjJFiXfWBR05x5y5wdB\",\n                \"line_num\": 28,\n                \"path\": \"./tests/samples/pem_key.p.log.json\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.log.json|STRUCT|STRING:ML-KEM-1024.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"Eb3kpsPG0cdLTAAahEALuMu26YFpglJXAkwSwSLPYsGRPHjJFiXfWBR05x5y5wdB\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.10907\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 1jhhqlV6ZHO/osEJKb6tSHH0mYf0uMNu2speu2DgsjCjHHJwtSJMayfO1WZcSF+G\",\n                \"line_num\": 29,\n                \"path\": \"./tests/samples/pem_key.p.log.json\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.log.json|STRUCT|STRING:ML-KEM-1024.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"1jhhqlV6ZHO/osEJKb6tSHH0mYf0uMNu2speu2DgsjCjHHJwtSJMayfO1WZcSF+G\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.13462\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 wFXOY77MgB3VwMRcCoTMNwoBswcJeZRyNL+cHLZZcK0kpEJbBY60W5pHUceKrDDJ\",\n                \"line_num\": 30,\n                \"path\": \"./tests/samples/pem_key.p.log.json\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.log.json|STRUCT|STRING:ML-KEM-1024.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"wFXOY77MgB3VwMRcCoTMNwoBswcJeZRyNL+cHLZZcK0kpEJbBY60W5pHUceKrDDJ\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.02142\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 sr63qzPaUVNj0Vu2zFG8sEEMES55/JIKCoj6O66j821/qJ97RLPP5pKUpp2gCS7F\",\n                \"line_num\": 31,\n                \"path\": \"./tests/samples/pem_key.p.log.json\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.log.json|STRUCT|STRING:ML-KEM-1024.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"sr63qzPaUVNj0Vu2zFG8sEEMES55/JIKCoj6O66j821/qJ97RLPP5pKUpp2gCS7F\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.02298\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 GyCzMBiTsF4zNCr+FA1rQUCZqa50S3Gu90KANsv7VX1krJXXaSXQFaiDAyB+zL0f\",\n                \"line_num\": 32,\n                \"path\": \"./tests/samples/pem_key.p.log.json\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.log.json|STRUCT|STRING:ML-KEM-1024.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"GyCzMBiTsF4zNCr+FA1rQUCZqa50S3Gu90KANsv7VX1krJXXaSXQFaiDAyB+zL0f\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.04243\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 SQR7WrimYwMQaGX8c75+8L7NK2zdxMQH0chtdqv79WmoOn+fWGupCq7NlA32s7rb\",\n                \"line_num\": 33,\n                \"path\": \"./tests/samples/pem_key.p.log.json\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.log.json|STRUCT|STRING:ML-KEM-1024.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"SQR7WrimYwMQaGX8c75+8L7NK2zdxMQH0chtdqv79WmoOn+fWGupCq7NlA32s7rb\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.26532\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 Cq4auSoIF5ovQqw2F2wgi2nBpHwfF5ka6qSaQA4wiACrxkC255lCaAzy9jky4Ldt\",\n                \"line_num\": 34,\n                \"path\": \"./tests/samples/pem_key.p.log.json\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.log.json|STRUCT|STRING:ML-KEM-1024.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"Cq4auSoIF5ovQqw2F2wgi2nBpHwfF5ka6qSaQA4wiACrxkC255lCaAzy9jky4Ldt\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 4.84727\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 1iSmA7q2JSu8HEN8NG9AQqP+l44HRXFzJsF3cXTaOzKZKYlhlx5btb8F+M9aCgXi\",\n                \"line_num\": 35,\n                \"path\": \"./tests/samples/pem_key.p.log.json\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.log.json|STRUCT|STRING:ML-KEM-1024.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"1iSmA7q2JSu8HEN8NG9AQqP+l44HRXFzJsF3cXTaOzKZKYlhlx5btb8F+M9aCgXi\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.26532\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 pICqo0FqkQ03ULwswnF8yXsjpYkx63lc0pLStKn7dxI+cSOYYCu0cbxcBoZyqmH1\",\n                \"line_num\": 36,\n                \"path\": \"./tests/samples/pem_key.p.log.json\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.log.json|STRUCT|STRING:ML-KEM-1024.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"pICqo0FqkQ03ULwswnF8yXsjpYkx63lc0pLStKn7dxI+cSOYYCu0cbxcBoZyqmH1\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.07782\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 Kqmr2XMicIWCxQoiW4YT5UYfNsfwmRUWkJwmCahUFSzo5swUpBbeCo6bsEdkyxMM\",\n                \"line_num\": 37,\n                \"path\": \"./tests/samples/pem_key.p.log.json\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.log.json|STRUCT|STRING:ML-KEM-1024.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"Kqmr2XMicIWCxQoiW4YT5UYfNsfwmRUWkJwmCahUFSzo5swUpBbeCo6bsEdkyxMM\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.13618\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 I5bNV1cjSII5liHOyxnvZ77+giZAKglsiI3ZmmVh+l8fvDBDaLVmmMRfcwRHOxu1\",\n                \"line_num\": 38,\n                \"path\": \"./tests/samples/pem_key.p.log.json\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.log.json|STRUCT|STRING:ML-KEM-1024.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"I5bNV1cjSII5liHOyxnvZ77+giZAKglsiI3ZmmVh+l8fvDBDaLVmmMRfcwRHOxu1\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.04657\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 UMRr047T8ggKgEnyhQLK/FJh+Yp8ubo6wsTUwyyVcRULUVWeJbka6EDkMbPucHHb\",\n                \"line_num\": 39,\n                \"path\": \"./tests/samples/pem_key.p.log.json\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.log.json|STRUCT|STRING:ML-KEM-1024.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"UMRr047T8ggKgEnyhQLK/FJh+Yp8ubo6wsTUwyyVcRULUVWeJbka6EDkMbPucHHb\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.10141\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 vDdO61eP2yB+uQlwbBr1UquiQD1XrBHXFVwDw6rJoJxTkGQggaofpsUPa3F561LV\",\n                \"line_num\": 40,\n                \"path\": \"./tests/samples/pem_key.p.log.json\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.log.json|STRUCT|STRING:ML-KEM-1024.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"vDdO61eP2yB+uQlwbBr1UquiQD1XrBHXFVwDw6rJoJxTkGQggaofpsUPa3F561LV\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.11673\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 aQAFxU9BAgmdYb4uJxtlt46DCbx2tFW2OnoqQrpFW7nWlwmLJ2dUhIRkySTyhJpq\",\n                \"line_num\": 41,\n                \"path\": \"./tests/samples/pem_key.p.log.json\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.log.json|STRUCT|STRING:ML-KEM-1024.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"aQAFxU9BAgmdYb4uJxtlt46DCbx2tFW2OnoqQrpFW7nWlwmLJ2dUhIRkySTyhJpq\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.14798\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 K0hnrLThhA1tu8q3dTXOCDs+8csKnI9vVSqAFm6ax3lI6ilBFVIgyZi7dBI1TCKp\",\n                \"line_num\": 42,\n                \"path\": \"./tests/samples/pem_key.p.log.json\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.log.json|STRUCT|STRING:ML-KEM-1024.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"K0hnrLThhA1tu8q3dTXOCDs+8csKnI9vVSqAFm6ax3lI6ilBFVIgyZi7dBI1TCKp\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.18336\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 rDbvCzcWY6dxEUzHqTELG5sd955LQgoei2/86QDquRIgB2PGqblBYylUOA9tBTAv\",\n                \"line_num\": 43,\n                \"path\": \"./tests/samples/pem_key.p.log.json\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.log.json|STRUCT|STRING:ML-KEM-1024.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"rDbvCzcWY6dxEUzHqTELG5sd955LQgoei2/86QDquRIgB2PGqblBYylUOA9tBTAv\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.21461\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 wSVKoZuonI4ijDZz5yec2C9DiCZva6MbxASOLBl05qfeeDbzkhOWsas2ZpMRmaS8\",\n                \"line_num\": 44,\n                \"path\": \"./tests/samples/pem_key.p.log.json\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.log.json|STRUCT|STRING:ML-KEM-1024.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"wSVKoZuonI4ijDZz5yec2C9DiCZva6MbxASOLBl05qfeeDbzkhOWsas2ZpMRmaS8\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.26532\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 dI0Tmp732GkddM2R879ULHp0x4CI4Vh42mN/m22OInwW4mlPaUAy4MQUOWvuWb6/\",\n                \"line_num\": 45,\n                \"path\": \"./tests/samples/pem_key.p.log.json\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.log.json|STRUCT|STRING:ML-KEM-1024.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"dI0Tmp732GkddM2R879ULHp0x4CI4Vh42mN/m22OInwW4mlPaUAy4MQUOWvuWb6/\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.02752\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 o2/HcXJCoj9JsULCKXchFrawJHTgCTpi9BicMpmnPHpnpxlYRw77p4qWcmGqs2Yi\",\n                \"line_num\": 46,\n                \"path\": \"./tests/samples/pem_key.p.log.json\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.log.json|STRUCT|STRING:ML-KEM-1024.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"o2/HcXJCoj9JsULCKXchFrawJHTgCTpi9BicMpmnPHpnpxlYRw77p4qWcmGqs2Yi\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.02142\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 gQLAAQhZxzpT8MPgsomgC2nySQthEHsvF4XVbL60ImBv9Qig2hd7Jh4cI0D/+TdC\",\n                \"line_num\": 47,\n                \"path\": \"./tests/samples/pem_key.p.log.json\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.log.json|STRUCT|STRING:ML-KEM-1024.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"gQLAAQhZxzpT8MPgsomgC2nySQthEHsvF4XVbL60ImBv9Qig2hd7Jh4cI0D/+TdC\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.25\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 tky6B1MyPAxYCTN2QXXCo6CbdzMoVBhXuAI7prv2DA5zUwNCpxBKs2BgSIZ9677J\",\n                \"line_num\": 48,\n                \"path\": \"./tests/samples/pem_key.p.log.json\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.log.json|STRUCT|STRING:ML-KEM-1024.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"tky6B1MyPAxYCTN2QXXCo6CbdzMoVBhXuAI7prv2DA5zUwNCpxBKs2BgSIZ9677J\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.12852\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 RlxpsqbbVLVJl6BdbJcMRjIWEW0flKwbSb/PdEuEGheu5UuRZ4/MxrzrciW35CxX\",\n                \"line_num\": 49,\n                \"path\": \"./tests/samples/pem_key.p.log.json\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.log.json|STRUCT|STRING:ML-KEM-1024.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"RlxpsqbbVLVJl6BdbJcMRjIWEW0flKwbSb/PdEuEGheu5UuRZ4/MxrzrciW35CxX\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.12283\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 +XYlHBLCOQ6MCCSYtAy9olSBxQ1iMkiP0V20Crzm6JapZWxTC1EEFgMXAJERMXin\",\n                \"line_num\": 50,\n                \"path\": \"./tests/samples/pem_key.p.log.json\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.log.json|STRUCT|STRING:ML-KEM-1024.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"+XYlHBLCOQ6MCCSYtAy9olSBxQ1iMkiP0V20Crzm6JapZWxTC1EEFgMXAJERMXin\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.12696\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 NiY0wK8f8JFABRBxMZeHyBtT6EobR2Q1Ozcjmhb98rK6wUVhorCGV0mbZ4jzVFtH\",\n                \"line_num\": 51,\n                \"path\": \"./tests/samples/pem_key.p.log.json\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.log.json|STRUCT|STRING:ML-KEM-1024.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"NiY0wK8f8JFABRBxMZeHyBtT6EobR2Q1Ozcjmhb98rK6wUVhorCGV0mbZ4jzVFtH\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.23407\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 YD9UoTAQrI22NGLy+BupkM7OmaQ82SWZlZ8eiSqv5z7aBI8AAWOORHCYW07i9kCy\",\n                \"line_num\": 52,\n                \"path\": \"./tests/samples/pem_key.p.log.json\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.log.json|STRUCT|STRING:ML-KEM-1024.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"YD9UoTAQrI22NGLy+BupkM7OmaQ82SWZlZ8eiSqv5z7aBI8AAWOORHCYW07i9kCy\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.17923\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 OJ4nB3/Ko4OTiUeGYamtlj9/k7alhM5BE2fkEoygYFvL1cfFXMHH+wOEonSMi5qo\",\n                \"line_num\": 53,\n                \"path\": \"./tests/samples/pem_key.p.log.json\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.log.json|STRUCT|STRING:ML-KEM-1024.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"OJ4nB3/Ko4OTiUeGYamtlj9/k7alhM5BE2fkEoygYFvL1cfFXMHH+wOEonSMi5qo\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.24586\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 smQrWalr8aPEPGkXWYDjMsBZ4rHQ00z+cE3YiXJXMj2Y8JMY9LJrR1asaEY3IoBx\",\n                \"line_num\": 54,\n                \"path\": \"./tests/samples/pem_key.p.log.json\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.log.json|STRUCT|STRING:ML-KEM-1024.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"smQrWalr8aPEPGkXWYDjMsBZ4rHQ00z+cE3YiXJXMj2Y8JMY9LJrR1asaEY3IoBx\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 4.94712\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 ose+UxmIsZr1OD/Jy1euBJo0IQX3gnrvdGl9u8zQeCes+g5xl68gAU8n1J/Z4DoB\",\n                \"line_num\": 55,\n                \"path\": \"./tests/samples/pem_key.p.log.json\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.log.json|STRUCT|STRING:ML-KEM-1024.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"ose+UxmIsZr1OD/Jy1euBJo0IQX3gnrvdGl9u8zQeCes+g5xl68gAU8n1J/Z4DoB\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.02298\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 Y0mUMEgOuMu6aAvmQc/lqqP7lwrCKCfVe6SS6w2w3I9GrL2/3GkQkXJSc4rmZb7u\",\n                \"line_num\": 56,\n                \"path\": \"./tests/samples/pem_key.p.log.json\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.log.json|STRUCT|STRING:ML-KEM-1024.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"Y0mUMEgOuMu6aAvmQc/lqqP7lwrCKCfVe6SS6w2w3I9GrL2/3GkQkXJSc4rmZb7u\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.17923\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 JoAFyHleVFAnDFXlhLKFl0h3x7TD26LK2LApnLI344MvE6ZG9RFA6w2Q6JtRIEWU\",\n                \"line_num\": 57,\n                \"path\": \"./tests/samples/pem_key.p.log.json\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.log.json|STRUCT|STRING:ML-KEM-1024.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"JoAFyHleVFAnDFXlhLKFl0h3x7TD26LK2LApnLI344MvE6ZG9RFA6w2Q6JtRIEWU\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 4.98251\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 lheqsm3z9sfcOiHW/GWw0nTkC8btOFZ0uBTThDnHg0BvuXzmBDcle1GpXJdyzLyl\",\n                \"line_num\": 58,\n                \"path\": \"./tests/samples/pem_key.p.log.json\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.log.json|STRUCT|STRING:ML-KEM-1024.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"lheqsm3z9sfcOiHW/GWw0nTkC8btOFZ0uBTThDnHg0BvuXzmBDcle1GpXJdyzLyl\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.19102\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 cW4qlLb15J1zMb/hVBNGagquATVVclvcVKYGYkNsxGpWBC8/8iJTEUKEMwqti7PR\",\n                \"line_num\": 59,\n                \"path\": \"./tests/samples/pem_key.p.log.json\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.log.json|STRUCT|STRING:ML-KEM-1024.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"cW4qlLb15J1zMb/hVBNGagquATVVclvcVKYGYkNsxGpWBC8/8iJTEUKEMwqti7PR\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.18336\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 yh+r058rdhlVML+0F5aDJwjslkCppGpJF5nGQn4pwBzViz752YFUgRRz2jrhFYHE\",\n                \"line_num\": 60,\n                \"path\": \"./tests/samples/pem_key.p.log.json\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.log.json|STRUCT|STRING:ML-KEM-1024.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"yh+r058rdhlVML+0F5aDJwjslkCppGpJF5nGQn4pwBzViz752YFUgRRz2jrhFYHE\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.02711\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 KaVCtcczpnZhtqNMY49aRMaTphHu4YpgglMjbDuZ5wiK27Fq5RM+lF6sIG6SGycb\",\n                \"line_num\": 61,\n                \"path\": \"./tests/samples/pem_key.p.log.json\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.log.json|STRUCT|STRING:ML-KEM-1024.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"KaVCtcczpnZhtqNMY49aRMaTphHu4YpgglMjbDuZ5wiK27Fq5RM+lF6sIG6SGycb\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.15211\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 4whptwXeepJbATEQ55FWWckLVJ5lVWuZ0pCOMguparXRwXECzGnIHLxehCexiZqA\",\n                \"line_num\": 62,\n                \"path\": \"./tests/samples/pem_key.p.log.json\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.log.json|STRUCT|STRING:ML-KEM-1024.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"4whptwXeepJbATEQ55FWWckLVJ5lVWuZ0pCOMguparXRwXECzGnIHLxehCexiZqA\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.09727\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 QLJZNAFOyB3IhHZo5TrJY5sNIMXU94yraZLmQQ3cRMntNiW8kp6Pqj3I40bqlL3F\",\n                \"line_num\": 63,\n                \"path\": \"./tests/samples/pem_key.p.log.json\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.log.json|STRUCT|STRING:ML-KEM-1024.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"QLJZNAFOyB3IhHZo5TrJY5sNIMXU94yraZLmQQ3cRMntNiW8kp6Pqj3I40bqlL3F\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.25352\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 ahwNl8qwsjl44hMmWMfQk1c5OpCtkGJcIpIF08ILxDknAyBTQ35BJXMJ9XtI0nt2\",\n                \"line_num\": 64,\n                \"path\": \"./tests/samples/pem_key.p.log.json\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.log.json|STRUCT|STRING:ML-KEM-1024.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"ahwNl8qwsjl44hMmWMfQk1c5OpCtkGJcIpIF08ILxDknAyBTQ35BJXMJ9XtI0nt2\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.17157\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 OiGGA6YUqbb68bmXbEhzKQhulHs8GWh/sgXiN3NoI5ns6nU0a3e6Oz2BkXY708iM\",\n                \"line_num\": 65,\n                \"path\": \"./tests/samples/pem_key.p.log.json\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.log.json|STRUCT|STRING:ML-KEM-1024.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"OiGGA6YUqbb68bmXbEhzKQhulHs8GWh/sgXiN3NoI5ns6nU0a3e6Oz2BkXY708iM\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.05423\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 oxrQxsZ4uoM/pjlHG5xeOM62B3tpeghU5iFfOgr+hH9mGcOx4cSoNjn3a5gvMJqc\",\n                \"line_num\": 66,\n                \"path\": \"./tests/samples/pem_key.p.log.json\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.log.json|STRUCT|STRING:ML-KEM-1024.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"oxrQxsZ4uoM/pjlHG5xeOM62B3tpeghU5iFfOgr+hH9mGcOx4cSoNjn3a5gvMJqc\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.14798\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 Ycc60cOGalwlpLruUy4rdDwhInvsGAmaapDq8IxRpS/AIpij4Y/SmMl9uisvqBr9\",\n                \"line_num\": 67,\n                \"path\": \"./tests/samples/pem_key.p.log.json\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.log.json|STRUCT|STRING:ML-KEM-1024.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"Ycc60cOGalwlpLruUy4rdDwhInvsGAmaapDq8IxRpS/AIpij4Y/SmMl9uisvqBr9\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.03477\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 ypg1olTOJ8rk08AXY0Kl2D9lS5GK11g2VWtCgKiMdS/RvAXJnJGkdStVTGYiCnHJ\",\n                \"line_num\": 68,\n                \"path\": \"./tests/samples/pem_key.p.log.json\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.log.json|STRUCT|STRING:ML-KEM-1024.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"ypg1olTOJ8rk08AXY0Kl2D9lS5GK11g2VWtCgKiMdS/RvAXJnJGkdStVTGYiCnHJ\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 4.99173\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 OjgyHTrR2a+N2ZiYTldYtmF6H9pm/lfv6FNtw2cNQzqGoSSsrAHEugO0d94keir2\",\n                \"line_num\": 69,\n                \"path\": \"./tests/samples/pem_key.p.log.json\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.log.json|STRUCT|STRING:ML-KEM-1024.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"OjgyHTrR2a+N2ZiYTldYtmF6H9pm/lfv6FNtw2cNQzqGoSSsrAHEugO0d94keir2\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.24586\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 62w9ymkZWDurfZDVT8OIVWXhgKlR44rEMqSAR+iv6ap61WM2ZMFejOGy4XrDjLrH\",\n                \"line_num\": 70,\n                \"path\": \"./tests/samples/pem_key.p.log.json\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.log.json|STRUCT|STRING:ML-KEM-1024.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"62w9ymkZWDurfZDVT8OIVWXhgKlR44rEMqSAR+iv6ap61WM2ZMFejOGy4XrDjLrH\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.21048\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 qwI=\",\n                \"line_num\": 71,\n                \"path\": \"./tests/samples/pem_key.p.log.json\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.log.json|STRUCT|STRING:ML-KEM-1024.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"qwI=\",\n                \"value_start\": 20,\n                \"value_end\": 24,\n                \"entropy\": 2.0\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 -----END PRIVATE KEY-----\",\n                \"line_num\": 72,\n                \"path\": \"./tests/samples/pem_key.p.log.json\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.log.json|STRUCT|STRING:ML-KEM-1024.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"-----END PRIVATE KEY-----\",\n                \"value_start\": 20,\n                \"value_end\": 45,\n                \"entropy\": 3.04489\n            }\n        ]\n    },\n    {\n        \"rule\": \"PEM Private Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"-----BEGIN PRIVATE KEY-----\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/pem_key.p.rsa\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.rsa|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"-----BEGIN PRIVATE KEY-----\",\n                \"value_start\": 0,\n                \"value_end\": 27,\n                \"entropy\": 3.20029\n            },\n            {\n                \"line\": \"MIIBVQIBADANBgkqhkiG9w0BAQEFAASCAT8wggE7AgEAAkEA12FhURMjPmqRNZZl\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/pem_key.p.rsa\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.rsa|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"MIIBVQIBADANBgkqhkiG9w0BAQEFAASCAT8wggE7AgEAAkEA12FhURMjPmqRNZZl\",\n                \"value_start\": 0,\n                \"value_end\": 64,\n                \"entropy\": 4.67611\n            },\n            {\n                \"line\": \"teTEEoNqzPBXPBgBSqihi1qWbk3NthnycOSinUz7prfasLMlEDqcS68FFh1t5rrX\",\n                \"line_num\": 3,\n                \"path\": \"./tests/samples/pem_key.p.rsa\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.rsa|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"teTEEoNqzPBXPBgBSqihi1qWbk3NthnycOSinUz7prfasLMlEDqcS68FFh1t5rrX\",\n                \"value_start\": 0,\n                \"value_end\": 64,\n                \"entropy\": 5.10493\n            },\n            {\n                \"line\": \"WknouwIDAQABAkAySCW0C8e6lp536Diukk3EFLImTiXPfbsvdtbf9bIQ5eNrfOhV\",\n                \"line_num\": 4,\n                \"path\": \"./tests/samples/pem_key.p.rsa\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.rsa|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"WknouwIDAQABAkAySCW0C8e6lp536Diukk3EFLImTiXPfbsvdtbf9bIQ5eNrfOhV\",\n                \"value_start\": 0,\n                \"value_end\": 64,\n                \"entropy\": 5.21461\n            },\n            {\n                \"line\": \"z4MuDWaaLPkL49si36Li4nLu8op3i9QVIlThAiEA74ZnMHks7VhxqpneOxWC896e\",\n                \"line_num\": 5,\n                \"path\": \"./tests/samples/pem_key.p.rsa\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.rsa|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"z4MuDWaaLPkL49si36Li4nLu8op3i9QVIlThAiEA74ZnMHks7VhxqpneOxWC896e\",\n                \"value_start\": 0,\n                \"value_end\": 64,\n                \"entropy\": 4.97641\n            },\n            {\n                \"line\": \"gS3TOtNx8sYYYlfeyh8CIQDmMdWhVAOWhdWMwdSvDVo9Qxk7ZpZJzVH5c+vzSWOF\",\n                \"line_num\": 6,\n                \"path\": \"./tests/samples/pem_key.p.rsa\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.rsa|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"gS3TOtNx8sYYYlfeyh8CIQDmMdWhVAOWhdWMwdSvDVo9Qxk7ZpZJzVH5c+vzSWOF\",\n                \"value_start\": 0,\n                \"value_end\": 64,\n                \"entropy\": 5.17923\n            },\n            {\n                \"line\": \"5QIhAJsOHZSyjNPkskhnLQaAiXJHRcKIILpvEM/BTx2ylmWvAiAkN3z79+LkoMPb\",\n                \"line_num\": 7,\n                \"path\": \"./tests/samples/pem_key.p.rsa\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.rsa|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"5QIhAJsOHZSyjNPkskhnLQaAiXJHRcKIILpvEM/BTx2ylmWvAiAkN3z79+LkoMPb\",\n                \"value_start\": 0,\n                \"value_end\": 64,\n                \"entropy\": 5.25766\n            },\n            {\n                \"line\": \"dHeI3xnuf4sNvHMyw1n9XE6oJUjCPQIhAL7L9UoJKVXkKu+RtislM1+rx9j5qy01\",\n                \"line_num\": 8,\n                \"path\": \"./tests/samples/pem_key.p.rsa\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.rsa|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"dHeI3xnuf4sNvHMyw1n9XE6oJUjCPQIhAL7L9UoJKVXkKu+RtislM1+rx9j5qy01\",\n                \"value_start\": 0,\n                \"value_end\": 64,\n                \"entropy\": 5.35141\n            },\n            {\n                \"line\": \"24n7nBfD3ZXv\",\n                \"line_num\": 9,\n                \"path\": \"./tests/samples/pem_key.p.rsa\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.rsa|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"24n7nBfD3ZXv\",\n                \"value_start\": 0,\n                \"value_end\": 12,\n                \"entropy\": 3.4183\n            },\n            {\n                \"line\": \"-----END PRIVATE KEY-----\",\n                \"line_num\": 10,\n                \"path\": \"./tests/samples/pem_key.p.rsa\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.rsa|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"-----END PRIVATE KEY-----\",\n                \"value_start\": 0,\n                \"value_end\": 25,\n                \"entropy\": 3.04489\n            }\n        ]\n    },\n    {\n        \"rule\": \"PEM Private Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"-----BEGIN RSA PRIVATE KEY-----\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/pem_key.tar\",\n                \"info\": \"FILE:./tests/samples/pem_key.tar|TAR:./.git/pem_key|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"-----BEGIN RSA PRIVATE KEY-----\",\n                \"value_start\": 0,\n                \"value_end\": 31,\n                \"entropy\": 3.38229\n            },\n            {\n                \"line\": \"MIICXAIBAAKBgQCqGKukO1De7zhZj6+H0qtjTkVxwTCpvKe4eCZ0FPqri0cb2JZfXJ/DgYSF6vUp\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/pem_key.tar\",\n                \"info\": \"FILE:./tests/samples/pem_key.tar|TAR:./.git/pem_key|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"MIICXAIBAAKBgQCqGKukO1De7zhZj6+H0qtjTkVxwTCpvKe4eCZ0FPqri0cb2JZfXJ/DgYSF6vUp\",\n                \"value_start\": 0,\n                \"value_end\": 76,\n                \"entropy\": 5.38892\n            },\n            {\n                \"line\": \"wmJG8wVQZKjeGcjDOL5UlsuusFncCzWBQ7RKNUSesmQRMSGkVb1/3j+skZ6UtW+5u09lHNsj6tQ5\",\n                \"line_num\": 3,\n                \"path\": \"./tests/samples/pem_key.tar\",\n                \"info\": \"FILE:./tests/samples/pem_key.tar|TAR:./.git/pem_key|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"wmJG8wVQZKjeGcjDOL5UlsuusFncCzWBQ7RKNUSesmQRMSGkVb1/3j+skZ6UtW+5u09lHNsj6tQ5\",\n                \"value_start\": 0,\n                \"value_end\": 76,\n                \"entropy\": 5.21333\n            },\n            {\n                \"line\": \"1s1SPrCBkedbNf0Tp0GbMJDyR4e9T04ZZwIDAQABAoGAFijko56+qGyN8M0RVyaRAXz++xTqHBLh\",\n                \"line_num\": 4,\n                \"path\": \"./tests/samples/pem_key.tar\",\n                \"info\": \"FILE:./tests/samples/pem_key.tar|TAR:./.git/pem_key|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"1s1SPrCBkedbNf0Tp0GbMJDyR4e9T04ZZwIDAQABAoGAFijko56+qGyN8M0RVyaRAXz++xTqHBLh\",\n                \"value_start\": 0,\n                \"value_end\": 76,\n                \"entropy\": 5.32505\n            },\n            {\n                \"line\": \"3tx4VgMtrQ+WEgCjhoTwo23KMBAuJGSYnRmoBZM3lMfTKevIkAidPExvYCdm5dYq3XToLkkLv5L2\",\n                \"line_num\": 5,\n                \"path\": \"./tests/samples/pem_key.tar\",\n                \"info\": \"FILE:./tests/samples/pem_key.tar|TAR:./.git/pem_key|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"3tx4VgMtrQ+WEgCjhoTwo23KMBAuJGSYnRmoBZM3lMfTKevIkAidPExvYCdm5dYq3XToLkkLv5L2\",\n                \"value_start\": 0,\n                \"value_end\": 76,\n                \"entropy\": 5.26728\n            },\n            {\n                \"line\": \"pIIVOFMDG+KESnAFV7l2c+cnzRMW0+b6f8mR1CJzZuxVLL6Q02fvLi55/mbSYxECQQDeAw6fiIQX\",\n                \"line_num\": 6,\n                \"path\": \"./tests/samples/pem_key.tar\",\n                \"info\": \"FILE:./tests/samples/pem_key.tar|TAR:./.git/pem_key|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"pIIVOFMDG+KESnAFV7l2c+cnzRMW0+b6f8mR1CJzZuxVLL6Q02fvLi55/mbSYxECQQDeAw6fiIQX\",\n                \"value_start\": 0,\n                \"value_end\": 76,\n                \"entropy\": 5.29359\n            },\n            {\n                \"line\": \"GukBI4eMZZt4nscy2o12KyYner3VpoeE+Np2q+Z3pvAMd/aNzQ/W9WaI+NRfcxUJrmfPwIGm63il\",\n                \"line_num\": 7,\n                \"path\": \"./tests/samples/pem_key.tar\",\n                \"info\": \"FILE:./tests/samples/pem_key.tar|TAR:./.git/pem_key|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"GukBI4eMZZt4nscy2o12KyYner3VpoeE+Np2q+Z3pvAMd/aNzQ/W9WaI+NRfcxUJrmfPwIGm63il\",\n                \"value_start\": 0,\n                \"value_end\": 76,\n                \"entropy\": 5.40531\n            },\n            {\n                \"line\": \"AkEAxCL5HQb2bQr4ByorcMWm/hEP2MZzROV73yF41hPsRC9m66KrheO9HPTJuo3/9s5p+sqGxOlF\",\n                \"line_num\": 8,\n                \"path\": \"./tests/samples/pem_key.tar\",\n                \"info\": \"FILE:./tests/samples/pem_key.tar|TAR:./.git/pem_key|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"AkEAxCL5HQb2bQr4ByorcMWm/hEP2MZzROV73yF41hPsRC9m66KrheO9HPTJuo3/9s5p+sqGxOlF\",\n                \"value_start\": 0,\n                \"value_end\": 76,\n                \"entropy\": 5.37254\n            },\n            {\n                \"line\": \"L0NDt4SkosjgGwJAFklyR1uZ/wPJjj611cdBcztlPdqoxssQGnh85BzCj/u3WqBpE2vjvyyvyI5k\",\n                \"line_num\": 9,\n                \"path\": \"./tests/samples/pem_key.tar\",\n                \"info\": \"FILE:./tests/samples/pem_key.tar|TAR:./.git/pem_key|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"L0NDt4SkosjgGwJAFklyR1uZ/wPJjj611cdBcztlPdqoxssQGnh85BzCj/u3WqBpE2vjvyyvyI5k\",\n                \"value_start\": 0,\n                \"value_end\": 76,\n                \"entropy\": 5.30866\n            },\n            {\n                \"line\": \"X6zk7S0ljKtt2jny2+00VsBerQJBAJGC1Mg5Oydo5NwD6BiROrPxGo2bpTbu/fhrT8ebHkTz2epl\",\n                \"line_num\": 10,\n                \"path\": \"./tests/samples/pem_key.tar\",\n                \"info\": \"FILE:./tests/samples/pem_key.tar|TAR:./.git/pem_key|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"X6zk7S0ljKtt2jny2+00VsBerQJBAJGC1Mg5Oydo5NwD6BiROrPxGo2bpTbu/fhrT8ebHkTz2epl\",\n                \"value_start\": 0,\n                \"value_end\": 76,\n                \"entropy\": 5.42517\n            },\n            {\n                \"line\": \"U9VQQSQzY1oZMVX8i1m5WUTLPz2yLJIBQVdXqhMCQBGoiuSoSjafUhV7i1cEGpb88h5NBYZzWXGZ\",\n                \"line_num\": 11,\n                \"path\": \"./tests/samples/pem_key.tar\",\n                \"info\": \"FILE:./tests/samples/pem_key.tar|TAR:./.git/pem_key|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"U9VQQSQzY1oZMVX8i1m5WUTLPz2yLJIBQVdXqhMCQBGoiuSoSjafUhV7i1cEGpb88h5NBYZzWXGZ\",\n                \"value_start\": 0,\n                \"value_end\": 76,\n                \"entropy\": 5.10756\n            },\n            {\n                \"line\": \"37sJ5QsW+sJyoNde3xH8vdXhzU7eT82D6X/scw9RZz+/6rCJ4p0=\",\n                \"line_num\": 12,\n                \"path\": \"./tests/samples/pem_key.tar\",\n                \"info\": \"FILE:./tests/samples/pem_key.tar|TAR:./.git/pem_key|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"37sJ5QsW+sJyoNde3xH8vdXhzU7eT82D6X/scw9RZz+/6rCJ4p0=\",\n                \"value_start\": 0,\n                \"value_end\": 52,\n                \"entropy\": 5.07054\n            },\n            {\n                \"line\": \"-----END RSA PRIVATE KEY-----\",\n                \"line_num\": 13,\n                \"path\": \"./tests/samples/pem_key.tar\",\n                \"info\": \"FILE:./tests/samples/pem_key.tar|TAR:./.git/pem_key|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"-----END RSA PRIVATE KEY-----\",\n                \"value_start\": 0,\n                \"value_end\": 29,\n                \"entropy\": 3.24663\n            }\n        ]\n    },\n    {\n        \"rule\": \"PEM Private Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"-----BEGIN RSA PRIVATE KEY-----\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/pem_key.tar\",\n                \"info\": \"FILE:./tests/samples/pem_key.tar|TAR:./.idea/pem_key|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"-----BEGIN RSA PRIVATE KEY-----\",\n                \"value_start\": 0,\n                \"value_end\": 31,\n                \"entropy\": 3.38229\n            },\n            {\n                \"line\": \"MIICXAIBAAKBgQCqGKukO1De7zhZj6+H0qtjTkVxwTCpvKe4eCZ0FPqri0cb2JZfXJ/DgYSF6vUp\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/pem_key.tar\",\n                \"info\": \"FILE:./tests/samples/pem_key.tar|TAR:./.idea/pem_key|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"MIICXAIBAAKBgQCqGKukO1De7zhZj6+H0qtjTkVxwTCpvKe4eCZ0FPqri0cb2JZfXJ/DgYSF6vUp\",\n                \"value_start\": 0,\n                \"value_end\": 76,\n                \"entropy\": 5.38892\n            },\n            {\n                \"line\": \"wmJG8wVQZKjeGcjDOL5UlsuusFncCzWBQ7RKNUSesmQRMSGkVb1/3j+skZ6UtW+5u09lHNsj6tQ5\",\n                \"line_num\": 3,\n                \"path\": \"./tests/samples/pem_key.tar\",\n                \"info\": \"FILE:./tests/samples/pem_key.tar|TAR:./.idea/pem_key|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"wmJG8wVQZKjeGcjDOL5UlsuusFncCzWBQ7RKNUSesmQRMSGkVb1/3j+skZ6UtW+5u09lHNsj6tQ5\",\n                \"value_start\": 0,\n                \"value_end\": 76,\n                \"entropy\": 5.21333\n            },\n            {\n                \"line\": \"1s1SPrCBkedbNf0Tp0GbMJDyR4e9T04ZZwIDAQABAoGAFijko56+qGyN8M0RVyaRAXz++xTqHBLh\",\n                \"line_num\": 4,\n                \"path\": \"./tests/samples/pem_key.tar\",\n                \"info\": \"FILE:./tests/samples/pem_key.tar|TAR:./.idea/pem_key|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"1s1SPrCBkedbNf0Tp0GbMJDyR4e9T04ZZwIDAQABAoGAFijko56+qGyN8M0RVyaRAXz++xTqHBLh\",\n                \"value_start\": 0,\n                \"value_end\": 76,\n                \"entropy\": 5.32505\n            },\n            {\n                \"line\": \"3tx4VgMtrQ+WEgCjhoTwo23KMBAuJGSYnRmoBZM3lMfTKevIkAidPExvYCdm5dYq3XToLkkLv5L2\",\n                \"line_num\": 5,\n                \"path\": \"./tests/samples/pem_key.tar\",\n                \"info\": \"FILE:./tests/samples/pem_key.tar|TAR:./.idea/pem_key|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"3tx4VgMtrQ+WEgCjhoTwo23KMBAuJGSYnRmoBZM3lMfTKevIkAidPExvYCdm5dYq3XToLkkLv5L2\",\n                \"value_start\": 0,\n                \"value_end\": 76,\n                \"entropy\": 5.26728\n            },\n            {\n                \"line\": \"pIIVOFMDG+KESnAFV7l2c+cnzRMW0+b6f8mR1CJzZuxVLL6Q02fvLi55/mbSYxECQQDeAw6fiIQX\",\n                \"line_num\": 6,\n                \"path\": \"./tests/samples/pem_key.tar\",\n                \"info\": \"FILE:./tests/samples/pem_key.tar|TAR:./.idea/pem_key|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"pIIVOFMDG+KESnAFV7l2c+cnzRMW0+b6f8mR1CJzZuxVLL6Q02fvLi55/mbSYxECQQDeAw6fiIQX\",\n                \"value_start\": 0,\n                \"value_end\": 76,\n                \"entropy\": 5.29359\n            },\n            {\n                \"line\": \"GukBI4eMZZt4nscy2o12KyYner3VpoeE+Np2q+Z3pvAMd/aNzQ/W9WaI+NRfcxUJrmfPwIGm63il\",\n                \"line_num\": 7,\n                \"path\": \"./tests/samples/pem_key.tar\",\n                \"info\": \"FILE:./tests/samples/pem_key.tar|TAR:./.idea/pem_key|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"GukBI4eMZZt4nscy2o12KyYner3VpoeE+Np2q+Z3pvAMd/aNzQ/W9WaI+NRfcxUJrmfPwIGm63il\",\n                \"value_start\": 0,\n                \"value_end\": 76,\n                \"entropy\": 5.40531\n            },\n            {\n                \"line\": \"AkEAxCL5HQb2bQr4ByorcMWm/hEP2MZzROV73yF41hPsRC9m66KrheO9HPTJuo3/9s5p+sqGxOlF\",\n                \"line_num\": 8,\n                \"path\": \"./tests/samples/pem_key.tar\",\n                \"info\": \"FILE:./tests/samples/pem_key.tar|TAR:./.idea/pem_key|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"AkEAxCL5HQb2bQr4ByorcMWm/hEP2MZzROV73yF41hPsRC9m66KrheO9HPTJuo3/9s5p+sqGxOlF\",\n                \"value_start\": 0,\n                \"value_end\": 76,\n                \"entropy\": 5.37254\n            },\n            {\n                \"line\": \"L0NDt4SkosjgGwJAFklyR1uZ/wPJjj611cdBcztlPdqoxssQGnh85BzCj/u3WqBpE2vjvyyvyI5k\",\n                \"line_num\": 9,\n                \"path\": \"./tests/samples/pem_key.tar\",\n                \"info\": \"FILE:./tests/samples/pem_key.tar|TAR:./.idea/pem_key|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"L0NDt4SkosjgGwJAFklyR1uZ/wPJjj611cdBcztlPdqoxssQGnh85BzCj/u3WqBpE2vjvyyvyI5k\",\n                \"value_start\": 0,\n                \"value_end\": 76,\n                \"entropy\": 5.30866\n            },\n            {\n                \"line\": \"X6zk7S0ljKtt2jny2+00VsBerQJBAJGC1Mg5Oydo5NwD6BiROrPxGo2bpTbu/fhrT8ebHkTz2epl\",\n                \"line_num\": 10,\n                \"path\": \"./tests/samples/pem_key.tar\",\n                \"info\": \"FILE:./tests/samples/pem_key.tar|TAR:./.idea/pem_key|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"X6zk7S0ljKtt2jny2+00VsBerQJBAJGC1Mg5Oydo5NwD6BiROrPxGo2bpTbu/fhrT8ebHkTz2epl\",\n                \"value_start\": 0,\n                \"value_end\": 76,\n                \"entropy\": 5.42517\n            },\n            {\n                \"line\": \"U9VQQSQzY1oZMVX8i1m5WUTLPz2yLJIBQVdXqhMCQBGoiuSoSjafUhV7i1cEGpb88h5NBYZzWXGZ\",\n                \"line_num\": 11,\n                \"path\": \"./tests/samples/pem_key.tar\",\n                \"info\": \"FILE:./tests/samples/pem_key.tar|TAR:./.idea/pem_key|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"U9VQQSQzY1oZMVX8i1m5WUTLPz2yLJIBQVdXqhMCQBGoiuSoSjafUhV7i1cEGpb88h5NBYZzWXGZ\",\n                \"value_start\": 0,\n                \"value_end\": 76,\n                \"entropy\": 5.10756\n            },\n            {\n                \"line\": \"37sJ5QsW+sJyoNde3xH8vdXhzU7eT82D6X/scw9RZz+/6rCJ4p0=\",\n                \"line_num\": 12,\n                \"path\": \"./tests/samples/pem_key.tar\",\n                \"info\": \"FILE:./tests/samples/pem_key.tar|TAR:./.idea/pem_key|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"37sJ5QsW+sJyoNde3xH8vdXhzU7eT82D6X/scw9RZz+/6rCJ4p0=\",\n                \"value_start\": 0,\n                \"value_end\": 52,\n                \"entropy\": 5.07054\n            },\n            {\n                \"line\": \"-----END RSA PRIVATE KEY-----\",\n                \"line_num\": 13,\n                \"path\": \"./tests/samples/pem_key.tar\",\n                \"info\": \"FILE:./tests/samples/pem_key.tar|TAR:./.idea/pem_key|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"-----END RSA PRIVATE KEY-----\",\n                \"value_start\": 0,\n                \"value_end\": 29,\n                \"entropy\": 3.24663\n            }\n        ]\n    },\n    {\n        \"rule\": \"PEM Private Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"-----BEGIN RSA PRIVATE KEY-----\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/pem_key.tar\",\n                \"info\": \"FILE:./tests/samples/pem_key.tar|TAR:./.svn/pem_key|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"-----BEGIN RSA PRIVATE KEY-----\",\n                \"value_start\": 0,\n                \"value_end\": 31,\n                \"entropy\": 3.38229\n            },\n            {\n                \"line\": \"MIICXAIBAAKBgQCqGKukO1De7zhZj6+H0qtjTkVxwTCpvKe4eCZ0FPqri0cb2JZfXJ/DgYSF6vUp\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/pem_key.tar\",\n                \"info\": \"FILE:./tests/samples/pem_key.tar|TAR:./.svn/pem_key|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"MIICXAIBAAKBgQCqGKukO1De7zhZj6+H0qtjTkVxwTCpvKe4eCZ0FPqri0cb2JZfXJ/DgYSF6vUp\",\n                \"value_start\": 0,\n                \"value_end\": 76,\n                \"entropy\": 5.38892\n            },\n            {\n                \"line\": \"wmJG8wVQZKjeGcjDOL5UlsuusFncCzWBQ7RKNUSesmQRMSGkVb1/3j+skZ6UtW+5u09lHNsj6tQ5\",\n                \"line_num\": 3,\n                \"path\": \"./tests/samples/pem_key.tar\",\n                \"info\": \"FILE:./tests/samples/pem_key.tar|TAR:./.svn/pem_key|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"wmJG8wVQZKjeGcjDOL5UlsuusFncCzWBQ7RKNUSesmQRMSGkVb1/3j+skZ6UtW+5u09lHNsj6tQ5\",\n                \"value_start\": 0,\n                \"value_end\": 76,\n                \"entropy\": 5.21333\n            },\n            {\n                \"line\": \"1s1SPrCBkedbNf0Tp0GbMJDyR4e9T04ZZwIDAQABAoGAFijko56+qGyN8M0RVyaRAXz++xTqHBLh\",\n                \"line_num\": 4,\n                \"path\": \"./tests/samples/pem_key.tar\",\n                \"info\": \"FILE:./tests/samples/pem_key.tar|TAR:./.svn/pem_key|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"1s1SPrCBkedbNf0Tp0GbMJDyR4e9T04ZZwIDAQABAoGAFijko56+qGyN8M0RVyaRAXz++xTqHBLh\",\n                \"value_start\": 0,\n                \"value_end\": 76,\n                \"entropy\": 5.32505\n            },\n            {\n                \"line\": \"3tx4VgMtrQ+WEgCjhoTwo23KMBAuJGSYnRmoBZM3lMfTKevIkAidPExvYCdm5dYq3XToLkkLv5L2\",\n                \"line_num\": 5,\n                \"path\": \"./tests/samples/pem_key.tar\",\n                \"info\": \"FILE:./tests/samples/pem_key.tar|TAR:./.svn/pem_key|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"3tx4VgMtrQ+WEgCjhoTwo23KMBAuJGSYnRmoBZM3lMfTKevIkAidPExvYCdm5dYq3XToLkkLv5L2\",\n                \"value_start\": 0,\n                \"value_end\": 76,\n                \"entropy\": 5.26728\n            },\n            {\n                \"line\": \"pIIVOFMDG+KESnAFV7l2c+cnzRMW0+b6f8mR1CJzZuxVLL6Q02fvLi55/mbSYxECQQDeAw6fiIQX\",\n                \"line_num\": 6,\n                \"path\": \"./tests/samples/pem_key.tar\",\n                \"info\": \"FILE:./tests/samples/pem_key.tar|TAR:./.svn/pem_key|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"pIIVOFMDG+KESnAFV7l2c+cnzRMW0+b6f8mR1CJzZuxVLL6Q02fvLi55/mbSYxECQQDeAw6fiIQX\",\n                \"value_start\": 0,\n                \"value_end\": 76,\n                \"entropy\": 5.29359\n            },\n            {\n                \"line\": \"GukBI4eMZZt4nscy2o12KyYner3VpoeE+Np2q+Z3pvAMd/aNzQ/W9WaI+NRfcxUJrmfPwIGm63il\",\n                \"line_num\": 7,\n                \"path\": \"./tests/samples/pem_key.tar\",\n                \"info\": \"FILE:./tests/samples/pem_key.tar|TAR:./.svn/pem_key|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"GukBI4eMZZt4nscy2o12KyYner3VpoeE+Np2q+Z3pvAMd/aNzQ/W9WaI+NRfcxUJrmfPwIGm63il\",\n                \"value_start\": 0,\n                \"value_end\": 76,\n                \"entropy\": 5.40531\n            },\n            {\n                \"line\": \"AkEAxCL5HQb2bQr4ByorcMWm/hEP2MZzROV73yF41hPsRC9m66KrheO9HPTJuo3/9s5p+sqGxOlF\",\n                \"line_num\": 8,\n                \"path\": \"./tests/samples/pem_key.tar\",\n                \"info\": \"FILE:./tests/samples/pem_key.tar|TAR:./.svn/pem_key|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"AkEAxCL5HQb2bQr4ByorcMWm/hEP2MZzROV73yF41hPsRC9m66KrheO9HPTJuo3/9s5p+sqGxOlF\",\n                \"value_start\": 0,\n                \"value_end\": 76,\n                \"entropy\": 5.37254\n            },\n            {\n                \"line\": \"L0NDt4SkosjgGwJAFklyR1uZ/wPJjj611cdBcztlPdqoxssQGnh85BzCj/u3WqBpE2vjvyyvyI5k\",\n                \"line_num\": 9,\n                \"path\": \"./tests/samples/pem_key.tar\",\n                \"info\": \"FILE:./tests/samples/pem_key.tar|TAR:./.svn/pem_key|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"L0NDt4SkosjgGwJAFklyR1uZ/wPJjj611cdBcztlPdqoxssQGnh85BzCj/u3WqBpE2vjvyyvyI5k\",\n                \"value_start\": 0,\n                \"value_end\": 76,\n                \"entropy\": 5.30866\n            },\n            {\n                \"line\": \"X6zk7S0ljKtt2jny2+00VsBerQJBAJGC1Mg5Oydo5NwD6BiROrPxGo2bpTbu/fhrT8ebHkTz2epl\",\n                \"line_num\": 10,\n                \"path\": \"./tests/samples/pem_key.tar\",\n                \"info\": \"FILE:./tests/samples/pem_key.tar|TAR:./.svn/pem_key|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"X6zk7S0ljKtt2jny2+00VsBerQJBAJGC1Mg5Oydo5NwD6BiROrPxGo2bpTbu/fhrT8ebHkTz2epl\",\n                \"value_start\": 0,\n                \"value_end\": 76,\n                \"entropy\": 5.42517\n            },\n            {\n                \"line\": \"U9VQQSQzY1oZMVX8i1m5WUTLPz2yLJIBQVdXqhMCQBGoiuSoSjafUhV7i1cEGpb88h5NBYZzWXGZ\",\n                \"line_num\": 11,\n                \"path\": \"./tests/samples/pem_key.tar\",\n                \"info\": \"FILE:./tests/samples/pem_key.tar|TAR:./.svn/pem_key|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"U9VQQSQzY1oZMVX8i1m5WUTLPz2yLJIBQVdXqhMCQBGoiuSoSjafUhV7i1cEGpb88h5NBYZzWXGZ\",\n                \"value_start\": 0,\n                \"value_end\": 76,\n                \"entropy\": 5.10756\n            },\n            {\n                \"line\": \"37sJ5QsW+sJyoNde3xH8vdXhzU7eT82D6X/scw9RZz+/6rCJ4p0=\",\n                \"line_num\": 12,\n                \"path\": \"./tests/samples/pem_key.tar\",\n                \"info\": \"FILE:./tests/samples/pem_key.tar|TAR:./.svn/pem_key|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"37sJ5QsW+sJyoNde3xH8vdXhzU7eT82D6X/scw9RZz+/6rCJ4p0=\",\n                \"value_start\": 0,\n                \"value_end\": 52,\n                \"entropy\": 5.07054\n            },\n            {\n                \"line\": \"-----END RSA PRIVATE KEY-----\",\n                \"line_num\": 13,\n                \"path\": \"./tests/samples/pem_key.tar\",\n                \"info\": \"FILE:./tests/samples/pem_key.tar|TAR:./.svn/pem_key|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"-----END RSA PRIVATE KEY-----\",\n                \"value_start\": 0,\n                \"value_end\": 29,\n                \"entropy\": 3.24663\n            }\n        ]\n    },\n    {\n        \"rule\": \"PEM Private Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"-----BEGIN RSA PRIVATE KEY-----\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/pem_key.tar\",\n                \"info\": \"FILE:./tests/samples/pem_key.tar|TAR:./.venv/pem_key|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"-----BEGIN RSA PRIVATE KEY-----\",\n                \"value_start\": 0,\n                \"value_end\": 31,\n                \"entropy\": 3.38229\n            },\n            {\n                \"line\": \"MIICXAIBAAKBgQCqGKukO1De7zhZj6+H0qtjTkVxwTCpvKe4eCZ0FPqri0cb2JZfXJ/DgYSF6vUp\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/pem_key.tar\",\n                \"info\": \"FILE:./tests/samples/pem_key.tar|TAR:./.venv/pem_key|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"MIICXAIBAAKBgQCqGKukO1De7zhZj6+H0qtjTkVxwTCpvKe4eCZ0FPqri0cb2JZfXJ/DgYSF6vUp\",\n                \"value_start\": 0,\n                \"value_end\": 76,\n                \"entropy\": 5.38892\n            },\n            {\n                \"line\": \"wmJG8wVQZKjeGcjDOL5UlsuusFncCzWBQ7RKNUSesmQRMSGkVb1/3j+skZ6UtW+5u09lHNsj6tQ5\",\n                \"line_num\": 3,\n                \"path\": \"./tests/samples/pem_key.tar\",\n                \"info\": \"FILE:./tests/samples/pem_key.tar|TAR:./.venv/pem_key|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"wmJG8wVQZKjeGcjDOL5UlsuusFncCzWBQ7RKNUSesmQRMSGkVb1/3j+skZ6UtW+5u09lHNsj6tQ5\",\n                \"value_start\": 0,\n                \"value_end\": 76,\n                \"entropy\": 5.21333\n            },\n            {\n                \"line\": \"1s1SPrCBkedbNf0Tp0GbMJDyR4e9T04ZZwIDAQABAoGAFijko56+qGyN8M0RVyaRAXz++xTqHBLh\",\n                \"line_num\": 4,\n                \"path\": \"./tests/samples/pem_key.tar\",\n                \"info\": \"FILE:./tests/samples/pem_key.tar|TAR:./.venv/pem_key|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"1s1SPrCBkedbNf0Tp0GbMJDyR4e9T04ZZwIDAQABAoGAFijko56+qGyN8M0RVyaRAXz++xTqHBLh\",\n                \"value_start\": 0,\n                \"value_end\": 76,\n                \"entropy\": 5.32505\n            },\n            {\n                \"line\": \"3tx4VgMtrQ+WEgCjhoTwo23KMBAuJGSYnRmoBZM3lMfTKevIkAidPExvYCdm5dYq3XToLkkLv5L2\",\n                \"line_num\": 5,\n                \"path\": \"./tests/samples/pem_key.tar\",\n                \"info\": \"FILE:./tests/samples/pem_key.tar|TAR:./.venv/pem_key|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"3tx4VgMtrQ+WEgCjhoTwo23KMBAuJGSYnRmoBZM3lMfTKevIkAidPExvYCdm5dYq3XToLkkLv5L2\",\n                \"value_start\": 0,\n                \"value_end\": 76,\n                \"entropy\": 5.26728\n            },\n            {\n                \"line\": \"pIIVOFMDG+KESnAFV7l2c+cnzRMW0+b6f8mR1CJzZuxVLL6Q02fvLi55/mbSYxECQQDeAw6fiIQX\",\n                \"line_num\": 6,\n                \"path\": \"./tests/samples/pem_key.tar\",\n                \"info\": \"FILE:./tests/samples/pem_key.tar|TAR:./.venv/pem_key|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"pIIVOFMDG+KESnAFV7l2c+cnzRMW0+b6f8mR1CJzZuxVLL6Q02fvLi55/mbSYxECQQDeAw6fiIQX\",\n                \"value_start\": 0,\n                \"value_end\": 76,\n                \"entropy\": 5.29359\n            },\n            {\n                \"line\": \"GukBI4eMZZt4nscy2o12KyYner3VpoeE+Np2q+Z3pvAMd/aNzQ/W9WaI+NRfcxUJrmfPwIGm63il\",\n                \"line_num\": 7,\n                \"path\": \"./tests/samples/pem_key.tar\",\n                \"info\": \"FILE:./tests/samples/pem_key.tar|TAR:./.venv/pem_key|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"GukBI4eMZZt4nscy2o12KyYner3VpoeE+Np2q+Z3pvAMd/aNzQ/W9WaI+NRfcxUJrmfPwIGm63il\",\n                \"value_start\": 0,\n                \"value_end\": 76,\n                \"entropy\": 5.40531\n            },\n            {\n                \"line\": \"AkEAxCL5HQb2bQr4ByorcMWm/hEP2MZzROV73yF41hPsRC9m66KrheO9HPTJuo3/9s5p+sqGxOlF\",\n                \"line_num\": 8,\n                \"path\": \"./tests/samples/pem_key.tar\",\n                \"info\": \"FILE:./tests/samples/pem_key.tar|TAR:./.venv/pem_key|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"AkEAxCL5HQb2bQr4ByorcMWm/hEP2MZzROV73yF41hPsRC9m66KrheO9HPTJuo3/9s5p+sqGxOlF\",\n                \"value_start\": 0,\n                \"value_end\": 76,\n                \"entropy\": 5.37254\n            },\n            {\n                \"line\": \"L0NDt4SkosjgGwJAFklyR1uZ/wPJjj611cdBcztlPdqoxssQGnh85BzCj/u3WqBpE2vjvyyvyI5k\",\n                \"line_num\": 9,\n                \"path\": \"./tests/samples/pem_key.tar\",\n                \"info\": \"FILE:./tests/samples/pem_key.tar|TAR:./.venv/pem_key|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"L0NDt4SkosjgGwJAFklyR1uZ/wPJjj611cdBcztlPdqoxssQGnh85BzCj/u3WqBpE2vjvyyvyI5k\",\n                \"value_start\": 0,\n                \"value_end\": 76,\n                \"entropy\": 5.30866\n            },\n            {\n                \"line\": \"X6zk7S0ljKtt2jny2+00VsBerQJBAJGC1Mg5Oydo5NwD6BiROrPxGo2bpTbu/fhrT8ebHkTz2epl\",\n                \"line_num\": 10,\n                \"path\": \"./tests/samples/pem_key.tar\",\n                \"info\": \"FILE:./tests/samples/pem_key.tar|TAR:./.venv/pem_key|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"X6zk7S0ljKtt2jny2+00VsBerQJBAJGC1Mg5Oydo5NwD6BiROrPxGo2bpTbu/fhrT8ebHkTz2epl\",\n                \"value_start\": 0,\n                \"value_end\": 76,\n                \"entropy\": 5.42517\n            },\n            {\n                \"line\": \"U9VQQSQzY1oZMVX8i1m5WUTLPz2yLJIBQVdXqhMCQBGoiuSoSjafUhV7i1cEGpb88h5NBYZzWXGZ\",\n                \"line_num\": 11,\n                \"path\": \"./tests/samples/pem_key.tar\",\n                \"info\": \"FILE:./tests/samples/pem_key.tar|TAR:./.venv/pem_key|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"U9VQQSQzY1oZMVX8i1m5WUTLPz2yLJIBQVdXqhMCQBGoiuSoSjafUhV7i1cEGpb88h5NBYZzWXGZ\",\n                \"value_start\": 0,\n                \"value_end\": 76,\n                \"entropy\": 5.10756\n            },\n            {\n                \"line\": \"37sJ5QsW+sJyoNde3xH8vdXhzU7eT82D6X/scw9RZz+/6rCJ4p0=\",\n                \"line_num\": 12,\n                \"path\": \"./tests/samples/pem_key.tar\",\n                \"info\": \"FILE:./tests/samples/pem_key.tar|TAR:./.venv/pem_key|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"37sJ5QsW+sJyoNde3xH8vdXhzU7eT82D6X/scw9RZz+/6rCJ4p0=\",\n                \"value_start\": 0,\n                \"value_end\": 52,\n                \"entropy\": 5.07054\n            },\n            {\n                \"line\": \"-----END RSA PRIVATE KEY-----\",\n                \"line_num\": 13,\n                \"path\": \"./tests/samples/pem_key.tar\",\n                \"info\": \"FILE:./tests/samples/pem_key.tar|TAR:./.venv/pem_key|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"-----END RSA PRIVATE KEY-----\",\n                \"value_start\": 0,\n                \"value_end\": 29,\n                \"entropy\": 3.24663\n            }\n        ]\n    },\n    {\n        \"rule\": \"PEM Private Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"-----BEGIN RSA PRIVATE KEY-----\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/pem_key.tar\",\n                \"info\": \"FILE:./tests/samples/pem_key.tar|TAR:./__pycache__/pem_key|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"-----BEGIN RSA PRIVATE KEY-----\",\n                \"value_start\": 0,\n                \"value_end\": 31,\n                \"entropy\": 3.38229\n            },\n            {\n                \"line\": \"MIICXAIBAAKBgQCqGKukO1De7zhZj6+H0qtjTkVxwTCpvKe4eCZ0FPqri0cb2JZfXJ/DgYSF6vUp\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/pem_key.tar\",\n                \"info\": \"FILE:./tests/samples/pem_key.tar|TAR:./__pycache__/pem_key|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"MIICXAIBAAKBgQCqGKukO1De7zhZj6+H0qtjTkVxwTCpvKe4eCZ0FPqri0cb2JZfXJ/DgYSF6vUp\",\n                \"value_start\": 0,\n                \"value_end\": 76,\n                \"entropy\": 5.38892\n            },\n            {\n                \"line\": \"wmJG8wVQZKjeGcjDOL5UlsuusFncCzWBQ7RKNUSesmQRMSGkVb1/3j+skZ6UtW+5u09lHNsj6tQ5\",\n                \"line_num\": 3,\n                \"path\": \"./tests/samples/pem_key.tar\",\n                \"info\": \"FILE:./tests/samples/pem_key.tar|TAR:./__pycache__/pem_key|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"wmJG8wVQZKjeGcjDOL5UlsuusFncCzWBQ7RKNUSesmQRMSGkVb1/3j+skZ6UtW+5u09lHNsj6tQ5\",\n                \"value_start\": 0,\n                \"value_end\": 76,\n                \"entropy\": 5.21333\n            },\n            {\n                \"line\": \"1s1SPrCBkedbNf0Tp0GbMJDyR4e9T04ZZwIDAQABAoGAFijko56+qGyN8M0RVyaRAXz++xTqHBLh\",\n                \"line_num\": 4,\n                \"path\": \"./tests/samples/pem_key.tar\",\n                \"info\": \"FILE:./tests/samples/pem_key.tar|TAR:./__pycache__/pem_key|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"1s1SPrCBkedbNf0Tp0GbMJDyR4e9T04ZZwIDAQABAoGAFijko56+qGyN8M0RVyaRAXz++xTqHBLh\",\n                \"value_start\": 0,\n                \"value_end\": 76,\n                \"entropy\": 5.32505\n            },\n            {\n                \"line\": \"3tx4VgMtrQ+WEgCjhoTwo23KMBAuJGSYnRmoBZM3lMfTKevIkAidPExvYCdm5dYq3XToLkkLv5L2\",\n                \"line_num\": 5,\n                \"path\": \"./tests/samples/pem_key.tar\",\n                \"info\": \"FILE:./tests/samples/pem_key.tar|TAR:./__pycache__/pem_key|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"3tx4VgMtrQ+WEgCjhoTwo23KMBAuJGSYnRmoBZM3lMfTKevIkAidPExvYCdm5dYq3XToLkkLv5L2\",\n                \"value_start\": 0,\n                \"value_end\": 76,\n                \"entropy\": 5.26728\n            },\n            {\n                \"line\": \"pIIVOFMDG+KESnAFV7l2c+cnzRMW0+b6f8mR1CJzZuxVLL6Q02fvLi55/mbSYxECQQDeAw6fiIQX\",\n                \"line_num\": 6,\n                \"path\": \"./tests/samples/pem_key.tar\",\n                \"info\": \"FILE:./tests/samples/pem_key.tar|TAR:./__pycache__/pem_key|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"pIIVOFMDG+KESnAFV7l2c+cnzRMW0+b6f8mR1CJzZuxVLL6Q02fvLi55/mbSYxECQQDeAw6fiIQX\",\n                \"value_start\": 0,\n                \"value_end\": 76,\n                \"entropy\": 5.29359\n            },\n            {\n                \"line\": \"GukBI4eMZZt4nscy2o12KyYner3VpoeE+Np2q+Z3pvAMd/aNzQ/W9WaI+NRfcxUJrmfPwIGm63il\",\n                \"line_num\": 7,\n                \"path\": \"./tests/samples/pem_key.tar\",\n                \"info\": \"FILE:./tests/samples/pem_key.tar|TAR:./__pycache__/pem_key|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"GukBI4eMZZt4nscy2o12KyYner3VpoeE+Np2q+Z3pvAMd/aNzQ/W9WaI+NRfcxUJrmfPwIGm63il\",\n                \"value_start\": 0,\n                \"value_end\": 76,\n                \"entropy\": 5.40531\n            },\n            {\n                \"line\": \"AkEAxCL5HQb2bQr4ByorcMWm/hEP2MZzROV73yF41hPsRC9m66KrheO9HPTJuo3/9s5p+sqGxOlF\",\n                \"line_num\": 8,\n                \"path\": \"./tests/samples/pem_key.tar\",\n                \"info\": \"FILE:./tests/samples/pem_key.tar|TAR:./__pycache__/pem_key|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"AkEAxCL5HQb2bQr4ByorcMWm/hEP2MZzROV73yF41hPsRC9m66KrheO9HPTJuo3/9s5p+sqGxOlF\",\n                \"value_start\": 0,\n                \"value_end\": 76,\n                \"entropy\": 5.37254\n            },\n            {\n                \"line\": \"L0NDt4SkosjgGwJAFklyR1uZ/wPJjj611cdBcztlPdqoxssQGnh85BzCj/u3WqBpE2vjvyyvyI5k\",\n                \"line_num\": 9,\n                \"path\": \"./tests/samples/pem_key.tar\",\n                \"info\": \"FILE:./tests/samples/pem_key.tar|TAR:./__pycache__/pem_key|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"L0NDt4SkosjgGwJAFklyR1uZ/wPJjj611cdBcztlPdqoxssQGnh85BzCj/u3WqBpE2vjvyyvyI5k\",\n                \"value_start\": 0,\n                \"value_end\": 76,\n                \"entropy\": 5.30866\n            },\n            {\n                \"line\": \"X6zk7S0ljKtt2jny2+00VsBerQJBAJGC1Mg5Oydo5NwD6BiROrPxGo2bpTbu/fhrT8ebHkTz2epl\",\n                \"line_num\": 10,\n                \"path\": \"./tests/samples/pem_key.tar\",\n                \"info\": \"FILE:./tests/samples/pem_key.tar|TAR:./__pycache__/pem_key|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"X6zk7S0ljKtt2jny2+00VsBerQJBAJGC1Mg5Oydo5NwD6BiROrPxGo2bpTbu/fhrT8ebHkTz2epl\",\n                \"value_start\": 0,\n                \"value_end\": 76,\n                \"entropy\": 5.42517\n            },\n            {\n                \"line\": \"U9VQQSQzY1oZMVX8i1m5WUTLPz2yLJIBQVdXqhMCQBGoiuSoSjafUhV7i1cEGpb88h5NBYZzWXGZ\",\n                \"line_num\": 11,\n                \"path\": \"./tests/samples/pem_key.tar\",\n                \"info\": \"FILE:./tests/samples/pem_key.tar|TAR:./__pycache__/pem_key|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"U9VQQSQzY1oZMVX8i1m5WUTLPz2yLJIBQVdXqhMCQBGoiuSoSjafUhV7i1cEGpb88h5NBYZzWXGZ\",\n                \"value_start\": 0,\n                \"value_end\": 76,\n                \"entropy\": 5.10756\n            },\n            {\n                \"line\": \"37sJ5QsW+sJyoNde3xH8vdXhzU7eT82D6X/scw9RZz+/6rCJ4p0=\",\n                \"line_num\": 12,\n                \"path\": \"./tests/samples/pem_key.tar\",\n                \"info\": \"FILE:./tests/samples/pem_key.tar|TAR:./__pycache__/pem_key|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"37sJ5QsW+sJyoNde3xH8vdXhzU7eT82D6X/scw9RZz+/6rCJ4p0=\",\n                \"value_start\": 0,\n                \"value_end\": 52,\n                \"entropy\": 5.07054\n            },\n            {\n                \"line\": \"-----END RSA PRIVATE KEY-----\",\n                \"line_num\": 13,\n                \"path\": \"./tests/samples/pem_key.tar\",\n                \"info\": \"FILE:./tests/samples/pem_key.tar|TAR:./__pycache__/pem_key|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"-----END RSA PRIVATE KEY-----\",\n                \"value_start\": 0,\n                \"value_end\": 29,\n                \"entropy\": 3.24663\n            }\n        ]\n    },\n    {\n        \"rule\": \"PEM Private Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"-----BEGIN RSA PRIVATE KEY-----\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/pem_key.tar\",\n                \"info\": \"FILE:./tests/samples/pem_key.tar|TAR:./node_modules/pem_key|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"-----BEGIN RSA PRIVATE KEY-----\",\n                \"value_start\": 0,\n                \"value_end\": 31,\n                \"entropy\": 3.38229\n            },\n            {\n                \"line\": \"MIICXAIBAAKBgQCqGKukO1De7zhZj6+H0qtjTkVxwTCpvKe4eCZ0FPqri0cb2JZfXJ/DgYSF6vUp\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/pem_key.tar\",\n                \"info\": \"FILE:./tests/samples/pem_key.tar|TAR:./node_modules/pem_key|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"MIICXAIBAAKBgQCqGKukO1De7zhZj6+H0qtjTkVxwTCpvKe4eCZ0FPqri0cb2JZfXJ/DgYSF6vUp\",\n                \"value_start\": 0,\n                \"value_end\": 76,\n                \"entropy\": 5.38892\n            },\n            {\n                \"line\": \"wmJG8wVQZKjeGcjDOL5UlsuusFncCzWBQ7RKNUSesmQRMSGkVb1/3j+skZ6UtW+5u09lHNsj6tQ5\",\n                \"line_num\": 3,\n                \"path\": \"./tests/samples/pem_key.tar\",\n                \"info\": \"FILE:./tests/samples/pem_key.tar|TAR:./node_modules/pem_key|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"wmJG8wVQZKjeGcjDOL5UlsuusFncCzWBQ7RKNUSesmQRMSGkVb1/3j+skZ6UtW+5u09lHNsj6tQ5\",\n                \"value_start\": 0,\n                \"value_end\": 76,\n                \"entropy\": 5.21333\n            },\n            {\n                \"line\": \"1s1SPrCBkedbNf0Tp0GbMJDyR4e9T04ZZwIDAQABAoGAFijko56+qGyN8M0RVyaRAXz++xTqHBLh\",\n                \"line_num\": 4,\n                \"path\": \"./tests/samples/pem_key.tar\",\n                \"info\": \"FILE:./tests/samples/pem_key.tar|TAR:./node_modules/pem_key|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"1s1SPrCBkedbNf0Tp0GbMJDyR4e9T04ZZwIDAQABAoGAFijko56+qGyN8M0RVyaRAXz++xTqHBLh\",\n                \"value_start\": 0,\n                \"value_end\": 76,\n                \"entropy\": 5.32505\n            },\n            {\n                \"line\": \"3tx4VgMtrQ+WEgCjhoTwo23KMBAuJGSYnRmoBZM3lMfTKevIkAidPExvYCdm5dYq3XToLkkLv5L2\",\n                \"line_num\": 5,\n                \"path\": \"./tests/samples/pem_key.tar\",\n                \"info\": \"FILE:./tests/samples/pem_key.tar|TAR:./node_modules/pem_key|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"3tx4VgMtrQ+WEgCjhoTwo23KMBAuJGSYnRmoBZM3lMfTKevIkAidPExvYCdm5dYq3XToLkkLv5L2\",\n                \"value_start\": 0,\n                \"value_end\": 76,\n                \"entropy\": 5.26728\n            },\n            {\n                \"line\": \"pIIVOFMDG+KESnAFV7l2c+cnzRMW0+b6f8mR1CJzZuxVLL6Q02fvLi55/mbSYxECQQDeAw6fiIQX\",\n                \"line_num\": 6,\n                \"path\": \"./tests/samples/pem_key.tar\",\n                \"info\": \"FILE:./tests/samples/pem_key.tar|TAR:./node_modules/pem_key|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"pIIVOFMDG+KESnAFV7l2c+cnzRMW0+b6f8mR1CJzZuxVLL6Q02fvLi55/mbSYxECQQDeAw6fiIQX\",\n                \"value_start\": 0,\n                \"value_end\": 76,\n                \"entropy\": 5.29359\n            },\n            {\n                \"line\": \"GukBI4eMZZt4nscy2o12KyYner3VpoeE+Np2q+Z3pvAMd/aNzQ/W9WaI+NRfcxUJrmfPwIGm63il\",\n                \"line_num\": 7,\n                \"path\": \"./tests/samples/pem_key.tar\",\n                \"info\": \"FILE:./tests/samples/pem_key.tar|TAR:./node_modules/pem_key|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"GukBI4eMZZt4nscy2o12KyYner3VpoeE+Np2q+Z3pvAMd/aNzQ/W9WaI+NRfcxUJrmfPwIGm63il\",\n                \"value_start\": 0,\n                \"value_end\": 76,\n                \"entropy\": 5.40531\n            },\n            {\n                \"line\": \"AkEAxCL5HQb2bQr4ByorcMWm/hEP2MZzROV73yF41hPsRC9m66KrheO9HPTJuo3/9s5p+sqGxOlF\",\n                \"line_num\": 8,\n                \"path\": \"./tests/samples/pem_key.tar\",\n                \"info\": \"FILE:./tests/samples/pem_key.tar|TAR:./node_modules/pem_key|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"AkEAxCL5HQb2bQr4ByorcMWm/hEP2MZzROV73yF41hPsRC9m66KrheO9HPTJuo3/9s5p+sqGxOlF\",\n                \"value_start\": 0,\n                \"value_end\": 76,\n                \"entropy\": 5.37254\n            },\n            {\n                \"line\": \"L0NDt4SkosjgGwJAFklyR1uZ/wPJjj611cdBcztlPdqoxssQGnh85BzCj/u3WqBpE2vjvyyvyI5k\",\n                \"line_num\": 9,\n                \"path\": \"./tests/samples/pem_key.tar\",\n                \"info\": \"FILE:./tests/samples/pem_key.tar|TAR:./node_modules/pem_key|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"L0NDt4SkosjgGwJAFklyR1uZ/wPJjj611cdBcztlPdqoxssQGnh85BzCj/u3WqBpE2vjvyyvyI5k\",\n                \"value_start\": 0,\n                \"value_end\": 76,\n                \"entropy\": 5.30866\n            },\n            {\n                \"line\": \"X6zk7S0ljKtt2jny2+00VsBerQJBAJGC1Mg5Oydo5NwD6BiROrPxGo2bpTbu/fhrT8ebHkTz2epl\",\n                \"line_num\": 10,\n                \"path\": \"./tests/samples/pem_key.tar\",\n                \"info\": \"FILE:./tests/samples/pem_key.tar|TAR:./node_modules/pem_key|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"X6zk7S0ljKtt2jny2+00VsBerQJBAJGC1Mg5Oydo5NwD6BiROrPxGo2bpTbu/fhrT8ebHkTz2epl\",\n                \"value_start\": 0,\n                \"value_end\": 76,\n                \"entropy\": 5.42517\n            },\n            {\n                \"line\": \"U9VQQSQzY1oZMVX8i1m5WUTLPz2yLJIBQVdXqhMCQBGoiuSoSjafUhV7i1cEGpb88h5NBYZzWXGZ\",\n                \"line_num\": 11,\n                \"path\": \"./tests/samples/pem_key.tar\",\n                \"info\": \"FILE:./tests/samples/pem_key.tar|TAR:./node_modules/pem_key|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"U9VQQSQzY1oZMVX8i1m5WUTLPz2yLJIBQVdXqhMCQBGoiuSoSjafUhV7i1cEGpb88h5NBYZzWXGZ\",\n                \"value_start\": 0,\n                \"value_end\": 76,\n                \"entropy\": 5.10756\n            },\n            {\n                \"line\": \"37sJ5QsW+sJyoNde3xH8vdXhzU7eT82D6X/scw9RZz+/6rCJ4p0=\",\n                \"line_num\": 12,\n                \"path\": \"./tests/samples/pem_key.tar\",\n                \"info\": \"FILE:./tests/samples/pem_key.tar|TAR:./node_modules/pem_key|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"37sJ5QsW+sJyoNde3xH8vdXhzU7eT82D6X/scw9RZz+/6rCJ4p0=\",\n                \"value_start\": 0,\n                \"value_end\": 52,\n                \"entropy\": 5.07054\n            },\n            {\n                \"line\": \"-----END RSA PRIVATE KEY-----\",\n                \"line_num\": 13,\n                \"path\": \"./tests/samples/pem_key.tar\",\n                \"info\": \"FILE:./tests/samples/pem_key.tar|TAR:./node_modules/pem_key|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"-----END RSA PRIVATE KEY-----\",\n                \"value_start\": 0,\n                \"value_end\": 29,\n                \"entropy\": 3.24663\n            }\n        ]\n    },\n    {\n        \"rule\": \"PEM Private Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"-----BEGIN RSA PRIVATE KEY-----\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/pem_key.tar\",\n                \"info\": \"FILE:./tests/samples/pem_key.tar|TAR:./pem_key|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"-----BEGIN RSA PRIVATE KEY-----\",\n                \"value_start\": 0,\n                \"value_end\": 31,\n                \"entropy\": 3.38229\n            },\n            {\n                \"line\": \"MIICXAIBAAKBgQCqGKukO1De7zhZj6+H0qtjTkVxwTCpvKe4eCZ0FPqri0cb2JZfXJ/DgYSF6vUp\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/pem_key.tar\",\n                \"info\": \"FILE:./tests/samples/pem_key.tar|TAR:./pem_key|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"MIICXAIBAAKBgQCqGKukO1De7zhZj6+H0qtjTkVxwTCpvKe4eCZ0FPqri0cb2JZfXJ/DgYSF6vUp\",\n                \"value_start\": 0,\n                \"value_end\": 76,\n                \"entropy\": 5.38892\n            },\n            {\n                \"line\": \"wmJG8wVQZKjeGcjDOL5UlsuusFncCzWBQ7RKNUSesmQRMSGkVb1/3j+skZ6UtW+5u09lHNsj6tQ5\",\n                \"line_num\": 3,\n                \"path\": \"./tests/samples/pem_key.tar\",\n                \"info\": \"FILE:./tests/samples/pem_key.tar|TAR:./pem_key|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"wmJG8wVQZKjeGcjDOL5UlsuusFncCzWBQ7RKNUSesmQRMSGkVb1/3j+skZ6UtW+5u09lHNsj6tQ5\",\n                \"value_start\": 0,\n                \"value_end\": 76,\n                \"entropy\": 5.21333\n            },\n            {\n                \"line\": \"1s1SPrCBkedbNf0Tp0GbMJDyR4e9T04ZZwIDAQABAoGAFijko56+qGyN8M0RVyaRAXz++xTqHBLh\",\n                \"line_num\": 4,\n                \"path\": \"./tests/samples/pem_key.tar\",\n                \"info\": \"FILE:./tests/samples/pem_key.tar|TAR:./pem_key|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"1s1SPrCBkedbNf0Tp0GbMJDyR4e9T04ZZwIDAQABAoGAFijko56+qGyN8M0RVyaRAXz++xTqHBLh\",\n                \"value_start\": 0,\n                \"value_end\": 76,\n                \"entropy\": 5.32505\n            },\n            {\n                \"line\": \"3tx4VgMtrQ+WEgCjhoTwo23KMBAuJGSYnRmoBZM3lMfTKevIkAidPExvYCdm5dYq3XToLkkLv5L2\",\n                \"line_num\": 5,\n                \"path\": \"./tests/samples/pem_key.tar\",\n                \"info\": \"FILE:./tests/samples/pem_key.tar|TAR:./pem_key|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"3tx4VgMtrQ+WEgCjhoTwo23KMBAuJGSYnRmoBZM3lMfTKevIkAidPExvYCdm5dYq3XToLkkLv5L2\",\n                \"value_start\": 0,\n                \"value_end\": 76,\n                \"entropy\": 5.26728\n            },\n            {\n                \"line\": \"pIIVOFMDG+KESnAFV7l2c+cnzRMW0+b6f8mR1CJzZuxVLL6Q02fvLi55/mbSYxECQQDeAw6fiIQX\",\n                \"line_num\": 6,\n                \"path\": \"./tests/samples/pem_key.tar\",\n                \"info\": \"FILE:./tests/samples/pem_key.tar|TAR:./pem_key|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"pIIVOFMDG+KESnAFV7l2c+cnzRMW0+b6f8mR1CJzZuxVLL6Q02fvLi55/mbSYxECQQDeAw6fiIQX\",\n                \"value_start\": 0,\n                \"value_end\": 76,\n                \"entropy\": 5.29359\n            },\n            {\n                \"line\": \"GukBI4eMZZt4nscy2o12KyYner3VpoeE+Np2q+Z3pvAMd/aNzQ/W9WaI+NRfcxUJrmfPwIGm63il\",\n                \"line_num\": 7,\n                \"path\": \"./tests/samples/pem_key.tar\",\n                \"info\": \"FILE:./tests/samples/pem_key.tar|TAR:./pem_key|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"GukBI4eMZZt4nscy2o12KyYner3VpoeE+Np2q+Z3pvAMd/aNzQ/W9WaI+NRfcxUJrmfPwIGm63il\",\n                \"value_start\": 0,\n                \"value_end\": 76,\n                \"entropy\": 5.40531\n            },\n            {\n                \"line\": \"AkEAxCL5HQb2bQr4ByorcMWm/hEP2MZzROV73yF41hPsRC9m66KrheO9HPTJuo3/9s5p+sqGxOlF\",\n                \"line_num\": 8,\n                \"path\": \"./tests/samples/pem_key.tar\",\n                \"info\": \"FILE:./tests/samples/pem_key.tar|TAR:./pem_key|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"AkEAxCL5HQb2bQr4ByorcMWm/hEP2MZzROV73yF41hPsRC9m66KrheO9HPTJuo3/9s5p+sqGxOlF\",\n                \"value_start\": 0,\n                \"value_end\": 76,\n                \"entropy\": 5.37254\n            },\n            {\n                \"line\": \"L0NDt4SkosjgGwJAFklyR1uZ/wPJjj611cdBcztlPdqoxssQGnh85BzCj/u3WqBpE2vjvyyvyI5k\",\n                \"line_num\": 9,\n                \"path\": \"./tests/samples/pem_key.tar\",\n                \"info\": \"FILE:./tests/samples/pem_key.tar|TAR:./pem_key|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"L0NDt4SkosjgGwJAFklyR1uZ/wPJjj611cdBcztlPdqoxssQGnh85BzCj/u3WqBpE2vjvyyvyI5k\",\n                \"value_start\": 0,\n                \"value_end\": 76,\n                \"entropy\": 5.30866\n            },\n            {\n                \"line\": \"X6zk7S0ljKtt2jny2+00VsBerQJBAJGC1Mg5Oydo5NwD6BiROrPxGo2bpTbu/fhrT8ebHkTz2epl\",\n                \"line_num\": 10,\n                \"path\": \"./tests/samples/pem_key.tar\",\n                \"info\": \"FILE:./tests/samples/pem_key.tar|TAR:./pem_key|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"X6zk7S0ljKtt2jny2+00VsBerQJBAJGC1Mg5Oydo5NwD6BiROrPxGo2bpTbu/fhrT8ebHkTz2epl\",\n                \"value_start\": 0,\n                \"value_end\": 76,\n                \"entropy\": 5.42517\n            },\n            {\n                \"line\": \"U9VQQSQzY1oZMVX8i1m5WUTLPz2yLJIBQVdXqhMCQBGoiuSoSjafUhV7i1cEGpb88h5NBYZzWXGZ\",\n                \"line_num\": 11,\n                \"path\": \"./tests/samples/pem_key.tar\",\n                \"info\": \"FILE:./tests/samples/pem_key.tar|TAR:./pem_key|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"U9VQQSQzY1oZMVX8i1m5WUTLPz2yLJIBQVdXqhMCQBGoiuSoSjafUhV7i1cEGpb88h5NBYZzWXGZ\",\n                \"value_start\": 0,\n                \"value_end\": 76,\n                \"entropy\": 5.10756\n            },\n            {\n                \"line\": \"37sJ5QsW+sJyoNde3xH8vdXhzU7eT82D6X/scw9RZz+/6rCJ4p0=\",\n                \"line_num\": 12,\n                \"path\": \"./tests/samples/pem_key.tar\",\n                \"info\": \"FILE:./tests/samples/pem_key.tar|TAR:./pem_key|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"37sJ5QsW+sJyoNde3xH8vdXhzU7eT82D6X/scw9RZz+/6rCJ4p0=\",\n                \"value_start\": 0,\n                \"value_end\": 52,\n                \"entropy\": 5.07054\n            },\n            {\n                \"line\": \"-----END RSA PRIVATE KEY-----\",\n                \"line_num\": 13,\n                \"path\": \"./tests/samples/pem_key.tar\",\n                \"info\": \"FILE:./tests/samples/pem_key.tar|TAR:./pem_key|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"-----END RSA PRIVATE KEY-----\",\n                \"value_start\": 0,\n                \"value_end\": 29,\n                \"entropy\": 3.24663\n            }\n        ]\n    },\n    {\n        \"rule\": \"PEM Private Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"-----BEGIN RSA PRIVATE KEY-----\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/pem_key.tar\",\n                \"info\": \"FILE:./tests/samples/pem_key.tar|TAR:./target/pem_key|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"-----BEGIN RSA PRIVATE KEY-----\",\n                \"value_start\": 0,\n                \"value_end\": 31,\n                \"entropy\": 3.38229\n            },\n            {\n                \"line\": \"MIICXAIBAAKBgQCqGKukO1De7zhZj6+H0qtjTkVxwTCpvKe4eCZ0FPqri0cb2JZfXJ/DgYSF6vUp\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/pem_key.tar\",\n                \"info\": \"FILE:./tests/samples/pem_key.tar|TAR:./target/pem_key|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"MIICXAIBAAKBgQCqGKukO1De7zhZj6+H0qtjTkVxwTCpvKe4eCZ0FPqri0cb2JZfXJ/DgYSF6vUp\",\n                \"value_start\": 0,\n                \"value_end\": 76,\n                \"entropy\": 5.38892\n            },\n            {\n                \"line\": \"wmJG8wVQZKjeGcjDOL5UlsuusFncCzWBQ7RKNUSesmQRMSGkVb1/3j+skZ6UtW+5u09lHNsj6tQ5\",\n                \"line_num\": 3,\n                \"path\": \"./tests/samples/pem_key.tar\",\n                \"info\": \"FILE:./tests/samples/pem_key.tar|TAR:./target/pem_key|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"wmJG8wVQZKjeGcjDOL5UlsuusFncCzWBQ7RKNUSesmQRMSGkVb1/3j+skZ6UtW+5u09lHNsj6tQ5\",\n                \"value_start\": 0,\n                \"value_end\": 76,\n                \"entropy\": 5.21333\n            },\n            {\n                \"line\": \"1s1SPrCBkedbNf0Tp0GbMJDyR4e9T04ZZwIDAQABAoGAFijko56+qGyN8M0RVyaRAXz++xTqHBLh\",\n                \"line_num\": 4,\n                \"path\": \"./tests/samples/pem_key.tar\",\n                \"info\": \"FILE:./tests/samples/pem_key.tar|TAR:./target/pem_key|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"1s1SPrCBkedbNf0Tp0GbMJDyR4e9T04ZZwIDAQABAoGAFijko56+qGyN8M0RVyaRAXz++xTqHBLh\",\n                \"value_start\": 0,\n                \"value_end\": 76,\n                \"entropy\": 5.32505\n            },\n            {\n                \"line\": \"3tx4VgMtrQ+WEgCjhoTwo23KMBAuJGSYnRmoBZM3lMfTKevIkAidPExvYCdm5dYq3XToLkkLv5L2\",\n                \"line_num\": 5,\n                \"path\": \"./tests/samples/pem_key.tar\",\n                \"info\": \"FILE:./tests/samples/pem_key.tar|TAR:./target/pem_key|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"3tx4VgMtrQ+WEgCjhoTwo23KMBAuJGSYnRmoBZM3lMfTKevIkAidPExvYCdm5dYq3XToLkkLv5L2\",\n                \"value_start\": 0,\n                \"value_end\": 76,\n                \"entropy\": 5.26728\n            },\n            {\n                \"line\": \"pIIVOFMDG+KESnAFV7l2c+cnzRMW0+b6f8mR1CJzZuxVLL6Q02fvLi55/mbSYxECQQDeAw6fiIQX\",\n                \"line_num\": 6,\n                \"path\": \"./tests/samples/pem_key.tar\",\n                \"info\": \"FILE:./tests/samples/pem_key.tar|TAR:./target/pem_key|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"pIIVOFMDG+KESnAFV7l2c+cnzRMW0+b6f8mR1CJzZuxVLL6Q02fvLi55/mbSYxECQQDeAw6fiIQX\",\n                \"value_start\": 0,\n                \"value_end\": 76,\n                \"entropy\": 5.29359\n            },\n            {\n                \"line\": \"GukBI4eMZZt4nscy2o12KyYner3VpoeE+Np2q+Z3pvAMd/aNzQ/W9WaI+NRfcxUJrmfPwIGm63il\",\n                \"line_num\": 7,\n                \"path\": \"./tests/samples/pem_key.tar\",\n                \"info\": \"FILE:./tests/samples/pem_key.tar|TAR:./target/pem_key|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"GukBI4eMZZt4nscy2o12KyYner3VpoeE+Np2q+Z3pvAMd/aNzQ/W9WaI+NRfcxUJrmfPwIGm63il\",\n                \"value_start\": 0,\n                \"value_end\": 76,\n                \"entropy\": 5.40531\n            },\n            {\n                \"line\": \"AkEAxCL5HQb2bQr4ByorcMWm/hEP2MZzROV73yF41hPsRC9m66KrheO9HPTJuo3/9s5p+sqGxOlF\",\n                \"line_num\": 8,\n                \"path\": \"./tests/samples/pem_key.tar\",\n                \"info\": \"FILE:./tests/samples/pem_key.tar|TAR:./target/pem_key|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"AkEAxCL5HQb2bQr4ByorcMWm/hEP2MZzROV73yF41hPsRC9m66KrheO9HPTJuo3/9s5p+sqGxOlF\",\n                \"value_start\": 0,\n                \"value_end\": 76,\n                \"entropy\": 5.37254\n            },\n            {\n                \"line\": \"L0NDt4SkosjgGwJAFklyR1uZ/wPJjj611cdBcztlPdqoxssQGnh85BzCj/u3WqBpE2vjvyyvyI5k\",\n                \"line_num\": 9,\n                \"path\": \"./tests/samples/pem_key.tar\",\n                \"info\": \"FILE:./tests/samples/pem_key.tar|TAR:./target/pem_key|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"L0NDt4SkosjgGwJAFklyR1uZ/wPJjj611cdBcztlPdqoxssQGnh85BzCj/u3WqBpE2vjvyyvyI5k\",\n                \"value_start\": 0,\n                \"value_end\": 76,\n                \"entropy\": 5.30866\n            },\n            {\n                \"line\": \"X6zk7S0ljKtt2jny2+00VsBerQJBAJGC1Mg5Oydo5NwD6BiROrPxGo2bpTbu/fhrT8ebHkTz2epl\",\n                \"line_num\": 10,\n                \"path\": \"./tests/samples/pem_key.tar\",\n                \"info\": \"FILE:./tests/samples/pem_key.tar|TAR:./target/pem_key|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"X6zk7S0ljKtt2jny2+00VsBerQJBAJGC1Mg5Oydo5NwD6BiROrPxGo2bpTbu/fhrT8ebHkTz2epl\",\n                \"value_start\": 0,\n                \"value_end\": 76,\n                \"entropy\": 5.42517\n            },\n            {\n                \"line\": \"U9VQQSQzY1oZMVX8i1m5WUTLPz2yLJIBQVdXqhMCQBGoiuSoSjafUhV7i1cEGpb88h5NBYZzWXGZ\",\n                \"line_num\": 11,\n                \"path\": \"./tests/samples/pem_key.tar\",\n                \"info\": \"FILE:./tests/samples/pem_key.tar|TAR:./target/pem_key|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"U9VQQSQzY1oZMVX8i1m5WUTLPz2yLJIBQVdXqhMCQBGoiuSoSjafUhV7i1cEGpb88h5NBYZzWXGZ\",\n                \"value_start\": 0,\n                \"value_end\": 76,\n                \"entropy\": 5.10756\n            },\n            {\n                \"line\": \"37sJ5QsW+sJyoNde3xH8vdXhzU7eT82D6X/scw9RZz+/6rCJ4p0=\",\n                \"line_num\": 12,\n                \"path\": \"./tests/samples/pem_key.tar\",\n                \"info\": \"FILE:./tests/samples/pem_key.tar|TAR:./target/pem_key|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"37sJ5QsW+sJyoNde3xH8vdXhzU7eT82D6X/scw9RZz+/6rCJ4p0=\",\n                \"value_start\": 0,\n                \"value_end\": 52,\n                \"entropy\": 5.07054\n            },\n            {\n                \"line\": \"-----END RSA PRIVATE KEY-----\",\n                \"line_num\": 13,\n                \"path\": \"./tests/samples/pem_key.tar\",\n                \"info\": \"FILE:./tests/samples/pem_key.tar|TAR:./target/pem_key|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"-----END RSA PRIVATE KEY-----\",\n                \"value_start\": 0,\n                \"value_end\": 29,\n                \"entropy\": 3.24663\n            }\n        ]\n    },\n    {\n        \"rule\": \"PEM Private Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"-----BEGIN RSA PRIVATE KEY-----\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/pem_key.tar\",\n                \"info\": \"FILE:./tests/samples/pem_key.tar|TAR:./venv/pem_key|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"-----BEGIN RSA PRIVATE KEY-----\",\n                \"value_start\": 0,\n                \"value_end\": 31,\n                \"entropy\": 3.38229\n            },\n            {\n                \"line\": \"MIICXAIBAAKBgQCqGKukO1De7zhZj6+H0qtjTkVxwTCpvKe4eCZ0FPqri0cb2JZfXJ/DgYSF6vUp\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/pem_key.tar\",\n                \"info\": \"FILE:./tests/samples/pem_key.tar|TAR:./venv/pem_key|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"MIICXAIBAAKBgQCqGKukO1De7zhZj6+H0qtjTkVxwTCpvKe4eCZ0FPqri0cb2JZfXJ/DgYSF6vUp\",\n                \"value_start\": 0,\n                \"value_end\": 76,\n                \"entropy\": 5.38892\n            },\n            {\n                \"line\": \"wmJG8wVQZKjeGcjDOL5UlsuusFncCzWBQ7RKNUSesmQRMSGkVb1/3j+skZ6UtW+5u09lHNsj6tQ5\",\n                \"line_num\": 3,\n                \"path\": \"./tests/samples/pem_key.tar\",\n                \"info\": \"FILE:./tests/samples/pem_key.tar|TAR:./venv/pem_key|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"wmJG8wVQZKjeGcjDOL5UlsuusFncCzWBQ7RKNUSesmQRMSGkVb1/3j+skZ6UtW+5u09lHNsj6tQ5\",\n                \"value_start\": 0,\n                \"value_end\": 76,\n                \"entropy\": 5.21333\n            },\n            {\n                \"line\": \"1s1SPrCBkedbNf0Tp0GbMJDyR4e9T04ZZwIDAQABAoGAFijko56+qGyN8M0RVyaRAXz++xTqHBLh\",\n                \"line_num\": 4,\n                \"path\": \"./tests/samples/pem_key.tar\",\n                \"info\": \"FILE:./tests/samples/pem_key.tar|TAR:./venv/pem_key|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"1s1SPrCBkedbNf0Tp0GbMJDyR4e9T04ZZwIDAQABAoGAFijko56+qGyN8M0RVyaRAXz++xTqHBLh\",\n                \"value_start\": 0,\n                \"value_end\": 76,\n                \"entropy\": 5.32505\n            },\n            {\n                \"line\": \"3tx4VgMtrQ+WEgCjhoTwo23KMBAuJGSYnRmoBZM3lMfTKevIkAidPExvYCdm5dYq3XToLkkLv5L2\",\n                \"line_num\": 5,\n                \"path\": \"./tests/samples/pem_key.tar\",\n                \"info\": \"FILE:./tests/samples/pem_key.tar|TAR:./venv/pem_key|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"3tx4VgMtrQ+WEgCjhoTwo23KMBAuJGSYnRmoBZM3lMfTKevIkAidPExvYCdm5dYq3XToLkkLv5L2\",\n                \"value_start\": 0,\n                \"value_end\": 76,\n                \"entropy\": 5.26728\n            },\n            {\n                \"line\": \"pIIVOFMDG+KESnAFV7l2c+cnzRMW0+b6f8mR1CJzZuxVLL6Q02fvLi55/mbSYxECQQDeAw6fiIQX\",\n                \"line_num\": 6,\n                \"path\": \"./tests/samples/pem_key.tar\",\n                \"info\": \"FILE:./tests/samples/pem_key.tar|TAR:./venv/pem_key|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"pIIVOFMDG+KESnAFV7l2c+cnzRMW0+b6f8mR1CJzZuxVLL6Q02fvLi55/mbSYxECQQDeAw6fiIQX\",\n                \"value_start\": 0,\n                \"value_end\": 76,\n                \"entropy\": 5.29359\n            },\n            {\n                \"line\": \"GukBI4eMZZt4nscy2o12KyYner3VpoeE+Np2q+Z3pvAMd/aNzQ/W9WaI+NRfcxUJrmfPwIGm63il\",\n                \"line_num\": 7,\n                \"path\": \"./tests/samples/pem_key.tar\",\n                \"info\": \"FILE:./tests/samples/pem_key.tar|TAR:./venv/pem_key|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"GukBI4eMZZt4nscy2o12KyYner3VpoeE+Np2q+Z3pvAMd/aNzQ/W9WaI+NRfcxUJrmfPwIGm63il\",\n                \"value_start\": 0,\n                \"value_end\": 76,\n                \"entropy\": 5.40531\n            },\n            {\n                \"line\": \"AkEAxCL5HQb2bQr4ByorcMWm/hEP2MZzROV73yF41hPsRC9m66KrheO9HPTJuo3/9s5p+sqGxOlF\",\n                \"line_num\": 8,\n                \"path\": \"./tests/samples/pem_key.tar\",\n                \"info\": \"FILE:./tests/samples/pem_key.tar|TAR:./venv/pem_key|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"AkEAxCL5HQb2bQr4ByorcMWm/hEP2MZzROV73yF41hPsRC9m66KrheO9HPTJuo3/9s5p+sqGxOlF\",\n                \"value_start\": 0,\n                \"value_end\": 76,\n                \"entropy\": 5.37254\n            },\n            {\n                \"line\": \"L0NDt4SkosjgGwJAFklyR1uZ/wPJjj611cdBcztlPdqoxssQGnh85BzCj/u3WqBpE2vjvyyvyI5k\",\n                \"line_num\": 9,\n                \"path\": \"./tests/samples/pem_key.tar\",\n                \"info\": \"FILE:./tests/samples/pem_key.tar|TAR:./venv/pem_key|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"L0NDt4SkosjgGwJAFklyR1uZ/wPJjj611cdBcztlPdqoxssQGnh85BzCj/u3WqBpE2vjvyyvyI5k\",\n                \"value_start\": 0,\n                \"value_end\": 76,\n                \"entropy\": 5.30866\n            },\n            {\n                \"line\": \"X6zk7S0ljKtt2jny2+00VsBerQJBAJGC1Mg5Oydo5NwD6BiROrPxGo2bpTbu/fhrT8ebHkTz2epl\",\n                \"line_num\": 10,\n                \"path\": \"./tests/samples/pem_key.tar\",\n                \"info\": \"FILE:./tests/samples/pem_key.tar|TAR:./venv/pem_key|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"X6zk7S0ljKtt2jny2+00VsBerQJBAJGC1Mg5Oydo5NwD6BiROrPxGo2bpTbu/fhrT8ebHkTz2epl\",\n                \"value_start\": 0,\n                \"value_end\": 76,\n                \"entropy\": 5.42517\n            },\n            {\n                \"line\": \"U9VQQSQzY1oZMVX8i1m5WUTLPz2yLJIBQVdXqhMCQBGoiuSoSjafUhV7i1cEGpb88h5NBYZzWXGZ\",\n                \"line_num\": 11,\n                \"path\": \"./tests/samples/pem_key.tar\",\n                \"info\": \"FILE:./tests/samples/pem_key.tar|TAR:./venv/pem_key|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"U9VQQSQzY1oZMVX8i1m5WUTLPz2yLJIBQVdXqhMCQBGoiuSoSjafUhV7i1cEGpb88h5NBYZzWXGZ\",\n                \"value_start\": 0,\n                \"value_end\": 76,\n                \"entropy\": 5.10756\n            },\n            {\n                \"line\": \"37sJ5QsW+sJyoNde3xH8vdXhzU7eT82D6X/scw9RZz+/6rCJ4p0=\",\n                \"line_num\": 12,\n                \"path\": \"./tests/samples/pem_key.tar\",\n                \"info\": \"FILE:./tests/samples/pem_key.tar|TAR:./venv/pem_key|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"37sJ5QsW+sJyoNde3xH8vdXhzU7eT82D6X/scw9RZz+/6rCJ4p0=\",\n                \"value_start\": 0,\n                \"value_end\": 52,\n                \"entropy\": 5.07054\n            },\n            {\n                \"line\": \"-----END RSA PRIVATE KEY-----\",\n                \"line_num\": 13,\n                \"path\": \"./tests/samples/pem_key.tar\",\n                \"info\": \"FILE:./tests/samples/pem_key.tar|TAR:./venv/pem_key|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"-----END RSA PRIVATE KEY-----\",\n                \"value_start\": 0,\n                \"value_end\": 29,\n                \"entropy\": 3.24663\n            }\n        ]\n    },\n    {\n        \"rule\": \"PEM Private Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"-----BEGIN RSA PRIVATE KEY-----\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/pem_key.zip\",\n                \"info\": \"FILE:./tests/samples/pem_key.zip|ZIP:cred/pem_key.zip|ZIP:key.pem|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"-----BEGIN RSA PRIVATE KEY-----\",\n                \"value_start\": 0,\n                \"value_end\": 31,\n                \"entropy\": 3.38229\n            },\n            {\n                \"line\": \"MIICXAIBAAKBgQCqGKukO1De7zhZj6+H0qtjTkVxwTCpvKe4eCZ0FPqri0cb2JZfXJ/DgYSF6vUp\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/pem_key.zip\",\n                \"info\": \"FILE:./tests/samples/pem_key.zip|ZIP:cred/pem_key.zip|ZIP:key.pem|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"MIICXAIBAAKBgQCqGKukO1De7zhZj6+H0qtjTkVxwTCpvKe4eCZ0FPqri0cb2JZfXJ/DgYSF6vUp\",\n                \"value_start\": 0,\n                \"value_end\": 76,\n                \"entropy\": 5.38892\n            },\n            {\n                \"line\": \"wmJG8wVQZKjeGcjDOL5UlsuusFncCzWBQ7RKNUSesmQRMSGkVb1/3j+skZ6UtW+5u09lHNsj6tQ5\",\n                \"line_num\": 3,\n                \"path\": \"./tests/samples/pem_key.zip\",\n                \"info\": \"FILE:./tests/samples/pem_key.zip|ZIP:cred/pem_key.zip|ZIP:key.pem|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"wmJG8wVQZKjeGcjDOL5UlsuusFncCzWBQ7RKNUSesmQRMSGkVb1/3j+skZ6UtW+5u09lHNsj6tQ5\",\n                \"value_start\": 0,\n                \"value_end\": 76,\n                \"entropy\": 5.21333\n            },\n            {\n                \"line\": \"1s1SPrCBkedbNf0Tp0GbMJDyR4e9T04ZZwIDAQABAoGAFijko56+qGyN8M0RVyaRAXz++xTqHBLh\",\n                \"line_num\": 4,\n                \"path\": \"./tests/samples/pem_key.zip\",\n                \"info\": \"FILE:./tests/samples/pem_key.zip|ZIP:cred/pem_key.zip|ZIP:key.pem|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"1s1SPrCBkedbNf0Tp0GbMJDyR4e9T04ZZwIDAQABAoGAFijko56+qGyN8M0RVyaRAXz++xTqHBLh\",\n                \"value_start\": 0,\n                \"value_end\": 76,\n                \"entropy\": 5.32505\n            },\n            {\n                \"line\": \"3tx4VgMtrQ+WEgCjhoTwo23KMBAuJGSYnRmoBZM3lMfTKevIkAidPExvYCdm5dYq3XToLkkLv5L2\",\n                \"line_num\": 5,\n                \"path\": \"./tests/samples/pem_key.zip\",\n                \"info\": \"FILE:./tests/samples/pem_key.zip|ZIP:cred/pem_key.zip|ZIP:key.pem|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"3tx4VgMtrQ+WEgCjhoTwo23KMBAuJGSYnRmoBZM3lMfTKevIkAidPExvYCdm5dYq3XToLkkLv5L2\",\n                \"value_start\": 0,\n                \"value_end\": 76,\n                \"entropy\": 5.26728\n            },\n            {\n                \"line\": \"pIIVOFMDG+KESnAFV7l2c+cnzRMW0+b6f8mR1CJzZuxVLL6Q02fvLi55/mbSYxECQQDeAw6fiIQX\",\n                \"line_num\": 6,\n                \"path\": \"./tests/samples/pem_key.zip\",\n                \"info\": \"FILE:./tests/samples/pem_key.zip|ZIP:cred/pem_key.zip|ZIP:key.pem|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"pIIVOFMDG+KESnAFV7l2c+cnzRMW0+b6f8mR1CJzZuxVLL6Q02fvLi55/mbSYxECQQDeAw6fiIQX\",\n                \"value_start\": 0,\n                \"value_end\": 76,\n                \"entropy\": 5.29359\n            },\n            {\n                \"line\": \"GukBI4eMZZt4nscy2o12KyYner3VpoeE+Np2q+Z3pvAMd/aNzQ/W9WaI+NRfcxUJrmfPwIGm63il\",\n                \"line_num\": 7,\n                \"path\": \"./tests/samples/pem_key.zip\",\n                \"info\": \"FILE:./tests/samples/pem_key.zip|ZIP:cred/pem_key.zip|ZIP:key.pem|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"GukBI4eMZZt4nscy2o12KyYner3VpoeE+Np2q+Z3pvAMd/aNzQ/W9WaI+NRfcxUJrmfPwIGm63il\",\n                \"value_start\": 0,\n                \"value_end\": 76,\n                \"entropy\": 5.40531\n            },\n            {\n                \"line\": \"AkEAxCL5HQb2bQr4ByorcMWm/hEP2MZzROV73yF41hPsRC9m66KrheO9HPTJuo3/9s5p+sqGxOlF\",\n                \"line_num\": 8,\n                \"path\": \"./tests/samples/pem_key.zip\",\n                \"info\": \"FILE:./tests/samples/pem_key.zip|ZIP:cred/pem_key.zip|ZIP:key.pem|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"AkEAxCL5HQb2bQr4ByorcMWm/hEP2MZzROV73yF41hPsRC9m66KrheO9HPTJuo3/9s5p+sqGxOlF\",\n                \"value_start\": 0,\n                \"value_end\": 76,\n                \"entropy\": 5.37254\n            },\n            {\n                \"line\": \"L0NDt4SkosjgGwJAFklyR1uZ/wPJjj611cdBcztlPdqoxssQGnh85BzCj/u3WqBpE2vjvyyvyI5k\",\n                \"line_num\": 9,\n                \"path\": \"./tests/samples/pem_key.zip\",\n                \"info\": \"FILE:./tests/samples/pem_key.zip|ZIP:cred/pem_key.zip|ZIP:key.pem|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"L0NDt4SkosjgGwJAFklyR1uZ/wPJjj611cdBcztlPdqoxssQGnh85BzCj/u3WqBpE2vjvyyvyI5k\",\n                \"value_start\": 0,\n                \"value_end\": 76,\n                \"entropy\": 5.30866\n            },\n            {\n                \"line\": \"X6zk7S0ljKtt2jny2+00VsBerQJBAJGC1Mg5Oydo5NwD6BiROrPxGo2bpTbu/fhrT8ebHkTz2epl\",\n                \"line_num\": 10,\n                \"path\": \"./tests/samples/pem_key.zip\",\n                \"info\": \"FILE:./tests/samples/pem_key.zip|ZIP:cred/pem_key.zip|ZIP:key.pem|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"X6zk7S0ljKtt2jny2+00VsBerQJBAJGC1Mg5Oydo5NwD6BiROrPxGo2bpTbu/fhrT8ebHkTz2epl\",\n                \"value_start\": 0,\n                \"value_end\": 76,\n                \"entropy\": 5.42517\n            },\n            {\n                \"line\": \"U9VQQSQzY1oZMVX8i1m5WUTLPz2yLJIBQVdXqhMCQBGoiuSoSjafUhV7i1cEGpb88h5NBYZzWXGZ\",\n                \"line_num\": 11,\n                \"path\": \"./tests/samples/pem_key.zip\",\n                \"info\": \"FILE:./tests/samples/pem_key.zip|ZIP:cred/pem_key.zip|ZIP:key.pem|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"U9VQQSQzY1oZMVX8i1m5WUTLPz2yLJIBQVdXqhMCQBGoiuSoSjafUhV7i1cEGpb88h5NBYZzWXGZ\",\n                \"value_start\": 0,\n                \"value_end\": 76,\n                \"entropy\": 5.10756\n            },\n            {\n                \"line\": \"37sJ5QsW+sJyoNde3xH8vdXhzU7eT82D6X/scw9RZz+/6rCJ4p0=\",\n                \"line_num\": 12,\n                \"path\": \"./tests/samples/pem_key.zip\",\n                \"info\": \"FILE:./tests/samples/pem_key.zip|ZIP:cred/pem_key.zip|ZIP:key.pem|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"37sJ5QsW+sJyoNde3xH8vdXhzU7eT82D6X/scw9RZz+/6rCJ4p0=\",\n                \"value_start\": 0,\n                \"value_end\": 52,\n                \"entropy\": 5.07054\n            },\n            {\n                \"line\": \"-----END RSA PRIVATE KEY-----\",\n                \"line_num\": 13,\n                \"path\": \"./tests/samples/pem_key.zip\",\n                \"info\": \"FILE:./tests/samples/pem_key.zip|ZIP:cred/pem_key.zip|ZIP:key.pem|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"-----END RSA PRIVATE KEY-----\",\n                \"value_start\": 0,\n                \"value_end\": 29,\n                \"entropy\": 3.24663\n            }\n        ]\n    },\n    {\n        \"rule\": \"PayPal Braintree Access Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"access_token$production$gireogi121451781$abcaeaabadef01134517891121451781\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/pem_key.zip\",\n                \"info\": \"FILE:./tests/samples/pem_key.zip|ZIP:.git/paypal_key|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"access_token$production$gireogi121451781$abcaeaabadef01134517891121451781\",\n                \"value_start\": 0,\n                \"value_end\": 73,\n                \"entropy\": 4.39985\n            }\n        ]\n    },\n    {\n        \"rule\": \"Jfrog Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"cmVmdGtuOjAxOjAxMjM0NTY3ODk6QWJjZGVmR2hpamtsbW5vUHFyc3R1dnd4eXow\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/pem_key.zip\",\n                \"info\": \"FILE:./tests/samples/pem_key.zip|ZIP:3.zip|ZIP:2.zip|ZIP:2|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"cmVmdGtuOjAxOjAxMjM0NTY3ODk6QWJjZGVmR2hpamtsbW5vUHFyc3R1dnd4eXow\",\n                \"value_start\": 0,\n                \"value_end\": 64,\n                \"entropy\": 5.28891\n            }\n        ]\n    },\n    {\n        \"rule\": \"Perplexity API Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"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\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/perplexity\",\n                \"info\": \"FILE:./tests/samples/perplexity|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"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\",\n                \"value_start\": 0,\n                \"value_end\": 53,\n                \"entropy\": 5.08142\n            }\n        ]\n    },\n    {\n        \"rule\": \"Picatic API Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"sk_live_gireogicracklegireogicrackle1231\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/picatic_key\",\n                \"info\": \"FILE:./tests/samples/picatic_key|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"sk_live_gireogicracklegireogicrackle1231\",\n                \"value_start\": 0,\n                \"value_end\": 40,\n                \"entropy\": 3.7037\n            }\n        ]\n    },\n    {\n        \"rule\": \"Stripe Credentials\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"sk_live_gireogicracklegireogicrackle1231\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/picatic_key\",\n                \"info\": \"FILE:./tests/samples/picatic_key|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"sk_live_gireogicracklegireogicrackle1231\",\n                \"value_start\": 0,\n                \"value_end\": 40,\n                \"entropy\": 3.7037\n            }\n        ]\n    },\n    {\n        \"rule\": \"PKCS with password 'changeme'\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"MIIFNgIBAzCCBOwGCSqGSIb3DQEHAaCCBN0EggTZMIIE1TCCApIGCSqGSIb3DQEHBqCCAoMwggJ/AgEAMIICeAYJKoZIhvcNAQcBMFcGCSqGSIb3DQEFDTBKMCkGCSqGSIb3DQEFDDAcBAhknVwZ/8XABAICCAAwDAYIKoZIhvcNAgkFADAdBglghkgBZQMEASoEECI9IqqZ3J6xUKkiXcNZCaGAggIQrWgdiM7DBZIyAS6mocBSb/giKZLPMq23x1nZNdf4mkjEk2nLjNbtA09n8d/2FxBvFKLQfxZfxtq76HzaTlCvVz8PhcGPhHumOXUAzBtT3Mv4WDmub/1pAZsjInN6K+CCQlb7tPLy8OlHHHP5HYET6LXUUy1RcslDJNJdb9YDlhjhFOoGgd7fApnFAwsjQDjNVT/DCnuQQHrSylezYZP6HM4Sf7INrdbHviJU/K0Ac1hBDXrndhaOWEGnaKXknycIZqN0HgftdUjiujPhI0XdIE008U+6hxibTe/Okdn6URlmOtbuXOFQFYO7nAN8wOW2/n1nZSQkZflV7P0+Vq2Ce4tfCUCyj+pJuuKygGA6D4gUoY74N4LGjDHvzjY00f5htdQ3WRAXcuG1zsORsjOhRB8Ag5tKOYCMQF9GMhFQfhZwg07zaZS7dU8fyvIPFYSAynr7Uef6GMkvZyw8DF6dku4X/Jgm/h9b7jb7x289hjowUYVYZ7/+KQPdH2Pj68BrUxtFFc118W1P1FE4huYe11KfRBgGy2NugCCPkExKfQrFPRM32hGd+2AMTrfpVoBkY1Dj4IKwEKIufSTnyvtl+MIMB2cwumD/A/IVksr9qV7ptfwuZl1pzqkZIUAoVgDs8gqul/YOT9g0QWydP/Vwh30v/6RAmwAEUhTydhag2fP5JQguoVQXcHPYgYfIqjf+MIICOwYJKoZIhvcNAQcBoIICLASCAigwggIkMIICIAYLKoZIhvcNAQwKAQKgggHBMIIBvTBXBgkqhkiG9w0BBQ0wSjApBgkqhkiG9w0BBQwwHAQIA0VVM4PAVxMCAggAMAwGCCqGSIb3DQIJBQAwHQYJYIZIAWUDBAEqBBA5WjHZFqFYRnvekUsb7V82BIIBYG5T1b/dWIkUslM7f7tmQy4vPlOeFDZv5U437Af9ZfrseIAiPXPXKUsQubwme2PH5cZQYV3AZY/6INPfSrhNw+feHGeSAYRmjugB8vEfaTV0Lml6MPi+sn+SaBGLYDNYRv8i4fb+V/cgUMGvVpMMKhDBiGrjjmC4d/R/asEcD3GhJSerfECS1pg/CWckL8l86jwF+DbX90+xe1ReJ4c/64bnQzRbRKTQdu7bIbAuZjfbBd8a3zsRawmH9uIE4RYNN9wHOSarwzKCT5JYMVBHv/tXqpxT12Z9z1sovAATo6JHIJ8x9qvmw3Yv7q20Vt5s/h8O8RiFefJS8hWd0gX85oTpOO2mww0NmbPgH0At2VHPItK5HA4pM5/qPjSp0netZoaKrdJypSbMJfAjG99FmZgp3MLQYphYRbM6g7RhWCeW4mM6pvqrk6YKWBsMKPQPnLD25pMfrnjR0LG0FnEClQ8xTDAjBgkqhkiG9w0BCRUxFgQUGY0PlBhhh6+fjx21HWim3e+syDowJQYJKoZIhvcNAQkUMRgeFgBlAHgAYQBtAHAAbABlAC4AYwBvAG0wQTAxMA0GCWCGSAFlAwQCAQUABCBb+Q7hc25Mh35RU/6qtG8NxT87qGEE8yzsqZzIOG9iogQIO3wdxp2pvhECAggA\",\n                \"line_num\": 0,\n                \"path\": \"./tests/samples/pkcs12.changeme.p12\",\n                \"info\": \"FILE:./tests/samples/pkcs12.changeme.p12|PKCS_PASSWORD:b'changeme'\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"b'changeme'\",\n                \"value_start\": -2,\n                \"value_end\": -2,\n                \"entropy\": 3.0958\n            }\n        ]\n    },\n    {\n        \"rule\": \"PostHog Credentials\",\n        \"severity\": \"medium\",\n        \"confidence\": \"weak\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"phc_cJMqv5nG7Qtd0sfIwasTG87lgnDfJVbrcOOAZMOf\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/posthog\",\n                \"info\": \"FILE:./tests/samples/posthog|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"phc_cJMqv5nG7Qtd0sfIwasTG87lgnDfJVbrcOOAZMOf\",\n                \"value_start\": 0,\n                \"value_end\": 44,\n                \"entropy\": 4.86251\n            }\n        ]\n    },\n    {\n        \"rule\": \"PostHog Credentials\",\n        \"severity\": \"medium\",\n        \"confidence\": \"weak\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"phs_dNrZRd5etgv1B1gRTkfUrTJnf0EaZ5r6hUouJgXtWwFTrq\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/posthog\",\n                \"info\": \"FILE:./tests/samples/posthog|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"phs_dNrZRd5etgv1B1gRTkfUrTJnf0EaZ5r6hUouJgXtWwFTrq\",\n                \"value_start\": 0,\n                \"value_end\": 50,\n                \"entropy\": 4.89366\n            }\n        ]\n    },\n    {\n        \"rule\": \"PostHog Credentials\",\n        \"severity\": \"medium\",\n        \"confidence\": \"weak\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"phr_dNrZRd5etgv1B1gRTKedUjAkFCcvNdBLoQz4W8GCYEVUySGUt\",\n                \"line_num\": 3,\n                \"path\": \"./tests/samples/posthog\",\n                \"info\": \"FILE:./tests/samples/posthog|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"phr_dNrZRd5etgv1B1gRTKedUjAkFCcvNdBLoQz4W8GCYEVUySGUt\",\n                \"value_start\": 0,\n                \"value_end\": 53,\n                \"entropy\": 5.07217\n            }\n        ]\n    },\n    {\n        \"rule\": \"PostHog Credentials\",\n        \"severity\": \"medium\",\n        \"confidence\": \"weak\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"pha_BkeaIpOESh8OGcD1bhPGh6kH9UjVGp6nnaC6vF4E7q9TcJr7GapdQMVDX\",\n                \"line_num\": 4,\n                \"path\": \"./tests/samples/posthog\",\n                \"info\": \"FILE:./tests/samples/posthog|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"pha_BkeaIpOESh8OGcD1bhPGh6kH9UjVGp6nnaC6vF4E7q9TcJr7GapdQMVDX\",\n                \"value_start\": 0,\n                \"value_end\": 61,\n                \"entropy\": 5.03312\n            }\n        ]\n    },\n    {\n        \"rule\": \"PostHog Credentials\",\n        \"severity\": \"medium\",\n        \"confidence\": \"weak\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"phx_5nYpKltuz4gvt7LessoO3swaOH41RJh6pzT1x1NoeTrKbTuAaxtVMA7JmMxp\",\n                \"line_num\": 5,\n                \"path\": \"./tests/samples/posthog\",\n                \"info\": \"FILE:./tests/samples/posthog|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"phx_5nYpKltuz4gvt7LessoO3swaOH41RJh6pzT1x1NoeTrKbTuAaxtVMA7JmMxp\",\n                \"value_start\": 0,\n                \"value_end\": 64,\n                \"entropy\": 5.04657\n            }\n        ]\n    },\n    {\n        \"rule\": \"Postman Credentials\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"PMAK-be68a955d73619000f121d77-1d6ce2aa99d4b222bcc9fc01f345cf3168\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/postman\",\n                \"info\": \"FILE:./tests/samples/postman|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"PMAK-be68a955d73619000f121d77-1d6ce2aa99d4b222bcc9fc01f345cf3168\",\n                \"value_start\": 0,\n                \"value_end\": 64,\n                \"entropy\": 4.21698\n            }\n        ]\n    },\n    {\n        \"rule\": \"Postman Credentials\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"PMAT-9GP54SGZ7TS928P0BW1K3AN0WX\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/postman\",\n                \"info\": \"FILE:./tests/samples/postman|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"PMAT-9GP54SGZ7TS928P0BW1K3AN0WX\",\n                \"value_start\": 0,\n                \"value_end\": 31,\n                \"entropy\": 4.3492\n            }\n        ]\n    },\n    {\n        \"rule\": \"UUID\",\n        \"severity\": \"info\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"Print, crumple, throw away. line # 10 a0572bc9-7a3e-beef-cafe-9129474bcd81\",\n                \"line_num\": 10,\n                \"path\": \"./tests/samples/pretty.html\",\n                \"info\": \"FILE:./tests/samples/pretty.html|HTML\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"a0572bc9-7a3e-beef-cafe-9129474bcd81\",\n                \"value_start\": 38,\n                \"value_end\": 74,\n                \"entropy\": 3.84286\n            }\n        ]\n    },\n    {\n        \"rule\": \"Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"http://localhost:8888/v1/api/get?token=zUkITxodk63bDVUMwIymb3zKTxICz85zC00cv0Gel1nE8O\",\n                \"line_num\": 80,\n                \"path\": \"./tests/samples/pretty.html\",\n                \"info\": \"FILE:./tests/samples/pretty.html|HTML\",\n                \"variable\": \"token\",\n                \"variable_start\": 33,\n                \"variable_end\": 38,\n                \"value\": \"zUkITxodk63bDVUMwIymb3zKTxICz85zC00cv0Gel1nE8O\",\n                \"value_start\": 39,\n                \"value_end\": 85,\n                \"entropy\": 4.79509\n            }\n        ]\n    },\n    {\n        \"rule\": \"Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"http://localhost:8888/v1/api/get?token=zUkITxodk63bDVUMwIymb3zKTxICz85zC00cv0Gel1nE8O\",\n                \"line_num\": 80,\n                \"path\": \"./tests/samples/pretty.html\",\n                \"info\": \"FILE:./tests/samples/pretty.html|HTML\",\n                \"variable\": \"token\",\n                \"variable_start\": 33,\n                \"variable_end\": 38,\n                \"value\": \"zUkITxodk63bDVUMwIymb3zKTxICz85zC00cv0Gel1nE8O\",\n                \"value_start\": 39,\n                \"value_end\": 85,\n                \"entropy\": 4.79509\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.859,\n        \"line_data_list\": [\n            {\n                \"line\": \"id/pass : user/Jid8^5gvB\",\n                \"line_num\": 133,\n                \"path\": \"./tests/samples/pretty.html\",\n                \"info\": \"FILE:./tests/samples/pretty.html|HTML\",\n                \"variable\": \"pass\",\n                \"variable_start\": 3,\n                \"variable_end\": 7,\n                \"value\": \"user/Jid8^5gvB\",\n                \"value_start\": 10,\n                \"value_end\": 24,\n                \"entropy\": 3.80735\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.998,\n        \"line_data_list\": [\n            {\n                \"line\": \"147# password: Jd3OnNy^564eD5_sd\",\n                \"line_num\": 147,\n                \"path\": \"./tests/samples/pretty.html\",\n                \"info\": \"FILE:./tests/samples/pretty.html|HTML\",\n                \"variable\": \"password\",\n                \"variable_start\": 5,\n                \"variable_end\": 13,\n                \"value\": \"Jd3OnNy^564eD5_sd\",\n                \"value_start\": 15,\n                \"value_end\": 32,\n                \"entropy\": 3.85217\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.998,\n        \"line_data_list\": [\n            {\n                \"line\": \"147# password: Jd3OnNy^564eD5_sd\",\n                \"line_num\": 147,\n                \"path\": \"./tests/samples/pretty.html\",\n                \"info\": \"FILE:./tests/samples/pretty.html|HTML\",\n                \"variable\": \"password\",\n                \"variable_start\": 5,\n                \"variable_end\": 13,\n                \"value\": \"Jd3OnNy^564eD5_sd\",\n                \"value_start\": 15,\n                \"value_end\": 32,\n                \"entropy\": 3.85217\n            }\n        ]\n    },\n    {\n        \"rule\": \"UUID\",\n        \"severity\": \"info\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"151# a0ce4d19-7a3e-beef-cafe-9129474bcd81\",\n                \"line_num\": 151,\n                \"path\": \"./tests/samples/pretty.html\",\n                \"info\": \"FILE:./tests/samples/pretty.html|HTML\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"a0ce4d19-7a3e-beef-cafe-9129474bcd81\",\n                \"value_start\": 5,\n                \"value_end\": 41,\n                \"entropy\": 3.74259\n            }\n        ]\n    },\n    {\n        \"rule\": \"UUID\",\n        \"severity\": \"info\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"151# a0ce4d19-7a3e-beef-cafe-9129474bcd81\",\n                \"line_num\": 151,\n                \"path\": \"./tests/samples/pretty.html\",\n                \"info\": \"FILE:./tests/samples/pretty.html|HTML\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"a0ce4d19-7a3e-beef-cafe-9129474bcd81\",\n                \"value_start\": 5,\n                \"value_end\": 41,\n                \"entropy\": 3.74259\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.929,\n        \"line_data_list\": [\n            {\n                \"line\": \"pwd = \\\"cackle!\\\"\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/pwd.gradle\",\n                \"info\": \"FILE:./tests/samples/pwd.gradle|RAW\",\n                \"variable\": \"pwd\",\n                \"variable_start\": 0,\n                \"variable_end\": 3,\n                \"value\": \"cackle!\",\n                \"value_start\": 7,\n                \"value_end\": 14,\n                \"entropy\": 2.52164\n            }\n        ]\n    },\n    {\n        \"rule\": \"PyPi API Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"pypi-AgEIcHlvdS5bcmcCJGDmMTllXWJjLTRhODAtNDBhYi01Y2Y4LThjNjcxZTg3MsRjOAACKlszLCJlPDYzYmUxOC0wNjQ3LTQ4AzQtODFhYy1jZGRlNTk2MGYxNDYiXQAABiDDbVAEnaUMn4zZHlFr5NWy7JEYfvoay--cVmKO5lr3Xp\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/pypi_token\",\n                \"info\": \"FILE:./tests/samples/pypi_token|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"pypi-AgEIcHlvdS5bcmcCJGDmMTllXWJjLTRhODAtNDBhYi01Y2Y4LThjNjcxZTg3MsRjOAACKlszLCJlPDYzYmUxOC0wNjQ3LTQ4AzQtODFhYy1jZGRlNTk2MGYxNDYiXQAABiDDbVAEnaUMn4zZHlFr5NWy7JEYfvoay--cVmKO5lr3Xp\",\n                \"value_start\": 0,\n                \"value_end\": 179,\n                \"entropy\": 5.5923\n            }\n        ]\n    },\n    {\n        \"rule\": \"RubyGems API Key\",\n        \"severity\": \"medium\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"rubygems_2676e0138d75572e758e2b2252713061b8f26caf7f21630d\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/rubygems\",\n                \"info\": \"FILE:./tests/samples/rubygems|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"rubygems_2676e0138d75572e758e2b2252713061b8f26caf7f21630d\",\n                \"value_start\": 0,\n                \"value_end\": 57,\n                \"entropy\": 4.06282\n            }\n        ]\n    },\n    {\n        \"rule\": \"Salesforce Credentials\",\n        \"severity\": \"medium\",\n        \"confidence\": \"weak\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"t_org_if 00DFT5H59PHLAN0IA 00DG9UE38D6ELk5l 00DyXD47kKDny11j 00Dh68fkeHGbDk92k\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/salesfoce\",\n                \"info\": \"FILE:./tests/samples/salesfoce|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"00DFT5H59PHLAN0IA\",\n                \"value_start\": 9,\n                \"value_end\": 26,\n                \"entropy\": 3.45482\n            }\n        ]\n    },\n    {\n        \"rule\": \"Salesforce Credentials\",\n        \"severity\": \"medium\",\n        \"confidence\": \"weak\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"t_org_if 00DFT5H59PHLAN0IA 00DG9UE38D6ELk5l 00DyXD47kKDny11j 00Dh68fkeHGbDk92k\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/salesfoce\",\n                \"info\": \"FILE:./tests/samples/salesfoce|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"00DG9UE38D6ELk5l\",\n                \"value_start\": 27,\n                \"value_end\": 43,\n                \"entropy\": 3.625\n            }\n        ]\n    },\n    {\n        \"rule\": \"Salesforce Credentials\",\n        \"severity\": \"medium\",\n        \"confidence\": \"weak\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"t_org_if 00DFT5H59PHLAN0IA 00DG9UE38D6ELk5l 00DyXD47kKDny11j 00Dh68fkeHGbDk92k\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/salesfoce\",\n                \"info\": \"FILE:./tests/samples/salesfoce|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"00Dh68fkeHGbDk92k\",\n                \"value_start\": 61,\n                \"value_end\": 78,\n                \"entropy\": 3.57247\n            }\n        ]\n    },\n    {\n        \"rule\": \"Salesforce Credentials\",\n        \"severity\": \"medium\",\n        \"confidence\": \"weak\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"t_org_if 00DFT5H59PHLAN0IA 00DG9UE38D6ELk5l 00DyXD47kKDny11j 00Dh68fkeHGbDk92k\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/salesfoce\",\n                \"info\": \"FILE:./tests/samples/salesfoce|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"00DyXD47kKDny11j\",\n                \"value_start\": 44,\n                \"value_end\": 60,\n                \"entropy\": 3.32782\n            }\n        ]\n    },\n    {\n        \"rule\": \"Salesforce Credentials\",\n        \"severity\": \"medium\",\n        \"confidence\": \"weak\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"t_token 00DUI000005AecQ!AR8Amtqc2drcmpoZ3dlanJoMzQ5ODc1OTg0Mzc5NzQ1OCsrKysKLS0tLQp.cm9jLVR5cGU6IDQsRU5DUllwwMzQ1NzY3MzQ1\",\n                \"line_num\": 3,\n                \"path\": \"./tests/samples/salesfoce\",\n                \"info\": \"FILE:./tests/samples/salesfoce|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"00DUI000005AecQ!AR8Amtqc2drcmpoZ3dlanJoMzQ5ODc1OTg0Mzc5NzQ1OCsrKysKLS0tLQp.cm9jLVR5cGU6IDQsRU5DUllwwMzQ1NzY3MzQ1\",\n                \"value_start\": 8,\n                \"value_end\": 120,\n                \"entropy\": 5.19811\n            }\n        ]\n    },\n    {\n        \"rule\": \"Salesforce Credentials\",\n        \"severity\": \"medium\",\n        \"confidence\": \"weak\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"t_client_id: 3MVGb3j9DpwrLFc90tWIy.nh7B89YzeymdX9VETUUokMus8xztUgf_5PksXuZmgYoNmvYcsk_qPpk1Y.zttO1\",\n                \"line_num\": 4,\n                \"path\": \"./tests/samples/salesfoce\",\n                \"info\": \"FILE:./tests/samples/salesfoce|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"3MVGb3j9DpwrLFc90tWIy.nh7B89YzeymdX9VETUUokMus8xztUgf_5PksXuZmgYoNmvYcsk_qPpk1Y.zttO1\",\n                \"value_start\": 13,\n                \"value_end\": 98,\n                \"entropy\": 5.45622\n            }\n        ]\n    },\n    {\n        \"rule\": \"Salt\",\n        \"severity\": \"low\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"salt1 = b'#!\\\\xae2389x&543@'\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/salt.py\",\n                \"info\": \"FILE:./tests/samples/salt.py|STRUCT|STRING:0|RAW\",\n                \"variable\": \"salt1\",\n                \"variable_start\": 0,\n                \"variable_end\": 5,\n                \"value\": \"#!\\\\xae2389x&543@\",\n                \"value_start\": 10,\n                \"value_end\": 26,\n                \"entropy\": 3.75\n            }\n        ]\n    },\n    {\n        \"rule\": \"Salt\",\n        \"severity\": \"low\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.999,\n        \"line_data_list\": [\n            {\n                \"line\": \"salt1 = b\\\"\\\\x23!\\\\xae2389x&543@\\\"\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/salt.py\",\n                \"info\": \"FILE:./tests/samples/salt.py|RAW\",\n                \"variable\": \"salt1\",\n                \"variable_start\": 0,\n                \"variable_end\": 5,\n                \"value\": \"\\\\x23!\\\\xae2389x&543@\",\n                \"value_start\": 10,\n                \"value_end\": 29,\n                \"entropy\": 3.53689\n            }\n        ]\n    },\n    {\n        \"rule\": \"Salt\",\n        \"severity\": \"low\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.999,\n        \"line_data_list\": [\n            {\n                \"line\": \"salt4 = {'salt5': 'my124%#$@s\\\\x04clt\\\\x00'}\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/salt.py\",\n                \"info\": \"FILE:./tests/samples/salt.py|STRUCT|STRING:3|RAW\",\n                \"variable\": \"salt5\",\n                \"variable_start\": 10,\n                \"variable_end\": 15,\n                \"value\": \"my124%#$@s\\\\x04clt\\\\x00\",\n                \"value_start\": 19,\n                \"value_end\": 40,\n                \"entropy\": 3.88018\n            }\n        ]\n    },\n    {\n        \"rule\": \"Salt\",\n        \"severity\": \"low\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.949,\n        \"line_data_list\": [\n            {\n                \"line\": \"salt3 = u\\\"\\\\u0020827634876\\\"\",\n                \"line_num\": 3,\n                \"path\": \"./tests/samples/salt.py\",\n                \"info\": \"FILE:./tests/samples/salt.py|RAW\",\n                \"variable\": \"salt3\",\n                \"variable_start\": 0,\n                \"variable_end\": 5,\n                \"value\": \"\\\\u0020827634876\",\n                \"value_start\": 10,\n                \"value_end\": 25,\n                \"entropy\": 3.05656\n            }\n        ]\n    },\n    {\n        \"rule\": \"Salt\",\n        \"severity\": \"low\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.993,\n        \"line_data_list\": [\n            {\n                \"line\": \"salt4 = {\\\"salt5\\\": \\\"my124%#$@s\\\\x04clt\\\\0\\\"}\",\n                \"line_num\": 4,\n                \"path\": \"./tests/samples/salt.py\",\n                \"info\": \"FILE:./tests/samples/salt.py|RAW\",\n                \"variable\": \"salt5\",\n                \"variable_start\": 10,\n                \"variable_end\": 15,\n                \"value\": \"my124%#$@s\\\\x04clt\\\\0\",\n                \"value_start\": 19,\n                \"value_end\": 38,\n                \"entropy\": 3.93214\n            }\n        ]\n    },\n    {\n        \"rule\": \"Salt\",\n        \"severity\": \"low\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"json_escaped = \\\"{\\\\\\\\\\\\\\\"salt8\\\\\\\\\\\\\\\":\\\\\\\\\\\\\\\"4b9a6d8b638eb0c6\\\\\\\\\\\\\\\"}\\\"\",\n                \"line_num\": 5,\n                \"path\": \"./tests/samples/salt.py\",\n                \"info\": \"FILE:./tests/samples/salt.py|RAW\",\n                \"variable\": \"salt8\",\n                \"variable_start\": 21,\n                \"variable_end\": 26,\n                \"value\": \"4b9a6d8b638eb0c6\",\n                \"value_start\": 35,\n                \"value_end\": 51,\n                \"entropy\": 3.28064\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"password = '77397566A117A00428B0FD9BDA65F051C88593B4D0DE27E1CCB073E378440DC4'\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/sample.csv\",\n                \"info\": \"FILE:./tests/samples/sample.csv|CSV|STRUCT:1|KEYWORD\",\n                \"variable\": \"password\",\n                \"variable_start\": 0,\n                \"variable_end\": 8,\n                \"value\": \"77397566A117A00428B0FD9BDA65F051C88593B4D0DE27E1CCB073E378440DC4\",\n                \"value_start\": 12,\n                \"value_end\": 76,\n                \"entropy\": 3.91341\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"password = 'Jfb49,Hd2!@'\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/sample.csv\",\n                \"info\": \"FILE:./tests/samples/sample.csv|CSV|STRUCT:0|KEYWORD\",\n                \"variable\": \"password\",\n                \"variable_start\": 0,\n                \"variable_end\": 8,\n                \"value\": \"Jfb49,Hd2!@\",\n                \"value_start\": 12,\n                \"value_end\": 23,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"PEM Private Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"-----BEGIN RSA PRIVATE KEY-----\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/sample.deb\",\n                \"info\": \"FILE:./tests/samples/sample.deb|DEB:0x180:pem_key.bz2|BZIP2:./tests/samples/sample.deb|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"-----BEGIN RSA PRIVATE KEY-----\",\n                \"value_start\": 0,\n                \"value_end\": 31,\n                \"entropy\": 3.38229\n            },\n            {\n                \"line\": \"MIICXAIBAAKBgQCqGKukO1De7zhZj6+H0qtjTkVxwTCpvKe4eCZ0FPqri0cb2JZfXJ/DgYSF6vUp\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/sample.deb\",\n                \"info\": \"FILE:./tests/samples/sample.deb|DEB:0x180:pem_key.bz2|BZIP2:./tests/samples/sample.deb|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"MIICXAIBAAKBgQCqGKukO1De7zhZj6+H0qtjTkVxwTCpvKe4eCZ0FPqri0cb2JZfXJ/DgYSF6vUp\",\n                \"value_start\": 0,\n                \"value_end\": 76,\n                \"entropy\": 5.38892\n            },\n            {\n                \"line\": \"wmJG8wVQZKjeGcjDOL5UlsuusFncCzWBQ7RKNUSesmQRMSGkVb1/3j+skZ6UtW+5u09lHNsj6tQ5\",\n                \"line_num\": 3,\n                \"path\": \"./tests/samples/sample.deb\",\n                \"info\": \"FILE:./tests/samples/sample.deb|DEB:0x180:pem_key.bz2|BZIP2:./tests/samples/sample.deb|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"wmJG8wVQZKjeGcjDOL5UlsuusFncCzWBQ7RKNUSesmQRMSGkVb1/3j+skZ6UtW+5u09lHNsj6tQ5\",\n                \"value_start\": 0,\n                \"value_end\": 76,\n                \"entropy\": 5.21333\n            },\n            {\n                \"line\": \"1s1SPrCBkedbNf0Tp0GbMJDyR4e9T04ZZwIDAQABAoGAFijko56+qGyN8M0RVyaRAXz++xTqHBLh\",\n                \"line_num\": 4,\n                \"path\": \"./tests/samples/sample.deb\",\n                \"info\": \"FILE:./tests/samples/sample.deb|DEB:0x180:pem_key.bz2|BZIP2:./tests/samples/sample.deb|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"1s1SPrCBkedbNf0Tp0GbMJDyR4e9T04ZZwIDAQABAoGAFijko56+qGyN8M0RVyaRAXz++xTqHBLh\",\n                \"value_start\": 0,\n                \"value_end\": 76,\n                \"entropy\": 5.32505\n            },\n            {\n                \"line\": \"3tx4VgMtrQ+WEgCjhoTwo23KMBAuJGSYnRmoBZM3lMfTKevIkAidPExvYCdm5dYq3XToLkkLv5L2\",\n                \"line_num\": 5,\n                \"path\": \"./tests/samples/sample.deb\",\n                \"info\": \"FILE:./tests/samples/sample.deb|DEB:0x180:pem_key.bz2|BZIP2:./tests/samples/sample.deb|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"3tx4VgMtrQ+WEgCjhoTwo23KMBAuJGSYnRmoBZM3lMfTKevIkAidPExvYCdm5dYq3XToLkkLv5L2\",\n                \"value_start\": 0,\n                \"value_end\": 76,\n                \"entropy\": 5.26728\n            },\n            {\n                \"line\": \"pIIVOFMDG+KESnAFV7l2c+cnzRMW0+b6f8mR1CJzZuxVLL6Q02fvLi55/mbSYxECQQDeAw6fiIQX\",\n                \"line_num\": 6,\n                \"path\": \"./tests/samples/sample.deb\",\n                \"info\": \"FILE:./tests/samples/sample.deb|DEB:0x180:pem_key.bz2|BZIP2:./tests/samples/sample.deb|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"pIIVOFMDG+KESnAFV7l2c+cnzRMW0+b6f8mR1CJzZuxVLL6Q02fvLi55/mbSYxECQQDeAw6fiIQX\",\n                \"value_start\": 0,\n                \"value_end\": 76,\n                \"entropy\": 5.29359\n            },\n            {\n                \"line\": \"GukBI4eMZZt4nscy2o12KyYner3VpoeE+Np2q+Z3pvAMd/aNzQ/W9WaI+NRfcxUJrmfPwIGm63il\",\n                \"line_num\": 7,\n                \"path\": \"./tests/samples/sample.deb\",\n                \"info\": \"FILE:./tests/samples/sample.deb|DEB:0x180:pem_key.bz2|BZIP2:./tests/samples/sample.deb|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"GukBI4eMZZt4nscy2o12KyYner3VpoeE+Np2q+Z3pvAMd/aNzQ/W9WaI+NRfcxUJrmfPwIGm63il\",\n                \"value_start\": 0,\n                \"value_end\": 76,\n                \"entropy\": 5.40531\n            },\n            {\n                \"line\": \"AkEAxCL5HQb2bQr4ByorcMWm/hEP2MZzROV73yF41hPsRC9m66KrheO9HPTJuo3/9s5p+sqGxOlF\",\n                \"line_num\": 8,\n                \"path\": \"./tests/samples/sample.deb\",\n                \"info\": \"FILE:./tests/samples/sample.deb|DEB:0x180:pem_key.bz2|BZIP2:./tests/samples/sample.deb|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"AkEAxCL5HQb2bQr4ByorcMWm/hEP2MZzROV73yF41hPsRC9m66KrheO9HPTJuo3/9s5p+sqGxOlF\",\n                \"value_start\": 0,\n                \"value_end\": 76,\n                \"entropy\": 5.37254\n            },\n            {\n                \"line\": \"L0NDt4SkosjgGwJAFklyR1uZ/wPJjj611cdBcztlPdqoxssQGnh85BzCj/u3WqBpE2vjvyyvyI5k\",\n                \"line_num\": 9,\n                \"path\": \"./tests/samples/sample.deb\",\n                \"info\": \"FILE:./tests/samples/sample.deb|DEB:0x180:pem_key.bz2|BZIP2:./tests/samples/sample.deb|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"L0NDt4SkosjgGwJAFklyR1uZ/wPJjj611cdBcztlPdqoxssQGnh85BzCj/u3WqBpE2vjvyyvyI5k\",\n                \"value_start\": 0,\n                \"value_end\": 76,\n                \"entropy\": 5.30866\n            },\n            {\n                \"line\": \"X6zk7S0ljKtt2jny2+00VsBerQJBAJGC1Mg5Oydo5NwD6BiROrPxGo2bpTbu/fhrT8ebHkTz2epl\",\n                \"line_num\": 10,\n                \"path\": \"./tests/samples/sample.deb\",\n                \"info\": \"FILE:./tests/samples/sample.deb|DEB:0x180:pem_key.bz2|BZIP2:./tests/samples/sample.deb|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"X6zk7S0ljKtt2jny2+00VsBerQJBAJGC1Mg5Oydo5NwD6BiROrPxGo2bpTbu/fhrT8ebHkTz2epl\",\n                \"value_start\": 0,\n                \"value_end\": 76,\n                \"entropy\": 5.42517\n            },\n            {\n                \"line\": \"U9VQQSQzY1oZMVX8i1m5WUTLPz2yLJIBQVdXqhMCQBGoiuSoSjafUhV7i1cEGpb88h5NBYZzWXGZ\",\n                \"line_num\": 11,\n                \"path\": \"./tests/samples/sample.deb\",\n                \"info\": \"FILE:./tests/samples/sample.deb|DEB:0x180:pem_key.bz2|BZIP2:./tests/samples/sample.deb|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"U9VQQSQzY1oZMVX8i1m5WUTLPz2yLJIBQVdXqhMCQBGoiuSoSjafUhV7i1cEGpb88h5NBYZzWXGZ\",\n                \"value_start\": 0,\n                \"value_end\": 76,\n                \"entropy\": 5.10756\n            },\n            {\n                \"line\": \"37sJ5QsW+sJyoNde3xH8vdXhzU7eT82D6X/scw9RZz+/6rCJ4p0=\",\n                \"line_num\": 12,\n                \"path\": \"./tests/samples/sample.deb\",\n                \"info\": \"FILE:./tests/samples/sample.deb|DEB:0x180:pem_key.bz2|BZIP2:./tests/samples/sample.deb|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"37sJ5QsW+sJyoNde3xH8vdXhzU7eT82D6X/scw9RZz+/6rCJ4p0=\",\n                \"value_start\": 0,\n                \"value_end\": 52,\n                \"entropy\": 5.07054\n            },\n            {\n                \"line\": \"-----END RSA PRIVATE KEY-----\",\n                \"line_num\": 13,\n                \"path\": \"./tests/samples/sample.deb\",\n                \"info\": \"FILE:./tests/samples/sample.deb|DEB:0x180:pem_key.bz2|BZIP2:./tests/samples/sample.deb|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"-----END RSA PRIVATE KEY-----\",\n                \"value_start\": 0,\n                \"value_end\": 29,\n                \"entropy\": 3.24663\n            }\n        ]\n    },\n    {\n        \"rule\": \"UUID\",\n        \"severity\": \"info\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"3aeb15a9-fade-beef-cafe-9129474bcd81\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/sample.deb\",\n                \"info\": \"FILE:./tests/samples/sample.deb|DEB:0xb82:/44|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"3aeb15a9-fade-beef-cafe-9129474bcd81\",\n                \"value_start\": 0,\n                \"value_end\": 36,\n                \"entropy\": 3.708\n            }\n        ]\n    },\n    {\n        \"rule\": \"BASE64 encoded PEM Private Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"ZGVidWdDb250YWluZXI6CiAgaW1hZ2U6CiAgICB2ZXJzaW9uOiBpbnN0YWxsLWRlYnVnLXZlcnNpb24KaGVhcnRiZWF0U2NoZWR1bGU6IDEgMiAzIDQgNQppZGVudGl0eToKICBpc3N1ZXI6CiAgICB0bHM6CiAgICAgIGNydFBFTTogfAogICAgICAgIC0tLS0tQkVHSU4gQ0VSVElGSUNBVEUtLS0tLQogICAgICAgIE1JSUJ3RENDQVdlZ0F3SUJBZ0lSQUpSSWdaOFJ0TzhFd2cxWGVwZjhUNDR3Q2dZSUtvWkl6ajBFQXdJd0tURW4KICAgICAgICBna2RqaHNsa2Roa2dkamhza2pkZmtkamhna2RqaGtkZmpibmtkZm52amtoYnZqaGRiZGpmaGJmamhiZGZNRGd5CiAgICAgICAgbGZrZGprc2xkamdrbGpkZmtnamhkZmtnamhzZGZrbGdqc2RrbGpmZ2hsa2Rmamhsa3NkZmpsa3Nkamt1YkdsdQogICAgICAgIGxzZGpoZnY1NDZtZmRza2dqaGRmamtoZ2tqZGhramhkZmtqZ2hrZGZqaGdramRmaGtqZGZoZ2tqZmRoZ2tqRnAKICAgICAgICBmY1JkZmdoZmRnbWRuZ2tqeGRuYnZqbmN2a2pua2pkbmdram5mZGtqYmt2YmpibnZja2puYmpuZGRmZ2ZkZ3QxCiAgICAgICAgMmJsa2puZ2JramhnbGpkZmxnaGtsamRmbmdqZGZuZ25sZGZrbWxrZGZqZ21sZGZrZ21sa2ZkbWdsa2RtTUFZQgogICAgICAgIEFmOENmZ2xibmpuZGJqZG5rZmpuZ2tkbmZnamtsbmRranZuYmlqZGlmamdpZXJqZ29pamRmbGtneGxrbmdrQ0MKICAgICAgICBIbWxkZmtmamdvaWRmamdnam5kamtmbmdranNkbnNram5qNXNiMk5oYkRBS0JnZ3Foa2pPUFFRREFnTkhBREJFCiAgICAgICAgQWlBdG9mZ2toOTk0NXU4OXV5OWU4dWdodWRmaGd1aGRmZmhpbGd1aGl1aGtkaGZna2pkaGZramhya2piazFwNQogICAgICAgIDVrZmRsc2lmaHU0aHRpdWg0aXR1aGtqaGt6az0KICAgICAgICAtLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCiAgICAgIGtleVBFTTogfAogICAgICAgIC0tLS0tQkVHSU4gRUMgUFJJVkFURSBLRVktLS0tLQogICAgICAgIE1IY0NBUUVFSUFBZThuZmJ6WnU5Yy9PQjJnZGZramdsaWRma2pibnhqa2hiZ2hiZmdoYmpoYmRqaGJzanhjazkKICAgICAgICBvZGlmanZpamRmdm9pamRmb2l2amRmb2lqZGpnbmZka2pnbmtqZGZna2pkZmtqZ2JrampoYmtnSmpYZ1p0TTcyCiAgICAgICAgZGZpb2hndXhoYmtqZ25rbGpkZm5rbGpkbmdram5rZ2puKz09CiAgICAgICAgLS0tLS1FTkQgRUMgUFJJVkFURSBLRVktLS0tLQppZGVudGl0eVRydXN0QW5jaG9yc1BFTTogfAogIC0tLS0tQkVHSU4gQ0VSVElGSUNBVEUtLS0tLQogIE1JSUJ3VENDQVdhZ0F3SUJBZ0lRZURacDVsRGFJeWdRNVVmTUtaZGZuZ2puZGZrZ2puZmRramdua2RqbmtkamYKICBkZmtuZ2tqYmtqZGZic2tqYm5ma2puc2RrZ2psbnhrY2pibmt4am5ja2pnbmtqbmdreGpuZ2tqeGNua2dqbkk0CiAgTURkc2xrZmpvaWVyOGhzZGY4ZmdoZzc4NGg5OHQ5OGVydWhpdXNkaGtmZ2hoc2poYmdqa2hzdmpmaHZzYVc1cgogIFpYNDhrbmdraGdkZmtmamdic2RoYmpoYnNkaGJoeGJkZmxqZ2xkZmtqZ2tqaGpmZGdramJka2pmYmdrYmM3MFoKICBsZGZsa2pna2xqZGZoZmRrZ2poZXJramJnaGZia2dqYmtqbmtqeGNua2pmbmtnam5ma2pnbmtmam43SEJXVUM0CiAgdWZkZ2tqZGZpZ2hmdWRoZ2l1dWRoYm5ma25iZ3NibmRma2poc2tqa3NqbmdranNibmdramJrZ2pieGtqYmdFQgogIC9zZGZiaHNiamZoYmVod3did2poZmJqc2hiZGpoYnppdWhya2hiZXJoYnNqaGJkZmpoYmpoYmpoc2JqaGJzcysKICBsZGpmbGhranNka2ZqaHNrZGpma2pzZG5ma2puc2RramZuc2Rram5ranhjbmtqdm5ram5kc2Z3bGVra0FNRVlDCiAgSWVmb2h3a3VlaGZranNkaGZranNkaGtmamhzZGtqZmhrc2RqaGZranNkaGZranNkaGRramZoc2trZGpmaGpDOAogIHNkZnNkaHlnZmpoZ2RqaGZnanNoZGdmamhncXIKICAtLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCmxpbmtlcmRWZXJzaW9uOiBpbnN0YWxsLWNvbnRyb2wtcGxhbmUtdmVyc2lvbgpwb2xpY3lWYWxpZGF0b3I6CiAgY2FCdW5kbGU6IHBvbGljeSB2YWxpZGF0b3IgQ0EgYnVuZGxlCiAgZXh0ZXJuYWxTZWNyZXQ6IHRydWUKcHJvZmlsZVZhbGlkYXRvcjoKICBjYUJ1bmRsZTogcHJvZmlsZSB2YWxpZGF0b3IgQ0EgYnVuZGxlCiAgZXh0ZXJuYWxTZWNyZXQ6IHRydWUKcHJveHk6CiAgaW1hZ2U6CiAgICB2ZXJzaW9uOiBpbnN0YWxsLXByb3h5LXZlcnNpb24KcHJveHlJbml0OgogIGlnbm9yZUluYm91bmRQb3J0czogMjIsMzMwNi02MTkyCiAgaWdub3JlT3V0Ym91bmRQb3J0czogIjMyNzgiCnByb3h5SW5qZWN0b3I6CiAgY2FCdW5kbGU6IHByb3h5IGluamVjdG9yIENBIGJ1bmRsZQogIGV4dGVybmFsU2VjcmV0OiB0cnVlCg==\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/sample.deb\",\n                \"info\": \"FILE:./tests/samples/sample.deb|DEB:0x4d0:/0|GZIP:./tests/samples/sample.deb|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"ZGVidWdDb250YWluZXI6CiAgaW1hZ2U6CiAgICB2ZXJzaW9uOiBpbnN0YWxsLWRlYnVnLXZlcnNpb24KaGVhcnRiZWF0U2NoZWR1bGU6IDEgMiAzIDQgNQppZGVudGl0eToKICBpc3N1ZXI6CiAgICB0bHM6CiAgICAgIGNydFBFTTogfAogICAgICAgIC0tLS0tQkVHSU4gQ0VSVElGSUNBVEUtLS0tLQogICAgICAgIE1JSUJ3RENDQVdlZ0F3SUJBZ0lSQUpSSWdaOFJ0TzhFd2cxWGVwZjhUNDR3Q2dZSUtvWkl6ajBFQXdJd0tURW4KICAgICAgICBna2RqaHNsa2Roa2dkamhza2pkZmtkamhna2RqaGtkZmpibmtkZm52amtoYnZqaGRiZGpmaGJmamhiZGZNRGd5CiAgICAgICAgbGZrZGprc2xkamdrbGpkZmtnamhkZmtnamhzZGZrbGdqc2RrbGpmZ2hsa2Rmamhsa3NkZmpsa3Nkamt1YkdsdQogICAgICAgIGxzZGpoZnY1NDZtZmRza2dqaGRmamtoZ2tqZGhramhkZmtqZ2hrZGZqaGdramRmaGtqZGZoZ2tqZmRoZ2tqRnAKICAgICAgICBmY1JkZmdoZmRnbWRuZ2tqeGRuYnZqbmN2a2pua2pkbmdram5mZGtqYmt2YmpibnZja2puYmpuZGRmZ2ZkZ3QxCiAgICAgICAgMmJsa2puZ2JramhnbGpkZmxnaGtsamRmbmdqZGZuZ25sZGZrbWxrZGZqZ21sZGZrZ21sa2ZkbWdsa2RtTUFZQgogICAgICAgIEFmOENmZ2xibmpuZGJqZG5rZmpuZ2tkbmZnamtsbmRranZuYmlqZGlmamdpZXJqZ29pamRmbGtneGxrbmdrQ0MKICAgICAgICBIbWxkZmtmamdvaWRmamdnam5kamtmbmdranNkbnNram5qNXNiMk5oYkRBS0JnZ3Foa2pPUFFRREFnTkhBREJFCiAgICAgICAgQWlBdG9mZ2toOTk0NXU4OXV5OWU4dWdodWRmaGd1aGRmZmhpbGd1aGl1aGtkaGZna2pkaGZramhya2piazFwNQogICAgICAgIDVrZmRsc2lmaHU0aHRpdWg0aXR1aGtqaGt6az0KICAgICAgICAtLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCiAgICAgIGtleVBFTTogfAogICAgICAgIC0tLS0tQkVHSU4gRUMgUFJJVkFURSBLRVktLS0tLQogICAgICAgIE1IY0NBUUVFSUFBZThuZmJ6WnU5Yy9PQjJnZGZramdsaWRma2pibnhqa2hiZ2hiZmdoYmpoYmRqaGJzanhjazkKICAgICAgICBvZGlmanZpamRmdm9pamRmb2l2amRmb2lqZGpnbmZka2pnbmtqZGZna2pkZmtqZ2JrampoYmtnSmpYZ1p0TTcyCiAgICAgICAgZGZpb2hndXhoYmtqZ25rbGpkZm5rbGpkbmdram5rZ2puKz09CiAgICAgICAgLS0tLS1FTkQgRUMgUFJJVkFURSBLRVktLS0tLQppZGVudGl0eVRydXN0QW5jaG9yc1BFTTogfAogIC0tLS0tQkVHSU4gQ0VSVElGSUNBVEUtLS0tLQogIE1JSUJ3VENDQVdhZ0F3SUJBZ0lRZURacDVsRGFJeWdRNVVmTUtaZGZuZ2puZGZrZ2puZmRramdua2RqbmtkamYKICBkZmtuZ2tqYmtqZGZic2tqYm5ma2puc2RrZ2psbnhrY2pibmt4am5ja2pnbmtqbmdreGpuZ2tqeGNua2dqbkk0CiAgTURkc2xrZmpvaWVyOGhzZGY4ZmdoZzc4NGg5OHQ5OGVydWhpdXNkaGtmZ2hoc2poYmdqa2hzdmpmaHZzYVc1cgogIFpYNDhrbmdraGdkZmtmamdic2RoYmpoYnNkaGJoeGJkZmxqZ2xkZmtqZ2tqaGpmZGdramJka2pmYmdrYmM3MFoKICBsZGZsa2pna2xqZGZoZmRrZ2poZXJramJnaGZia2dqYmtqbmtqeGNua2pmbmtnam5ma2pnbmtmam43SEJXVUM0CiAgdWZkZ2tqZGZpZ2hmdWRoZ2l1dWRoYm5ma25iZ3NibmRma2poc2tqa3NqbmdranNibmdramJrZ2pieGtqYmdFQgogIC9zZGZiaHNiamZoYmVod3did2poZmJqc2hiZGpoYnppdWhya2hiZXJoYnNqaGJkZmpoYmpoYmpoc2JqaGJzcysKICBsZGpmbGhranNka2ZqaHNrZGpma2pzZG5ma2puc2RramZuc2Rram5ranhjbmtqdm5ram5kc2Z3bGVra0FNRVlDCiAgSWVmb2h3a3VlaGZranNkaGZranNkaGtmamhzZGtqZmhrc2RqaGZranNkaGZranNkaGRramZoc2trZGpmaGpDOAogIHNkZnNkaHlnZmpoZ2RqaGZnanNoZGdmamhncXIKICAtLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCmxpbmtlcmRWZXJzaW9uOiBpbnN0YWxsLWNvbnRyb2wtcGxhbmUtdmVyc2lvbgpwb2xpY3lWYWxpZGF0b3I6CiAgY2FCdW5kbGU6IHBvbGljeSB2YWxpZGF0b3IgQ0EgYnVuZGxlCiAgZXh0ZXJuYWxTZWNyZXQ6IHRydWUKcHJvZmlsZVZhbGlkYXRvcjoKICBjYUJ1bmRsZTogcHJvZmlsZSB2YWxpZGF0b3IgQ0EgYnVuZGxlCiAgZXh0ZXJuYWxTZWNyZXQ6IHRydWUKcHJveHk6CiAgaW1hZ2U6CiAgICB2ZXJzaW9uOiBpbnN0YWxsLXByb3h5LXZlcnNpb24KcHJveHlJbml0OgogIGlnbm9yZUluYm91bmRQb3J0czogMjIsMzMwNi02MTkyCiAgaWdub3JlT3V0Ym91bmRQb3J0czogIjMyNzgiCnByb3h5SW5qZWN0b3I6CiAgY2FCdW5kbGU6IHByb3h5IGluamVjdG9yIENBIGJ1bmRsZQogIGV4dGVybmFsU2VjcmV0OiB0cnVlCg\",\n                \"value_start\": 0,\n                \"value_end\": 3078,\n                \"entropy\": 5.49785\n            }\n        ]\n    },\n    {\n        \"rule\": \"PEM Private Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"        -----BEGIN EC PRIVATE KEY-----\",\n                \"line_num\": 22,\n                \"path\": \"./tests/samples/sample.deb\",\n                \"info\": \"FILE:./tests/samples/sample.deb|DEB:0x4d0:/0|GZIP:./tests/samples/sample.deb|BASE64|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"-----BEGIN EC PRIVATE KEY-----\",\n                \"value_start\": 8,\n                \"value_end\": 38,\n                \"entropy\": 3.30775\n            },\n            {\n                \"line\": \"        MHcCAQEEIAAe8nfbzZu9c/OB2gdfkjglidfkjbnxjkhbghbfghbjhbdjhbsjxck9\",\n                \"line_num\": 23,\n                \"path\": \"./tests/samples/sample.deb\",\n                \"info\": \"FILE:./tests/samples/sample.deb|DEB:0x4d0:/0|GZIP:./tests/samples/sample.deb|BASE64|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"MHcCAQEEIAAe8nfbzZu9c/OB2gdfkjglidfkjbnxjkhbghbfghbjhbdjhbsjxck9\",\n                \"value_start\": 8,\n                \"value_end\": 72,\n                \"entropy\": 4.54632\n            },\n            {\n                \"line\": \"        odifjvijdfvoijdfoivjdfoijdjgnfdkjgnkjdfgkjdfkjgbkjjhbkgJjXgZtM72\",\n                \"line_num\": 24,\n                \"path\": \"./tests/samples/sample.deb\",\n                \"info\": \"FILE:./tests/samples/sample.deb|DEB:0x4d0:/0|GZIP:./tests/samples/sample.deb|BASE64|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"odifjvijdfvoijdfoivjdfoijdjgnfdkjgnkjdfgkjdfkjgbkjjhbkgJjXgZtM72\",\n                \"value_start\": 8,\n                \"value_end\": 72,\n                \"entropy\": 3.63842\n            },\n            {\n                \"line\": \"        dfiohguxhbkjgnkljdfnkljdngkjnkgjn+==\",\n                \"line_num\": 25,\n                \"path\": \"./tests/samples/sample.deb\",\n                \"info\": \"FILE:./tests/samples/sample.deb|DEB:0x4d0:/0|GZIP:./tests/samples/sample.deb|BASE64|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"dfiohguxhbkjgnkljdfnkljdngkjnkgjn+==\",\n                \"value_start\": 8,\n                \"value_end\": 44,\n                \"entropy\": 3.62593\n            },\n            {\n                \"line\": \"        -----END EC PRIVATE KEY-----\",\n                \"line_num\": 26,\n                \"path\": \"./tests/samples/sample.deb\",\n                \"info\": \"FILE:./tests/samples/sample.deb|DEB:0x4d0:/0|GZIP:./tests/samples/sample.deb|BASE64|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"-----END EC PRIVATE KEY-----\",\n                \"value_start\": 8,\n                \"value_end\": 36,\n                \"entropy\": 3.16542\n            }\n        ]\n    },\n    {\n        \"rule\": \"UUID\",\n        \"severity\": \"info\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"First line bace4d11-a001-be1a-c3fe-9829474b5d84\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/sample.docx\",\n                \"info\": \"FILE:./tests/samples/sample.docx|DOCX\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"bace4d11-a001-be1a-c3fe-9829474b5d84\",\n                \"value_start\": 11,\n                \"value_end\": 47,\n                \"entropy\": 3.82924\n            }\n        ]\n    },\n    {\n        \"rule\": \"UUID\",\n        \"severity\": \"info\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"<w:ftr xmlns:o=\\\"urn:schemas-microsoft-com:office:office\\\" xmlns:r=\\\"http://schemas.openxmlformats.org/officeDocument/2006/relationships\\\" xmlns:v=\\\"urn:schemas-microsoft-com:vml\\\" xmlns:w=\\\"http://schemas.openxmlformats.org/wordprocessingml/2006/main\\\" xmlns:w10=\\\"urn:schemas-microsoft-com:office:word\\\" xmlns:wp=\\\"http://schemas.openxmlformats.org/drawingml/2006/wordprocessingDrawing\\\" xmlns:wps=\\\"http://schemas.microsoft.com/office/word/2010/wordprocessingShape\\\" xmlns:wpg=\\\"http://schemas.microsoft.com/office/word/2010/wordprocessingGroup\\\" xmlns:mc=\\\"http://schemas.openxmlformats.org/markup-compatibility/2006\\\" xmlns:wp14=\\\"http://schemas.microsoft.com/office/word/2010/wordprocessingDrawing\\\" xmlns:w14=\\\"http://schemas.microsoft.com/office/word/2010/wordml\\\" xmlns:w15=\\\"http://schemas.microsoft.com/office/word/2012/wordml\\\" mc:Ignorable=\\\"w14 wp14 w15\\\"><w:tbl><w:tblPr><w:tblW w:w=\\\"5000\\\" w:type=\\\"pct\\\"/><w:jc w:val=\\\"left\\\"/><w:tblInd w:w=\\\"55\\\" w:type=\\\"dxa\\\"/><w:tblLayout w:type=\\\"fixed\\\"/><w:tblCellMar><w:top w:w=\\\"55\\\" w:type=\\\"dxa\\\"/><w:left w:w=\\\"55\\\" w:type=\\\"dxa\\\"/><w:bottom w:w=\\\"55\\\" w:type=\\\"dxa\\\"/><w:right w:w=\\\"55\\\" w:type=\\\"dxa\\\"/></w:tblCellMar></w:tblPr><w:tblGrid><w:gridCol w:w=\\\"9638\\\"/></w:tblGrid><w:tr><w:trPr></w:trPr><w:tc><w:tcPr><w:tcW w:w=\\\"9638\\\" w:type=\\\"dxa\\\"/><w:tcBorders><w:top w:val=\\\"single\\\" w:sz=\\\"4\\\" w:space=\\\"0\\\" w:color=\\\"000000\\\"/><w:left w:val=\\\"single\\\" w:sz=\\\"4\\\" w:space=\\\"0\\\" w:color=\\\"000000\\\"/><w:bottom w:val=\\\"single\\\" w:sz=\\\"4\\\" w:space=\\\"0\\\" w:color=\\\"000000\\\"/><w:right w:val=\\\"single\\\" w:sz=\\\"4\\\" w:space=\\\"0\\\" w:color=\\\"000000\\\"/></w:tcBorders></w:tcPr><w:p><w:pPr><w:pStyle w:val=\\\"TableContents\\\"/><w:rPr></w:rPr></w:pPr><w:r><w:rPr></w:rPr><w:t>Default footer bace4119-f002-bdef-dafe-9129474bcd89</w:t></w:r></w:p></w:tc></w:tr></w:tbl><w:p><w:pPr><w:pStyle w:val=\\\"Footer\\\"/><w:rPr></w:rPr></w:pPr><w:r><w:rPr></w:rPr></w:r></w:p></w:ftr>\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/sample.docx\",\n                \"info\": \"FILE:./tests/samples/sample.docx|ZIP:word/footer1.xml|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"bace4119-f002-bdef-dafe-9129474bcd89\",\n                \"value_start\": 1649,\n                \"value_end\": 1685,\n                \"entropy\": 3.71078\n            }\n        ]\n    },\n    {\n        \"rule\": \"UUID\",\n        \"severity\": \"info\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"<w:ftr xmlns:o=\\\"urn:schemas-microsoft-com:office:office\\\" xmlns:r=\\\"http://schemas.openxmlformats.org/officeDocument/2006/relationships\\\" xmlns:v=\\\"urn:schemas-microsoft-com:vml\\\" xmlns:w=\\\"http://schemas.openxmlformats.org/wordprocessingml/2006/main\\\" xmlns:w10=\\\"urn:schemas-microsoft-com:office:word\\\" xmlns:wp=\\\"http://schemas.openxmlformats.org/drawingml/2006/wordprocessingDrawing\\\" xmlns:wps=\\\"http://schemas.microsoft.com/office/word/2010/wordprocessingShape\\\" xmlns:wpg=\\\"http://schemas.microsoft.com/office/word/2010/wordprocessingGroup\\\" xmlns:mc=\\\"http://schemas.openxmlformats.org/markup-compatibility/2006\\\" xmlns:wp14=\\\"http://schemas.microsoft.com/office/word/2010/wordprocessingDrawing\\\" xmlns:w14=\\\"http://schemas.microsoft.com/office/word/2010/wordml\\\" xmlns:w15=\\\"http://schemas.microsoft.com/office/word/2012/wordml\\\" mc:Ignorable=\\\"w14 wp14 w15\\\"><w:tbl><w:tblPr><w:tblW w:w=\\\"5000\\\" w:type=\\\"pct\\\"/><w:jc w:val=\\\"left\\\"/><w:tblInd w:w=\\\"55\\\" w:type=\\\"dxa\\\"/><w:tblLayout w:type=\\\"fixed\\\"/><w:tblCellMar><w:top w:w=\\\"55\\\" w:type=\\\"dxa\\\"/><w:left w:w=\\\"55\\\" w:type=\\\"dxa\\\"/><w:bottom w:w=\\\"55\\\" w:type=\\\"dxa\\\"/><w:right w:w=\\\"55\\\" w:type=\\\"dxa\\\"/></w:tblCellMar></w:tblPr><w:tblGrid><w:gridCol w:w=\\\"9638\\\"/></w:tblGrid><w:tr><w:trPr></w:trPr><w:tc><w:tcPr><w:tcW w:w=\\\"9638\\\" w:type=\\\"dxa\\\"/><w:tcBorders><w:top w:val=\\\"single\\\" w:sz=\\\"4\\\" w:space=\\\"0\\\" w:color=\\\"000000\\\"/><w:left w:val=\\\"single\\\" w:sz=\\\"4\\\" w:space=\\\"0\\\" w:color=\\\"000000\\\"/><w:bottom w:val=\\\"single\\\" w:sz=\\\"4\\\" w:space=\\\"0\\\" w:color=\\\"000000\\\"/><w:right w:val=\\\"single\\\" w:sz=\\\"4\\\" w:space=\\\"0\\\" w:color=\\\"000000\\\"/></w:tcBorders></w:tcPr><w:p><w:pPr><w:pStyle w:val=\\\"TableContents\\\"/><w:rPr></w:rPr></w:pPr><w:r><w:rPr></w:rPr><w:t>Default footer bace4119-f002-bdef-dafe-9129474bcd89</w:t></w:r></w:p></w:tc></w:tr></w:tbl><w:p><w:pPr><w:pStyle w:val=\\\"Footer\\\"/><w:rPr></w:rPr></w:pPr><w:r><w:rPr></w:rPr></w:r></w:p></w:ftr>\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/sample.docx\",\n                \"info\": \"FILE:./tests/samples/sample.docx|ZIP:word/footer2.xml|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"bace4119-f002-bdef-dafe-9129474bcd89\",\n                \"value_start\": 1649,\n                \"value_end\": 1685,\n                \"entropy\": 3.71078\n            }\n        ]\n    },\n    {\n        \"rule\": \"UUID\",\n        \"severity\": \"info\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"<w:document xmlns:o=\\\"urn:schemas-microsoft-com:office:office\\\" xmlns:r=\\\"http://schemas.openxmlformats.org/officeDocument/2006/relationships\\\" xmlns:v=\\\"urn:schemas-microsoft-com:vml\\\" xmlns:w=\\\"http://schemas.openxmlformats.org/wordprocessingml/2006/main\\\" xmlns:w10=\\\"urn:schemas-microsoft-com:office:word\\\" xmlns:wp=\\\"http://schemas.openxmlformats.org/drawingml/2006/wordprocessingDrawing\\\" xmlns:wps=\\\"http://schemas.microsoft.com/office/word/2010/wordprocessingShape\\\" xmlns:wpg=\\\"http://schemas.microsoft.com/office/word/2010/wordprocessingGroup\\\" xmlns:mc=\\\"http://schemas.openxmlformats.org/markup-compatibility/2006\\\" xmlns:wp14=\\\"http://schemas.microsoft.com/office/word/2010/wordprocessingDrawing\\\" xmlns:w14=\\\"http://schemas.microsoft.com/office/word/2010/wordml\\\" xmlns:w15=\\\"http://schemas.microsoft.com/office/word/2012/wordml\\\" mc:Ignorable=\\\"w14 wp14 w15\\\"><w:body><w:p><w:pPr><w:pStyle w:val=\\\"Header\\\"/><w:bidi w:val=\\\"0\\\"/><w:jc w:val=\\\"left\\\"/><w:rPr><w:rFonts w:ascii=\\\"sans-serif\\\" w:hAnsi=\\\"sans-serif\\\"/><w:b w:val=\\\"false\\\"/><w:i/><w:i/><w:color w:val=\\\"202122\\\"/><w:spacing w:val=\\\"0\\\"/><w:sz w:val=\\\"21\\\"/></w:rPr></w:pPr><w:r><w:rPr></w:rPr><w:t xml:space=\\\"preserve\\\">First </w:t></w:r><w:r><w:rPr></w:rPr><w:t xml:space=\\\"preserve\\\">line </w:t></w:r><w:r><w:rPr></w:rPr><w:t>bace4d11-</w:t></w:r><w:r><w:rPr></w:rPr><w:t>a</w:t></w:r><w:r><w:rPr></w:rPr><w:t>001-be</w:t></w:r><w:r><w:rPr></w:rPr><w:t>1</w:t></w:r><w:r><w:rPr></w:rPr><w:t>a-c3fe-9829474b5d84</w:t></w:r></w:p><w:p><w:pPr><w:pStyle w:val=\\\"Normal\\\"/><w:shd w:fill=\\\"2B2B2B\\\"/><w:rPr><w:rFonts w:ascii=\\\"JetBrains Mono\\\" w:hAnsi=\\\"JetBrains Mono\\\"/><w:b w:val=\\\"false\\\"/><w:i w:val=\\\"false\\\"/><w:i w:val=\\\"false\\\"/><w:color w:val=\\\"6A8759\\\"/><w:sz w:val=\\\"20\\\"/></w:rPr></w:pPr><w:r><w:rPr><w:rFonts w:ascii=\\\"JetBrains Mono\\\" w:hAnsi=\\\"JetBrains Mono\\\"/><w:b w:val=\\\"false\\\"/><w:i w:val=\\\"false\\\"/><w:color w:val=\\\"6A8759\\\"/><w:spacing w:val=\\\"0\\\"/><w:sz w:val=\\\"20\\\"/></w:rPr><w:t>second line bace4d11-a002-be1a-c3fe-9829474b5d84</w:t></w:r></w:p><w:p><w:pPr><w:pStyle w:val=\\\"Normal\\\"/><w:bidi w:val=\\\"0\\\"/><w:jc w:val=\\\"left\\\"/><w:rPr><w:rFonts w:ascii=\\\"sans-serif\\\" w:hAnsi=\\\"sans-serif\\\"/><w:b w:val=\\\"false\\\"/><w:i/><w:i/><w:color w:val=\\\"202122\\\"/><w:spacing w:val=\\\"0\\\"/><w:sz w:val=\\\"21\\\"/></w:rPr></w:pPr><w:r><w:rPr><w:rFonts w:ascii=\\\"sans-serif\\\" w:hAnsi=\\\"sans-serif\\\"/><w:b w:val=\\\"false\\\"/><w:i/><w:color w:val=\\\"202122\\\"/><w:spacing w:val=\\\"0\\\"/><w:sz w:val=\\\"21\\\"/></w:rPr></w:r></w:p><w:tbl><w:tblPr><w:tblW w:w=\\\"5000\\\" w:type=\\\"pct\\\"/><w:jc w:val=\\\"left\\\"/><w:tblInd w:w=\\\"55\\\" w:type=\\\"dxa\\\"/><w:tblLayout w:type=\\\"fixed\\\"/><w:tblCellMar><w:top w:w=\\\"55\\\" w:type=\\\"dxa\\\"/><w:left w:w=\\\"55\\\" w:type=\\\"dxa\\\"/><w:bottom w:w=\\\"55\\\" w:type=\\\"dxa\\\"/><w:right w:w=\\\"55\\\" w:type=\\\"dxa\\\"/></w:tblCellMar></w:tblPr><w:tblGrid><w:gridCol w:w=\\\"9638\\\"/></w:tblGrid><w:tr><w:trPr></w:trPr><w:tc><w:tcPr><w:tcW w:w=\\\"9638\\\" w:type=\\\"dxa\\\"/><w:tcBorders><w:top w:val=\\\"single\\\" w:sz=\\\"4\\\" w:space=\\\"0\\\" w:color=\\\"000000\\\"/><w:left w:val=\\\"single\\\" w:sz=\\\"4\\\" w:space=\\\"0\\\" w:color=\\\"000000\\\"/><w:bottom w:val=\\\"single\\\" w:sz=\\\"4\\\" w:space=\\\"0\\\" w:color=\\\"000000\\\"/><w:right w:val=\\\"single\\\" w:sz=\\\"4\\\" w:space=\\\"0\\\" w:color=\\\"000000\\\"/></w:tcBorders></w:tcPr><w:p><w:pPr><w:pStyle w:val=\\\"TableContents\\\"/><w:rPr></w:rPr></w:pPr><w:r><w:rPr></w:rPr></w:r></w:p><w:p><w:pPr><w:pStyle w:val=\\\"TableContents\\\"/><w:rPr></w:rPr></w:pPr><w:r><w:rPr></w:rPr></w:r></w:p><w:tbl><w:tblPr><w:tblW w:w=\\\"5000\\\" w:type=\\\"pct\\\"/><w:jc w:val=\\\"left\\\"/><w:tblInd w:w=\\\"0\\\" w:type=\\\"dxa\\\"/><w:tblLayout w:type=\\\"fixed\\\"/><w:tblCellMar><w:top w:w=\\\"55\\\" w:type=\\\"dxa\\\"/><w:left w:w=\\\"55\\\" w:type=\\\"dxa\\\"/><w:bottom w:w=\\\"55\\\" w:type=\\\"dxa\\\"/><w:right w:w=\\\"55\\\" w:type=\\\"dxa\\\"/></w:tblCellMar></w:tblPr><w:tblGrid><w:gridCol w:w=\\\"9528\\\"/></w:tblGrid><w:tr><w:trPr></w:trPr><w:tc><w:tcPr><w:tcW w:w=\\\"9528\\\" w:type=\\\"dxa\\\"/><w:tcBorders><w:top w:val=\\\"single\\\" w:sz=\\\"4\\\" w:space=\\\"0\\\" w:color=\\\"000000\\\"/><w:left w:val=\\\"single\\\" w:sz=\\\"4\\\" w:space=\\\"0\\\" w:color=\\\"000000\\\"/><w:bottom w:val=\\\"single\\\" w:sz=\\\"4\\\" w:space=\\\"0\\\" w:color=\\\"000000\\\"/><w:right w:val=\\\"single\\\" w:sz=\\\"4\\\" w:space=\\\"0\\\" w:color=\\\"000000\\\"/></w:tcBorders></w:tcPr><w:p><w:pPr><w:pStyle w:val=\\\"Normal\\\"/><w:bidi w:val=\\\"0\\\"/><w:jc w:val=\\\"left\\\"/><w:rPr><w:rFonts w:ascii=\\\"sans-serif\\\" w:hAnsi=\\\"sans-serif\\\"/><w:b w:val=\\\"false\\\"/><w:i/><w:i/><w:color w:val=\\\"202122\\\"/><w:spacing w:val=\\\"0\\\"/><w:sz w:val=\\\"21\\\"/></w:rPr></w:pPr><w:r><w:rPr><w:rFonts w:ascii=\\\"sans-serif\\\" w:hAnsi=\\\"sans-serif\\\"/><w:b w:val=\\\"false\\\"/><w:i/><w:color w:val=\\\"202122\\\"/><w:spacing w:val=\\\"0\\\"/><w:sz w:val=\\\"21\\\"/></w:rPr><w:t>Innner cell bace4d11-b003-be1a-c3fe-9829474b5d84</w:t></w:r></w:p></w:tc></w:tr></w:tbl><w:p><w:pPr><w:pStyle w:val=\\\"TableContents\\\"/><w:rPr></w:rPr></w:pPr><w:r><w:rPr></w:rPr></w:r></w:p><w:p><w:pPr><w:pStyle w:val=\\\"TableContents\\\"/><w:rPr></w:rPr></w:pPr><w:r><w:rPr></w:rPr></w:r></w:p></w:tc></w:tr></w:tbl><w:p><w:pPr><w:pStyle w:val=\\\"Normal\\\"/><w:bidi w:val=\\\"0\\\"/><w:jc w:val=\\\"left\\\"/><w:rPr><w:rFonts w:ascii=\\\"sans-serif\\\" w:hAnsi=\\\"sans-serif\\\"/><w:b w:val=\\\"false\\\"/><w:i/><w:i/><w:color w:val=\\\"202122\\\"/><w:spacing w:val=\\\"0\\\"/><w:sz w:val=\\\"21\\\"/></w:rPr></w:pPr><w:r><w:rPr><w:rFonts w:ascii=\\\"sans-serif\\\" w:hAnsi=\\\"sans-serif\\\"/><w:b w:val=\\\"false\\\"/><w:i/><w:color w:val=\\\"202122\\\"/><w:spacing w:val=\\\"0\\\"/><w:sz w:val=\\\"21\\\"/></w:rPr></w:r></w:p><w:p><w:pPr><w:pStyle w:val=\\\"Normal\\\"/><w:bidi w:val=\\\"0\\\"/><w:jc w:val=\\\"left\\\"/><w:rPr><w:rFonts w:ascii=\\\"sans-serif\\\" w:hAnsi=\\\"sans-serif\\\"/><w:b w:val=\\\"false\\\"/><w:i/><w:i/><w:color w:val=\\\"202122\\\"/><w:spacing w:val=\\\"0\\\"/><w:sz w:val=\\\"21\\\"/></w:rPr></w:pPr><w:r><w:rPr><w:rFonts w:ascii=\\\"sans-serif\\\" w:hAnsi=\\\"sans-serif\\\"/><w:b w:val=\\\"false\\\"/><w:i/><w:color w:val=\\\"202122\\\"/><w:spacing w:val=\\\"0\\\"/><w:sz w:val=\\\"21\\\"/></w:rPr></w:r></w:p><w:p><w:pPr><w:pStyle w:val=\\\"Normal\\\"/><w:bidi w:val=\\\"0\\\"/><w:jc w:val=\\\"left\\\"/><w:rPr><w:rFonts w:ascii=\\\"sans-serif\\\" w:hAnsi=\\\"sans-serif\\\"/><w:b w:val=\\\"false\\\"/><w:i/><w:i/><w:color w:val=\\\"202122\\\"/><w:spacing w:val=\\\"0\\\"/><w:sz w:val=\\\"21\\\"/></w:rPr></w:pPr><w:r><w:rPr><w:rFonts w:ascii=\\\"sans-serif\\\" w:hAnsi=\\\"sans-serif\\\"/><w:b w:val=\\\"false\\\"/><w:i/><w:color w:val=\\\"202122\\\"/><w:spacing w:val=\\\"0\\\"/><w:sz w:val=\\\"21\\\"/></w:rPr></w:r><w:r><w:br w:type=\\\"page\\\"/></w:r></w:p><w:p><w:pPr><w:pStyle w:val=\\\"Normal\\\"/><w:bidi w:val=\\\"0\\\"/><w:spacing w:before=\\\"0\\\" w:after=\\\"0\\\"/><w:jc w:val=\\\"left\\\"/><w:rPr><w:rFonts w:ascii=\\\"sans-serif\\\" w:hAnsi=\\\"sans-serif\\\"/><w:b w:val=\\\"false\\\"/><w:i/><w:i/><w:color w:val=\\\"202122\\\"/><w:spacing w:val=\\\"0\\\"/><w:sz w:val=\\\"21\\\"/></w:rPr></w:pPr><w:r><w:rPr><w:rFonts w:ascii=\\\"sans-serif\\\" w:hAnsi=\\\"sans-serif\\\"/><w:b w:val=\\\"false\\\"/><w:i/><w:color w:val=\\\"202122\\\"/><w:spacing w:val=\\\"0\\\"/><w:sz w:val=\\\"21\\\"/></w:rPr><w:t xml:space=\\\"preserve\\\">New page </w:t></w:r><w:r><w:rPr><w:rFonts w:ascii=\\\"sans-serif\\\" w:hAnsi=\\\"sans-serif\\\"/><w:b w:val=\\\"false\\\"/><w:i/><w:color w:val=\\\"202122\\\"/><w:spacing w:val=\\\"0\\\"/><w:sz w:val=\\\"21\\\"/></w:rPr><w:t>first line</w:t></w:r><w:r><w:rPr><w:rFonts w:ascii=\\\"sans-serif\\\" w:hAnsi=\\\"sans-serif\\\"/><w:b w:val=\\\"false\\\"/><w:i/><w:color w:val=\\\"202122\\\"/><w:spacing w:val=\\\"0\\\"/><w:sz w:val=\\\"21\\\"/></w:rPr><w:t xml:space=\\\"preserve\\\"> bace4d19-</w:t></w:r><w:r><w:rPr><w:rFonts w:ascii=\\\"sans-serif\\\" w:hAnsi=\\\"sans-serif\\\"/><w:b w:val=\\\"false\\\"/><w:i/><w:color w:val=\\\"202122\\\"/><w:spacing w:val=\\\"0\\\"/><w:sz w:val=\\\"21\\\"/></w:rPr><w:t>b001</w:t></w:r><w:r><w:rPr><w:rFonts w:ascii=\\\"sans-serif\\\" w:hAnsi=\\\"sans-serif\\\"/><w:b w:val=\\\"false\\\"/><w:i/><w:color w:val=\\\"202122\\\"/><w:spacing w:val=\\\"0\\\"/><w:sz w:val=\\\"21\\\"/></w:rPr><w:t>-b3e2-eac1-9129474bcd84</w:t></w:r></w:p><w:p><w:pPr><w:pStyle w:val=\\\"Normal\\\"/><w:bidi w:val=\\\"0\\\"/><w:jc w:val=\\\"left\\\"/><w:rPr><w:rFonts w:ascii=\\\"sans-serif\\\" w:hAnsi=\\\"sans-serif\\\"/><w:b w:val=\\\"false\\\"/><w:i/><w:i/><w:color w:val=\\\"202122\\\"/><w:spacing w:val=\\\"0\\\"/><w:sz w:val=\\\"21\\\"/></w:rPr></w:pPr><w:r><w:rPr><w:rFonts w:ascii=\\\"sans-serif\\\" w:hAnsi=\\\"sans-serif\\\"/><w:b w:val=\\\"false\\\"/><w:i/><w:color w:val=\\\"202122\\\"/><w:spacing w:val=\\\"0\\\"/><w:sz w:val=\\\"21\\\"/></w:rPr></w:r></w:p><w:p><w:pPr><w:sectPr><w:headerReference w:type=\\\"even\\\" r:id=\\\"rId2\\\"/><w:headerReference w:type=\\\"default\\\" r:id=\\\"rId3\\\"/><w:headerReference w:type=\\\"first\\\" r:id=\\\"rId4\\\"/><w:footerReference w:type=\\\"even\\\" r:id=\\\"rId5\\\"/><w:footerReference w:type=\\\"default\\\" r:id=\\\"rId6\\\"/><w:footerReference w:type=\\\"first\\\" r:id=\\\"rId7\\\"/><w:type w:val=\\\"nextPage\\\"/><w:pgSz w:w=\\\"11906\\\" w:h=\\\"16838\\\"/><w:pgMar w:left=\\\"1134\\\" w:right=\\\"1134\\\" w:gutter=\\\"0\\\" w:header=\\\"1134\\\" w:top=\\\"1696\\\" w:footer=\\\"1134\\\" w:bottom=\\\"2104\\\"/><w:pgNumType w:fmt=\\\"decimal\\\"/><w:formProt w:val=\\\"false\\\"/><w:titlePg/><w:textDirection w:val=\\\"lrTb\\\"/><w:docGrid w:type=\\\"default\\\" w:linePitch=\\\"100\\\" w:charSpace=\\\"0\\\"/></w:sectPr></w:pPr></w:p><w:p><w:pPr><w:pStyle w:val=\\\"Normal\\\"/><w:bidi w:val=\\\"0\\\"/><w:jc w:val=\\\"left\\\"/><w:rPr><w:rFonts w:ascii=\\\"sans-serif\\\" w:hAnsi=\\\"sans-serif\\\"/><w:b w:val=\\\"false\\\"/><w:i/><w:i/><w:color w:val=\\\"202122\\\"/><w:spacing w:val=\\\"0\\\"/><w:sz w:val=\\\"21\\\"/></w:rPr></w:pPr><w:r><w:rPr><w:rFonts w:ascii=\\\"sans-serif\\\" w:hAnsi=\\\"sans-serif\\\"/><w:b w:val=\\\"false\\\"/><w:i/><w:color w:val=\\\"202122\\\"/><w:spacing w:val=\\\"0\\\"/><w:sz w:val=\\\"21\\\"/></w:rPr><w:t>Next page section bace4d19-c001-b3e2-eac1-9129474bcd84</w:t></w:r></w:p><w:p><w:pPr><w:pStyle w:val=\\\"Normal\\\"/><w:bidi w:val=\\\"0\\\"/><w:jc w:val=\\\"left\\\"/><w:rPr><w:rFonts w:ascii=\\\"sans-serif\\\" w:hAnsi=\\\"sans-serif\\\"/><w:b w:val=\\\"false\\\"/><w:i/><w:i/><w:color w:val=\\\"202122\\\"/><w:spacing w:val=\\\"0\\\"/><w:sz w:val=\\\"21\\\"/></w:rPr></w:pPr><w:r><w:rPr><w:rFonts w:ascii=\\\"sans-serif\\\" w:hAnsi=\\\"sans-serif\\\"/><w:b w:val=\\\"false\\\"/><w:i/><w:color w:val=\\\"202122\\\"/><w:spacing w:val=\\\"0\\\"/><w:sz w:val=\\\"21\\\"/></w:rPr></w:r></w:p><w:tbl><w:tblPr><w:tblW w:w=\\\"5000\\\" w:type=\\\"pct\\\"/><w:jc w:val=\\\"left\\\"/><w:tblInd w:w=\\\"55\\\" w:type=\\\"dxa\\\"/><w:tblLayout w:type=\\\"fixed\\\"/><w:tblCellMar><w:top w:w=\\\"55\\\" w:type=\\\"dxa\\\"/><w:left w:w=\\\"55\\\" w:type=\\\"dxa\\\"/><w:bottom w:w=\\\"55\\\" w:type=\\\"dxa\\\"/><w:right w:w=\\\"55\\\" w:type=\\\"dxa\\\"/></w:tblCellMar></w:tblPr><w:tblGrid><w:gridCol w:w=\\\"4818\\\"/><w:gridCol w:w=\\\"4819\\\"/></w:tblGrid><w:tr><w:trPr></w:trPr><w:tc><w:tcPr><w:tcW w:w=\\\"4818\\\" w:type=\\\"dxa\\\"/><w:tcBorders><w:top w:val=\\\"single\\\" w:sz=\\\"4\\\" w:space=\\\"0\\\" w:color=\\\"000000\\\"/><w:left w:val=\\\"single\\\" w:sz=\\\"4\\\" w:space=\\\"0\\\" w:color=\\\"000000\\\"/><w:bottom w:val=\\\"single\\\" w:sz=\\\"4\\\" w:space=\\\"0\\\" w:color=\\\"000000\\\"/></w:tcBorders></w:tcPr><w:p><w:pPr><w:pStyle w:val=\\\"TableContents\\\"/><w:rPr></w:rPr></w:pPr><w:r><w:rPr></w:rPr></w:r></w:p></w:tc><w:tc><w:tcPr><w:tcW w:w=\\\"4819\\\" w:type=\\\"dxa\\\"/><w:tcBorders><w:top w:val=\\\"single\\\" w:sz=\\\"4\\\" w:space=\\\"0\\\" w:color=\\\"000000\\\"/><w:left w:val=\\\"single\\\" w:sz=\\\"4\\\" w:space=\\\"0\\\" w:color=\\\"000000\\\"/><w:bottom w:val=\\\"single\\\" w:sz=\\\"4\\\" w:space=\\\"0\\\" w:color=\\\"000000\\\"/><w:right w:val=\\\"single\\\" w:sz=\\\"4\\\" w:space=\\\"0\\\" w:color=\\\"000000\\\"/></w:tcBorders></w:tcPr><w:p><w:pPr><w:pStyle w:val=\\\"TableContents\\\"/><w:rPr></w:rPr></w:pPr><w:r><w:rPr></w:rPr></w:r></w:p></w:tc></w:tr><w:tr><w:trPr></w:trPr><w:tc><w:tcPr><w:tcW w:w=\\\"4818\\\" w:type=\\\"dxa\\\"/><w:tcBorders><w:left w:val=\\\"single\\\" w:sz=\\\"4\\\" w:space=\\\"0\\\" w:color=\\\"000000\\\"/><w:bottom w:val=\\\"single\\\" w:sz=\\\"4\\\" w:space=\\\"0\\\" w:color=\\\"000000\\\"/></w:tcBorders></w:tcPr><w:p><w:pPr><w:pStyle w:val=\\\"TableContents\\\"/><w:rPr></w:rPr></w:pPr><w:r><w:rPr></w:rPr></w:r></w:p></w:tc><w:tc><w:tcPr><w:tcW w:w=\\\"4819\\\" w:type=\\\"dxa\\\"/><w:tcBorders><w:left w:val=\\\"single\\\" w:sz=\\\"4\\\" w:space=\\\"0\\\" w:color=\\\"000000\\\"/><w:bottom w:val=\\\"single\\\" w:sz=\\\"4\\\" w:space=\\\"0\\\" w:color=\\\"000000\\\"/><w:right w:val=\\\"single\\\" w:sz=\\\"4\\\" w:space=\\\"0\\\" w:color=\\\"000000\\\"/></w:tcBorders></w:tcPr><w:p><w:pPr><w:pStyle w:val=\\\"TableContents\\\"/><w:rPr></w:rPr></w:pPr><w:r><w:rPr></w:rPr><w:t xml:space=\\\"preserve\\\">Section </w:t></w:r><w:r><w:rPr></w:rPr><w:t>R2C2</w:t></w:r><w:r><w:rPr></w:rPr><w:t xml:space=\\\"preserve\\\"> b5c6471d-</w:t></w:r><w:r><w:rPr></w:rPr><w:t>a2b2</w:t></w:r><w:r><w:rPr></w:rPr><w:t>-b4ef-ca5e-9121476bc881</w:t></w:r></w:p></w:tc></w:tr></w:tbl><w:p><w:pPr><w:pStyle w:val=\\\"Normal\\\"/><w:bidi w:val=\\\"0\\\"/><w:jc w:val=\\\"left\\\"/><w:rPr><w:rFonts w:ascii=\\\"sans-serif\\\" w:hAnsi=\\\"sans-serif\\\"/><w:b w:val=\\\"false\\\"/><w:i/><w:i/><w:color w:val=\\\"202122\\\"/><w:spacing w:val=\\\"0\\\"/><w:sz w:val=\\\"21\\\"/></w:rPr></w:pPr><w:r><w:rPr><w:rFonts w:ascii=\\\"sans-serif\\\" w:hAnsi=\\\"sans-serif\\\"/><w:b w:val=\\\"false\\\"/><w:i/><w:color w:val=\\\"202122\\\"/><w:spacing w:val=\\\"0\\\"/><w:sz w:val=\\\"21\\\"/></w:rPr></w:r></w:p><w:p><w:pPr><w:pStyle w:val=\\\"Normal\\\"/><w:bidi w:val=\\\"0\\\"/><w:jc w:val=\\\"left\\\"/><w:rPr><w:rFonts w:ascii=\\\"sans-serif\\\" w:hAnsi=\\\"sans-serif\\\"/><w:b w:val=\\\"false\\\"/><w:i/><w:i/><w:color w:val=\\\"202122\\\"/><w:spacing w:val=\\\"0\\\"/><w:sz w:val=\\\"21\\\"/></w:rPr></w:pPr><w:r><w:rPr><w:rFonts w:ascii=\\\"sans-serif\\\" w:hAnsi=\\\"sans-serif\\\"/><w:b w:val=\\\"false\\\"/><w:i/><w:color w:val=\\\"202122\\\"/><w:spacing w:val=\\\"0\\\"/><w:sz w:val=\\\"21\\\"/></w:rPr></w:r></w:p><w:p><w:pPr><w:sectPr><w:type w:val=\\\"continuous\\\"/><w:pgSz w:w=\\\"11906\\\" w:h=\\\"16838\\\"/><w:pgMar w:left=\\\"1134\\\" w:right=\\\"1134\\\" w:gutter=\\\"0\\\" w:header=\\\"1134\\\" w:top=\\\"1696\\\" w:footer=\\\"1134\\\" w:bottom=\\\"2104\\\"/><w:formProt w:val=\\\"false\\\"/><w:titlePg/><w:textDirection w:val=\\\"lrTb\\\"/><w:docGrid w:type=\\\"default\\\" w:linePitch=\\\"100\\\" w:charSpace=\\\"0\\\"/></w:sectPr></w:pPr></w:p><w:p><w:pPr><w:pStyle w:val=\\\"Normal\\\"/><w:bidi w:val=\\\"0\\\"/><w:jc w:val=\\\"left\\\"/><w:rPr><w:rFonts w:ascii=\\\"sans-serif\\\" w:hAnsi=\\\"sans-serif\\\"/><w:b w:val=\\\"false\\\"/><w:i/><w:i/><w:color w:val=\\\"202122\\\"/><w:spacing w:val=\\\"0\\\"/><w:sz w:val=\\\"21\\\"/></w:rPr></w:pPr><w:r><w:rPr><w:rFonts w:ascii=\\\"sans-serif\\\" w:hAnsi=\\\"sans-serif\\\"/><w:b w:val=\\\"false\\\"/><w:i/><w:color w:val=\\\"202122\\\"/><w:spacing w:val=\\\"0\\\"/><w:sz w:val=\\\"21\\\"/></w:rPr></w:r></w:p><w:p><w:pPr><w:pStyle w:val=\\\"Normal\\\"/><w:bidi w:val=\\\"0\\\"/><w:jc w:val=\\\"left\\\"/><w:rPr><w:rFonts w:ascii=\\\"sans-serif\\\" w:hAnsi=\\\"sans-serif\\\"/><w:b w:val=\\\"false\\\"/><w:i/><w:i/><w:color w:val=\\\"202122\\\"/><w:spacing w:val=\\\"0\\\"/><w:sz w:val=\\\"21\\\"/></w:rPr></w:pPr><w:r><w:rPr></w:rPr><w:t>next line in section bace4d19-c001-b3e2-eac1-9129474bcd84</w:t></w:r><w:r><w:br w:type=\\\"page\\\"/></w:r></w:p><w:p><w:pPr><w:pStyle w:val=\\\"Normal\\\"/><w:bidi w:val=\\\"0\\\"/><w:jc w:val=\\\"left\\\"/><w:rPr></w:rPr></w:pPr><w:r><w:rPr></w:rPr></w:r></w:p><w:p><w:pPr><w:pStyle w:val=\\\"Normal\\\"/><w:bidi w:val=\\\"0\\\"/><w:jc w:val=\\\"left\\\"/><w:rPr></w:rPr></w:pPr><w:r><w:rPr></w:rPr></w:r></w:p><w:p><w:pPr><w:pStyle w:val=\\\"Normal\\\"/><w:bidi w:val=\\\"0\\\"/><w:jc w:val=\\\"left\\\"/><w:rPr></w:rPr></w:pPr><w:r><w:rPr></w:rPr></w:r></w:p><w:p><w:pPr><w:pStyle w:val=\\\"Normal\\\"/><w:bidi w:val=\\\"0\\\"/><w:jc w:val=\\\"left\\\"/><w:rPr></w:rPr></w:pPr><w:r><w:rPr></w:rPr></w:r></w:p><w:p><w:pPr><w:pStyle w:val=\\\"Normal\\\"/><w:bidi w:val=\\\"0\\\"/><w:jc w:val=\\\"left\\\"/><w:rPr></w:rPr></w:pPr><w:r><w:rPr></w:rPr><w:t xml:space=\\\"preserve\\\">last page </w:t></w:r><w:r><w:rPr><w:rFonts w:ascii=\\\"JetBrains Mono\\\" w:hAnsi=\\\"JetBrains Mono\\\"/><w:b w:val=\\\"false\\\"/><w:i w:val=\\\"false\\\"/><w:color w:val=\\\"6A8759\\\"/><w:spacing w:val=\\\"0\\\"/><w:sz w:val=\\\"20\\\"/></w:rPr><w:t xml:space=\\\"preserve\\\"> bace4d11-a003-be2a-c3fe-9829474b5d84</w:t></w:r></w:p><w:sectPr><w:type w:val=\\\"continuous\\\"/><w:pgSz w:w=\\\"11906\\\" w:h=\\\"16838\\\"/><w:pgMar w:left=\\\"1134\\\" w:right=\\\"1134\\\" w:gutter=\\\"0\\\" w:header=\\\"1134\\\" w:top=\\\"1696\\\" w:footer=\\\"1134\\\" w:bottom=\\\"2104\\\"/><w:formProt w:val=\\\"false\\\"/><w:titlePg/><w:textDirection w:val=\\\"lrTb\\\"/><w:docGrid w:type=\\\"default\\\" w:linePitch=\\\"100\\\" w:charSpace=\\\"0\\\"/></w:sectPr></w:body></w:document>\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/sample.docx\",\n                \"info\": \"FILE:./tests/samples/sample.docx|ZIP:word/document.xml|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"bace4d11-a002-be1a-c3fe-9829474b5d84\",\n                \"value_start\": 1913,\n                \"value_end\": 1949,\n                \"entropy\": 3.86383\n            }\n        ]\n    },\n    {\n        \"rule\": \"UUID\",\n        \"severity\": \"info\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"<w:document xmlns:o=\\\"urn:schemas-microsoft-com:office:office\\\" xmlns:r=\\\"http://schemas.openxmlformats.org/officeDocument/2006/relationships\\\" xmlns:v=\\\"urn:schemas-microsoft-com:vml\\\" xmlns:w=\\\"http://schemas.openxmlformats.org/wordprocessingml/2006/main\\\" xmlns:w10=\\\"urn:schemas-microsoft-com:office:word\\\" xmlns:wp=\\\"http://schemas.openxmlformats.org/drawingml/2006/wordprocessingDrawing\\\" xmlns:wps=\\\"http://schemas.microsoft.com/office/word/2010/wordprocessingShape\\\" xmlns:wpg=\\\"http://schemas.microsoft.com/office/word/2010/wordprocessingGroup\\\" xmlns:mc=\\\"http://schemas.openxmlformats.org/markup-compatibility/2006\\\" xmlns:wp14=\\\"http://schemas.microsoft.com/office/word/2010/wordprocessingDrawing\\\" xmlns:w14=\\\"http://schemas.microsoft.com/office/word/2010/wordml\\\" xmlns:w15=\\\"http://schemas.microsoft.com/office/word/2012/wordml\\\" mc:Ignorable=\\\"w14 wp14 w15\\\"><w:body><w:p><w:pPr><w:pStyle w:val=\\\"Header\\\"/><w:bidi w:val=\\\"0\\\"/><w:jc w:val=\\\"left\\\"/><w:rPr><w:rFonts w:ascii=\\\"sans-serif\\\" w:hAnsi=\\\"sans-serif\\\"/><w:b w:val=\\\"false\\\"/><w:i/><w:i/><w:color w:val=\\\"202122\\\"/><w:spacing w:val=\\\"0\\\"/><w:sz w:val=\\\"21\\\"/></w:rPr></w:pPr><w:r><w:rPr></w:rPr><w:t xml:space=\\\"preserve\\\">First </w:t></w:r><w:r><w:rPr></w:rPr><w:t xml:space=\\\"preserve\\\">line </w:t></w:r><w:r><w:rPr></w:rPr><w:t>bace4d11-</w:t></w:r><w:r><w:rPr></w:rPr><w:t>a</w:t></w:r><w:r><w:rPr></w:rPr><w:t>001-be</w:t></w:r><w:r><w:rPr></w:rPr><w:t>1</w:t></w:r><w:r><w:rPr></w:rPr><w:t>a-c3fe-9829474b5d84</w:t></w:r></w:p><w:p><w:pPr><w:pStyle w:val=\\\"Normal\\\"/><w:shd w:fill=\\\"2B2B2B\\\"/><w:rPr><w:rFonts w:ascii=\\\"JetBrains Mono\\\" w:hAnsi=\\\"JetBrains Mono\\\"/><w:b w:val=\\\"false\\\"/><w:i w:val=\\\"false\\\"/><w:i w:val=\\\"false\\\"/><w:color w:val=\\\"6A8759\\\"/><w:sz w:val=\\\"20\\\"/></w:rPr></w:pPr><w:r><w:rPr><w:rFonts w:ascii=\\\"JetBrains Mono\\\" w:hAnsi=\\\"JetBrains Mono\\\"/><w:b w:val=\\\"false\\\"/><w:i w:val=\\\"false\\\"/><w:color w:val=\\\"6A8759\\\"/><w:spacing w:val=\\\"0\\\"/><w:sz w:val=\\\"20\\\"/></w:rPr><w:t>second line bace4d11-a002-be1a-c3fe-9829474b5d84</w:t></w:r></w:p><w:p><w:pPr><w:pStyle w:val=\\\"Normal\\\"/><w:bidi w:val=\\\"0\\\"/><w:jc w:val=\\\"left\\\"/><w:rPr><w:rFonts w:ascii=\\\"sans-serif\\\" w:hAnsi=\\\"sans-serif\\\"/><w:b w:val=\\\"false\\\"/><w:i/><w:i/><w:color w:val=\\\"202122\\\"/><w:spacing w:val=\\\"0\\\"/><w:sz w:val=\\\"21\\\"/></w:rPr></w:pPr><w:r><w:rPr><w:rFonts w:ascii=\\\"sans-serif\\\" w:hAnsi=\\\"sans-serif\\\"/><w:b w:val=\\\"false\\\"/><w:i/><w:color w:val=\\\"202122\\\"/><w:spacing w:val=\\\"0\\\"/><w:sz w:val=\\\"21\\\"/></w:rPr></w:r></w:p><w:tbl><w:tblPr><w:tblW w:w=\\\"5000\\\" w:type=\\\"pct\\\"/><w:jc w:val=\\\"left\\\"/><w:tblInd w:w=\\\"55\\\" w:type=\\\"dxa\\\"/><w:tblLayout w:type=\\\"fixed\\\"/><w:tblCellMar><w:top w:w=\\\"55\\\" w:type=\\\"dxa\\\"/><w:left w:w=\\\"55\\\" w:type=\\\"dxa\\\"/><w:bottom w:w=\\\"55\\\" w:type=\\\"dxa\\\"/><w:right w:w=\\\"55\\\" w:type=\\\"dxa\\\"/></w:tblCellMar></w:tblPr><w:tblGrid><w:gridCol w:w=\\\"9638\\\"/></w:tblGrid><w:tr><w:trPr></w:trPr><w:tc><w:tcPr><w:tcW w:w=\\\"9638\\\" w:type=\\\"dxa\\\"/><w:tcBorders><w:top w:val=\\\"single\\\" w:sz=\\\"4\\\" w:space=\\\"0\\\" w:color=\\\"000000\\\"/><w:left w:val=\\\"single\\\" w:sz=\\\"4\\\" w:space=\\\"0\\\" w:color=\\\"000000\\\"/><w:bottom w:val=\\\"single\\\" w:sz=\\\"4\\\" w:space=\\\"0\\\" w:color=\\\"000000\\\"/><w:right w:val=\\\"single\\\" w:sz=\\\"4\\\" w:space=\\\"0\\\" w:color=\\\"000000\\\"/></w:tcBorders></w:tcPr><w:p><w:pPr><w:pStyle w:val=\\\"TableContents\\\"/><w:rPr></w:rPr></w:pPr><w:r><w:rPr></w:rPr></w:r></w:p><w:p><w:pPr><w:pStyle w:val=\\\"TableContents\\\"/><w:rPr></w:rPr></w:pPr><w:r><w:rPr></w:rPr></w:r></w:p><w:tbl><w:tblPr><w:tblW w:w=\\\"5000\\\" w:type=\\\"pct\\\"/><w:jc w:val=\\\"left\\\"/><w:tblInd w:w=\\\"0\\\" w:type=\\\"dxa\\\"/><w:tblLayout w:type=\\\"fixed\\\"/><w:tblCellMar><w:top w:w=\\\"55\\\" w:type=\\\"dxa\\\"/><w:left w:w=\\\"55\\\" w:type=\\\"dxa\\\"/><w:bottom w:w=\\\"55\\\" w:type=\\\"dxa\\\"/><w:right w:w=\\\"55\\\" w:type=\\\"dxa\\\"/></w:tblCellMar></w:tblPr><w:tblGrid><w:gridCol w:w=\\\"9528\\\"/></w:tblGrid><w:tr><w:trPr></w:trPr><w:tc><w:tcPr><w:tcW w:w=\\\"9528\\\" w:type=\\\"dxa\\\"/><w:tcBorders><w:top w:val=\\\"single\\\" w:sz=\\\"4\\\" w:space=\\\"0\\\" w:color=\\\"000000\\\"/><w:left w:val=\\\"single\\\" w:sz=\\\"4\\\" w:space=\\\"0\\\" w:color=\\\"000000\\\"/><w:bottom w:val=\\\"single\\\" w:sz=\\\"4\\\" w:space=\\\"0\\\" w:color=\\\"000000\\\"/><w:right w:val=\\\"single\\\" w:sz=\\\"4\\\" w:space=\\\"0\\\" w:color=\\\"000000\\\"/></w:tcBorders></w:tcPr><w:p><w:pPr><w:pStyle w:val=\\\"Normal\\\"/><w:bidi w:val=\\\"0\\\"/><w:jc w:val=\\\"left\\\"/><w:rPr><w:rFonts w:ascii=\\\"sans-serif\\\" w:hAnsi=\\\"sans-serif\\\"/><w:b w:val=\\\"false\\\"/><w:i/><w:i/><w:color w:val=\\\"202122\\\"/><w:spacing w:val=\\\"0\\\"/><w:sz w:val=\\\"21\\\"/></w:rPr></w:pPr><w:r><w:rPr><w:rFonts w:ascii=\\\"sans-serif\\\" w:hAnsi=\\\"sans-serif\\\"/><w:b w:val=\\\"false\\\"/><w:i/><w:color w:val=\\\"202122\\\"/><w:spacing w:val=\\\"0\\\"/><w:sz w:val=\\\"21\\\"/></w:rPr><w:t>Innner cell bace4d11-b003-be1a-c3fe-9829474b5d84</w:t></w:r></w:p></w:tc></w:tr></w:tbl><w:p><w:pPr><w:pStyle w:val=\\\"TableContents\\\"/><w:rPr></w:rPr></w:pPr><w:r><w:rPr></w:rPr></w:r></w:p><w:p><w:pPr><w:pStyle w:val=\\\"TableContents\\\"/><w:rPr></w:rPr></w:pPr><w:r><w:rPr></w:rPr></w:r></w:p></w:tc></w:tr></w:tbl><w:p><w:pPr><w:pStyle w:val=\\\"Normal\\\"/><w:bidi w:val=\\\"0\\\"/><w:jc w:val=\\\"left\\\"/><w:rPr><w:rFonts w:ascii=\\\"sans-serif\\\" w:hAnsi=\\\"sans-serif\\\"/><w:b w:val=\\\"false\\\"/><w:i/><w:i/><w:color w:val=\\\"202122\\\"/><w:spacing w:val=\\\"0\\\"/><w:sz w:val=\\\"21\\\"/></w:rPr></w:pPr><w:r><w:rPr><w:rFonts w:ascii=\\\"sans-serif\\\" w:hAnsi=\\\"sans-serif\\\"/><w:b w:val=\\\"false\\\"/><w:i/><w:color w:val=\\\"202122\\\"/><w:spacing w:val=\\\"0\\\"/><w:sz w:val=\\\"21\\\"/></w:rPr></w:r></w:p><w:p><w:pPr><w:pStyle w:val=\\\"Normal\\\"/><w:bidi w:val=\\\"0\\\"/><w:jc w:val=\\\"left\\\"/><w:rPr><w:rFonts w:ascii=\\\"sans-serif\\\" w:hAnsi=\\\"sans-serif\\\"/><w:b w:val=\\\"false\\\"/><w:i/><w:i/><w:color w:val=\\\"202122\\\"/><w:spacing w:val=\\\"0\\\"/><w:sz w:val=\\\"21\\\"/></w:rPr></w:pPr><w:r><w:rPr><w:rFonts w:ascii=\\\"sans-serif\\\" w:hAnsi=\\\"sans-serif\\\"/><w:b w:val=\\\"false\\\"/><w:i/><w:color w:val=\\\"202122\\\"/><w:spacing w:val=\\\"0\\\"/><w:sz w:val=\\\"21\\\"/></w:rPr></w:r></w:p><w:p><w:pPr><w:pStyle w:val=\\\"Normal\\\"/><w:bidi w:val=\\\"0\\\"/><w:jc w:val=\\\"left\\\"/><w:rPr><w:rFonts w:ascii=\\\"sans-serif\\\" w:hAnsi=\\\"sans-serif\\\"/><w:b w:val=\\\"false\\\"/><w:i/><w:i/><w:color w:val=\\\"202122\\\"/><w:spacing w:val=\\\"0\\\"/><w:sz w:val=\\\"21\\\"/></w:rPr></w:pPr><w:r><w:rPr><w:rFonts w:ascii=\\\"sans-serif\\\" w:hAnsi=\\\"sans-serif\\\"/><w:b w:val=\\\"false\\\"/><w:i/><w:color w:val=\\\"202122\\\"/><w:spacing w:val=\\\"0\\\"/><w:sz w:val=\\\"21\\\"/></w:rPr></w:r><w:r><w:br w:type=\\\"page\\\"/></w:r></w:p><w:p><w:pPr><w:pStyle w:val=\\\"Normal\\\"/><w:bidi w:val=\\\"0\\\"/><w:spacing w:before=\\\"0\\\" w:after=\\\"0\\\"/><w:jc w:val=\\\"left\\\"/><w:rPr><w:rFonts w:ascii=\\\"sans-serif\\\" w:hAnsi=\\\"sans-serif\\\"/><w:b w:val=\\\"false\\\"/><w:i/><w:i/><w:color w:val=\\\"202122\\\"/><w:spacing w:val=\\\"0\\\"/><w:sz w:val=\\\"21\\\"/></w:rPr></w:pPr><w:r><w:rPr><w:rFonts w:ascii=\\\"sans-serif\\\" w:hAnsi=\\\"sans-serif\\\"/><w:b w:val=\\\"false\\\"/><w:i/><w:color w:val=\\\"202122\\\"/><w:spacing w:val=\\\"0\\\"/><w:sz w:val=\\\"21\\\"/></w:rPr><w:t xml:space=\\\"preserve\\\">New page </w:t></w:r><w:r><w:rPr><w:rFonts w:ascii=\\\"sans-serif\\\" w:hAnsi=\\\"sans-serif\\\"/><w:b w:val=\\\"false\\\"/><w:i/><w:color w:val=\\\"202122\\\"/><w:spacing w:val=\\\"0\\\"/><w:sz w:val=\\\"21\\\"/></w:rPr><w:t>first line</w:t></w:r><w:r><w:rPr><w:rFonts w:ascii=\\\"sans-serif\\\" w:hAnsi=\\\"sans-serif\\\"/><w:b w:val=\\\"false\\\"/><w:i/><w:color w:val=\\\"202122\\\"/><w:spacing w:val=\\\"0\\\"/><w:sz w:val=\\\"21\\\"/></w:rPr><w:t xml:space=\\\"preserve\\\"> bace4d19-</w:t></w:r><w:r><w:rPr><w:rFonts w:ascii=\\\"sans-serif\\\" w:hAnsi=\\\"sans-serif\\\"/><w:b w:val=\\\"false\\\"/><w:i/><w:color w:val=\\\"202122\\\"/><w:spacing w:val=\\\"0\\\"/><w:sz w:val=\\\"21\\\"/></w:rPr><w:t>b001</w:t></w:r><w:r><w:rPr><w:rFonts w:ascii=\\\"sans-serif\\\" w:hAnsi=\\\"sans-serif\\\"/><w:b w:val=\\\"false\\\"/><w:i/><w:color w:val=\\\"202122\\\"/><w:spacing w:val=\\\"0\\\"/><w:sz w:val=\\\"21\\\"/></w:rPr><w:t>-b3e2-eac1-9129474bcd84</w:t></w:r></w:p><w:p><w:pPr><w:pStyle w:val=\\\"Normal\\\"/><w:bidi w:val=\\\"0\\\"/><w:jc w:val=\\\"left\\\"/><w:rPr><w:rFonts w:ascii=\\\"sans-serif\\\" w:hAnsi=\\\"sans-serif\\\"/><w:b w:val=\\\"false\\\"/><w:i/><w:i/><w:color w:val=\\\"202122\\\"/><w:spacing w:val=\\\"0\\\"/><w:sz w:val=\\\"21\\\"/></w:rPr></w:pPr><w:r><w:rPr><w:rFonts w:ascii=\\\"sans-serif\\\" w:hAnsi=\\\"sans-serif\\\"/><w:b w:val=\\\"false\\\"/><w:i/><w:color w:val=\\\"202122\\\"/><w:spacing w:val=\\\"0\\\"/><w:sz w:val=\\\"21\\\"/></w:rPr></w:r></w:p><w:p><w:pPr><w:sectPr><w:headerReference w:type=\\\"even\\\" r:id=\\\"rId2\\\"/><w:headerReference w:type=\\\"default\\\" r:id=\\\"rId3\\\"/><w:headerReference w:type=\\\"first\\\" r:id=\\\"rId4\\\"/><w:footerReference w:type=\\\"even\\\" r:id=\\\"rId5\\\"/><w:footerReference w:type=\\\"default\\\" r:id=\\\"rId6\\\"/><w:footerReference w:type=\\\"first\\\" r:id=\\\"rId7\\\"/><w:type w:val=\\\"nextPage\\\"/><w:pgSz w:w=\\\"11906\\\" w:h=\\\"16838\\\"/><w:pgMar w:left=\\\"1134\\\" w:right=\\\"1134\\\" w:gutter=\\\"0\\\" w:header=\\\"1134\\\" w:top=\\\"1696\\\" w:footer=\\\"1134\\\" w:bottom=\\\"2104\\\"/><w:pgNumType w:fmt=\\\"decimal\\\"/><w:formProt w:val=\\\"false\\\"/><w:titlePg/><w:textDirection w:val=\\\"lrTb\\\"/><w:docGrid w:type=\\\"default\\\" w:linePitch=\\\"100\\\" w:charSpace=\\\"0\\\"/></w:sectPr></w:pPr></w:p><w:p><w:pPr><w:pStyle w:val=\\\"Normal\\\"/><w:bidi w:val=\\\"0\\\"/><w:jc w:val=\\\"left\\\"/><w:rPr><w:rFonts w:ascii=\\\"sans-serif\\\" w:hAnsi=\\\"sans-serif\\\"/><w:b w:val=\\\"false\\\"/><w:i/><w:i/><w:color w:val=\\\"202122\\\"/><w:spacing w:val=\\\"0\\\"/><w:sz w:val=\\\"21\\\"/></w:rPr></w:pPr><w:r><w:rPr><w:rFonts w:ascii=\\\"sans-serif\\\" w:hAnsi=\\\"sans-serif\\\"/><w:b w:val=\\\"false\\\"/><w:i/><w:color w:val=\\\"202122\\\"/><w:spacing w:val=\\\"0\\\"/><w:sz w:val=\\\"21\\\"/></w:rPr><w:t>Next page section bace4d19-c001-b3e2-eac1-9129474bcd84</w:t></w:r></w:p><w:p><w:pPr><w:pStyle w:val=\\\"Normal\\\"/><w:bidi w:val=\\\"0\\\"/><w:jc w:val=\\\"left\\\"/><w:rPr><w:rFonts w:ascii=\\\"sans-serif\\\" w:hAnsi=\\\"sans-serif\\\"/><w:b w:val=\\\"false\\\"/><w:i/><w:i/><w:color w:val=\\\"202122\\\"/><w:spacing w:val=\\\"0\\\"/><w:sz w:val=\\\"21\\\"/></w:rPr></w:pPr><w:r><w:rPr><w:rFonts w:ascii=\\\"sans-serif\\\" w:hAnsi=\\\"sans-serif\\\"/><w:b w:val=\\\"false\\\"/><w:i/><w:color w:val=\\\"202122\\\"/><w:spacing w:val=\\\"0\\\"/><w:sz w:val=\\\"21\\\"/></w:rPr></w:r></w:p><w:tbl><w:tblPr><w:tblW w:w=\\\"5000\\\" w:type=\\\"pct\\\"/><w:jc w:val=\\\"left\\\"/><w:tblInd w:w=\\\"55\\\" w:type=\\\"dxa\\\"/><w:tblLayout w:type=\\\"fixed\\\"/><w:tblCellMar><w:top w:w=\\\"55\\\" w:type=\\\"dxa\\\"/><w:left w:w=\\\"55\\\" w:type=\\\"dxa\\\"/><w:bottom w:w=\\\"55\\\" w:type=\\\"dxa\\\"/><w:right w:w=\\\"55\\\" w:type=\\\"dxa\\\"/></w:tblCellMar></w:tblPr><w:tblGrid><w:gridCol w:w=\\\"4818\\\"/><w:gridCol w:w=\\\"4819\\\"/></w:tblGrid><w:tr><w:trPr></w:trPr><w:tc><w:tcPr><w:tcW w:w=\\\"4818\\\" w:type=\\\"dxa\\\"/><w:tcBorders><w:top w:val=\\\"single\\\" w:sz=\\\"4\\\" w:space=\\\"0\\\" w:color=\\\"000000\\\"/><w:left w:val=\\\"single\\\" w:sz=\\\"4\\\" w:space=\\\"0\\\" w:color=\\\"000000\\\"/><w:bottom w:val=\\\"single\\\" w:sz=\\\"4\\\" w:space=\\\"0\\\" w:color=\\\"000000\\\"/></w:tcBorders></w:tcPr><w:p><w:pPr><w:pStyle w:val=\\\"TableContents\\\"/><w:rPr></w:rPr></w:pPr><w:r><w:rPr></w:rPr></w:r></w:p></w:tc><w:tc><w:tcPr><w:tcW w:w=\\\"4819\\\" w:type=\\\"dxa\\\"/><w:tcBorders><w:top w:val=\\\"single\\\" w:sz=\\\"4\\\" w:space=\\\"0\\\" w:color=\\\"000000\\\"/><w:left w:val=\\\"single\\\" w:sz=\\\"4\\\" w:space=\\\"0\\\" w:color=\\\"000000\\\"/><w:bottom w:val=\\\"single\\\" w:sz=\\\"4\\\" w:space=\\\"0\\\" w:color=\\\"000000\\\"/><w:right w:val=\\\"single\\\" w:sz=\\\"4\\\" w:space=\\\"0\\\" w:color=\\\"000000\\\"/></w:tcBorders></w:tcPr><w:p><w:pPr><w:pStyle w:val=\\\"TableContents\\\"/><w:rPr></w:rPr></w:pPr><w:r><w:rPr></w:rPr></w:r></w:p></w:tc></w:tr><w:tr><w:trPr></w:trPr><w:tc><w:tcPr><w:tcW w:w=\\\"4818\\\" w:type=\\\"dxa\\\"/><w:tcBorders><w:left w:val=\\\"single\\\" w:sz=\\\"4\\\" w:space=\\\"0\\\" w:color=\\\"000000\\\"/><w:bottom w:val=\\\"single\\\" w:sz=\\\"4\\\" w:space=\\\"0\\\" w:color=\\\"000000\\\"/></w:tcBorders></w:tcPr><w:p><w:pPr><w:pStyle w:val=\\\"TableContents\\\"/><w:rPr></w:rPr></w:pPr><w:r><w:rPr></w:rPr></w:r></w:p></w:tc><w:tc><w:tcPr><w:tcW w:w=\\\"4819\\\" w:type=\\\"dxa\\\"/><w:tcBorders><w:left w:val=\\\"single\\\" w:sz=\\\"4\\\" w:space=\\\"0\\\" w:color=\\\"000000\\\"/><w:bottom w:val=\\\"single\\\" w:sz=\\\"4\\\" w:space=\\\"0\\\" w:color=\\\"000000\\\"/><w:right w:val=\\\"single\\\" w:sz=\\\"4\\\" w:space=\\\"0\\\" w:color=\\\"000000\\\"/></w:tcBorders></w:tcPr><w:p><w:pPr><w:pStyle w:val=\\\"TableContents\\\"/><w:rPr></w:rPr></w:pPr><w:r><w:rPr></w:rPr><w:t xml:space=\\\"preserve\\\">Section </w:t></w:r><w:r><w:rPr></w:rPr><w:t>R2C2</w:t></w:r><w:r><w:rPr></w:rPr><w:t xml:space=\\\"preserve\\\"> b5c6471d-</w:t></w:r><w:r><w:rPr></w:rPr><w:t>a2b2</w:t></w:r><w:r><w:rPr></w:rPr><w:t>-b4ef-ca5e-9121476bc881</w:t></w:r></w:p></w:tc></w:tr></w:tbl><w:p><w:pPr><w:pStyle w:val=\\\"Normal\\\"/><w:bidi w:val=\\\"0\\\"/><w:jc w:val=\\\"left\\\"/><w:rPr><w:rFonts w:ascii=\\\"sans-serif\\\" w:hAnsi=\\\"sans-serif\\\"/><w:b w:val=\\\"false\\\"/><w:i/><w:i/><w:color w:val=\\\"202122\\\"/><w:spacing w:val=\\\"0\\\"/><w:sz w:val=\\\"21\\\"/></w:rPr></w:pPr><w:r><w:rPr><w:rFonts w:ascii=\\\"sans-serif\\\" w:hAnsi=\\\"sans-serif\\\"/><w:b w:val=\\\"false\\\"/><w:i/><w:color w:val=\\\"202122\\\"/><w:spacing w:val=\\\"0\\\"/><w:sz w:val=\\\"21\\\"/></w:rPr></w:r></w:p><w:p><w:pPr><w:pStyle w:val=\\\"Normal\\\"/><w:bidi w:val=\\\"0\\\"/><w:jc w:val=\\\"left\\\"/><w:rPr><w:rFonts w:ascii=\\\"sans-serif\\\" w:hAnsi=\\\"sans-serif\\\"/><w:b w:val=\\\"false\\\"/><w:i/><w:i/><w:color w:val=\\\"202122\\\"/><w:spacing w:val=\\\"0\\\"/><w:sz w:val=\\\"21\\\"/></w:rPr></w:pPr><w:r><w:rPr><w:rFonts w:ascii=\\\"sans-serif\\\" w:hAnsi=\\\"sans-serif\\\"/><w:b w:val=\\\"false\\\"/><w:i/><w:color w:val=\\\"202122\\\"/><w:spacing w:val=\\\"0\\\"/><w:sz w:val=\\\"21\\\"/></w:rPr></w:r></w:p><w:p><w:pPr><w:sectPr><w:type w:val=\\\"continuous\\\"/><w:pgSz w:w=\\\"11906\\\" w:h=\\\"16838\\\"/><w:pgMar w:left=\\\"1134\\\" w:right=\\\"1134\\\" w:gutter=\\\"0\\\" w:header=\\\"1134\\\" w:top=\\\"1696\\\" w:footer=\\\"1134\\\" w:bottom=\\\"2104\\\"/><w:formProt w:val=\\\"false\\\"/><w:titlePg/><w:textDirection w:val=\\\"lrTb\\\"/><w:docGrid w:type=\\\"default\\\" w:linePitch=\\\"100\\\" w:charSpace=\\\"0\\\"/></w:sectPr></w:pPr></w:p><w:p><w:pPr><w:pStyle w:val=\\\"Normal\\\"/><w:bidi w:val=\\\"0\\\"/><w:jc w:val=\\\"left\\\"/><w:rPr><w:rFonts w:ascii=\\\"sans-serif\\\" w:hAnsi=\\\"sans-serif\\\"/><w:b w:val=\\\"false\\\"/><w:i/><w:i/><w:color w:val=\\\"202122\\\"/><w:spacing w:val=\\\"0\\\"/><w:sz w:val=\\\"21\\\"/></w:rPr></w:pPr><w:r><w:rPr><w:rFonts w:ascii=\\\"sans-serif\\\" w:hAnsi=\\\"sans-serif\\\"/><w:b w:val=\\\"false\\\"/><w:i/><w:color w:val=\\\"202122\\\"/><w:spacing w:val=\\\"0\\\"/><w:sz w:val=\\\"21\\\"/></w:rPr></w:r></w:p><w:p><w:pPr><w:pStyle w:val=\\\"Normal\\\"/><w:bidi w:val=\\\"0\\\"/><w:jc w:val=\\\"left\\\"/><w:rPr><w:rFonts w:ascii=\\\"sans-serif\\\" w:hAnsi=\\\"sans-serif\\\"/><w:b w:val=\\\"false\\\"/><w:i/><w:i/><w:color w:val=\\\"202122\\\"/><w:spacing w:val=\\\"0\\\"/><w:sz w:val=\\\"21\\\"/></w:rPr></w:pPr><w:r><w:rPr></w:rPr><w:t>next line in section bace4d19-c001-b3e2-eac1-9129474bcd84</w:t></w:r><w:r><w:br w:type=\\\"page\\\"/></w:r></w:p><w:p><w:pPr><w:pStyle w:val=\\\"Normal\\\"/><w:bidi w:val=\\\"0\\\"/><w:jc w:val=\\\"left\\\"/><w:rPr></w:rPr></w:pPr><w:r><w:rPr></w:rPr></w:r></w:p><w:p><w:pPr><w:pStyle w:val=\\\"Normal\\\"/><w:bidi w:val=\\\"0\\\"/><w:jc w:val=\\\"left\\\"/><w:rPr></w:rPr></w:pPr><w:r><w:rPr></w:rPr></w:r></w:p><w:p><w:pPr><w:pStyle w:val=\\\"Normal\\\"/><w:bidi w:val=\\\"0\\\"/><w:jc w:val=\\\"left\\\"/><w:rPr></w:rPr></w:pPr><w:r><w:rPr></w:rPr></w:r></w:p><w:p><w:pPr><w:pStyle w:val=\\\"Normal\\\"/><w:bidi w:val=\\\"0\\\"/><w:jc w:val=\\\"left\\\"/><w:rPr></w:rPr></w:pPr><w:r><w:rPr></w:rPr></w:r></w:p><w:p><w:pPr><w:pStyle w:val=\\\"Normal\\\"/><w:bidi w:val=\\\"0\\\"/><w:jc w:val=\\\"left\\\"/><w:rPr></w:rPr></w:pPr><w:r><w:rPr></w:rPr><w:t xml:space=\\\"preserve\\\">last page </w:t></w:r><w:r><w:rPr><w:rFonts w:ascii=\\\"JetBrains Mono\\\" w:hAnsi=\\\"JetBrains Mono\\\"/><w:b w:val=\\\"false\\\"/><w:i w:val=\\\"false\\\"/><w:color w:val=\\\"6A8759\\\"/><w:spacing w:val=\\\"0\\\"/><w:sz w:val=\\\"20\\\"/></w:rPr><w:t xml:space=\\\"preserve\\\"> bace4d11-a003-be2a-c3fe-9829474b5d84</w:t></w:r></w:p><w:sectPr><w:type w:val=\\\"continuous\\\"/><w:pgSz w:w=\\\"11906\\\" w:h=\\\"16838\\\"/><w:pgMar w:left=\\\"1134\\\" w:right=\\\"1134\\\" w:gutter=\\\"0\\\" w:header=\\\"1134\\\" w:top=\\\"1696\\\" w:footer=\\\"1134\\\" w:bottom=\\\"2104\\\"/><w:formProt w:val=\\\"false\\\"/><w:titlePg/><w:textDirection w:val=\\\"lrTb\\\"/><w:docGrid w:type=\\\"default\\\" w:linePitch=\\\"100\\\" w:charSpace=\\\"0\\\"/></w:sectPr></w:body></w:document>\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/sample.docx\",\n                \"info\": \"FILE:./tests/samples/sample.docx|ZIP:word/document.xml|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"bace4d11-a003-be2a-c3fe-9829474b5d84\",\n                \"value_start\": 14444,\n                \"value_end\": 14480,\n                \"entropy\": 3.8848\n            }\n        ]\n    },\n    {\n        \"rule\": \"UUID\",\n        \"severity\": \"info\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"<w:document xmlns:o=\\\"urn:schemas-microsoft-com:office:office\\\" xmlns:r=\\\"http://schemas.openxmlformats.org/officeDocument/2006/relationships\\\" xmlns:v=\\\"urn:schemas-microsoft-com:vml\\\" xmlns:w=\\\"http://schemas.openxmlformats.org/wordprocessingml/2006/main\\\" xmlns:w10=\\\"urn:schemas-microsoft-com:office:word\\\" xmlns:wp=\\\"http://schemas.openxmlformats.org/drawingml/2006/wordprocessingDrawing\\\" xmlns:wps=\\\"http://schemas.microsoft.com/office/word/2010/wordprocessingShape\\\" xmlns:wpg=\\\"http://schemas.microsoft.com/office/word/2010/wordprocessingGroup\\\" xmlns:mc=\\\"http://schemas.openxmlformats.org/markup-compatibility/2006\\\" xmlns:wp14=\\\"http://schemas.microsoft.com/office/word/2010/wordprocessingDrawing\\\" xmlns:w14=\\\"http://schemas.microsoft.com/office/word/2010/wordml\\\" xmlns:w15=\\\"http://schemas.microsoft.com/office/word/2012/wordml\\\" mc:Ignorable=\\\"w14 wp14 w15\\\"><w:body><w:p><w:pPr><w:pStyle w:val=\\\"Header\\\"/><w:bidi w:val=\\\"0\\\"/><w:jc w:val=\\\"left\\\"/><w:rPr><w:rFonts w:ascii=\\\"sans-serif\\\" w:hAnsi=\\\"sans-serif\\\"/><w:b w:val=\\\"false\\\"/><w:i/><w:i/><w:color w:val=\\\"202122\\\"/><w:spacing w:val=\\\"0\\\"/><w:sz w:val=\\\"21\\\"/></w:rPr></w:pPr><w:r><w:rPr></w:rPr><w:t xml:space=\\\"preserve\\\">First </w:t></w:r><w:r><w:rPr></w:rPr><w:t xml:space=\\\"preserve\\\">line </w:t></w:r><w:r><w:rPr></w:rPr><w:t>bace4d11-</w:t></w:r><w:r><w:rPr></w:rPr><w:t>a</w:t></w:r><w:r><w:rPr></w:rPr><w:t>001-be</w:t></w:r><w:r><w:rPr></w:rPr><w:t>1</w:t></w:r><w:r><w:rPr></w:rPr><w:t>a-c3fe-9829474b5d84</w:t></w:r></w:p><w:p><w:pPr><w:pStyle w:val=\\\"Normal\\\"/><w:shd w:fill=\\\"2B2B2B\\\"/><w:rPr><w:rFonts w:ascii=\\\"JetBrains Mono\\\" w:hAnsi=\\\"JetBrains Mono\\\"/><w:b w:val=\\\"false\\\"/><w:i w:val=\\\"false\\\"/><w:i w:val=\\\"false\\\"/><w:color w:val=\\\"6A8759\\\"/><w:sz w:val=\\\"20\\\"/></w:rPr></w:pPr><w:r><w:rPr><w:rFonts w:ascii=\\\"JetBrains Mono\\\" w:hAnsi=\\\"JetBrains Mono\\\"/><w:b w:val=\\\"false\\\"/><w:i w:val=\\\"false\\\"/><w:color w:val=\\\"6A8759\\\"/><w:spacing w:val=\\\"0\\\"/><w:sz w:val=\\\"20\\\"/></w:rPr><w:t>second line bace4d11-a002-be1a-c3fe-9829474b5d84</w:t></w:r></w:p><w:p><w:pPr><w:pStyle w:val=\\\"Normal\\\"/><w:bidi w:val=\\\"0\\\"/><w:jc w:val=\\\"left\\\"/><w:rPr><w:rFonts w:ascii=\\\"sans-serif\\\" w:hAnsi=\\\"sans-serif\\\"/><w:b w:val=\\\"false\\\"/><w:i/><w:i/><w:color w:val=\\\"202122\\\"/><w:spacing w:val=\\\"0\\\"/><w:sz w:val=\\\"21\\\"/></w:rPr></w:pPr><w:r><w:rPr><w:rFonts w:ascii=\\\"sans-serif\\\" w:hAnsi=\\\"sans-serif\\\"/><w:b w:val=\\\"false\\\"/><w:i/><w:color w:val=\\\"202122\\\"/><w:spacing w:val=\\\"0\\\"/><w:sz w:val=\\\"21\\\"/></w:rPr></w:r></w:p><w:tbl><w:tblPr><w:tblW w:w=\\\"5000\\\" w:type=\\\"pct\\\"/><w:jc w:val=\\\"left\\\"/><w:tblInd w:w=\\\"55\\\" w:type=\\\"dxa\\\"/><w:tblLayout w:type=\\\"fixed\\\"/><w:tblCellMar><w:top w:w=\\\"55\\\" w:type=\\\"dxa\\\"/><w:left w:w=\\\"55\\\" w:type=\\\"dxa\\\"/><w:bottom w:w=\\\"55\\\" w:type=\\\"dxa\\\"/><w:right w:w=\\\"55\\\" w:type=\\\"dxa\\\"/></w:tblCellMar></w:tblPr><w:tblGrid><w:gridCol w:w=\\\"9638\\\"/></w:tblGrid><w:tr><w:trPr></w:trPr><w:tc><w:tcPr><w:tcW w:w=\\\"9638\\\" w:type=\\\"dxa\\\"/><w:tcBorders><w:top w:val=\\\"single\\\" w:sz=\\\"4\\\" w:space=\\\"0\\\" w:color=\\\"000000\\\"/><w:left w:val=\\\"single\\\" w:sz=\\\"4\\\" w:space=\\\"0\\\" w:color=\\\"000000\\\"/><w:bottom w:val=\\\"single\\\" w:sz=\\\"4\\\" w:space=\\\"0\\\" w:color=\\\"000000\\\"/><w:right w:val=\\\"single\\\" w:sz=\\\"4\\\" w:space=\\\"0\\\" w:color=\\\"000000\\\"/></w:tcBorders></w:tcPr><w:p><w:pPr><w:pStyle w:val=\\\"TableContents\\\"/><w:rPr></w:rPr></w:pPr><w:r><w:rPr></w:rPr></w:r></w:p><w:p><w:pPr><w:pStyle w:val=\\\"TableContents\\\"/><w:rPr></w:rPr></w:pPr><w:r><w:rPr></w:rPr></w:r></w:p><w:tbl><w:tblPr><w:tblW w:w=\\\"5000\\\" w:type=\\\"pct\\\"/><w:jc w:val=\\\"left\\\"/><w:tblInd w:w=\\\"0\\\" w:type=\\\"dxa\\\"/><w:tblLayout w:type=\\\"fixed\\\"/><w:tblCellMar><w:top w:w=\\\"55\\\" w:type=\\\"dxa\\\"/><w:left w:w=\\\"55\\\" w:type=\\\"dxa\\\"/><w:bottom w:w=\\\"55\\\" w:type=\\\"dxa\\\"/><w:right w:w=\\\"55\\\" w:type=\\\"dxa\\\"/></w:tblCellMar></w:tblPr><w:tblGrid><w:gridCol w:w=\\\"9528\\\"/></w:tblGrid><w:tr><w:trPr></w:trPr><w:tc><w:tcPr><w:tcW w:w=\\\"9528\\\" w:type=\\\"dxa\\\"/><w:tcBorders><w:top w:val=\\\"single\\\" w:sz=\\\"4\\\" w:space=\\\"0\\\" w:color=\\\"000000\\\"/><w:left w:val=\\\"single\\\" w:sz=\\\"4\\\" w:space=\\\"0\\\" w:color=\\\"000000\\\"/><w:bottom w:val=\\\"single\\\" w:sz=\\\"4\\\" w:space=\\\"0\\\" w:color=\\\"000000\\\"/><w:right w:val=\\\"single\\\" w:sz=\\\"4\\\" w:space=\\\"0\\\" w:color=\\\"000000\\\"/></w:tcBorders></w:tcPr><w:p><w:pPr><w:pStyle w:val=\\\"Normal\\\"/><w:bidi w:val=\\\"0\\\"/><w:jc w:val=\\\"left\\\"/><w:rPr><w:rFonts w:ascii=\\\"sans-serif\\\" w:hAnsi=\\\"sans-serif\\\"/><w:b w:val=\\\"false\\\"/><w:i/><w:i/><w:color w:val=\\\"202122\\\"/><w:spacing w:val=\\\"0\\\"/><w:sz w:val=\\\"21\\\"/></w:rPr></w:pPr><w:r><w:rPr><w:rFonts w:ascii=\\\"sans-serif\\\" w:hAnsi=\\\"sans-serif\\\"/><w:b w:val=\\\"false\\\"/><w:i/><w:color w:val=\\\"202122\\\"/><w:spacing w:val=\\\"0\\\"/><w:sz w:val=\\\"21\\\"/></w:rPr><w:t>Innner cell bace4d11-b003-be1a-c3fe-9829474b5d84</w:t></w:r></w:p></w:tc></w:tr></w:tbl><w:p><w:pPr><w:pStyle w:val=\\\"TableContents\\\"/><w:rPr></w:rPr></w:pPr><w:r><w:rPr></w:rPr></w:r></w:p><w:p><w:pPr><w:pStyle w:val=\\\"TableContents\\\"/><w:rPr></w:rPr></w:pPr><w:r><w:rPr></w:rPr></w:r></w:p></w:tc></w:tr></w:tbl><w:p><w:pPr><w:pStyle w:val=\\\"Normal\\\"/><w:bidi w:val=\\\"0\\\"/><w:jc w:val=\\\"left\\\"/><w:rPr><w:rFonts w:ascii=\\\"sans-serif\\\" w:hAnsi=\\\"sans-serif\\\"/><w:b w:val=\\\"false\\\"/><w:i/><w:i/><w:color w:val=\\\"202122\\\"/><w:spacing w:val=\\\"0\\\"/><w:sz w:val=\\\"21\\\"/></w:rPr></w:pPr><w:r><w:rPr><w:rFonts w:ascii=\\\"sans-serif\\\" w:hAnsi=\\\"sans-serif\\\"/><w:b w:val=\\\"false\\\"/><w:i/><w:color w:val=\\\"202122\\\"/><w:spacing w:val=\\\"0\\\"/><w:sz w:val=\\\"21\\\"/></w:rPr></w:r></w:p><w:p><w:pPr><w:pStyle w:val=\\\"Normal\\\"/><w:bidi w:val=\\\"0\\\"/><w:jc w:val=\\\"left\\\"/><w:rPr><w:rFonts w:ascii=\\\"sans-serif\\\" w:hAnsi=\\\"sans-serif\\\"/><w:b w:val=\\\"false\\\"/><w:i/><w:i/><w:color w:val=\\\"202122\\\"/><w:spacing w:val=\\\"0\\\"/><w:sz w:val=\\\"21\\\"/></w:rPr></w:pPr><w:r><w:rPr><w:rFonts w:ascii=\\\"sans-serif\\\" w:hAnsi=\\\"sans-serif\\\"/><w:b w:val=\\\"false\\\"/><w:i/><w:color w:val=\\\"202122\\\"/><w:spacing w:val=\\\"0\\\"/><w:sz w:val=\\\"21\\\"/></w:rPr></w:r></w:p><w:p><w:pPr><w:pStyle w:val=\\\"Normal\\\"/><w:bidi w:val=\\\"0\\\"/><w:jc w:val=\\\"left\\\"/><w:rPr><w:rFonts w:ascii=\\\"sans-serif\\\" w:hAnsi=\\\"sans-serif\\\"/><w:b w:val=\\\"false\\\"/><w:i/><w:i/><w:color w:val=\\\"202122\\\"/><w:spacing w:val=\\\"0\\\"/><w:sz w:val=\\\"21\\\"/></w:rPr></w:pPr><w:r><w:rPr><w:rFonts w:ascii=\\\"sans-serif\\\" w:hAnsi=\\\"sans-serif\\\"/><w:b w:val=\\\"false\\\"/><w:i/><w:color w:val=\\\"202122\\\"/><w:spacing w:val=\\\"0\\\"/><w:sz w:val=\\\"21\\\"/></w:rPr></w:r><w:r><w:br w:type=\\\"page\\\"/></w:r></w:p><w:p><w:pPr><w:pStyle w:val=\\\"Normal\\\"/><w:bidi w:val=\\\"0\\\"/><w:spacing w:before=\\\"0\\\" w:after=\\\"0\\\"/><w:jc w:val=\\\"left\\\"/><w:rPr><w:rFonts w:ascii=\\\"sans-serif\\\" w:hAnsi=\\\"sans-serif\\\"/><w:b w:val=\\\"false\\\"/><w:i/><w:i/><w:color w:val=\\\"202122\\\"/><w:spacing w:val=\\\"0\\\"/><w:sz w:val=\\\"21\\\"/></w:rPr></w:pPr><w:r><w:rPr><w:rFonts w:ascii=\\\"sans-serif\\\" w:hAnsi=\\\"sans-serif\\\"/><w:b w:val=\\\"false\\\"/><w:i/><w:color w:val=\\\"202122\\\"/><w:spacing w:val=\\\"0\\\"/><w:sz w:val=\\\"21\\\"/></w:rPr><w:t xml:space=\\\"preserve\\\">New page </w:t></w:r><w:r><w:rPr><w:rFonts w:ascii=\\\"sans-serif\\\" w:hAnsi=\\\"sans-serif\\\"/><w:b w:val=\\\"false\\\"/><w:i/><w:color w:val=\\\"202122\\\"/><w:spacing w:val=\\\"0\\\"/><w:sz w:val=\\\"21\\\"/></w:rPr><w:t>first line</w:t></w:r><w:r><w:rPr><w:rFonts w:ascii=\\\"sans-serif\\\" w:hAnsi=\\\"sans-serif\\\"/><w:b w:val=\\\"false\\\"/><w:i/><w:color w:val=\\\"202122\\\"/><w:spacing w:val=\\\"0\\\"/><w:sz w:val=\\\"21\\\"/></w:rPr><w:t xml:space=\\\"preserve\\\"> bace4d19-</w:t></w:r><w:r><w:rPr><w:rFonts w:ascii=\\\"sans-serif\\\" w:hAnsi=\\\"sans-serif\\\"/><w:b w:val=\\\"false\\\"/><w:i/><w:color w:val=\\\"202122\\\"/><w:spacing w:val=\\\"0\\\"/><w:sz w:val=\\\"21\\\"/></w:rPr><w:t>b001</w:t></w:r><w:r><w:rPr><w:rFonts w:ascii=\\\"sans-serif\\\" w:hAnsi=\\\"sans-serif\\\"/><w:b w:val=\\\"false\\\"/><w:i/><w:color w:val=\\\"202122\\\"/><w:spacing w:val=\\\"0\\\"/><w:sz w:val=\\\"21\\\"/></w:rPr><w:t>-b3e2-eac1-9129474bcd84</w:t></w:r></w:p><w:p><w:pPr><w:pStyle w:val=\\\"Normal\\\"/><w:bidi w:val=\\\"0\\\"/><w:jc w:val=\\\"left\\\"/><w:rPr><w:rFonts w:ascii=\\\"sans-serif\\\" w:hAnsi=\\\"sans-serif\\\"/><w:b w:val=\\\"false\\\"/><w:i/><w:i/><w:color w:val=\\\"202122\\\"/><w:spacing w:val=\\\"0\\\"/><w:sz w:val=\\\"21\\\"/></w:rPr></w:pPr><w:r><w:rPr><w:rFonts w:ascii=\\\"sans-serif\\\" w:hAnsi=\\\"sans-serif\\\"/><w:b w:val=\\\"false\\\"/><w:i/><w:color w:val=\\\"202122\\\"/><w:spacing w:val=\\\"0\\\"/><w:sz w:val=\\\"21\\\"/></w:rPr></w:r></w:p><w:p><w:pPr><w:sectPr><w:headerReference w:type=\\\"even\\\" r:id=\\\"rId2\\\"/><w:headerReference w:type=\\\"default\\\" r:id=\\\"rId3\\\"/><w:headerReference w:type=\\\"first\\\" r:id=\\\"rId4\\\"/><w:footerReference w:type=\\\"even\\\" r:id=\\\"rId5\\\"/><w:footerReference w:type=\\\"default\\\" r:id=\\\"rId6\\\"/><w:footerReference w:type=\\\"first\\\" r:id=\\\"rId7\\\"/><w:type w:val=\\\"nextPage\\\"/><w:pgSz w:w=\\\"11906\\\" w:h=\\\"16838\\\"/><w:pgMar w:left=\\\"1134\\\" w:right=\\\"1134\\\" w:gutter=\\\"0\\\" w:header=\\\"1134\\\" w:top=\\\"1696\\\" w:footer=\\\"1134\\\" w:bottom=\\\"2104\\\"/><w:pgNumType w:fmt=\\\"decimal\\\"/><w:formProt w:val=\\\"false\\\"/><w:titlePg/><w:textDirection w:val=\\\"lrTb\\\"/><w:docGrid w:type=\\\"default\\\" w:linePitch=\\\"100\\\" w:charSpace=\\\"0\\\"/></w:sectPr></w:pPr></w:p><w:p><w:pPr><w:pStyle w:val=\\\"Normal\\\"/><w:bidi w:val=\\\"0\\\"/><w:jc w:val=\\\"left\\\"/><w:rPr><w:rFonts w:ascii=\\\"sans-serif\\\" w:hAnsi=\\\"sans-serif\\\"/><w:b w:val=\\\"false\\\"/><w:i/><w:i/><w:color w:val=\\\"202122\\\"/><w:spacing w:val=\\\"0\\\"/><w:sz w:val=\\\"21\\\"/></w:rPr></w:pPr><w:r><w:rPr><w:rFonts w:ascii=\\\"sans-serif\\\" w:hAnsi=\\\"sans-serif\\\"/><w:b w:val=\\\"false\\\"/><w:i/><w:color w:val=\\\"202122\\\"/><w:spacing w:val=\\\"0\\\"/><w:sz w:val=\\\"21\\\"/></w:rPr><w:t>Next page section bace4d19-c001-b3e2-eac1-9129474bcd84</w:t></w:r></w:p><w:p><w:pPr><w:pStyle w:val=\\\"Normal\\\"/><w:bidi w:val=\\\"0\\\"/><w:jc w:val=\\\"left\\\"/><w:rPr><w:rFonts w:ascii=\\\"sans-serif\\\" w:hAnsi=\\\"sans-serif\\\"/><w:b w:val=\\\"false\\\"/><w:i/><w:i/><w:color w:val=\\\"202122\\\"/><w:spacing w:val=\\\"0\\\"/><w:sz w:val=\\\"21\\\"/></w:rPr></w:pPr><w:r><w:rPr><w:rFonts w:ascii=\\\"sans-serif\\\" w:hAnsi=\\\"sans-serif\\\"/><w:b w:val=\\\"false\\\"/><w:i/><w:color w:val=\\\"202122\\\"/><w:spacing w:val=\\\"0\\\"/><w:sz w:val=\\\"21\\\"/></w:rPr></w:r></w:p><w:tbl><w:tblPr><w:tblW w:w=\\\"5000\\\" w:type=\\\"pct\\\"/><w:jc w:val=\\\"left\\\"/><w:tblInd w:w=\\\"55\\\" w:type=\\\"dxa\\\"/><w:tblLayout w:type=\\\"fixed\\\"/><w:tblCellMar><w:top w:w=\\\"55\\\" w:type=\\\"dxa\\\"/><w:left w:w=\\\"55\\\" w:type=\\\"dxa\\\"/><w:bottom w:w=\\\"55\\\" w:type=\\\"dxa\\\"/><w:right w:w=\\\"55\\\" w:type=\\\"dxa\\\"/></w:tblCellMar></w:tblPr><w:tblGrid><w:gridCol w:w=\\\"4818\\\"/><w:gridCol w:w=\\\"4819\\\"/></w:tblGrid><w:tr><w:trPr></w:trPr><w:tc><w:tcPr><w:tcW w:w=\\\"4818\\\" w:type=\\\"dxa\\\"/><w:tcBorders><w:top w:val=\\\"single\\\" w:sz=\\\"4\\\" w:space=\\\"0\\\" w:color=\\\"000000\\\"/><w:left w:val=\\\"single\\\" w:sz=\\\"4\\\" w:space=\\\"0\\\" w:color=\\\"000000\\\"/><w:bottom w:val=\\\"single\\\" w:sz=\\\"4\\\" w:space=\\\"0\\\" w:color=\\\"000000\\\"/></w:tcBorders></w:tcPr><w:p><w:pPr><w:pStyle w:val=\\\"TableContents\\\"/><w:rPr></w:rPr></w:pPr><w:r><w:rPr></w:rPr></w:r></w:p></w:tc><w:tc><w:tcPr><w:tcW w:w=\\\"4819\\\" w:type=\\\"dxa\\\"/><w:tcBorders><w:top w:val=\\\"single\\\" w:sz=\\\"4\\\" w:space=\\\"0\\\" w:color=\\\"000000\\\"/><w:left w:val=\\\"single\\\" w:sz=\\\"4\\\" w:space=\\\"0\\\" w:color=\\\"000000\\\"/><w:bottom w:val=\\\"single\\\" w:sz=\\\"4\\\" w:space=\\\"0\\\" w:color=\\\"000000\\\"/><w:right w:val=\\\"single\\\" w:sz=\\\"4\\\" w:space=\\\"0\\\" w:color=\\\"000000\\\"/></w:tcBorders></w:tcPr><w:p><w:pPr><w:pStyle w:val=\\\"TableContents\\\"/><w:rPr></w:rPr></w:pPr><w:r><w:rPr></w:rPr></w:r></w:p></w:tc></w:tr><w:tr><w:trPr></w:trPr><w:tc><w:tcPr><w:tcW w:w=\\\"4818\\\" w:type=\\\"dxa\\\"/><w:tcBorders><w:left w:val=\\\"single\\\" w:sz=\\\"4\\\" w:space=\\\"0\\\" w:color=\\\"000000\\\"/><w:bottom w:val=\\\"single\\\" w:sz=\\\"4\\\" w:space=\\\"0\\\" w:color=\\\"000000\\\"/></w:tcBorders></w:tcPr><w:p><w:pPr><w:pStyle w:val=\\\"TableContents\\\"/><w:rPr></w:rPr></w:pPr><w:r><w:rPr></w:rPr></w:r></w:p></w:tc><w:tc><w:tcPr><w:tcW w:w=\\\"4819\\\" w:type=\\\"dxa\\\"/><w:tcBorders><w:left w:val=\\\"single\\\" w:sz=\\\"4\\\" w:space=\\\"0\\\" w:color=\\\"000000\\\"/><w:bottom w:val=\\\"single\\\" w:sz=\\\"4\\\" w:space=\\\"0\\\" w:color=\\\"000000\\\"/><w:right w:val=\\\"single\\\" w:sz=\\\"4\\\" w:space=\\\"0\\\" w:color=\\\"000000\\\"/></w:tcBorders></w:tcPr><w:p><w:pPr><w:pStyle w:val=\\\"TableContents\\\"/><w:rPr></w:rPr></w:pPr><w:r><w:rPr></w:rPr><w:t xml:space=\\\"preserve\\\">Section </w:t></w:r><w:r><w:rPr></w:rPr><w:t>R2C2</w:t></w:r><w:r><w:rPr></w:rPr><w:t xml:space=\\\"preserve\\\"> b5c6471d-</w:t></w:r><w:r><w:rPr></w:rPr><w:t>a2b2</w:t></w:r><w:r><w:rPr></w:rPr><w:t>-b4ef-ca5e-9121476bc881</w:t></w:r></w:p></w:tc></w:tr></w:tbl><w:p><w:pPr><w:pStyle w:val=\\\"Normal\\\"/><w:bidi w:val=\\\"0\\\"/><w:jc w:val=\\\"left\\\"/><w:rPr><w:rFonts w:ascii=\\\"sans-serif\\\" w:hAnsi=\\\"sans-serif\\\"/><w:b w:val=\\\"false\\\"/><w:i/><w:i/><w:color w:val=\\\"202122\\\"/><w:spacing w:val=\\\"0\\\"/><w:sz w:val=\\\"21\\\"/></w:rPr></w:pPr><w:r><w:rPr><w:rFonts w:ascii=\\\"sans-serif\\\" w:hAnsi=\\\"sans-serif\\\"/><w:b w:val=\\\"false\\\"/><w:i/><w:color w:val=\\\"202122\\\"/><w:spacing w:val=\\\"0\\\"/><w:sz w:val=\\\"21\\\"/></w:rPr></w:r></w:p><w:p><w:pPr><w:pStyle w:val=\\\"Normal\\\"/><w:bidi w:val=\\\"0\\\"/><w:jc w:val=\\\"left\\\"/><w:rPr><w:rFonts w:ascii=\\\"sans-serif\\\" w:hAnsi=\\\"sans-serif\\\"/><w:b w:val=\\\"false\\\"/><w:i/><w:i/><w:color w:val=\\\"202122\\\"/><w:spacing w:val=\\\"0\\\"/><w:sz w:val=\\\"21\\\"/></w:rPr></w:pPr><w:r><w:rPr><w:rFonts w:ascii=\\\"sans-serif\\\" w:hAnsi=\\\"sans-serif\\\"/><w:b w:val=\\\"false\\\"/><w:i/><w:color w:val=\\\"202122\\\"/><w:spacing w:val=\\\"0\\\"/><w:sz w:val=\\\"21\\\"/></w:rPr></w:r></w:p><w:p><w:pPr><w:sectPr><w:type w:val=\\\"continuous\\\"/><w:pgSz w:w=\\\"11906\\\" w:h=\\\"16838\\\"/><w:pgMar w:left=\\\"1134\\\" w:right=\\\"1134\\\" w:gutter=\\\"0\\\" w:header=\\\"1134\\\" w:top=\\\"1696\\\" w:footer=\\\"1134\\\" w:bottom=\\\"2104\\\"/><w:formProt w:val=\\\"false\\\"/><w:titlePg/><w:textDirection w:val=\\\"lrTb\\\"/><w:docGrid w:type=\\\"default\\\" w:linePitch=\\\"100\\\" w:charSpace=\\\"0\\\"/></w:sectPr></w:pPr></w:p><w:p><w:pPr><w:pStyle w:val=\\\"Normal\\\"/><w:bidi w:val=\\\"0\\\"/><w:jc w:val=\\\"left\\\"/><w:rPr><w:rFonts w:ascii=\\\"sans-serif\\\" w:hAnsi=\\\"sans-serif\\\"/><w:b w:val=\\\"false\\\"/><w:i/><w:i/><w:color w:val=\\\"202122\\\"/><w:spacing w:val=\\\"0\\\"/><w:sz w:val=\\\"21\\\"/></w:rPr></w:pPr><w:r><w:rPr><w:rFonts w:ascii=\\\"sans-serif\\\" w:hAnsi=\\\"sans-serif\\\"/><w:b w:val=\\\"false\\\"/><w:i/><w:color w:val=\\\"202122\\\"/><w:spacing w:val=\\\"0\\\"/><w:sz w:val=\\\"21\\\"/></w:rPr></w:r></w:p><w:p><w:pPr><w:pStyle w:val=\\\"Normal\\\"/><w:bidi w:val=\\\"0\\\"/><w:jc w:val=\\\"left\\\"/><w:rPr><w:rFonts w:ascii=\\\"sans-serif\\\" w:hAnsi=\\\"sans-serif\\\"/><w:b w:val=\\\"false\\\"/><w:i/><w:i/><w:color w:val=\\\"202122\\\"/><w:spacing w:val=\\\"0\\\"/><w:sz w:val=\\\"21\\\"/></w:rPr></w:pPr><w:r><w:rPr></w:rPr><w:t>next line in section bace4d19-c001-b3e2-eac1-9129474bcd84</w:t></w:r><w:r><w:br w:type=\\\"page\\\"/></w:r></w:p><w:p><w:pPr><w:pStyle w:val=\\\"Normal\\\"/><w:bidi w:val=\\\"0\\\"/><w:jc w:val=\\\"left\\\"/><w:rPr></w:rPr></w:pPr><w:r><w:rPr></w:rPr></w:r></w:p><w:p><w:pPr><w:pStyle w:val=\\\"Normal\\\"/><w:bidi w:val=\\\"0\\\"/><w:jc w:val=\\\"left\\\"/><w:rPr></w:rPr></w:pPr><w:r><w:rPr></w:rPr></w:r></w:p><w:p><w:pPr><w:pStyle w:val=\\\"Normal\\\"/><w:bidi w:val=\\\"0\\\"/><w:jc w:val=\\\"left\\\"/><w:rPr></w:rPr></w:pPr><w:r><w:rPr></w:rPr></w:r></w:p><w:p><w:pPr><w:pStyle w:val=\\\"Normal\\\"/><w:bidi w:val=\\\"0\\\"/><w:jc w:val=\\\"left\\\"/><w:rPr></w:rPr></w:pPr><w:r><w:rPr></w:rPr></w:r></w:p><w:p><w:pPr><w:pStyle w:val=\\\"Normal\\\"/><w:bidi w:val=\\\"0\\\"/><w:jc w:val=\\\"left\\\"/><w:rPr></w:rPr></w:pPr><w:r><w:rPr></w:rPr><w:t xml:space=\\\"preserve\\\">last page </w:t></w:r><w:r><w:rPr><w:rFonts w:ascii=\\\"JetBrains Mono\\\" w:hAnsi=\\\"JetBrains Mono\\\"/><w:b w:val=\\\"false\\\"/><w:i w:val=\\\"false\\\"/><w:color w:val=\\\"6A8759\\\"/><w:spacing w:val=\\\"0\\\"/><w:sz w:val=\\\"20\\\"/></w:rPr><w:t xml:space=\\\"preserve\\\"> bace4d11-a003-be2a-c3fe-9829474b5d84</w:t></w:r></w:p><w:sectPr><w:type w:val=\\\"continuous\\\"/><w:pgSz w:w=\\\"11906\\\" w:h=\\\"16838\\\"/><w:pgMar w:left=\\\"1134\\\" w:right=\\\"1134\\\" w:gutter=\\\"0\\\" w:header=\\\"1134\\\" w:top=\\\"1696\\\" w:footer=\\\"1134\\\" w:bottom=\\\"2104\\\"/><w:formProt w:val=\\\"false\\\"/><w:titlePg/><w:textDirection w:val=\\\"lrTb\\\"/><w:docGrid w:type=\\\"default\\\" w:linePitch=\\\"100\\\" w:charSpace=\\\"0\\\"/></w:sectPr></w:body></w:document>\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/sample.docx\",\n                \"info\": \"FILE:./tests/samples/sample.docx|ZIP:word/document.xml|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"bace4d11-b003-be1a-c3fe-9829474b5d84\",\n                \"value_start\": 4417,\n                \"value_end\": 4453,\n                \"entropy\": 3.85021\n            }\n        ]\n    },\n    {\n        \"rule\": \"UUID\",\n        \"severity\": \"info\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"<w:hdr xmlns:o=\\\"urn:schemas-microsoft-com:office:office\\\" xmlns:r=\\\"http://schemas.openxmlformats.org/officeDocument/2006/relationships\\\" xmlns:v=\\\"urn:schemas-microsoft-com:vml\\\" xmlns:w=\\\"http://schemas.openxmlformats.org/wordprocessingml/2006/main\\\" xmlns:w10=\\\"urn:schemas-microsoft-com:office:word\\\" xmlns:wp=\\\"http://schemas.openxmlformats.org/drawingml/2006/wordprocessingDrawing\\\" xmlns:wps=\\\"http://schemas.microsoft.com/office/word/2010/wordprocessingShape\\\" xmlns:wpg=\\\"http://schemas.microsoft.com/office/word/2010/wordprocessingGroup\\\" xmlns:mc=\\\"http://schemas.openxmlformats.org/markup-compatibility/2006\\\" xmlns:wp14=\\\"http://schemas.microsoft.com/office/word/2010/wordprocessingDrawing\\\" xmlns:w14=\\\"http://schemas.microsoft.com/office/word/2010/wordml\\\" xmlns:w15=\\\"http://schemas.microsoft.com/office/word/2012/wordml\\\" mc:Ignorable=\\\"w14 wp14 w15\\\"><w:p><w:pPr><w:pStyle w:val=\\\"Header\\\"/><w:rPr></w:rPr></w:pPr><w:r><w:rPr></w:rPr><w:fldChar w:fldCharType=\\\"begin\\\"></w:fldChar></w:r><w:r><w:rPr></w:rPr><w:instrText xml:space=\\\"preserve\\\"> PAGE </w:instrText></w:r><w:r><w:rPr></w:rPr><w:fldChar w:fldCharType=\\\"separate\\\"/></w:r><w:r><w:rPr></w:rPr><w:t>2</w:t></w:r><w:r><w:rPr></w:rPr><w:fldChar w:fldCharType=\\\"end\\\"/></w:r><w:r><w:rPr></w:rPr><w:t xml:space=\\\"preserve\\\"> </w:t></w:r><w:r><w:rPr></w:rPr><w:t>Second page header bace4d19-b002-beda-cafe-0929375bcd82</w:t></w:r></w:p></w:hdr>\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/sample.docx\",\n                \"info\": \"FILE:./tests/samples/sample.docx|ZIP:word/header1.xml|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"bace4d19-b002-beda-cafe-0929375bcd82\",\n                \"value_start\": 1318,\n                \"value_end\": 1354,\n                \"entropy\": 3.80092\n            }\n        ]\n    },\n    {\n        \"rule\": \"UUID\",\n        \"severity\": \"info\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"<w:document xmlns:o=\\\"urn:schemas-microsoft-com:office:office\\\" xmlns:r=\\\"http://schemas.openxmlformats.org/officeDocument/2006/relationships\\\" xmlns:v=\\\"urn:schemas-microsoft-com:vml\\\" xmlns:w=\\\"http://schemas.openxmlformats.org/wordprocessingml/2006/main\\\" xmlns:w10=\\\"urn:schemas-microsoft-com:office:word\\\" xmlns:wp=\\\"http://schemas.openxmlformats.org/drawingml/2006/wordprocessingDrawing\\\" xmlns:wps=\\\"http://schemas.microsoft.com/office/word/2010/wordprocessingShape\\\" xmlns:wpg=\\\"http://schemas.microsoft.com/office/word/2010/wordprocessingGroup\\\" xmlns:mc=\\\"http://schemas.openxmlformats.org/markup-compatibility/2006\\\" xmlns:wp14=\\\"http://schemas.microsoft.com/office/word/2010/wordprocessingDrawing\\\" xmlns:w14=\\\"http://schemas.microsoft.com/office/word/2010/wordml\\\" xmlns:w15=\\\"http://schemas.microsoft.com/office/word/2012/wordml\\\" mc:Ignorable=\\\"w14 wp14 w15\\\"><w:body><w:p><w:pPr><w:pStyle w:val=\\\"Header\\\"/><w:bidi w:val=\\\"0\\\"/><w:jc w:val=\\\"left\\\"/><w:rPr><w:rFonts w:ascii=\\\"sans-serif\\\" w:hAnsi=\\\"sans-serif\\\"/><w:b w:val=\\\"false\\\"/><w:i/><w:i/><w:color w:val=\\\"202122\\\"/><w:spacing w:val=\\\"0\\\"/><w:sz w:val=\\\"21\\\"/></w:rPr></w:pPr><w:r><w:rPr></w:rPr><w:t xml:space=\\\"preserve\\\">First </w:t></w:r><w:r><w:rPr></w:rPr><w:t xml:space=\\\"preserve\\\">line </w:t></w:r><w:r><w:rPr></w:rPr><w:t>bace4d11-</w:t></w:r><w:r><w:rPr></w:rPr><w:t>a</w:t></w:r><w:r><w:rPr></w:rPr><w:t>001-be</w:t></w:r><w:r><w:rPr></w:rPr><w:t>1</w:t></w:r><w:r><w:rPr></w:rPr><w:t>a-c3fe-9829474b5d84</w:t></w:r></w:p><w:p><w:pPr><w:pStyle w:val=\\\"Normal\\\"/><w:shd w:fill=\\\"2B2B2B\\\"/><w:rPr><w:rFonts w:ascii=\\\"JetBrains Mono\\\" w:hAnsi=\\\"JetBrains Mono\\\"/><w:b w:val=\\\"false\\\"/><w:i w:val=\\\"false\\\"/><w:i w:val=\\\"false\\\"/><w:color w:val=\\\"6A8759\\\"/><w:sz w:val=\\\"20\\\"/></w:rPr></w:pPr><w:r><w:rPr><w:rFonts w:ascii=\\\"JetBrains Mono\\\" w:hAnsi=\\\"JetBrains Mono\\\"/><w:b w:val=\\\"false\\\"/><w:i w:val=\\\"false\\\"/><w:color w:val=\\\"6A8759\\\"/><w:spacing w:val=\\\"0\\\"/><w:sz w:val=\\\"20\\\"/></w:rPr><w:t>second line bace4d11-a002-be1a-c3fe-9829474b5d84</w:t></w:r></w:p><w:p><w:pPr><w:pStyle w:val=\\\"Normal\\\"/><w:bidi w:val=\\\"0\\\"/><w:jc w:val=\\\"left\\\"/><w:rPr><w:rFonts w:ascii=\\\"sans-serif\\\" w:hAnsi=\\\"sans-serif\\\"/><w:b w:val=\\\"false\\\"/><w:i/><w:i/><w:color w:val=\\\"202122\\\"/><w:spacing w:val=\\\"0\\\"/><w:sz w:val=\\\"21\\\"/></w:rPr></w:pPr><w:r><w:rPr><w:rFonts w:ascii=\\\"sans-serif\\\" w:hAnsi=\\\"sans-serif\\\"/><w:b w:val=\\\"false\\\"/><w:i/><w:color w:val=\\\"202122\\\"/><w:spacing w:val=\\\"0\\\"/><w:sz w:val=\\\"21\\\"/></w:rPr></w:r></w:p><w:tbl><w:tblPr><w:tblW w:w=\\\"5000\\\" w:type=\\\"pct\\\"/><w:jc w:val=\\\"left\\\"/><w:tblInd w:w=\\\"55\\\" w:type=\\\"dxa\\\"/><w:tblLayout w:type=\\\"fixed\\\"/><w:tblCellMar><w:top w:w=\\\"55\\\" w:type=\\\"dxa\\\"/><w:left w:w=\\\"55\\\" w:type=\\\"dxa\\\"/><w:bottom w:w=\\\"55\\\" w:type=\\\"dxa\\\"/><w:right w:w=\\\"55\\\" w:type=\\\"dxa\\\"/></w:tblCellMar></w:tblPr><w:tblGrid><w:gridCol w:w=\\\"9638\\\"/></w:tblGrid><w:tr><w:trPr></w:trPr><w:tc><w:tcPr><w:tcW w:w=\\\"9638\\\" w:type=\\\"dxa\\\"/><w:tcBorders><w:top w:val=\\\"single\\\" w:sz=\\\"4\\\" w:space=\\\"0\\\" w:color=\\\"000000\\\"/><w:left w:val=\\\"single\\\" w:sz=\\\"4\\\" w:space=\\\"0\\\" w:color=\\\"000000\\\"/><w:bottom w:val=\\\"single\\\" w:sz=\\\"4\\\" w:space=\\\"0\\\" w:color=\\\"000000\\\"/><w:right w:val=\\\"single\\\" w:sz=\\\"4\\\" w:space=\\\"0\\\" w:color=\\\"000000\\\"/></w:tcBorders></w:tcPr><w:p><w:pPr><w:pStyle w:val=\\\"TableContents\\\"/><w:rPr></w:rPr></w:pPr><w:r><w:rPr></w:rPr></w:r></w:p><w:p><w:pPr><w:pStyle w:val=\\\"TableContents\\\"/><w:rPr></w:rPr></w:pPr><w:r><w:rPr></w:rPr></w:r></w:p><w:tbl><w:tblPr><w:tblW w:w=\\\"5000\\\" w:type=\\\"pct\\\"/><w:jc w:val=\\\"left\\\"/><w:tblInd w:w=\\\"0\\\" w:type=\\\"dxa\\\"/><w:tblLayout w:type=\\\"fixed\\\"/><w:tblCellMar><w:top w:w=\\\"55\\\" w:type=\\\"dxa\\\"/><w:left w:w=\\\"55\\\" w:type=\\\"dxa\\\"/><w:bottom w:w=\\\"55\\\" w:type=\\\"dxa\\\"/><w:right w:w=\\\"55\\\" w:type=\\\"dxa\\\"/></w:tblCellMar></w:tblPr><w:tblGrid><w:gridCol w:w=\\\"9528\\\"/></w:tblGrid><w:tr><w:trPr></w:trPr><w:tc><w:tcPr><w:tcW w:w=\\\"9528\\\" w:type=\\\"dxa\\\"/><w:tcBorders><w:top w:val=\\\"single\\\" w:sz=\\\"4\\\" w:space=\\\"0\\\" w:color=\\\"000000\\\"/><w:left w:val=\\\"single\\\" w:sz=\\\"4\\\" w:space=\\\"0\\\" w:color=\\\"000000\\\"/><w:bottom w:val=\\\"single\\\" w:sz=\\\"4\\\" w:space=\\\"0\\\" w:color=\\\"000000\\\"/><w:right w:val=\\\"single\\\" w:sz=\\\"4\\\" w:space=\\\"0\\\" w:color=\\\"000000\\\"/></w:tcBorders></w:tcPr><w:p><w:pPr><w:pStyle w:val=\\\"Normal\\\"/><w:bidi w:val=\\\"0\\\"/><w:jc w:val=\\\"left\\\"/><w:rPr><w:rFonts w:ascii=\\\"sans-serif\\\" w:hAnsi=\\\"sans-serif\\\"/><w:b w:val=\\\"false\\\"/><w:i/><w:i/><w:color w:val=\\\"202122\\\"/><w:spacing w:val=\\\"0\\\"/><w:sz w:val=\\\"21\\\"/></w:rPr></w:pPr><w:r><w:rPr><w:rFonts w:ascii=\\\"sans-serif\\\" w:hAnsi=\\\"sans-serif\\\"/><w:b w:val=\\\"false\\\"/><w:i/><w:color w:val=\\\"202122\\\"/><w:spacing w:val=\\\"0\\\"/><w:sz w:val=\\\"21\\\"/></w:rPr><w:t>Innner cell bace4d11-b003-be1a-c3fe-9829474b5d84</w:t></w:r></w:p></w:tc></w:tr></w:tbl><w:p><w:pPr><w:pStyle w:val=\\\"TableContents\\\"/><w:rPr></w:rPr></w:pPr><w:r><w:rPr></w:rPr></w:r></w:p><w:p><w:pPr><w:pStyle w:val=\\\"TableContents\\\"/><w:rPr></w:rPr></w:pPr><w:r><w:rPr></w:rPr></w:r></w:p></w:tc></w:tr></w:tbl><w:p><w:pPr><w:pStyle w:val=\\\"Normal\\\"/><w:bidi w:val=\\\"0\\\"/><w:jc w:val=\\\"left\\\"/><w:rPr><w:rFonts w:ascii=\\\"sans-serif\\\" w:hAnsi=\\\"sans-serif\\\"/><w:b w:val=\\\"false\\\"/><w:i/><w:i/><w:color w:val=\\\"202122\\\"/><w:spacing w:val=\\\"0\\\"/><w:sz w:val=\\\"21\\\"/></w:rPr></w:pPr><w:r><w:rPr><w:rFonts w:ascii=\\\"sans-serif\\\" w:hAnsi=\\\"sans-serif\\\"/><w:b w:val=\\\"false\\\"/><w:i/><w:color w:val=\\\"202122\\\"/><w:spacing w:val=\\\"0\\\"/><w:sz w:val=\\\"21\\\"/></w:rPr></w:r></w:p><w:p><w:pPr><w:pStyle w:val=\\\"Normal\\\"/><w:bidi w:val=\\\"0\\\"/><w:jc w:val=\\\"left\\\"/><w:rPr><w:rFonts w:ascii=\\\"sans-serif\\\" w:hAnsi=\\\"sans-serif\\\"/><w:b w:val=\\\"false\\\"/><w:i/><w:i/><w:color w:val=\\\"202122\\\"/><w:spacing w:val=\\\"0\\\"/><w:sz w:val=\\\"21\\\"/></w:rPr></w:pPr><w:r><w:rPr><w:rFonts w:ascii=\\\"sans-serif\\\" w:hAnsi=\\\"sans-serif\\\"/><w:b w:val=\\\"false\\\"/><w:i/><w:color w:val=\\\"202122\\\"/><w:spacing w:val=\\\"0\\\"/><w:sz w:val=\\\"21\\\"/></w:rPr></w:r></w:p><w:p><w:pPr><w:pStyle w:val=\\\"Normal\\\"/><w:bidi w:val=\\\"0\\\"/><w:jc w:val=\\\"left\\\"/><w:rPr><w:rFonts w:ascii=\\\"sans-serif\\\" w:hAnsi=\\\"sans-serif\\\"/><w:b w:val=\\\"false\\\"/><w:i/><w:i/><w:color w:val=\\\"202122\\\"/><w:spacing w:val=\\\"0\\\"/><w:sz w:val=\\\"21\\\"/></w:rPr></w:pPr><w:r><w:rPr><w:rFonts w:ascii=\\\"sans-serif\\\" w:hAnsi=\\\"sans-serif\\\"/><w:b w:val=\\\"false\\\"/><w:i/><w:color w:val=\\\"202122\\\"/><w:spacing w:val=\\\"0\\\"/><w:sz w:val=\\\"21\\\"/></w:rPr></w:r><w:r><w:br w:type=\\\"page\\\"/></w:r></w:p><w:p><w:pPr><w:pStyle w:val=\\\"Normal\\\"/><w:bidi w:val=\\\"0\\\"/><w:spacing w:before=\\\"0\\\" w:after=\\\"0\\\"/><w:jc w:val=\\\"left\\\"/><w:rPr><w:rFonts w:ascii=\\\"sans-serif\\\" w:hAnsi=\\\"sans-serif\\\"/><w:b w:val=\\\"false\\\"/><w:i/><w:i/><w:color w:val=\\\"202122\\\"/><w:spacing w:val=\\\"0\\\"/><w:sz w:val=\\\"21\\\"/></w:rPr></w:pPr><w:r><w:rPr><w:rFonts w:ascii=\\\"sans-serif\\\" w:hAnsi=\\\"sans-serif\\\"/><w:b w:val=\\\"false\\\"/><w:i/><w:color w:val=\\\"202122\\\"/><w:spacing w:val=\\\"0\\\"/><w:sz w:val=\\\"21\\\"/></w:rPr><w:t xml:space=\\\"preserve\\\">New page </w:t></w:r><w:r><w:rPr><w:rFonts w:ascii=\\\"sans-serif\\\" w:hAnsi=\\\"sans-serif\\\"/><w:b w:val=\\\"false\\\"/><w:i/><w:color w:val=\\\"202122\\\"/><w:spacing w:val=\\\"0\\\"/><w:sz w:val=\\\"21\\\"/></w:rPr><w:t>first line</w:t></w:r><w:r><w:rPr><w:rFonts w:ascii=\\\"sans-serif\\\" w:hAnsi=\\\"sans-serif\\\"/><w:b w:val=\\\"false\\\"/><w:i/><w:color w:val=\\\"202122\\\"/><w:spacing w:val=\\\"0\\\"/><w:sz w:val=\\\"21\\\"/></w:rPr><w:t xml:space=\\\"preserve\\\"> bace4d19-</w:t></w:r><w:r><w:rPr><w:rFonts w:ascii=\\\"sans-serif\\\" w:hAnsi=\\\"sans-serif\\\"/><w:b w:val=\\\"false\\\"/><w:i/><w:color w:val=\\\"202122\\\"/><w:spacing w:val=\\\"0\\\"/><w:sz w:val=\\\"21\\\"/></w:rPr><w:t>b001</w:t></w:r><w:r><w:rPr><w:rFonts w:ascii=\\\"sans-serif\\\" w:hAnsi=\\\"sans-serif\\\"/><w:b w:val=\\\"false\\\"/><w:i/><w:color w:val=\\\"202122\\\"/><w:spacing w:val=\\\"0\\\"/><w:sz w:val=\\\"21\\\"/></w:rPr><w:t>-b3e2-eac1-9129474bcd84</w:t></w:r></w:p><w:p><w:pPr><w:pStyle w:val=\\\"Normal\\\"/><w:bidi w:val=\\\"0\\\"/><w:jc w:val=\\\"left\\\"/><w:rPr><w:rFonts w:ascii=\\\"sans-serif\\\" w:hAnsi=\\\"sans-serif\\\"/><w:b w:val=\\\"false\\\"/><w:i/><w:i/><w:color w:val=\\\"202122\\\"/><w:spacing w:val=\\\"0\\\"/><w:sz w:val=\\\"21\\\"/></w:rPr></w:pPr><w:r><w:rPr><w:rFonts w:ascii=\\\"sans-serif\\\" w:hAnsi=\\\"sans-serif\\\"/><w:b w:val=\\\"false\\\"/><w:i/><w:color w:val=\\\"202122\\\"/><w:spacing w:val=\\\"0\\\"/><w:sz w:val=\\\"21\\\"/></w:rPr></w:r></w:p><w:p><w:pPr><w:sectPr><w:headerReference w:type=\\\"even\\\" r:id=\\\"rId2\\\"/><w:headerReference w:type=\\\"default\\\" r:id=\\\"rId3\\\"/><w:headerReference w:type=\\\"first\\\" r:id=\\\"rId4\\\"/><w:footerReference w:type=\\\"even\\\" r:id=\\\"rId5\\\"/><w:footerReference w:type=\\\"default\\\" r:id=\\\"rId6\\\"/><w:footerReference w:type=\\\"first\\\" r:id=\\\"rId7\\\"/><w:type w:val=\\\"nextPage\\\"/><w:pgSz w:w=\\\"11906\\\" w:h=\\\"16838\\\"/><w:pgMar w:left=\\\"1134\\\" w:right=\\\"1134\\\" w:gutter=\\\"0\\\" w:header=\\\"1134\\\" w:top=\\\"1696\\\" w:footer=\\\"1134\\\" w:bottom=\\\"2104\\\"/><w:pgNumType w:fmt=\\\"decimal\\\"/><w:formProt w:val=\\\"false\\\"/><w:titlePg/><w:textDirection w:val=\\\"lrTb\\\"/><w:docGrid w:type=\\\"default\\\" w:linePitch=\\\"100\\\" w:charSpace=\\\"0\\\"/></w:sectPr></w:pPr></w:p><w:p><w:pPr><w:pStyle w:val=\\\"Normal\\\"/><w:bidi w:val=\\\"0\\\"/><w:jc w:val=\\\"left\\\"/><w:rPr><w:rFonts w:ascii=\\\"sans-serif\\\" w:hAnsi=\\\"sans-serif\\\"/><w:b w:val=\\\"false\\\"/><w:i/><w:i/><w:color w:val=\\\"202122\\\"/><w:spacing w:val=\\\"0\\\"/><w:sz w:val=\\\"21\\\"/></w:rPr></w:pPr><w:r><w:rPr><w:rFonts w:ascii=\\\"sans-serif\\\" w:hAnsi=\\\"sans-serif\\\"/><w:b w:val=\\\"false\\\"/><w:i/><w:color w:val=\\\"202122\\\"/><w:spacing w:val=\\\"0\\\"/><w:sz w:val=\\\"21\\\"/></w:rPr><w:t>Next page section bace4d19-c001-b3e2-eac1-9129474bcd84</w:t></w:r></w:p><w:p><w:pPr><w:pStyle w:val=\\\"Normal\\\"/><w:bidi w:val=\\\"0\\\"/><w:jc w:val=\\\"left\\\"/><w:rPr><w:rFonts w:ascii=\\\"sans-serif\\\" w:hAnsi=\\\"sans-serif\\\"/><w:b w:val=\\\"false\\\"/><w:i/><w:i/><w:color w:val=\\\"202122\\\"/><w:spacing w:val=\\\"0\\\"/><w:sz w:val=\\\"21\\\"/></w:rPr></w:pPr><w:r><w:rPr><w:rFonts w:ascii=\\\"sans-serif\\\" w:hAnsi=\\\"sans-serif\\\"/><w:b w:val=\\\"false\\\"/><w:i/><w:color w:val=\\\"202122\\\"/><w:spacing w:val=\\\"0\\\"/><w:sz w:val=\\\"21\\\"/></w:rPr></w:r></w:p><w:tbl><w:tblPr><w:tblW w:w=\\\"5000\\\" w:type=\\\"pct\\\"/><w:jc w:val=\\\"left\\\"/><w:tblInd w:w=\\\"55\\\" w:type=\\\"dxa\\\"/><w:tblLayout w:type=\\\"fixed\\\"/><w:tblCellMar><w:top w:w=\\\"55\\\" w:type=\\\"dxa\\\"/><w:left w:w=\\\"55\\\" w:type=\\\"dxa\\\"/><w:bottom w:w=\\\"55\\\" w:type=\\\"dxa\\\"/><w:right w:w=\\\"55\\\" w:type=\\\"dxa\\\"/></w:tblCellMar></w:tblPr><w:tblGrid><w:gridCol w:w=\\\"4818\\\"/><w:gridCol w:w=\\\"4819\\\"/></w:tblGrid><w:tr><w:trPr></w:trPr><w:tc><w:tcPr><w:tcW w:w=\\\"4818\\\" w:type=\\\"dxa\\\"/><w:tcBorders><w:top w:val=\\\"single\\\" w:sz=\\\"4\\\" w:space=\\\"0\\\" w:color=\\\"000000\\\"/><w:left w:val=\\\"single\\\" w:sz=\\\"4\\\" w:space=\\\"0\\\" w:color=\\\"000000\\\"/><w:bottom w:val=\\\"single\\\" w:sz=\\\"4\\\" w:space=\\\"0\\\" w:color=\\\"000000\\\"/></w:tcBorders></w:tcPr><w:p><w:pPr><w:pStyle w:val=\\\"TableContents\\\"/><w:rPr></w:rPr></w:pPr><w:r><w:rPr></w:rPr></w:r></w:p></w:tc><w:tc><w:tcPr><w:tcW w:w=\\\"4819\\\" w:type=\\\"dxa\\\"/><w:tcBorders><w:top w:val=\\\"single\\\" w:sz=\\\"4\\\" w:space=\\\"0\\\" w:color=\\\"000000\\\"/><w:left w:val=\\\"single\\\" w:sz=\\\"4\\\" w:space=\\\"0\\\" w:color=\\\"000000\\\"/><w:bottom w:val=\\\"single\\\" w:sz=\\\"4\\\" w:space=\\\"0\\\" w:color=\\\"000000\\\"/><w:right w:val=\\\"single\\\" w:sz=\\\"4\\\" w:space=\\\"0\\\" w:color=\\\"000000\\\"/></w:tcBorders></w:tcPr><w:p><w:pPr><w:pStyle w:val=\\\"TableContents\\\"/><w:rPr></w:rPr></w:pPr><w:r><w:rPr></w:rPr></w:r></w:p></w:tc></w:tr><w:tr><w:trPr></w:trPr><w:tc><w:tcPr><w:tcW w:w=\\\"4818\\\" w:type=\\\"dxa\\\"/><w:tcBorders><w:left w:val=\\\"single\\\" w:sz=\\\"4\\\" w:space=\\\"0\\\" w:color=\\\"000000\\\"/><w:bottom w:val=\\\"single\\\" w:sz=\\\"4\\\" w:space=\\\"0\\\" w:color=\\\"000000\\\"/></w:tcBorders></w:tcPr><w:p><w:pPr><w:pStyle w:val=\\\"TableContents\\\"/><w:rPr></w:rPr></w:pPr><w:r><w:rPr></w:rPr></w:r></w:p></w:tc><w:tc><w:tcPr><w:tcW w:w=\\\"4819\\\" w:type=\\\"dxa\\\"/><w:tcBorders><w:left w:val=\\\"single\\\" w:sz=\\\"4\\\" w:space=\\\"0\\\" w:color=\\\"000000\\\"/><w:bottom w:val=\\\"single\\\" w:sz=\\\"4\\\" w:space=\\\"0\\\" w:color=\\\"000000\\\"/><w:right w:val=\\\"single\\\" w:sz=\\\"4\\\" w:space=\\\"0\\\" w:color=\\\"000000\\\"/></w:tcBorders></w:tcPr><w:p><w:pPr><w:pStyle w:val=\\\"TableContents\\\"/><w:rPr></w:rPr></w:pPr><w:r><w:rPr></w:rPr><w:t xml:space=\\\"preserve\\\">Section </w:t></w:r><w:r><w:rPr></w:rPr><w:t>R2C2</w:t></w:r><w:r><w:rPr></w:rPr><w:t xml:space=\\\"preserve\\\"> b5c6471d-</w:t></w:r><w:r><w:rPr></w:rPr><w:t>a2b2</w:t></w:r><w:r><w:rPr></w:rPr><w:t>-b4ef-ca5e-9121476bc881</w:t></w:r></w:p></w:tc></w:tr></w:tbl><w:p><w:pPr><w:pStyle w:val=\\\"Normal\\\"/><w:bidi w:val=\\\"0\\\"/><w:jc w:val=\\\"left\\\"/><w:rPr><w:rFonts w:ascii=\\\"sans-serif\\\" w:hAnsi=\\\"sans-serif\\\"/><w:b w:val=\\\"false\\\"/><w:i/><w:i/><w:color w:val=\\\"202122\\\"/><w:spacing w:val=\\\"0\\\"/><w:sz w:val=\\\"21\\\"/></w:rPr></w:pPr><w:r><w:rPr><w:rFonts w:ascii=\\\"sans-serif\\\" w:hAnsi=\\\"sans-serif\\\"/><w:b w:val=\\\"false\\\"/><w:i/><w:color w:val=\\\"202122\\\"/><w:spacing w:val=\\\"0\\\"/><w:sz w:val=\\\"21\\\"/></w:rPr></w:r></w:p><w:p><w:pPr><w:pStyle w:val=\\\"Normal\\\"/><w:bidi w:val=\\\"0\\\"/><w:jc w:val=\\\"left\\\"/><w:rPr><w:rFonts w:ascii=\\\"sans-serif\\\" w:hAnsi=\\\"sans-serif\\\"/><w:b w:val=\\\"false\\\"/><w:i/><w:i/><w:color w:val=\\\"202122\\\"/><w:spacing w:val=\\\"0\\\"/><w:sz w:val=\\\"21\\\"/></w:rPr></w:pPr><w:r><w:rPr><w:rFonts w:ascii=\\\"sans-serif\\\" w:hAnsi=\\\"sans-serif\\\"/><w:b w:val=\\\"false\\\"/><w:i/><w:color w:val=\\\"202122\\\"/><w:spacing w:val=\\\"0\\\"/><w:sz w:val=\\\"21\\\"/></w:rPr></w:r></w:p><w:p><w:pPr><w:sectPr><w:type w:val=\\\"continuous\\\"/><w:pgSz w:w=\\\"11906\\\" w:h=\\\"16838\\\"/><w:pgMar w:left=\\\"1134\\\" w:right=\\\"1134\\\" w:gutter=\\\"0\\\" w:header=\\\"1134\\\" w:top=\\\"1696\\\" w:footer=\\\"1134\\\" w:bottom=\\\"2104\\\"/><w:formProt w:val=\\\"false\\\"/><w:titlePg/><w:textDirection w:val=\\\"lrTb\\\"/><w:docGrid w:type=\\\"default\\\" w:linePitch=\\\"100\\\" w:charSpace=\\\"0\\\"/></w:sectPr></w:pPr></w:p><w:p><w:pPr><w:pStyle w:val=\\\"Normal\\\"/><w:bidi w:val=\\\"0\\\"/><w:jc w:val=\\\"left\\\"/><w:rPr><w:rFonts w:ascii=\\\"sans-serif\\\" w:hAnsi=\\\"sans-serif\\\"/><w:b w:val=\\\"false\\\"/><w:i/><w:i/><w:color w:val=\\\"202122\\\"/><w:spacing w:val=\\\"0\\\"/><w:sz w:val=\\\"21\\\"/></w:rPr></w:pPr><w:r><w:rPr><w:rFonts w:ascii=\\\"sans-serif\\\" w:hAnsi=\\\"sans-serif\\\"/><w:b w:val=\\\"false\\\"/><w:i/><w:color w:val=\\\"202122\\\"/><w:spacing w:val=\\\"0\\\"/><w:sz w:val=\\\"21\\\"/></w:rPr></w:r></w:p><w:p><w:pPr><w:pStyle w:val=\\\"Normal\\\"/><w:bidi w:val=\\\"0\\\"/><w:jc w:val=\\\"left\\\"/><w:rPr><w:rFonts w:ascii=\\\"sans-serif\\\" w:hAnsi=\\\"sans-serif\\\"/><w:b w:val=\\\"false\\\"/><w:i/><w:i/><w:color w:val=\\\"202122\\\"/><w:spacing w:val=\\\"0\\\"/><w:sz w:val=\\\"21\\\"/></w:rPr></w:pPr><w:r><w:rPr></w:rPr><w:t>next line in section bace4d19-c001-b3e2-eac1-9129474bcd84</w:t></w:r><w:r><w:br w:type=\\\"page\\\"/></w:r></w:p><w:p><w:pPr><w:pStyle w:val=\\\"Normal\\\"/><w:bidi w:val=\\\"0\\\"/><w:jc w:val=\\\"left\\\"/><w:rPr></w:rPr></w:pPr><w:r><w:rPr></w:rPr></w:r></w:p><w:p><w:pPr><w:pStyle w:val=\\\"Normal\\\"/><w:bidi w:val=\\\"0\\\"/><w:jc w:val=\\\"left\\\"/><w:rPr></w:rPr></w:pPr><w:r><w:rPr></w:rPr></w:r></w:p><w:p><w:pPr><w:pStyle w:val=\\\"Normal\\\"/><w:bidi w:val=\\\"0\\\"/><w:jc w:val=\\\"left\\\"/><w:rPr></w:rPr></w:pPr><w:r><w:rPr></w:rPr></w:r></w:p><w:p><w:pPr><w:pStyle w:val=\\\"Normal\\\"/><w:bidi w:val=\\\"0\\\"/><w:jc w:val=\\\"left\\\"/><w:rPr></w:rPr></w:pPr><w:r><w:rPr></w:rPr></w:r></w:p><w:p><w:pPr><w:pStyle w:val=\\\"Normal\\\"/><w:bidi w:val=\\\"0\\\"/><w:jc w:val=\\\"left\\\"/><w:rPr></w:rPr></w:pPr><w:r><w:rPr></w:rPr><w:t xml:space=\\\"preserve\\\">last page </w:t></w:r><w:r><w:rPr><w:rFonts w:ascii=\\\"JetBrains Mono\\\" w:hAnsi=\\\"JetBrains Mono\\\"/><w:b w:val=\\\"false\\\"/><w:i w:val=\\\"false\\\"/><w:color w:val=\\\"6A8759\\\"/><w:spacing w:val=\\\"0\\\"/><w:sz w:val=\\\"20\\\"/></w:rPr><w:t xml:space=\\\"preserve\\\"> bace4d11-a003-be2a-c3fe-9829474b5d84</w:t></w:r></w:p><w:sectPr><w:type w:val=\\\"continuous\\\"/><w:pgSz w:w=\\\"11906\\\" w:h=\\\"16838\\\"/><w:pgMar w:left=\\\"1134\\\" w:right=\\\"1134\\\" w:gutter=\\\"0\\\" w:header=\\\"1134\\\" w:top=\\\"1696\\\" w:footer=\\\"1134\\\" w:bottom=\\\"2104\\\"/><w:formProt w:val=\\\"false\\\"/><w:titlePg/><w:textDirection w:val=\\\"lrTb\\\"/><w:docGrid w:type=\\\"default\\\" w:linePitch=\\\"100\\\" w:charSpace=\\\"0\\\"/></w:sectPr></w:body></w:document>\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/sample.docx\",\n                \"info\": \"FILE:./tests/samples/sample.docx|ZIP:word/document.xml|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"bace4d19-c001-b3e2-eac1-9129474bcd84\",\n                \"value_start\": 8850,\n                \"value_end\": 8886,\n                \"entropy\": 3.66257\n            }\n        ]\n    },\n    {\n        \"rule\": \"UUID\",\n        \"severity\": \"info\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"<w:document xmlns:o=\\\"urn:schemas-microsoft-com:office:office\\\" xmlns:r=\\\"http://schemas.openxmlformats.org/officeDocument/2006/relationships\\\" xmlns:v=\\\"urn:schemas-microsoft-com:vml\\\" xmlns:w=\\\"http://schemas.openxmlformats.org/wordprocessingml/2006/main\\\" xmlns:w10=\\\"urn:schemas-microsoft-com:office:word\\\" xmlns:wp=\\\"http://schemas.openxmlformats.org/drawingml/2006/wordprocessingDrawing\\\" xmlns:wps=\\\"http://schemas.microsoft.com/office/word/2010/wordprocessingShape\\\" xmlns:wpg=\\\"http://schemas.microsoft.com/office/word/2010/wordprocessingGroup\\\" xmlns:mc=\\\"http://schemas.openxmlformats.org/markup-compatibility/2006\\\" xmlns:wp14=\\\"http://schemas.microsoft.com/office/word/2010/wordprocessingDrawing\\\" xmlns:w14=\\\"http://schemas.microsoft.com/office/word/2010/wordml\\\" xmlns:w15=\\\"http://schemas.microsoft.com/office/word/2012/wordml\\\" mc:Ignorable=\\\"w14 wp14 w15\\\"><w:body><w:p><w:pPr><w:pStyle w:val=\\\"Header\\\"/><w:bidi w:val=\\\"0\\\"/><w:jc w:val=\\\"left\\\"/><w:rPr><w:rFonts w:ascii=\\\"sans-serif\\\" w:hAnsi=\\\"sans-serif\\\"/><w:b w:val=\\\"false\\\"/><w:i/><w:i/><w:color w:val=\\\"202122\\\"/><w:spacing w:val=\\\"0\\\"/><w:sz w:val=\\\"21\\\"/></w:rPr></w:pPr><w:r><w:rPr></w:rPr><w:t xml:space=\\\"preserve\\\">First </w:t></w:r><w:r><w:rPr></w:rPr><w:t xml:space=\\\"preserve\\\">line </w:t></w:r><w:r><w:rPr></w:rPr><w:t>bace4d11-</w:t></w:r><w:r><w:rPr></w:rPr><w:t>a</w:t></w:r><w:r><w:rPr></w:rPr><w:t>001-be</w:t></w:r><w:r><w:rPr></w:rPr><w:t>1</w:t></w:r><w:r><w:rPr></w:rPr><w:t>a-c3fe-9829474b5d84</w:t></w:r></w:p><w:p><w:pPr><w:pStyle w:val=\\\"Normal\\\"/><w:shd w:fill=\\\"2B2B2B\\\"/><w:rPr><w:rFonts w:ascii=\\\"JetBrains Mono\\\" w:hAnsi=\\\"JetBrains Mono\\\"/><w:b w:val=\\\"false\\\"/><w:i w:val=\\\"false\\\"/><w:i w:val=\\\"false\\\"/><w:color w:val=\\\"6A8759\\\"/><w:sz w:val=\\\"20\\\"/></w:rPr></w:pPr><w:r><w:rPr><w:rFonts w:ascii=\\\"JetBrains Mono\\\" w:hAnsi=\\\"JetBrains Mono\\\"/><w:b w:val=\\\"false\\\"/><w:i w:val=\\\"false\\\"/><w:color w:val=\\\"6A8759\\\"/><w:spacing w:val=\\\"0\\\"/><w:sz w:val=\\\"20\\\"/></w:rPr><w:t>second line bace4d11-a002-be1a-c3fe-9829474b5d84</w:t></w:r></w:p><w:p><w:pPr><w:pStyle w:val=\\\"Normal\\\"/><w:bidi w:val=\\\"0\\\"/><w:jc w:val=\\\"left\\\"/><w:rPr><w:rFonts w:ascii=\\\"sans-serif\\\" w:hAnsi=\\\"sans-serif\\\"/><w:b w:val=\\\"false\\\"/><w:i/><w:i/><w:color w:val=\\\"202122\\\"/><w:spacing w:val=\\\"0\\\"/><w:sz w:val=\\\"21\\\"/></w:rPr></w:pPr><w:r><w:rPr><w:rFonts w:ascii=\\\"sans-serif\\\" w:hAnsi=\\\"sans-serif\\\"/><w:b w:val=\\\"false\\\"/><w:i/><w:color w:val=\\\"202122\\\"/><w:spacing w:val=\\\"0\\\"/><w:sz w:val=\\\"21\\\"/></w:rPr></w:r></w:p><w:tbl><w:tblPr><w:tblW w:w=\\\"5000\\\" w:type=\\\"pct\\\"/><w:jc w:val=\\\"left\\\"/><w:tblInd w:w=\\\"55\\\" w:type=\\\"dxa\\\"/><w:tblLayout w:type=\\\"fixed\\\"/><w:tblCellMar><w:top w:w=\\\"55\\\" w:type=\\\"dxa\\\"/><w:left w:w=\\\"55\\\" w:type=\\\"dxa\\\"/><w:bottom w:w=\\\"55\\\" w:type=\\\"dxa\\\"/><w:right w:w=\\\"55\\\" w:type=\\\"dxa\\\"/></w:tblCellMar></w:tblPr><w:tblGrid><w:gridCol w:w=\\\"9638\\\"/></w:tblGrid><w:tr><w:trPr></w:trPr><w:tc><w:tcPr><w:tcW w:w=\\\"9638\\\" w:type=\\\"dxa\\\"/><w:tcBorders><w:top w:val=\\\"single\\\" w:sz=\\\"4\\\" w:space=\\\"0\\\" w:color=\\\"000000\\\"/><w:left w:val=\\\"single\\\" w:sz=\\\"4\\\" w:space=\\\"0\\\" w:color=\\\"000000\\\"/><w:bottom w:val=\\\"single\\\" w:sz=\\\"4\\\" w:space=\\\"0\\\" w:color=\\\"000000\\\"/><w:right w:val=\\\"single\\\" w:sz=\\\"4\\\" w:space=\\\"0\\\" w:color=\\\"000000\\\"/></w:tcBorders></w:tcPr><w:p><w:pPr><w:pStyle w:val=\\\"TableContents\\\"/><w:rPr></w:rPr></w:pPr><w:r><w:rPr></w:rPr></w:r></w:p><w:p><w:pPr><w:pStyle w:val=\\\"TableContents\\\"/><w:rPr></w:rPr></w:pPr><w:r><w:rPr></w:rPr></w:r></w:p><w:tbl><w:tblPr><w:tblW w:w=\\\"5000\\\" w:type=\\\"pct\\\"/><w:jc w:val=\\\"left\\\"/><w:tblInd w:w=\\\"0\\\" w:type=\\\"dxa\\\"/><w:tblLayout w:type=\\\"fixed\\\"/><w:tblCellMar><w:top w:w=\\\"55\\\" w:type=\\\"dxa\\\"/><w:left w:w=\\\"55\\\" w:type=\\\"dxa\\\"/><w:bottom w:w=\\\"55\\\" w:type=\\\"dxa\\\"/><w:right w:w=\\\"55\\\" w:type=\\\"dxa\\\"/></w:tblCellMar></w:tblPr><w:tblGrid><w:gridCol w:w=\\\"9528\\\"/></w:tblGrid><w:tr><w:trPr></w:trPr><w:tc><w:tcPr><w:tcW w:w=\\\"9528\\\" w:type=\\\"dxa\\\"/><w:tcBorders><w:top w:val=\\\"single\\\" w:sz=\\\"4\\\" w:space=\\\"0\\\" w:color=\\\"000000\\\"/><w:left w:val=\\\"single\\\" w:sz=\\\"4\\\" w:space=\\\"0\\\" w:color=\\\"000000\\\"/><w:bottom w:val=\\\"single\\\" w:sz=\\\"4\\\" w:space=\\\"0\\\" w:color=\\\"000000\\\"/><w:right w:val=\\\"single\\\" w:sz=\\\"4\\\" w:space=\\\"0\\\" w:color=\\\"000000\\\"/></w:tcBorders></w:tcPr><w:p><w:pPr><w:pStyle w:val=\\\"Normal\\\"/><w:bidi w:val=\\\"0\\\"/><w:jc w:val=\\\"left\\\"/><w:rPr><w:rFonts w:ascii=\\\"sans-serif\\\" w:hAnsi=\\\"sans-serif\\\"/><w:b w:val=\\\"false\\\"/><w:i/><w:i/><w:color w:val=\\\"202122\\\"/><w:spacing w:val=\\\"0\\\"/><w:sz w:val=\\\"21\\\"/></w:rPr></w:pPr><w:r><w:rPr><w:rFonts w:ascii=\\\"sans-serif\\\" w:hAnsi=\\\"sans-serif\\\"/><w:b w:val=\\\"false\\\"/><w:i/><w:color w:val=\\\"202122\\\"/><w:spacing w:val=\\\"0\\\"/><w:sz w:val=\\\"21\\\"/></w:rPr><w:t>Innner cell bace4d11-b003-be1a-c3fe-9829474b5d84</w:t></w:r></w:p></w:tc></w:tr></w:tbl><w:p><w:pPr><w:pStyle w:val=\\\"TableContents\\\"/><w:rPr></w:rPr></w:pPr><w:r><w:rPr></w:rPr></w:r></w:p><w:p><w:pPr><w:pStyle w:val=\\\"TableContents\\\"/><w:rPr></w:rPr></w:pPr><w:r><w:rPr></w:rPr></w:r></w:p></w:tc></w:tr></w:tbl><w:p><w:pPr><w:pStyle w:val=\\\"Normal\\\"/><w:bidi w:val=\\\"0\\\"/><w:jc w:val=\\\"left\\\"/><w:rPr><w:rFonts w:ascii=\\\"sans-serif\\\" w:hAnsi=\\\"sans-serif\\\"/><w:b w:val=\\\"false\\\"/><w:i/><w:i/><w:color w:val=\\\"202122\\\"/><w:spacing w:val=\\\"0\\\"/><w:sz w:val=\\\"21\\\"/></w:rPr></w:pPr><w:r><w:rPr><w:rFonts w:ascii=\\\"sans-serif\\\" w:hAnsi=\\\"sans-serif\\\"/><w:b w:val=\\\"false\\\"/><w:i/><w:color w:val=\\\"202122\\\"/><w:spacing w:val=\\\"0\\\"/><w:sz w:val=\\\"21\\\"/></w:rPr></w:r></w:p><w:p><w:pPr><w:pStyle w:val=\\\"Normal\\\"/><w:bidi w:val=\\\"0\\\"/><w:jc w:val=\\\"left\\\"/><w:rPr><w:rFonts w:ascii=\\\"sans-serif\\\" w:hAnsi=\\\"sans-serif\\\"/><w:b w:val=\\\"false\\\"/><w:i/><w:i/><w:color w:val=\\\"202122\\\"/><w:spacing w:val=\\\"0\\\"/><w:sz w:val=\\\"21\\\"/></w:rPr></w:pPr><w:r><w:rPr><w:rFonts w:ascii=\\\"sans-serif\\\" w:hAnsi=\\\"sans-serif\\\"/><w:b w:val=\\\"false\\\"/><w:i/><w:color w:val=\\\"202122\\\"/><w:spacing w:val=\\\"0\\\"/><w:sz w:val=\\\"21\\\"/></w:rPr></w:r></w:p><w:p><w:pPr><w:pStyle w:val=\\\"Normal\\\"/><w:bidi w:val=\\\"0\\\"/><w:jc w:val=\\\"left\\\"/><w:rPr><w:rFonts w:ascii=\\\"sans-serif\\\" w:hAnsi=\\\"sans-serif\\\"/><w:b w:val=\\\"false\\\"/><w:i/><w:i/><w:color w:val=\\\"202122\\\"/><w:spacing w:val=\\\"0\\\"/><w:sz w:val=\\\"21\\\"/></w:rPr></w:pPr><w:r><w:rPr><w:rFonts w:ascii=\\\"sans-serif\\\" w:hAnsi=\\\"sans-serif\\\"/><w:b w:val=\\\"false\\\"/><w:i/><w:color w:val=\\\"202122\\\"/><w:spacing w:val=\\\"0\\\"/><w:sz w:val=\\\"21\\\"/></w:rPr></w:r><w:r><w:br w:type=\\\"page\\\"/></w:r></w:p><w:p><w:pPr><w:pStyle w:val=\\\"Normal\\\"/><w:bidi w:val=\\\"0\\\"/><w:spacing w:before=\\\"0\\\" w:after=\\\"0\\\"/><w:jc w:val=\\\"left\\\"/><w:rPr><w:rFonts w:ascii=\\\"sans-serif\\\" w:hAnsi=\\\"sans-serif\\\"/><w:b w:val=\\\"false\\\"/><w:i/><w:i/><w:color w:val=\\\"202122\\\"/><w:spacing w:val=\\\"0\\\"/><w:sz w:val=\\\"21\\\"/></w:rPr></w:pPr><w:r><w:rPr><w:rFonts w:ascii=\\\"sans-serif\\\" w:hAnsi=\\\"sans-serif\\\"/><w:b w:val=\\\"false\\\"/><w:i/><w:color w:val=\\\"202122\\\"/><w:spacing w:val=\\\"0\\\"/><w:sz w:val=\\\"21\\\"/></w:rPr><w:t xml:space=\\\"preserve\\\">New page </w:t></w:r><w:r><w:rPr><w:rFonts w:ascii=\\\"sans-serif\\\" w:hAnsi=\\\"sans-serif\\\"/><w:b w:val=\\\"false\\\"/><w:i/><w:color w:val=\\\"202122\\\"/><w:spacing w:val=\\\"0\\\"/><w:sz w:val=\\\"21\\\"/></w:rPr><w:t>first line</w:t></w:r><w:r><w:rPr><w:rFonts w:ascii=\\\"sans-serif\\\" w:hAnsi=\\\"sans-serif\\\"/><w:b w:val=\\\"false\\\"/><w:i/><w:color w:val=\\\"202122\\\"/><w:spacing w:val=\\\"0\\\"/><w:sz w:val=\\\"21\\\"/></w:rPr><w:t xml:space=\\\"preserve\\\"> bace4d19-</w:t></w:r><w:r><w:rPr><w:rFonts w:ascii=\\\"sans-serif\\\" w:hAnsi=\\\"sans-serif\\\"/><w:b w:val=\\\"false\\\"/><w:i/><w:color w:val=\\\"202122\\\"/><w:spacing w:val=\\\"0\\\"/><w:sz w:val=\\\"21\\\"/></w:rPr><w:t>b001</w:t></w:r><w:r><w:rPr><w:rFonts w:ascii=\\\"sans-serif\\\" w:hAnsi=\\\"sans-serif\\\"/><w:b w:val=\\\"false\\\"/><w:i/><w:color w:val=\\\"202122\\\"/><w:spacing w:val=\\\"0\\\"/><w:sz w:val=\\\"21\\\"/></w:rPr><w:t>-b3e2-eac1-9129474bcd84</w:t></w:r></w:p><w:p><w:pPr><w:pStyle w:val=\\\"Normal\\\"/><w:bidi w:val=\\\"0\\\"/><w:jc w:val=\\\"left\\\"/><w:rPr><w:rFonts w:ascii=\\\"sans-serif\\\" w:hAnsi=\\\"sans-serif\\\"/><w:b w:val=\\\"false\\\"/><w:i/><w:i/><w:color w:val=\\\"202122\\\"/><w:spacing w:val=\\\"0\\\"/><w:sz w:val=\\\"21\\\"/></w:rPr></w:pPr><w:r><w:rPr><w:rFonts w:ascii=\\\"sans-serif\\\" w:hAnsi=\\\"sans-serif\\\"/><w:b w:val=\\\"false\\\"/><w:i/><w:color w:val=\\\"202122\\\"/><w:spacing w:val=\\\"0\\\"/><w:sz w:val=\\\"21\\\"/></w:rPr></w:r></w:p><w:p><w:pPr><w:sectPr><w:headerReference w:type=\\\"even\\\" r:id=\\\"rId2\\\"/><w:headerReference w:type=\\\"default\\\" r:id=\\\"rId3\\\"/><w:headerReference w:type=\\\"first\\\" r:id=\\\"rId4\\\"/><w:footerReference w:type=\\\"even\\\" r:id=\\\"rId5\\\"/><w:footerReference w:type=\\\"default\\\" r:id=\\\"rId6\\\"/><w:footerReference w:type=\\\"first\\\" r:id=\\\"rId7\\\"/><w:type w:val=\\\"nextPage\\\"/><w:pgSz w:w=\\\"11906\\\" w:h=\\\"16838\\\"/><w:pgMar w:left=\\\"1134\\\" w:right=\\\"1134\\\" w:gutter=\\\"0\\\" w:header=\\\"1134\\\" w:top=\\\"1696\\\" w:footer=\\\"1134\\\" w:bottom=\\\"2104\\\"/><w:pgNumType w:fmt=\\\"decimal\\\"/><w:formProt w:val=\\\"false\\\"/><w:titlePg/><w:textDirection w:val=\\\"lrTb\\\"/><w:docGrid w:type=\\\"default\\\" w:linePitch=\\\"100\\\" w:charSpace=\\\"0\\\"/></w:sectPr></w:pPr></w:p><w:p><w:pPr><w:pStyle w:val=\\\"Normal\\\"/><w:bidi w:val=\\\"0\\\"/><w:jc w:val=\\\"left\\\"/><w:rPr><w:rFonts w:ascii=\\\"sans-serif\\\" w:hAnsi=\\\"sans-serif\\\"/><w:b w:val=\\\"false\\\"/><w:i/><w:i/><w:color w:val=\\\"202122\\\"/><w:spacing w:val=\\\"0\\\"/><w:sz w:val=\\\"21\\\"/></w:rPr></w:pPr><w:r><w:rPr><w:rFonts w:ascii=\\\"sans-serif\\\" w:hAnsi=\\\"sans-serif\\\"/><w:b w:val=\\\"false\\\"/><w:i/><w:color w:val=\\\"202122\\\"/><w:spacing w:val=\\\"0\\\"/><w:sz w:val=\\\"21\\\"/></w:rPr><w:t>Next page section bace4d19-c001-b3e2-eac1-9129474bcd84</w:t></w:r></w:p><w:p><w:pPr><w:pStyle w:val=\\\"Normal\\\"/><w:bidi w:val=\\\"0\\\"/><w:jc w:val=\\\"left\\\"/><w:rPr><w:rFonts w:ascii=\\\"sans-serif\\\" w:hAnsi=\\\"sans-serif\\\"/><w:b w:val=\\\"false\\\"/><w:i/><w:i/><w:color w:val=\\\"202122\\\"/><w:spacing w:val=\\\"0\\\"/><w:sz w:val=\\\"21\\\"/></w:rPr></w:pPr><w:r><w:rPr><w:rFonts w:ascii=\\\"sans-serif\\\" w:hAnsi=\\\"sans-serif\\\"/><w:b w:val=\\\"false\\\"/><w:i/><w:color w:val=\\\"202122\\\"/><w:spacing w:val=\\\"0\\\"/><w:sz w:val=\\\"21\\\"/></w:rPr></w:r></w:p><w:tbl><w:tblPr><w:tblW w:w=\\\"5000\\\" w:type=\\\"pct\\\"/><w:jc w:val=\\\"left\\\"/><w:tblInd w:w=\\\"55\\\" w:type=\\\"dxa\\\"/><w:tblLayout w:type=\\\"fixed\\\"/><w:tblCellMar><w:top w:w=\\\"55\\\" w:type=\\\"dxa\\\"/><w:left w:w=\\\"55\\\" w:type=\\\"dxa\\\"/><w:bottom w:w=\\\"55\\\" w:type=\\\"dxa\\\"/><w:right w:w=\\\"55\\\" w:type=\\\"dxa\\\"/></w:tblCellMar></w:tblPr><w:tblGrid><w:gridCol w:w=\\\"4818\\\"/><w:gridCol w:w=\\\"4819\\\"/></w:tblGrid><w:tr><w:trPr></w:trPr><w:tc><w:tcPr><w:tcW w:w=\\\"4818\\\" w:type=\\\"dxa\\\"/><w:tcBorders><w:top w:val=\\\"single\\\" w:sz=\\\"4\\\" w:space=\\\"0\\\" w:color=\\\"000000\\\"/><w:left w:val=\\\"single\\\" w:sz=\\\"4\\\" w:space=\\\"0\\\" w:color=\\\"000000\\\"/><w:bottom w:val=\\\"single\\\" w:sz=\\\"4\\\" w:space=\\\"0\\\" w:color=\\\"000000\\\"/></w:tcBorders></w:tcPr><w:p><w:pPr><w:pStyle w:val=\\\"TableContents\\\"/><w:rPr></w:rPr></w:pPr><w:r><w:rPr></w:rPr></w:r></w:p></w:tc><w:tc><w:tcPr><w:tcW w:w=\\\"4819\\\" w:type=\\\"dxa\\\"/><w:tcBorders><w:top w:val=\\\"single\\\" w:sz=\\\"4\\\" w:space=\\\"0\\\" w:color=\\\"000000\\\"/><w:left w:val=\\\"single\\\" w:sz=\\\"4\\\" w:space=\\\"0\\\" w:color=\\\"000000\\\"/><w:bottom w:val=\\\"single\\\" w:sz=\\\"4\\\" w:space=\\\"0\\\" w:color=\\\"000000\\\"/><w:right w:val=\\\"single\\\" w:sz=\\\"4\\\" w:space=\\\"0\\\" w:color=\\\"000000\\\"/></w:tcBorders></w:tcPr><w:p><w:pPr><w:pStyle w:val=\\\"TableContents\\\"/><w:rPr></w:rPr></w:pPr><w:r><w:rPr></w:rPr></w:r></w:p></w:tc></w:tr><w:tr><w:trPr></w:trPr><w:tc><w:tcPr><w:tcW w:w=\\\"4818\\\" w:type=\\\"dxa\\\"/><w:tcBorders><w:left w:val=\\\"single\\\" w:sz=\\\"4\\\" w:space=\\\"0\\\" w:color=\\\"000000\\\"/><w:bottom w:val=\\\"single\\\" w:sz=\\\"4\\\" w:space=\\\"0\\\" w:color=\\\"000000\\\"/></w:tcBorders></w:tcPr><w:p><w:pPr><w:pStyle w:val=\\\"TableContents\\\"/><w:rPr></w:rPr></w:pPr><w:r><w:rPr></w:rPr></w:r></w:p></w:tc><w:tc><w:tcPr><w:tcW w:w=\\\"4819\\\" w:type=\\\"dxa\\\"/><w:tcBorders><w:left w:val=\\\"single\\\" w:sz=\\\"4\\\" w:space=\\\"0\\\" w:color=\\\"000000\\\"/><w:bottom w:val=\\\"single\\\" w:sz=\\\"4\\\" w:space=\\\"0\\\" w:color=\\\"000000\\\"/><w:right w:val=\\\"single\\\" w:sz=\\\"4\\\" w:space=\\\"0\\\" w:color=\\\"000000\\\"/></w:tcBorders></w:tcPr><w:p><w:pPr><w:pStyle w:val=\\\"TableContents\\\"/><w:rPr></w:rPr></w:pPr><w:r><w:rPr></w:rPr><w:t xml:space=\\\"preserve\\\">Section </w:t></w:r><w:r><w:rPr></w:rPr><w:t>R2C2</w:t></w:r><w:r><w:rPr></w:rPr><w:t xml:space=\\\"preserve\\\"> b5c6471d-</w:t></w:r><w:r><w:rPr></w:rPr><w:t>a2b2</w:t></w:r><w:r><w:rPr></w:rPr><w:t>-b4ef-ca5e-9121476bc881</w:t></w:r></w:p></w:tc></w:tr></w:tbl><w:p><w:pPr><w:pStyle w:val=\\\"Normal\\\"/><w:bidi w:val=\\\"0\\\"/><w:jc w:val=\\\"left\\\"/><w:rPr><w:rFonts w:ascii=\\\"sans-serif\\\" w:hAnsi=\\\"sans-serif\\\"/><w:b w:val=\\\"false\\\"/><w:i/><w:i/><w:color w:val=\\\"202122\\\"/><w:spacing w:val=\\\"0\\\"/><w:sz w:val=\\\"21\\\"/></w:rPr></w:pPr><w:r><w:rPr><w:rFonts w:ascii=\\\"sans-serif\\\" w:hAnsi=\\\"sans-serif\\\"/><w:b w:val=\\\"false\\\"/><w:i/><w:color w:val=\\\"202122\\\"/><w:spacing w:val=\\\"0\\\"/><w:sz w:val=\\\"21\\\"/></w:rPr></w:r></w:p><w:p><w:pPr><w:pStyle w:val=\\\"Normal\\\"/><w:bidi w:val=\\\"0\\\"/><w:jc w:val=\\\"left\\\"/><w:rPr><w:rFonts w:ascii=\\\"sans-serif\\\" w:hAnsi=\\\"sans-serif\\\"/><w:b w:val=\\\"false\\\"/><w:i/><w:i/><w:color w:val=\\\"202122\\\"/><w:spacing w:val=\\\"0\\\"/><w:sz w:val=\\\"21\\\"/></w:rPr></w:pPr><w:r><w:rPr><w:rFonts w:ascii=\\\"sans-serif\\\" w:hAnsi=\\\"sans-serif\\\"/><w:b w:val=\\\"false\\\"/><w:i/><w:color w:val=\\\"202122\\\"/><w:spacing w:val=\\\"0\\\"/><w:sz w:val=\\\"21\\\"/></w:rPr></w:r></w:p><w:p><w:pPr><w:sectPr><w:type w:val=\\\"continuous\\\"/><w:pgSz w:w=\\\"11906\\\" w:h=\\\"16838\\\"/><w:pgMar w:left=\\\"1134\\\" w:right=\\\"1134\\\" w:gutter=\\\"0\\\" w:header=\\\"1134\\\" w:top=\\\"1696\\\" w:footer=\\\"1134\\\" w:bottom=\\\"2104\\\"/><w:formProt w:val=\\\"false\\\"/><w:titlePg/><w:textDirection w:val=\\\"lrTb\\\"/><w:docGrid w:type=\\\"default\\\" w:linePitch=\\\"100\\\" w:charSpace=\\\"0\\\"/></w:sectPr></w:pPr></w:p><w:p><w:pPr><w:pStyle w:val=\\\"Normal\\\"/><w:bidi w:val=\\\"0\\\"/><w:jc w:val=\\\"left\\\"/><w:rPr><w:rFonts w:ascii=\\\"sans-serif\\\" w:hAnsi=\\\"sans-serif\\\"/><w:b w:val=\\\"false\\\"/><w:i/><w:i/><w:color w:val=\\\"202122\\\"/><w:spacing w:val=\\\"0\\\"/><w:sz w:val=\\\"21\\\"/></w:rPr></w:pPr><w:r><w:rPr><w:rFonts w:ascii=\\\"sans-serif\\\" w:hAnsi=\\\"sans-serif\\\"/><w:b w:val=\\\"false\\\"/><w:i/><w:color w:val=\\\"202122\\\"/><w:spacing w:val=\\\"0\\\"/><w:sz w:val=\\\"21\\\"/></w:rPr></w:r></w:p><w:p><w:pPr><w:pStyle w:val=\\\"Normal\\\"/><w:bidi w:val=\\\"0\\\"/><w:jc w:val=\\\"left\\\"/><w:rPr><w:rFonts w:ascii=\\\"sans-serif\\\" w:hAnsi=\\\"sans-serif\\\"/><w:b w:val=\\\"false\\\"/><w:i/><w:i/><w:color w:val=\\\"202122\\\"/><w:spacing w:val=\\\"0\\\"/><w:sz w:val=\\\"21\\\"/></w:rPr></w:pPr><w:r><w:rPr></w:rPr><w:t>next line in section bace4d19-c001-b3e2-eac1-9129474bcd84</w:t></w:r><w:r><w:br w:type=\\\"page\\\"/></w:r></w:p><w:p><w:pPr><w:pStyle w:val=\\\"Normal\\\"/><w:bidi w:val=\\\"0\\\"/><w:jc w:val=\\\"left\\\"/><w:rPr></w:rPr></w:pPr><w:r><w:rPr></w:rPr></w:r></w:p><w:p><w:pPr><w:pStyle w:val=\\\"Normal\\\"/><w:bidi w:val=\\\"0\\\"/><w:jc w:val=\\\"left\\\"/><w:rPr></w:rPr></w:pPr><w:r><w:rPr></w:rPr></w:r></w:p><w:p><w:pPr><w:pStyle w:val=\\\"Normal\\\"/><w:bidi w:val=\\\"0\\\"/><w:jc w:val=\\\"left\\\"/><w:rPr></w:rPr></w:pPr><w:r><w:rPr></w:rPr></w:r></w:p><w:p><w:pPr><w:pStyle w:val=\\\"Normal\\\"/><w:bidi w:val=\\\"0\\\"/><w:jc w:val=\\\"left\\\"/><w:rPr></w:rPr></w:pPr><w:r><w:rPr></w:rPr></w:r></w:p><w:p><w:pPr><w:pStyle w:val=\\\"Normal\\\"/><w:bidi w:val=\\\"0\\\"/><w:jc w:val=\\\"left\\\"/><w:rPr></w:rPr></w:pPr><w:r><w:rPr></w:rPr><w:t xml:space=\\\"preserve\\\">last page </w:t></w:r><w:r><w:rPr><w:rFonts w:ascii=\\\"JetBrains Mono\\\" w:hAnsi=\\\"JetBrains Mono\\\"/><w:b w:val=\\\"false\\\"/><w:i w:val=\\\"false\\\"/><w:color w:val=\\\"6A8759\\\"/><w:spacing w:val=\\\"0\\\"/><w:sz w:val=\\\"20\\\"/></w:rPr><w:t xml:space=\\\"preserve\\\"> bace4d11-a003-be2a-c3fe-9829474b5d84</w:t></w:r></w:p><w:sectPr><w:type w:val=\\\"continuous\\\"/><w:pgSz w:w=\\\"11906\\\" w:h=\\\"16838\\\"/><w:pgMar w:left=\\\"1134\\\" w:right=\\\"1134\\\" w:gutter=\\\"0\\\" w:header=\\\"1134\\\" w:top=\\\"1696\\\" w:footer=\\\"1134\\\" w:bottom=\\\"2104\\\"/><w:formProt w:val=\\\"false\\\"/><w:titlePg/><w:textDirection w:val=\\\"lrTb\\\"/><w:docGrid w:type=\\\"default\\\" w:linePitch=\\\"100\\\" w:charSpace=\\\"0\\\"/></w:sectPr></w:body></w:document>\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/sample.docx\",\n                \"info\": \"FILE:./tests/samples/sample.docx|ZIP:word/document.xml|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"bace4d19-c001-b3e2-eac1-9129474bcd84\",\n                \"value_start\": 13449,\n                \"value_end\": 13485,\n                \"entropy\": 3.66257\n            }\n        ]\n    },\n    {\n        \"rule\": \"UUID\",\n        \"severity\": \"info\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"New page first line bace4d19-b001-b3e2-eac1-9129474bcd84\",\n                \"line_num\": 4,\n                \"path\": \"./tests/samples/sample.docx\",\n                \"info\": \"FILE:./tests/samples/sample.docx|DOCX\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"bace4d19-b001-b3e2-eac1-9129474bcd84\",\n                \"value_start\": 20,\n                \"value_end\": 56,\n                \"entropy\": 3.66257\n            }\n        ]\n    },\n    {\n        \"rule\": \"UUID\",\n        \"severity\": \"info\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"Section R2C2 b5c6471d-a2b2-b4ef-ca5e-9121476bc881\",\n                \"line_num\": 6,\n                \"path\": \"./tests/samples/sample.docx\",\n                \"info\": \"FILE:./tests/samples/sample.docx|DOCX\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"b5c6471d-a2b2-b4ef-ca5e-9121476bc881\",\n                \"value_start\": 13,\n                \"value_end\": 49,\n                \"entropy\": 3.77368\n            }\n        ]\n    },\n    {\n        \"rule\": \"UUID\",\n        \"severity\": \"info\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"Third page header bace4d19-b003-beda-cafe-0929375bcd82\",\n                \"line_num\": 10,\n                \"path\": \"./tests/samples/sample.docx\",\n                \"info\": \"FILE:./tests/samples/sample.docx|DOCX\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"bace4d19-b003-beda-cafe-0929375bcd82\",\n                \"value_start\": 18,\n                \"value_end\": 54,\n                \"entropy\": 3.82189\n            }\n        ]\n    },\n    {\n        \"rule\": \"UUID\",\n        \"severity\": \"info\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"first_page_header bace4d11-f001-beea-c3fe-9829474b5d84\",\n                \"line_num\": 11,\n                \"path\": \"./tests/samples/sample.docx\",\n                \"info\": \"FILE:./tests/samples/sample.docx|DOCX\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"bace4d11-f001-beea-c3fe-9829474b5d84\",\n                \"value_start\": 18,\n                \"value_end\": 54,\n                \"entropy\": 3.85021\n            }\n        ]\n    },\n    {\n        \"rule\": \"URL Credentials\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"https://jrfdeg:dh3sjr8b@prod-best-sec.net:32768/architecture\",\n                \"line_num\": 1640,\n                \"path\": \"./tests/samples/sample.elf\",\n                \"info\": \"FILE:./tests/samples/sample.elf|STRINGS\",\n                \"variable\": \"https://\",\n                \"variable_start\": 0,\n                \"variable_end\": 8,\n                \"value\": \"dh3sjr8b\",\n                \"value_start\": 15,\n                \"value_end\": 23,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.982,\n        \"line_data_list\": [\n            {\n                \"line\": \"0{\\\"TOKEN\\\":\\\"b234fa59-dead-beef-cafe-91294cd81be3\\\"}\",\n                \"line_num\": 783,\n                \"path\": \"./tests/samples/sample.gif\",\n                \"info\": \"FILE:./tests/samples/sample.gif|STRINGS\",\n                \"variable\": \"TOKEN\",\n                \"variable_start\": 3,\n                \"variable_end\": 8,\n                \"value\": \"b234fa59-dead-beef-cafe-91294cd81be3\",\n                \"value_start\": 11,\n                \"value_end\": 47,\n                \"entropy\": 3.68703\n            }\n        ]\n    },\n    {\n        \"rule\": \"UUID\",\n        \"severity\": \"info\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"0{\\\"TOKEN\\\":\\\"b234fa59-dead-beef-cafe-91294cd81be3\\\"}\",\n                \"line_num\": 783,\n                \"path\": \"./tests/samples/sample.gif\",\n                \"info\": \"FILE:./tests/samples/sample.gif|STRINGS\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"b234fa59-dead-beef-cafe-91294cd81be3\",\n                \"value_start\": 11,\n                \"value_end\": 47,\n                \"entropy\": 3.68703\n            }\n        ]\n    },\n    {\n        \"rule\": \"Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.812,\n        \"line_data_list\": [\n            {\n                \"line\": \"#define AESKEY {0x35, 0x34, 0x65, 0x9b, 0x1c, 0x2e, 023, 010, 041, 033, 043, 000, \\\\\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/sample.h\",\n                \"info\": \"FILE:./tests/samples/sample.h|RAW\",\n                \"variable\": \"AESKEY\",\n                \"variable_start\": 8,\n                \"variable_end\": 14,\n                \"value\": \"0x35, 0x34, 0x65, 0x9b, 0x1c, 0x2e, 023, 010, 041, 033, 043, 000, \\\\\",\n                \"value_start\": 16,\n                \"value_end\": 83,\n                \"entropy\": 3.24263\n            }\n        ]\n    },\n    {\n        \"rule\": \"Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.949,\n        \"line_data_list\": [\n            {\n                \"line\": \"2{\\\"TOKEN\\\":\\\"b234fa59-dead-beef-cafe-91294cd81be1\\\"}\",\n                \"line_num\": 23,\n                \"path\": \"./tests/samples/sample.jpg\",\n                \"info\": \"FILE:./tests/samples/sample.jpg|STRINGS\",\n                \"variable\": \"TOKEN\",\n                \"variable_start\": 3,\n                \"variable_end\": 8,\n                \"value\": \"b234fa59-dead-beef-cafe-91294cd81be1\",\n                \"value_start\": 11,\n                \"value_end\": 47,\n                \"entropy\": 3.66606\n            }\n        ]\n    },\n    {\n        \"rule\": \"UUID\",\n        \"severity\": \"info\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"2{\\\"TOKEN\\\":\\\"b234fa59-dead-beef-cafe-91294cd81be1\\\"}\",\n                \"line_num\": 23,\n                \"path\": \"./tests/samples/sample.jpg\",\n                \"info\": \"FILE:./tests/samples/sample.jpg|STRINGS\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"b234fa59-dead-beef-cafe-91294cd81be1\",\n                \"value_start\": 11,\n                \"value_end\": 47,\n                \"entropy\": 3.66606\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.986,\n        \"line_data_list\": [\n            {\n                \"line\": \"A2 ID:master,PW:dipPr10Gg!\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/sample.ods\",\n                \"info\": \"FILE:./tests/samples/sample.ods|SheetAny:A2\",\n                \"variable\": \"PW\",\n                \"variable_start\": 13,\n                \"variable_end\": 15,\n                \"value\": \"dipPr10Gg!\",\n                \"value_start\": 16,\n                \"value_end\": 26,\n                \"entropy\": 3.32193\n            }\n        ]\n    },\n    {\n        \"rule\": \"AWS Client ID\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"<office:document-content xmlns:presentation=\\\"urn:oasis:names:tc:opendocument:xmlns:presentation:1.0\\\" xmlns:css3t=\\\"http://www.w3.org/TR/css3-text/\\\" xmlns:grddl=\\\"http://www.w3.org/2003/g/data-view#\\\" xmlns:xhtml=\\\"http://www.w3.org/1999/xhtml\\\" xmlns:xsi=\\\"http://www.w3.org/2001/XMLSchema-instance\\\" xmlns:xsd=\\\"http://www.w3.org/2001/XMLSchema\\\" xmlns:xforms=\\\"http://www.w3.org/2002/xforms\\\" xmlns:dom=\\\"http://www.w3.org/2001/xml-events\\\" xmlns:script=\\\"urn:oasis:names:tc:opendocument:xmlns:script:1.0\\\" xmlns:form=\\\"urn:oasis:names:tc:opendocument:xmlns:form:1.0\\\" xmlns:math=\\\"http://www.w3.org/1998/Math/MathML\\\" xmlns:office=\\\"urn:oasis:names:tc:opendocument:xmlns:office:1.0\\\" xmlns:ooo=\\\"http://openoffice.org/2004/office\\\" xmlns:fo=\\\"urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0\\\" xmlns:ooow=\\\"http://openoffice.org/2004/writer\\\" xmlns:xlink=\\\"http://www.w3.org/1999/xlink\\\" xmlns:drawooo=\\\"http://openoffice.org/2010/draw\\\" xmlns:oooc=\\\"http://openoffice.org/2004/calc\\\" xmlns:dc=\\\"http://purl.org/dc/elements/1.1/\\\" xmlns:calcext=\\\"urn:org:documentfoundation:names:experimental:calc:xmlns:calcext:1.0\\\" xmlns:style=\\\"urn:oasis:names:tc:opendocument:xmlns:style:1.0\\\" xmlns:text=\\\"urn:oasis:names:tc:opendocument:xmlns:text:1.0\\\" xmlns:of=\\\"urn:oasis:names:tc:opendocument:xmlns:of:1.2\\\" xmlns:tableooo=\\\"http://openoffice.org/2009/table\\\" xmlns:draw=\\\"urn:oasis:names:tc:opendocument:xmlns:drawing:1.0\\\" xmlns:dr3d=\\\"urn:oasis:names:tc:opendocument:xmlns:dr3d:1.0\\\" xmlns:rpt=\\\"http://openoffice.org/2005/report\\\" xmlns:formx=\\\"urn:openoffice:names:experimental:ooxml-odf-interop:xmlns:form:1.0\\\" xmlns:svg=\\\"urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0\\\" xmlns:chart=\\\"urn:oasis:names:tc:opendocument:xmlns:chart:1.0\\\" xmlns:table=\\\"urn:oasis:names:tc:opendocument:xmlns:table:1.0\\\" xmlns:meta=\\\"urn:oasis:names:tc:opendocument:xmlns:meta:1.0\\\" xmlns:loext=\\\"urn:org:documentfoundation:names:experimental:office:xmlns:loext:1.0\\\" xmlns:number=\\\"urn:oasis:names:tc:opendocument:xmlns:datastyle:1.0\\\" xmlns:field=\\\"urn:openoffice:names:experimental:ooo-ms-interop:xmlns:field:1.0\\\" office:version=\\\"1.3\\\"><office:scripts/><office:font-face-decls><style:font-face style:name=\\\"Arial\\\" svg:font-family=\\\"Arial\\\" style:font-family-generic=\\\"swiss\\\"/><style:font-face style:name=\\\"Liberation Sans\\\" svg:font-family=\\\"&apos;Liberation Sans&apos;\\\" style:font-family-generic=\\\"swiss\\\" style:font-pitch=\\\"variable\\\"/><style:font-face style:name=\\\"Noto Sans CJK SC\\\" svg:font-family=\\\"&apos;Noto Sans CJK SC&apos;\\\" style:font-family-generic=\\\"system\\\" style:font-pitch=\\\"variable\\\"/><style:font-face style:name=\\\"Noto Sans Devanagari\\\" svg:font-family=\\\"&apos;Noto Sans Devanagari&apos;\\\" style:font-family-generic=\\\"system\\\" style:font-pitch=\\\"variable\\\"/><style:font-face style:name=\\\"\\ub9d1\\uc740 \\uace0\\ub515\\\" svg:font-family=\\\"&apos;\\ub9d1\\uc740 \\uace0\\ub515&apos;\\\" style:font-family-generic=\\\"modern\\\"/><style:font-face style:name=\\\"\\ub9d1\\uc740 \\uace0\\ub5151\\\" svg:font-family=\\\"&apos;\\ub9d1\\uc740 \\uace0\\ub515&apos;\\\" style:font-family-generic=\\\"swiss\\\"/></office:font-face-decls><office:automatic-styles><style:style style:name=\\\"co1\\\" style:family=\\\"table-column\\\"><style:table-column-properties fo:break-before=\\\"auto\\\" style:column-width=\\\"0.889in\\\"/></style:style><style:style style:name=\\\"co2\\\" style:family=\\\"table-column\\\"><style:table-column-properties fo:break-before=\\\"auto\\\" style:column-width=\\\"1.1508in\\\"/></style:style><style:style style:name=\\\"co3\\\" style:family=\\\"table-column\\\"><style:table-column-properties fo:break-before=\\\"auto\\\" style:column-width=\\\"2.1016in\\\"/></style:style><style:style style:name=\\\"co4\\\" style:family=\\\"table-column\\\"><style:table-column-properties fo:break-before=\\\"auto\\\" style:column-width=\\\"1.3189in\\\"/></style:style><style:style style:name=\\\"co5\\\" style:family=\\\"table-column\\\"><style:table-column-properties fo:break-before=\\\"auto\\\" style:column-width=\\\"3.5744in\\\"/></style:style><style:style style:name=\\\"ro1\\\" style:family=\\\"table-row\\\"><style:table-row-properties style:row-height=\\\"0.178in\\\" fo:break-before=\\\"auto\\\" style:use-optimal-row-height=\\\"true\\\"/></style:style><style:style style:name=\\\"ro2\\\" style:family=\\\"table-row\\\"><style:table-row-properties style:row-height=\\\"0.2173in\\\" fo:break-before=\\\"auto\\\" style:use-optimal-row-height=\\\"true\\\"/></style:style><style:style style:name=\\\"ro3\\\" style:family=\\\"table-row\\\"><style:table-row-properties style:row-height=\\\"1.5236in\\\" fo:break-before=\\\"auto\\\" style:use-optimal-row-height=\\\"true\\\"/></style:style><style:style style:name=\\\"ta1\\\" style:family=\\\"table\\\" style:master-page-name=\\\"Default\\\"><style:table-properties table:display=\\\"true\\\" style:writing-mode=\\\"lr-tb\\\"/></style:style><style:style style:name=\\\"ce1\\\" style:family=\\\"table-cell\\\" style:parent-style-name=\\\"Default\\\"><style:text-properties style:font-name=\\\"Arial\\\" style:font-name-complex=\\\"Arial\\\"/></style:style><style:style style:name=\\\"ce3\\\" style:family=\\\"table-cell\\\" style:parent-style-name=\\\"Default\\\"><style:text-properties style:font-name=\\\"Arial\\\" style:font-name-complex=\\\"Arial\\\"/></style:style><style:style style:name=\\\"ce2\\\" style:family=\\\"table-cell\\\" style:parent-style-name=\\\"Default\\\" style:data-style-name=\\\"N0\\\"><style:table-cell-properties style:cell-protect=\\\"protected\\\" style:print-content=\\\"true\\\" style:text-align-source=\\\"value-type\\\" style:repeat-content=\\\"false\\\" fo:wrap-option=\\\"wrap\\\" style:direction=\\\"ltr\\\" style:rotation-angle=\\\"0\\\" style:rotation-align=\\\"none\\\" style:shrink-to-fit=\\\"false\\\" style:vertical-align=\\\"bottom\\\" loext:vertical-justify=\\\"auto\\\"/><style:paragraph-properties css3t:text-justify=\\\"auto\\\" fo:margin-left=\\\"0in\\\" style:writing-mode=\\\"page\\\"/><style:text-properties style:use-window-font-color=\\\"true\\\" style:text-outline=\\\"false\\\" style:text-line-through-style=\\\"none\\\" style:text-line-through-type=\\\"none\\\" style:font-name=\\\"Arial\\\" fo:font-size=\\\"10pt\\\" fo:font-style=\\\"normal\\\" fo:text-shadow=\\\"none\\\" style:text-underline-style=\\\"none\\\" fo:font-weight=\\\"normal\\\" style:font-size-asian=\\\"10pt\\\" style:font-style-asian=\\\"normal\\\" style:font-weight-asian=\\\"normal\\\" style:font-name-complex=\\\"Arial\\\" style:font-size-complex=\\\"10pt\\\" style:font-style-complex=\\\"normal\\\" style:font-weight-complex=\\\"normal\\\"/></style:style><style:style style:name=\\\"T1\\\" style:family=\\\"text\\\"><style:text-properties style:use-window-font-color=\\\"true\\\" style:font-name=\\\"Arial\\\" fo:font-size=\\\"10pt\\\" fo:font-weight=\\\"normal\\\" style:text-underline-style=\\\"none\\\" style:text-underline-color=\\\"font-color\\\" style:text-line-through-type=\\\"none\\\" fo:font-style=\\\"normal\\\" style:text-outline=\\\"false\\\" fo:text-shadow=\\\"none\\\" style:text-position=\\\"0% 100%\\\" style:font-name-complex=\\\"Arial\\\" style:font-size-asian=\\\"10pt\\\" style:font-size-complex=\\\"10pt\\\" style:font-weight-asian=\\\"normal\\\" style:font-weight-complex=\\\"normal\\\" style:font-style-asian=\\\"normal\\\" style:font-style-complex=\\\"normal\\\"/></style:style><style:style style:name=\\\"T2\\\" style:family=\\\"text\\\"><style:text-properties fo:color=\\\"#000000\\\" style:font-name=\\\"\\ub9d1\\uc740 \\uace0\\ub515\\\" fo:font-size=\\\"9pt\\\" fo:font-weight=\\\"normal\\\" style:text-underline-style=\\\"none\\\" style:text-underline-color=\\\"font-color\\\" style:text-line-through-type=\\\"none\\\" fo:font-style=\\\"normal\\\" style:text-outline=\\\"false\\\" fo:text-shadow=\\\"none\\\" style:text-position=\\\"0% 100%\\\" style:font-name-asian=\\\"\\ub9d1\\uc740 \\uace0\\ub515\\\" style:font-size-asian=\\\"9pt\\\" style:font-size-complex=\\\"9pt\\\" style:font-weight-asian=\\\"normal\\\" style:font-weight-complex=\\\"normal\\\" style:font-style-asian=\\\"normal\\\" style:font-style-complex=\\\"normal\\\"/></style:style></office:automatic-styles><office:body><office:spreadsheet><table:calculation-settings table:automatic-find-labels=\\\"false\\\" table:use-regular-expressions=\\\"false\\\" table:use-wildcards=\\\"true\\\"/><table:table table:name=\\\"Sheet1x1\\\" table:style-name=\\\"ta1\\\"><table:table-column table:style-name=\\\"co1\\\" table:default-cell-style-name=\\\"ce3\\\"/><table:table-row table:style-name=\\\"ro1\\\"><table:table-cell office:value-type=\\\"string\\\" calcext:value-type=\\\"string\\\"><text:p>AKIAGIREOGIAXLSX4BT5</text:p></table:table-cell></table:table-row></table:table><table:table table:name=\\\"Sheet4x3\\\" table:style-name=\\\"ta1\\\"><table:table-column table:style-name=\\\"co1\\\" table:default-cell-style-name=\\\"Default\\\"/><table:table-column table:style-name=\\\"co2\\\" table:default-cell-style-name=\\\"Default\\\"/><table:table-column table:style-name=\\\"co1\\\" table:number-columns-repeated=\\\"2\\\" table:default-cell-style-name=\\\"Default\\\"/><table:table-row table:style-name=\\\"ro1\\\"><table:table-cell table:style-name=\\\"ce3\\\" office:value-type=\\\"string\\\" calcext:value-type=\\\"string\\\"><text:p>user</text:p></table:table-cell><table:table-cell office:value-type=\\\"string\\\" calcext:value-type=\\\"string\\\"><text:p>host</text:p></table:table-cell><table:table-cell office:value-type=\\\"string\\\" calcext:value-type=\\\"string\\\"><text:p>login</text:p></table:table-cell><table:table-cell office:value-type=\\\"string\\\" calcext:value-type=\\\"string\\\"><text:p>password</text:p></table:table-cell></table:table-row><table:table-row table:style-name=\\\"ro1\\\"><table:table-cell office:value-type=\\\"string\\\" calcext:value-type=\\\"string\\\"><text:p><text:s/>\\ud64d\\uae38\\ub3d9\\uc804</text:p></table:table-cell><table:table-cell office:value-type=\\\"string\\\" calcext:value-type=\\\"string\\\"><text:p>192.168.0.1</text:p></table:table-cell><table:table-cell office:value-type=\\\"string\\\" calcext:value-type=\\\"string\\\"><text:p>admin</text:p></table:table-cell><table:table-cell office:value-type=\\\"string\\\" calcext:value-type=\\\"string\\\"><text:p>H0NgGi1d0nG</text:p></table:table-cell></table:table-row><table:table-row table:style-name=\\\"ro1\\\"><table:table-cell office:value-type=\\\"string\\\" calcext:value-type=\\\"string\\\"><text:p>root</text:p></table:table-cell><table:table-cell office:value-type=\\\"string\\\" calcext:value-type=\\\"string\\\"><text:p>127.0.0.1</text:p></table:table-cell><table:table-cell office:value-type=\\\"string\\\" calcext:value-type=\\\"string\\\"><text:p>root</text:p></table:table-cell><table:table-cell office:value-type=\\\"string\\\" calcext:value-type=\\\"string\\\"><text:p>iMr00T</text:p></table:table-cell></table:table-row></table:table><table:table table:name=\\\"SheetAny\\\" table:style-name=\\\"ta1\\\"><table:table-column table:style-name=\\\"co3\\\" table:default-cell-style-name=\\\"Default\\\"/><table:table-column table:style-name=\\\"co4\\\" table:default-cell-style-name=\\\"Default\\\"/><table:table-column table:style-name=\\\"co1\\\" table:number-columns-repeated=\\\"3\\\" table:default-cell-style-name=\\\"Default\\\"/><table:table-column table:style-name=\\\"co5\\\" table:default-cell-style-name=\\\"Default\\\"/><table:table-row table:style-name=\\\"ro1\\\"><table:table-cell office:value-type=\\\"string\\\" calcext:value-type=\\\"string\\\"><text:p>A1 password is w3Ry5tR0nG</text:p></table:table-cell><table:table-cell table:number-columns-repeated=\\\"5\\\"/></table:table-row><table:table-row table:style-name=\\\"ro1\\\"><table:table-cell office:value-type=\\\"string\\\" calcext:value-type=\\\"string\\\"><text:p>A2 ID:master,PW:dipPr10Gg!</text:p></table:table-cell><table:table-cell table:number-columns-repeated=\\\"5\\\"/></table:table-row><table:table-row table:style-name=\\\"ro1\\\"><table:table-cell/><table:table-cell office:value-type=\\\"string\\\" calcext:value-type=\\\"string\\\"><text:p>B3 192.168.0.1 master/NBd@126t!</text:p></table:table-cell><table:table-cell table:number-columns-repeated=\\\"4\\\"/></table:table-row><table:table-row table:style-name=\\\"ro1\\\" table:number-rows-repeated=\\\"3\\\"><table:table-cell table:number-columns-repeated=\\\"6\\\"/></table:table-row><table:table-row table:style-name=\\\"ro1\\\"><table:table-cell table:number-columns-repeated=\\\"5\\\"/><table:table-cell table:style-name=\\\"ce2\\\"/></table:table-row><table:table-row table:style-name=\\\"ro1\\\" table:number-rows-repeated=\\\"4\\\"><table:table-cell table:number-columns-repeated=\\\"6\\\"/></table:table-row><table:table-row table:style-name=\\\"ro1\\\"><table:table-cell table:number-columns-repeated=\\\"2\\\"/><table:table-cell office:value-type=\\\"string\\\" calcext:value-type=\\\"string\\\"><text:p><text:s/>\\uc8fc\\uc778 </text:p></table:table-cell><table:table-cell office:value-type=\\\"string\\\" calcext:value-type=\\\"string\\\"><text:p>FNAT-CC0TG_old</text:p></table:table-cell><table:table-cell table:number-columns-repeated=\\\"2\\\"/></table:table-row><table:table-row table:style-name=\\\"ro2\\\"><table:table-cell office:value-type=\\\"string\\\" calcext:value-type=\\\"string\\\"><text:p>10.53.51.17</text:p></table:table-cell><table:table-cell office:value-type=\\\"string\\\" calcext:value-type=\\\"string\\\"><text:p>192.168.101.9</text:p></table:table-cell><table:table-cell office:value-type=\\\"string\\\" calcext:value-type=\\\"string\\\"><text:p><text:s/>63777</text:p></table:table-cell><table:table-cell table:number-columns-repeated=\\\"3\\\"/></table:table-row><table:table-row table:style-name=\\\"ro1\\\"><table:table-cell table:number-columns-repeated=\\\"5\\\"/><table:table-cell table:formula=\\\"of:=COM.MICROSOFT.CONCAT([.A13];[.B13];[.C13];[.C12];[.D12])\\\" office:value-type=\\\"string\\\" office:string-value=\\\"10.53.51.17192.168.101.9 63777 \\uc8fc\\uc778 FNAT-CC0TG_old\\\" calcext:value-type=\\\"string\\\"><text:p>10.53.51.17192.168.101.9 63777 \\uc8fc\\uc778 FNAT-CC0TG_old</text:p></table:table-cell></table:table-row><table:table-row table:style-name=\\\"ro1\\\"><table:table-cell table:number-columns-repeated=\\\"6\\\"/></table:table-row><table:table-row table:style-name=\\\"ro3\\\"><table:table-cell table:number-columns-repeated=\\\"4\\\"/><table:table-cell table:style-name=\\\"ce2\\\" office:value-type=\\\"string\\\" calcext:value-type=\\\"string\\\"><text:p><text:span text:style-name=\\\"T1\\\">password:</text:span></text:p><text:p/><text:p><text:span text:style-name=\\\"T2\\\">\\u25a1 \\ubb38\\uc758 \\ub0b4\\uc6a9 :</text:span></text:p><text:p><text:span text:style-name=\\\"T2\\\">  \\u203b Error Stack Trace\\ub3c4 \\ud568\\uaed8 \\ucca8\\ubd80 \\ubd80\\ud0c1\\ub4dc\\ub9bd\\ub2c8\\ub2e4.</text:span></text:p><text:p/><text:p><text:span text:style-name=\\\"T1\\\">12345</text:span></text:p></table:table-cell><table:table-cell office:value-type=\\\"string\\\" calcext:value-type=\\\"string\\\"><text:p>F16 224.52.124.93 root/A0dM1Nka</text:p></table:table-cell></table:table-row></table:table><table:named-expressions/><table:database-ranges><table:database-range table:name=\\\"__Anonymous_Sheet_DB__1\\\" table:target-range-address=\\\"Sheet4x3.A1:Sheet4x3.D4\\\" table:display-filter-buttons=\\\"true\\\"/></table:database-ranges></office:spreadsheet></office:body></office:document-content>\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/sample.ods\",\n                \"info\": \"FILE:./tests/samples/sample.ods|ZIP:content.xml|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"AKIAGIREOGIAXLSX4BT5\",\n                \"value_start\": 7621,\n                \"value_end\": 7641,\n                \"entropy\": 3.64644\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"password = \\u201cXdj@jcN834b\\u201d\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/sample.pdf\",\n                \"info\": \"FILE:./tests/samples/sample.pdf|PDF:1|RAW\",\n                \"variable\": \"password\",\n                \"variable_start\": 0,\n                \"variable_end\": 8,\n                \"value\": \"Xdj@jcN834b\",\n                \"value_start\": 12,\n                \"value_end\": 23,\n                \"entropy\": 3.27761\n            }\n        ]\n    },\n    {\n        \"rule\": \"Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.988,\n        \"line_data_list\": [\n            {\n                \"line\": \"token = \\u2018bace4d31-fa7e-beef-cafe-912947cbe28\\u2019\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/sample.pdf\",\n                \"info\": \"FILE:./tests/samples/sample.pdf|PDF:1|RAW\",\n                \"variable\": \"token\",\n                \"variable_start\": 0,\n                \"variable_end\": 5,\n                \"value\": \"bace4d31-fa7e-beef-cafe-912947cbe28\",\n                \"value_start\": 9,\n                \"value_end\": 44,\n                \"entropy\": 3.62845\n            }\n        ]\n    },\n    {\n        \"rule\": \"Github Classic Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"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\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/sample.pdf\",\n                \"info\": \"FILE:./tests/samples/sample.pdf|PDF:1|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"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\",\n                \"value_start\": 0,\n                \"value_end\": 40,\n                \"entropy\": 4.97193\n            }\n        ]\n    },\n    {\n        \"rule\": \"UUID\",\n        \"severity\": \"info\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"0c6fa1bc-2da5-dead-beef-58e1008ae93a\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/sample.png\",\n                \"info\": \"FILE:./tests/samples/sample.png|PNG_ZTXT:Uuid ztxt:0x63|ZLIB|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"0c6fa1bc-2da5-dead-beef-58e1008ae93a\",\n                \"value_start\": 0,\n                \"value_end\": 36,\n                \"entropy\": 3.70523\n            }\n        ]\n    },\n    {\n        \"rule\": \"UUID\",\n        \"severity\": \"info\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"6d93cf8f-1ad7-dead-beef-487cd1ca805f\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/sample.png\",\n                \"info\": \"FILE:./tests/samples/sample.png|PNG_ITXT_1:Uuid itxt comp:en:Magic ID (compressed):0xf4|ZLIB|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"6d93cf8f-1ad7-dead-beef-487cd1ca805f\",\n                \"value_start\": 0,\n                \"value_end\": 36,\n                \"entropy\": 3.76356\n            }\n        ]\n    },\n    {\n        \"rule\": \"UUID\",\n        \"severity\": \"info\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"a75ea7b1-8643-dead-beef-42f3af69f8b5\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/sample.png\",\n                \"info\": \"FILE:./tests/samples/sample.png|PNG_ITXT_0:Uuid itxt plain:en:Magic ID:0xa6|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"a75ea7b1-8643-dead-beef-42f3af69f8b5\",\n                \"value_start\": 0,\n                \"value_end\": 36,\n                \"entropy\": 3.76007\n            }\n        ]\n    },\n    {\n        \"rule\": \"UUID\",\n        \"severity\": \"info\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"f99080e6-91be-dead-beef-381896d6e93c\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/sample.png\",\n                \"info\": \"FILE:./tests/samples/sample.png|PNG_TEXT:Uuid text:0x29|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"f99080e6-91be-dead-beef-381896d6e93c\",\n                \"value_start\": 0,\n                \"value_end\": 36,\n                \"entropy\": 3.52037\n            }\n        ]\n    },\n    {\n        \"rule\": \"UUID\",\n        \"severity\": \"info\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"<p:sldMaster xmlns:a=\\\"http://schemas.openxmlformats.org/drawingml/2006/main\\\" xmlns:p=\\\"http://schemas.openxmlformats.org/presentationml/2006/main\\\" xmlns:r=\\\"http://schemas.openxmlformats.org/officeDocument/2006/relationships\\\" xmlns:p14=\\\"http://schemas.microsoft.com/office/powerpoint/2010/main\\\" xmlns:p15=\\\"http://schemas.microsoft.com/office/powerpoint/2012/main\\\" xmlns:mc=\\\"http://schemas.openxmlformats.org/markup-compatibility/2006\\\"><p:cSld><p:spTree><p:nvGrpSpPr>        <p:cNvPr id=\\\"1\\\" name=\\\"\\\"/>        <p:cNvGrpSpPr/>        <p:nvPr/>      </p:nvGrpSpPr>      <p:grpSpPr>        <a:xfrm>          <a:off x=\\\"0\\\" y=\\\"0\\\"/>          <a:ext cx=\\\"0\\\" cy=\\\"0\\\"/>          <a:chOff x=\\\"0\\\" y=\\\"0\\\"/>          <a:chExt cx=\\\"0\\\" cy=\\\"0\\\"/>        </a:xfrm>      </p:grpSpPr><p:sp><p:nvSpPr><p:cNvPr id=\\\"0\\\" name=\\\"PlaceHolder 1\\\"></p:cNvPr><p:cNvSpPr><a:spLocks noGrp=\\\"1\\\"/></p:cNvSpPr><p:nvPr><p:ph type=\\\"title\\\"/></p:nvPr></p:nvSpPr><p:spPr><a:xfrm><a:off x=\\\"504000\\\" y=\\\"226080\\\"/><a:ext cx=\\\"9071280\\\" cy=\\\"946080\\\"/></a:xfrm><a:prstGeom prst=\\\"rect\\\"><a:avLst/></a:prstGeom><a:noFill/><a:ln w=\\\"0\\\"><a:noFill/></a:ln></p:spPr><p:txBody><a:bodyPr lIns=\\\"0\\\" rIns=\\\"0\\\" tIns=\\\"0\\\" bIns=\\\"0\\\" anchor=\\\"ctr\\\"><a:noAutofit/></a:bodyPr><a:p><a:pPr indent=\\\"0\\\"><a:buNone/></a:pPr><a:r><a:rPr b=\\\"0\\\" lang=\\\"en-US\\\" sz=\\\"1800\\\" spc=\\\"-1\\\" strike=\\\"noStrike\\\"><a:solidFill><a:srgbClr val=\\\"000000\\\"/></a:solidFill><a:latin typeface=\\\"Arial\\\"/></a:rPr><a:t>Click to edit the title text format</a:t></a:r><a:endParaRPr b=\\\"0\\\" lang=\\\"en-US\\\" sz=\\\"1800\\\" spc=\\\"-1\\\" strike=\\\"noStrike\\\"><a:solidFill><a:srgbClr val=\\\"000000\\\"/></a:solidFill><a:latin typeface=\\\"Arial\\\"/></a:endParaRPr></a:p></p:txBody></p:sp><p:sp><p:nvSpPr><p:cNvPr id=\\\"1\\\" name=\\\"PlaceHolder 2\\\"></p:cNvPr><p:cNvSpPr><a:spLocks noGrp=\\\"1\\\"/></p:cNvSpPr><p:nvPr><p:ph type=\\\"ftr\\\" idx=\\\"1\\\"/></p:nvPr></p:nvSpPr><p:spPr><a:xfrm><a:off x=\\\"3447360\\\" y=\\\"5165280\\\"/><a:ext cx=\\\"3194640\\\" cy=\\\"390240\\\"/></a:xfrm><a:prstGeom prst=\\\"rect\\\"><a:avLst/></a:prstGeom><a:noFill/><a:ln w=\\\"0\\\"><a:noFill/></a:ln></p:spPr><p:txBody><a:bodyPr lIns=\\\"0\\\" rIns=\\\"0\\\" tIns=\\\"0\\\" bIns=\\\"0\\\" anchor=\\\"t\\\"><a:noAutofit/></a:bodyPr><a:lstStyle><a:lvl1pPr indent=\\\"0\\\" algn=\\\"ctr\\\"><a:lnSpc><a:spcPct val=\\\"100000\\\"/></a:lnSpc><a:buNone/><a:tabLst><a:tab algn=\\\"l\\\" pos=\\\"0\\\"/></a:tabLst><a:defRPr b=\\\"0\\\" lang=\\\"en-US\\\" sz=\\\"1400\\\" spc=\\\"-1\\\" strike=\\\"noStrike\\\"><a:solidFill><a:srgbClr val=\\\"000000\\\"/></a:solidFill><a:latin typeface=\\\"Times New Roman\\\"/></a:defRPr></a:lvl1pPr></a:lstStyle><a:p><a:pPr indent=\\\"0\\\" algn=\\\"ctr\\\"><a:lnSpc><a:spcPct val=\\\"100000\\\"/></a:lnSpc><a:buNone/><a:tabLst><a:tab algn=\\\"l\\\" pos=\\\"0\\\"/></a:tabLst></a:pPr><a:r><a:rPr b=\\\"0\\\" lang=\\\"en-US\\\" sz=\\\"1400\\\" spc=\\\"-1\\\" strike=\\\"noStrike\\\"><a:solidFill><a:srgbClr val=\\\"000000\\\"/></a:solidFill><a:latin typeface=\\\"Times New Roman\\\"/></a:rPr><a:t>&lt;footer&gt;</a:t></a:r><a:endParaRPr b=\\\"0\\\" lang=\\\"en-US\\\" sz=\\\"1400\\\" spc=\\\"-1\\\" strike=\\\"noStrike\\\"><a:solidFill><a:srgbClr val=\\\"000000\\\"/></a:solidFill><a:latin typeface=\\\"Times New Roman\\\"/></a:endParaRPr></a:p></p:txBody></p:sp><p:sp><p:nvSpPr><p:cNvPr id=\\\"2\\\" name=\\\"PlaceHolder 3\\\"></p:cNvPr><p:cNvSpPr><a:spLocks noGrp=\\\"1\\\"/></p:cNvSpPr><p:nvPr><p:ph type=\\\"sldNum\\\" idx=\\\"2\\\"/></p:nvPr></p:nvSpPr><p:spPr><a:xfrm><a:off x=\\\"7227360\\\" y=\\\"5165280\\\"/><a:ext cx=\\\"2347920\\\" cy=\\\"390240\\\"/></a:xfrm><a:prstGeom prst=\\\"rect\\\"><a:avLst/></a:prstGeom><a:noFill/><a:ln w=\\\"0\\\"><a:noFill/></a:ln></p:spPr><p:txBody><a:bodyPr lIns=\\\"0\\\" rIns=\\\"0\\\" tIns=\\\"0\\\" bIns=\\\"0\\\" anchor=\\\"t\\\"><a:noAutofit/></a:bodyPr><a:lstStyle><a:lvl1pPr indent=\\\"0\\\" algn=\\\"r\\\"><a:lnSpc><a:spcPct val=\\\"100000\\\"/></a:lnSpc><a:buNone/><a:tabLst><a:tab algn=\\\"l\\\" pos=\\\"0\\\"/></a:tabLst><a:defRPr b=\\\"0\\\" lang=\\\"en-US\\\" sz=\\\"1400\\\" spc=\\\"-1\\\" strike=\\\"noStrike\\\"><a:solidFill><a:srgbClr val=\\\"000000\\\"/></a:solidFill><a:latin typeface=\\\"Times New Roman\\\"/></a:defRPr></a:lvl1pPr></a:lstStyle><a:p><a:pPr indent=\\\"0\\\" algn=\\\"r\\\"><a:lnSpc><a:spcPct val=\\\"100000\\\"/></a:lnSpc><a:buNone/><a:tabLst><a:tab algn=\\\"l\\\" pos=\\\"0\\\"/></a:tabLst></a:pPr><a:fld id=\\\"{1B26FE4F-8819-409F-9556-40447A77EBF2}\\\" type=\\\"slidenum\\\"><a:rPr b=\\\"0\\\" lang=\\\"en-US\\\" sz=\\\"1400\\\" spc=\\\"-1\\\" strike=\\\"noStrike\\\"><a:solidFill><a:srgbClr val=\\\"000000\\\"/></a:solidFill><a:latin typeface=\\\"Times New Roman\\\"/></a:rPr><a:t>&lt;number&gt;</a:t></a:fld><a:endParaRPr b=\\\"0\\\" lang=\\\"en-US\\\" sz=\\\"1400\\\" spc=\\\"-1\\\" strike=\\\"noStrike\\\"><a:solidFill><a:srgbClr val=\\\"000000\\\"/></a:solidFill><a:latin typeface=\\\"Times New Roman\\\"/></a:endParaRPr></a:p></p:txBody></p:sp><p:sp><p:nvSpPr><p:cNvPr id=\\\"3\\\" name=\\\"PlaceHolder 4\\\"></p:cNvPr><p:cNvSpPr><a:spLocks noGrp=\\\"1\\\"/></p:cNvSpPr><p:nvPr><p:ph type=\\\"dt\\\" idx=\\\"3\\\"/></p:nvPr></p:nvSpPr><p:spPr><a:xfrm><a:off x=\\\"504000\\\" y=\\\"5165280\\\"/><a:ext cx=\\\"2347920\\\" cy=\\\"390240\\\"/></a:xfrm><a:prstGeom prst=\\\"rect\\\"><a:avLst/></a:prstGeom><a:noFill/><a:ln w=\\\"0\\\"><a:noFill/></a:ln></p:spPr><p:txBody><a:bodyPr lIns=\\\"0\\\" rIns=\\\"0\\\" tIns=\\\"0\\\" bIns=\\\"0\\\" anchor=\\\"t\\\"><a:noAutofit/></a:bodyPr><a:lstStyle><a:lvl1pPr indent=\\\"0\\\"><a:buNone/><a:defRPr b=\\\"0\\\" lang=\\\"en-US\\\" sz=\\\"1400\\\" spc=\\\"-1\\\" strike=\\\"noStrike\\\"><a:solidFill><a:srgbClr val=\\\"000000\\\"/></a:solidFill><a:latin typeface=\\\"Times New Roman\\\"/></a:defRPr></a:lvl1pPr></a:lstStyle><a:p><a:pPr indent=\\\"0\\\"><a:buNone/></a:pPr><a:r><a:rPr b=\\\"0\\\" lang=\\\"en-US\\\" sz=\\\"1400\\\" spc=\\\"-1\\\" strike=\\\"noStrike\\\"><a:solidFill><a:srgbClr val=\\\"000000\\\"/></a:solidFill><a:latin typeface=\\\"Times New Roman\\\"/></a:rPr><a:t>&lt;date/time&gt;</a:t></a:r><a:endParaRPr b=\\\"0\\\" lang=\\\"en-US\\\" sz=\\\"1400\\\" spc=\\\"-1\\\" strike=\\\"noStrike\\\"><a:solidFill><a:srgbClr val=\\\"000000\\\"/></a:solidFill><a:latin typeface=\\\"Times New Roman\\\"/></a:endParaRPr></a:p></p:txBody></p:sp></p:spTree></p:cSld><p:clrMap bg1=\\\"lt1\\\" bg2=\\\"lt2\\\" tx1=\\\"dk1\\\" tx2=\\\"dk2\\\" accent1=\\\"accent1\\\" accent2=\\\"accent2\\\" accent3=\\\"accent3\\\" accent4=\\\"accent4\\\" accent5=\\\"accent5\\\" accent6=\\\"accent6\\\" hlink=\\\"hlink\\\" folHlink=\\\"folHlink\\\"/><p:sldLayoutIdLst><p:sldLayoutId id=\\\"2147483649\\\" r:id=\\\"rId2\\\"/></p:sldLayoutIdLst></p:sldMaster>\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/sample.pptx\",\n                \"info\": \"FILE:./tests/samples/sample.pptx|ZIP:ppt/slideMasters/slideMaster1.xml|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"1B26FE4F-8819-409F-9556-40447A77EBF2\",\n                \"value_start\": 3868,\n                \"value_end\": 3904,\n                \"entropy\": 3.69439\n            }\n        ]\n    },\n    {\n        \"rule\": \"UUID\",\n        \"severity\": \"info\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"<p:sldLayout xmlns:a=\\\"http://schemas.openxmlformats.org/drawingml/2006/main\\\" xmlns:p=\\\"http://schemas.openxmlformats.org/presentationml/2006/main\\\" xmlns:r=\\\"http://schemas.openxmlformats.org/officeDocument/2006/relationships\\\" xmlns:p14=\\\"http://schemas.microsoft.com/office/powerpoint/2010/main\\\" xmlns:p15=\\\"http://schemas.microsoft.com/office/powerpoint/2012/main\\\" xmlns:mc=\\\"http://schemas.openxmlformats.org/markup-compatibility/2006\\\" type=\\\"title\\\" preserve=\\\"1\\\"><p:cSld name=\\\"Default\\\"><p:spTree><p:nvGrpSpPr>        <p:cNvPr id=\\\"1\\\" name=\\\"\\\"/>        <p:cNvGrpSpPr/>        <p:nvPr/>      </p:nvGrpSpPr>      <p:grpSpPr>        <a:xfrm>          <a:off x=\\\"0\\\" y=\\\"0\\\"/>          <a:ext cx=\\\"0\\\" cy=\\\"0\\\"/>          <a:chOff x=\\\"0\\\" y=\\\"0\\\"/>          <a:chExt cx=\\\"0\\\" cy=\\\"0\\\"/>        </a:xfrm>      </p:grpSpPr><p:sp><p:nvSpPr><p:cNvPr id=\\\"4\\\" name=\\\"PlaceHolder 1\\\"></p:cNvPr><p:cNvSpPr><a:spLocks noGrp=\\\"1\\\"/></p:cNvSpPr><p:nvPr><p:ph type=\\\"title\\\"/></p:nvPr></p:nvSpPr><p:spPr><a:xfrm><a:off x=\\\"504000\\\" y=\\\"226080\\\"/><a:ext cx=\\\"9071280\\\" cy=\\\"946080\\\"/></a:xfrm><a:prstGeom prst=\\\"rect\\\"><a:avLst/></a:prstGeom><a:noFill/><a:ln w=\\\"0\\\"><a:noFill/></a:ln></p:spPr><p:txBody><a:bodyPr lIns=\\\"0\\\" rIns=\\\"0\\\" tIns=\\\"0\\\" bIns=\\\"0\\\" anchor=\\\"ctr\\\"><a:noAutofit/></a:bodyPr><a:p><a:pPr indent=\\\"0\\\" algn=\\\"ctr\\\"><a:buNone/></a:pPr><a:endParaRPr b=\\\"0\\\" lang=\\\"en-US\\\" sz=\\\"4400\\\" spc=\\\"-1\\\" strike=\\\"noStrike\\\"><a:solidFill><a:srgbClr val=\\\"000000\\\"/></a:solidFill><a:latin typeface=\\\"Arial\\\"/></a:endParaRPr></a:p></p:txBody></p:sp><p:sp><p:nvSpPr><p:cNvPr id=\\\"5\\\" name=\\\"PlaceHolder 2\\\"></p:cNvPr><p:cNvSpPr><a:spLocks noGrp=\\\"1\\\"/></p:cNvSpPr><p:nvPr><p:ph type=\\\"subTitle\\\"/></p:nvPr></p:nvSpPr><p:spPr><a:xfrm><a:off x=\\\"504000\\\" y=\\\"1326600\\\"/><a:ext cx=\\\"9072000\\\" cy=\\\"3288600\\\"/></a:xfrm><a:prstGeom prst=\\\"rect\\\"><a:avLst/></a:prstGeom><a:noFill/><a:ln w=\\\"0\\\"><a:noFill/></a:ln></p:spPr><p:txBody><a:bodyPr lIns=\\\"0\\\" rIns=\\\"0\\\" tIns=\\\"0\\\" bIns=\\\"0\\\" anchor=\\\"ctr\\\"><a:noAutofit/></a:bodyPr><a:p><a:pPr indent=\\\"0\\\" algn=\\\"ctr\\\"><a:buNone/></a:pPr><a:endParaRPr b=\\\"0\\\" lang=\\\"en-US\\\" sz=\\\"3200\\\" spc=\\\"-1\\\" strike=\\\"noStrike\\\"><a:solidFill><a:srgbClr val=\\\"000000\\\"/></a:solidFill><a:latin typeface=\\\"Arial\\\"/></a:endParaRPr></a:p></p:txBody></p:sp><p:sp><p:nvSpPr><p:cNvPr id=\\\"4\\\" name=\\\"PlaceHolder 3\\\"/><p:cNvSpPr><a:spLocks noGrp=\\\"1\\\"/></p:cNvSpPr><p:nvPr><p:ph type=\\\"ftr\\\" idx=\\\"1\\\"/></p:nvPr></p:nvSpPr><p:spPr></p:spPr><p:txBody><a:bodyPr/><a:p><a:r><a:t>Footer</a:t></a:r></a:p></p:txBody></p:sp><p:sp><p:nvSpPr><p:cNvPr id=\\\"5\\\" name=\\\"PlaceHolder 4\\\"/><p:cNvSpPr><a:spLocks noGrp=\\\"1\\\"/></p:cNvSpPr><p:nvPr><p:ph type=\\\"sldNum\\\" idx=\\\"2\\\"/></p:nvPr></p:nvSpPr><p:spPr></p:spPr><p:txBody><a:bodyPr/><a:p><a:fld id=\\\"{42F61B0C-09B2-455B-8854-E1D3A3979B74}\\\" type=\\\"slidenum\\\"><a:t>&lt;#&gt;</a:t></a:fld></a:p></p:txBody></p:sp><p:sp><p:nvSpPr><p:cNvPr id=\\\"6\\\" name=\\\"PlaceHolder 5\\\"/><p:cNvSpPr><a:spLocks noGrp=\\\"1\\\"/></p:cNvSpPr><p:nvPr><p:ph type=\\\"dt\\\" idx=\\\"3\\\"/></p:nvPr></p:nvSpPr><p:spPr></p:spPr><p:txBody><a:bodyPr/><a:p><a:r><a:rPr lang=\\\"en-US\\\"></a:rPr><a:t></a:t></a:r></a:p></p:txBody></p:sp></p:spTree></p:cSld></p:sldLayout>\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/sample.pptx\",\n                \"info\": \"FILE:./tests/samples/sample.pptx|ZIP:ppt/slideLayouts/slideLayout1.xml|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"42F61B0C-09B2-455B-8854-E1D3A3979B74\",\n                \"value_start\": 2610,\n                \"value_end\": 2646,\n                \"entropy\": 3.90576\n            }\n        ]\n    },\n    {\n        \"rule\": \"AWS Client ID\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"<p:sld xmlns:a=\\\"http://schemas.openxmlformats.org/drawingml/2006/main\\\" xmlns:p=\\\"http://schemas.openxmlformats.org/presentationml/2006/main\\\" xmlns:r=\\\"http://schemas.openxmlformats.org/officeDocument/2006/relationships\\\" xmlns:p14=\\\"http://schemas.microsoft.com/office/powerpoint/2010/main\\\" xmlns:p15=\\\"http://schemas.microsoft.com/office/powerpoint/2012/main\\\" xmlns:mc=\\\"http://schemas.openxmlformats.org/markup-compatibility/2006\\\"><p:cSld><p:spTree><p:nvGrpSpPr>        <p:cNvPr id=\\\"1\\\" name=\\\"\\\"/>        <p:cNvGrpSpPr/>        <p:nvPr/>      </p:nvGrpSpPr>      <p:grpSpPr>        <a:xfrm>          <a:off x=\\\"0\\\" y=\\\"0\\\"/>          <a:ext cx=\\\"0\\\" cy=\\\"0\\\"/>          <a:chOff x=\\\"0\\\" y=\\\"0\\\"/>          <a:chExt cx=\\\"0\\\" cy=\\\"0\\\"/>        </a:xfrm>      </p:grpSpPr><p:sp><p:nvSpPr><p:cNvPr id=\\\"6\\\" name=\\\"PlaceHolder 1\\\"></p:cNvPr><p:cNvSpPr><a:spLocks noGrp=\\\"1\\\"/></p:cNvSpPr><p:nvPr><p:ph type=\\\"title\\\"/></p:nvPr></p:nvSpPr><p:spPr><a:xfrm><a:off x=\\\"504000\\\" y=\\\"190080\\\"/><a:ext cx=\\\"9097200\\\" cy=\\\"1410120\\\"/></a:xfrm><a:prstGeom prst=\\\"rect\\\"><a:avLst/></a:prstGeom><a:noFill/><a:ln w=\\\"0\\\"><a:noFill/></a:ln></p:spPr><p:txBody><a:bodyPr lIns=\\\"0\\\" rIns=\\\"0\\\" tIns=\\\"0\\\" bIns=\\\"0\\\" anchor=\\\"ctr\\\"><a:noAutofit/></a:bodyPr><a:p><a:pPr indent=\\\"0\\\" algn=\\\"ctr\\\"><a:buNone/></a:pPr><a:r><a:rPr b=\\\"0\\\" lang=\\\"en-US\\\" sz=\\\"4400\\\" spc=\\\"-1\\\" strike=\\\"noStrike\\\"><a:solidFill><a:srgbClr val=\\\"000000\\\"/></a:solidFill><a:latin typeface=\\\"Arial\\\"/></a:rPr><a:t>Follow the white rabbit</a:t></a:r><a:endParaRPr b=\\\"0\\\" lang=\\\"en-US\\\" sz=\\\"4400\\\" spc=\\\"-1\\\" strike=\\\"noStrike\\\"><a:solidFill><a:srgbClr val=\\\"000000\\\"/></a:solidFill><a:latin typeface=\\\"Arial\\\"/></a:endParaRPr></a:p></p:txBody></p:sp><p:sp><p:nvSpPr><p:cNvPr id=\\\"7\\\" name=\\\"PlaceHolder 2\\\"></p:cNvPr><p:cNvSpPr><a:spLocks noGrp=\\\"1\\\"/></p:cNvSpPr><p:nvPr><p:ph type=\\\"subTitle\\\"/></p:nvPr></p:nvSpPr><p:spPr><a:xfrm><a:off x=\\\"504000\\\" y=\\\"2286000\\\"/><a:ext cx=\\\"9071280\\\" cy=\\\"2328480\\\"/></a:xfrm><a:prstGeom prst=\\\"rect\\\"><a:avLst/></a:prstGeom><a:noFill/><a:ln w=\\\"0\\\"><a:noFill/></a:ln></p:spPr><p:txBody><a:bodyPr lIns=\\\"0\\\" rIns=\\\"0\\\" tIns=\\\"0\\\" bIns=\\\"0\\\" anchor=\\\"ctr\\\"><a:noAutofit/></a:bodyPr><a:p><a:pPr indent=\\\"0\\\" algn=\\\"ctr\\\"><a:lnSpc><a:spcPct val=\\\"100000\\\"/></a:lnSpc><a:buNone/><a:tabLst><a:tab algn=\\\"l\\\" pos=\\\"0\\\"/></a:tabLst></a:pPr><a:r><a:rPr b=\\\"0\\\" lang=\\\"en-US\\\" sz=\\\"1000\\\" spc=\\\"-1\\\" strike=\\\"noStrike\\\"><a:solidFill><a:srgbClr val=\\\"ffffff\\\"/></a:solidFill><a:latin typeface=\\\"JetBrains Mono\\\"/><a:ea typeface=\\\"JetBrains Mono\\\"/></a:rPr><a:t>AKIAGIREOGIPPTX1Y45X</a:t></a:r><a:endParaRPr b=\\\"0\\\" lang=\\\"en-US\\\" sz=\\\"1000\\\" spc=\\\"-1\\\" strike=\\\"noStrike\\\"><a:solidFill><a:srgbClr val=\\\"ffffff\\\"/></a:solidFill><a:latin typeface=\\\"Arial\\\"/></a:endParaRPr></a:p></p:txBody></p:sp></p:spTree></p:cSld><mc:AlternateContent><mc:Choice Requires=\\\"p14\\\"><p:transition spd=\\\"slow\\\" p14:dur=\\\"2000\\\"></p:transition></mc:Choice><mc:Fallback><p:transition spd=\\\"slow\\\"></p:transition></mc:Fallback></mc:AlternateContent></p:sld>\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/sample.pptx\",\n                \"info\": \"FILE:./tests/samples/sample.pptx|ZIP:ppt/slides/slide1.xml|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"AKIAGIREOGIPPTX1Y45X\",\n                \"value_start\": 2403,\n                \"value_end\": 2423,\n                \"entropy\": 3.68418\n            }\n        ]\n    },\n    {\n        \"rule\": \"Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.954,\n        \"line_data_list\": [\n            {\n                \"line\": \"TOKEN = 1102181139266001652353292050\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/sample.py\",\n                \"info\": \"FILE:./tests/samples/sample.py|STRUCT|STRING:11|RAW\",\n                \"variable\": \"TOKEN\",\n                \"variable_start\": 0,\n                \"variable_end\": 5,\n                \"value\": \"1102181139266001652353292050\",\n                \"value_start\": 8,\n                \"value_end\": 36,\n                \"entropy\": 2.84329\n            }\n        ]\n    },\n    {\n        \"rule\": \"Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.67,\n        \"line_data_list\": [\n            {\n                \"line\": \"API_SECRET_KEY = bytes([223, 66, 216, 52, 221, 30, 216, 36, 216, 55, 216, 1, 216, 82, 223, 98])\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/sample.py\",\n                \"info\": \"FILE:./tests/samples/sample.py|STRUCT|STRING:5|RAW\",\n                \"variable\": \"API_SECRET_KEY\",\n                \"variable_start\": 0,\n                \"variable_end\": 14,\n                \"value\": \"223, 66, 216, 52, 221, 30, 216, 36, 216, 55, 216, 1, 216, 82, 223, 98\",\n                \"value_start\": 24,\n                \"value_end\": 93,\n                \"entropy\": 2.86622\n            }\n        ]\n    },\n    {\n        \"rule\": \"API\",\n        \"severity\": \"low\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.67,\n        \"line_data_list\": [\n            {\n                \"line\": \"API_SECRET_KEY = bytes([223, 66, 216, 52, 221, 30, 216, 36, 216, 55, 216, 1, 216, 82, 223, 98])\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/sample.py\",\n                \"info\": \"FILE:./tests/samples/sample.py|STRUCT|STRING:5|RAW\",\n                \"variable\": \"API_SECRET_KEY\",\n                \"variable_start\": 0,\n                \"variable_end\": 14,\n                \"value\": \"223, 66, 216, 52, 221, 30, 216, 36, 216, 55, 216, 1, 216, 82, 223, 98\",\n                \"value_start\": 24,\n                \"value_end\": 93,\n                \"entropy\": 2.86622\n            }\n        ]\n    },\n    {\n        \"rule\": \"Secret\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.67,\n        \"line_data_list\": [\n            {\n                \"line\": \"API_SECRET_KEY = bytes([223, 66, 216, 52, 221, 30, 216, 36, 216, 55, 216, 1, 216, 82, 223, 98])\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/sample.py\",\n                \"info\": \"FILE:./tests/samples/sample.py|STRUCT|STRING:5|RAW\",\n                \"variable\": \"API_SECRET_KEY\",\n                \"variable_start\": 0,\n                \"variable_end\": 14,\n                \"value\": \"223, 66, 216, 52, 221, 30, 216, 36, 216, 55, 216, 1, 216, 82, 223, 98\",\n                \"value_start\": 24,\n                \"value_end\": 93,\n                \"entropy\": 2.86622\n            }\n        ]\n    },\n    {\n        \"rule\": \"Nonce\",\n        \"severity\": \"low\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.927,\n        \"line_data_list\": [\n            {\n                \"line\": \"AUTH_SECRET_NONCE = bytearray([223, 66, 216, 52, 221, 30, 216, 36, 216, 55, 216, 1, 216, 82, 223, 98])\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/sample.py\",\n                \"info\": \"FILE:./tests/samples/sample.py|STRUCT|STRING:6|RAW\",\n                \"variable\": \"AUTH_SECRET_NONCE\",\n                \"variable_start\": 0,\n                \"variable_end\": 17,\n                \"value\": \"223, 66, 216, 52, 221, 30, 216, 36, 216, 55, 216, 1, 216, 82, 223, 98\",\n                \"value_start\": 31,\n                \"value_end\": 100,\n                \"entropy\": 2.86622\n            }\n        ]\n    },\n    {\n        \"rule\": \"Auth\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.927,\n        \"line_data_list\": [\n            {\n                \"line\": \"AUTH_SECRET_NONCE = bytearray([223, 66, 216, 52, 221, 30, 216, 36, 216, 55, 216, 1, 216, 82, 223, 98])\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/sample.py\",\n                \"info\": \"FILE:./tests/samples/sample.py|STRUCT|STRING:6|RAW\",\n                \"variable\": \"AUTH_SECRET_NONCE\",\n                \"variable_start\": 0,\n                \"variable_end\": 17,\n                \"value\": \"223, 66, 216, 52, 221, 30, 216, 36, 216, 55, 216, 1, 216, 82, 223, 98\",\n                \"value_start\": 31,\n                \"value_end\": 100,\n                \"entropy\": 2.86622\n            }\n        ]\n    },\n    {\n        \"rule\": \"Secret\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.927,\n        \"line_data_list\": [\n            {\n                \"line\": \"AUTH_SECRET_NONCE = bytearray([223, 66, 216, 52, 221, 30, 216, 36, 216, 55, 216, 1, 216, 82, 223, 98])\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/sample.py\",\n                \"info\": \"FILE:./tests/samples/sample.py|STRUCT|STRING:6|RAW\",\n                \"variable\": \"AUTH_SECRET_NONCE\",\n                \"variable_start\": 0,\n                \"variable_end\": 17,\n                \"value\": \"223, 66, 216, 52, 221, 30, 216, 36, 216, 55, 216, 1, 216, 82, 223, 98\",\n                \"value_start\": 31,\n                \"value_end\": 100,\n                \"entropy\": 2.86622\n            }\n        ]\n    },\n    {\n        \"rule\": \"Auth\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"AUTH = 'Basic Hbr73gu7gdsr=='\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/sample.py\",\n                \"info\": \"FILE:./tests/samples/sample.py|STRUCT|STRING:3|RAW\",\n                \"variable\": \"AUTH\",\n                \"variable_start\": 0,\n                \"variable_end\": 4,\n                \"value\": \"Hbr73gu7gdsr==\",\n                \"value_start\": 14,\n                \"value_end\": 28,\n                \"entropy\": 3.23593\n            }\n        ]\n    },\n    {\n        \"rule\": \"Secret\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"SECRET = os.getenv('SECRET', 'R15br4jtfcFbWh9G7EZTb6jR12c9We')\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/sample.py\",\n                \"info\": \"FILE:./tests/samples/sample.py|STRUCT|STRING:9|RAW\",\n                \"variable\": \"SECRET\",\n                \"variable_start\": 0,\n                \"variable_end\": 6,\n                \"value\": \"R15br4jtfcFbWh9G7EZTb6jR12c9We\",\n                \"value_start\": 30,\n                \"value_end\": 60,\n                \"entropy\": 4.34839\n            }\n        ]\n    },\n    {\n        \"rule\": \"Auth\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"AUTH_CREDENTIAL_SECRET = f'RlQ8MGlWH8Hn1TrHn6WBfy31EhIIJmBsuUBOU8H2AJ6KnJC0L3djWHaqhDTZTth'\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/sample.py\",\n                \"info\": \"FILE:./tests/samples/sample.py|STRUCT|STRING:4|RAW\",\n                \"variable\": \"AUTH_CREDENTIAL_SECRET\",\n                \"variable_start\": 0,\n                \"variable_end\": 22,\n                \"value\": \"RlQ8MGlWH8Hn1TrHn6WBfy31EhIIJmBsuUBOU8H2AJ6KnJC0L3djWHaqhDTZTth\",\n                \"value_start\": 27,\n                \"value_end\": 90,\n                \"entropy\": 5.0742\n            }\n        ]\n    },\n    {\n        \"rule\": \"Credential\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"AUTH_CREDENTIAL_SECRET = f'RlQ8MGlWH8Hn1TrHn6WBfy31EhIIJmBsuUBOU8H2AJ6KnJC0L3djWHaqhDTZTth'\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/sample.py\",\n                \"info\": \"FILE:./tests/samples/sample.py|STRUCT|STRING:4|RAW\",\n                \"variable\": \"AUTH_CREDENTIAL_SECRET\",\n                \"variable_start\": 0,\n                \"variable_end\": 22,\n                \"value\": \"RlQ8MGlWH8Hn1TrHn6WBfy31EhIIJmBsuUBOU8H2AJ6KnJC0L3djWHaqhDTZTth\",\n                \"value_start\": 27,\n                \"value_end\": 90,\n                \"entropy\": 5.0742\n            }\n        ]\n    },\n    {\n        \"rule\": \"Secret\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"AUTH_CREDENTIAL_SECRET = f'RlQ8MGlWH8Hn1TrHn6WBfy31EhIIJmBsuUBOU8H2AJ6KnJC0L3djWHaqhDTZTth'\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/sample.py\",\n                \"info\": \"FILE:./tests/samples/sample.py|STRUCT|STRING:4|RAW\",\n                \"variable\": \"AUTH_CREDENTIAL_SECRET\",\n                \"variable_start\": 0,\n                \"variable_end\": 22,\n                \"value\": \"RlQ8MGlWH8Hn1TrHn6WBfy31EhIIJmBsuUBOU8H2AJ6KnJC0L3djWHaqhDTZTth\",\n                \"value_start\": 27,\n                \"value_end\": 90,\n                \"entropy\": 5.0742\n            }\n        ]\n    },\n    {\n        \"rule\": \"Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.998,\n        \"line_data_list\": [\n            {\n                \"line\": \"X_Auth_Tokens = ['\\\\t8ab20238fb3ef48823e75469b5712d3f0baf2e58\\\\r\\\\n', '\\\\tf692a26934cc39327e912b102b5ed60d31da9a34\\\\r\\\\n']\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/sample.py\",\n                \"info\": \"FILE:./tests/samples/sample.py|STRUCT|STRING:10|RAW\",\n                \"variable\": \"X_Auth_Tokens\",\n                \"variable_start\": 0,\n                \"variable_end\": 13,\n                \"value\": \"\\\\t8ab20238fb3ef48823e75469b5712d3f0baf2e58\\\\r\\\\n\",\n                \"value_start\": 18,\n                \"value_end\": 64,\n                \"entropy\": 4.01304\n            }\n        ]\n    },\n    {\n        \"rule\": \"Auth\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.998,\n        \"line_data_list\": [\n            {\n                \"line\": \"X_Auth_Tokens = ['\\\\t8ab20238fb3ef48823e75469b5712d3f0baf2e58\\\\r\\\\n', '\\\\tf692a26934cc39327e912b102b5ed60d31da9a34\\\\r\\\\n']\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/sample.py\",\n                \"info\": \"FILE:./tests/samples/sample.py|STRUCT|STRING:10|RAW\",\n                \"variable\": \"X_Auth_Tokens\",\n                \"variable_start\": 0,\n                \"variable_end\": 13,\n                \"value\": \"\\\\t8ab20238fb3ef48823e75469b5712d3f0baf2e58\\\\r\\\\n\",\n                \"value_start\": 18,\n                \"value_end\": 64,\n                \"entropy\": 4.01304\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.998,\n        \"line_data_list\": [\n            {\n                \"line\": \"PASSWORD = '\\\\udf42\\\\ud834\\\\udd1e\\\\ud824\\\\ud837\\\\ud801\\\\ud852\\\\udf62'\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/sample.py\",\n                \"info\": \"FILE:./tests/samples/sample.py|STRUCT|STRING:7|RAW\",\n                \"variable\": \"PASSWORD\",\n                \"variable_start\": 0,\n                \"variable_end\": 8,\n                \"value\": \"\\\\udf42\\\\ud834\\\\udd1e\\\\ud824\\\\ud837\\\\ud801\\\\ud852\\\\udf62\",\n                \"value_start\": 12,\n                \"value_end\": 60,\n                \"entropy\": 3.35801\n            }\n        ]\n    },\n    {\n        \"rule\": \"Salt\",\n        \"severity\": \"low\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.998,\n        \"line_data_list\": [\n            {\n                \"line\": \"SALT = b'\\\\xdf42\\\\xd834\\\\xdd1E\\\\xd824\\\\xd837\\\\xd801\\\\xd852\\\\xdf62'\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/sample.py\",\n                \"info\": \"FILE:./tests/samples/sample.py|STRUCT|STRING:8|RAW\",\n                \"variable\": \"SALT\",\n                \"variable_start\": 0,\n                \"variable_end\": 4,\n                \"value\": \"\\\\xdf42\\\\xd834\\\\xdd1E\\\\xd824\\\\xd837\\\\xd801\\\\xd852\\\\xdf62\",\n                \"value_start\": 9,\n                \"value_end\": 57,\n                \"entropy\": 3.35801\n            }\n        ]\n    },\n    {\n        \"rule\": \"Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"SECRET_CREDENTIAL_API_KEY = 'a3f1ef0ff53236141253c0372'\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/sample.py\",\n                \"info\": \"FILE:./tests/samples/sample.py|STRUCT|STRING:2|RAW\",\n                \"variable\": \"SECRET_CREDENTIAL_API_KEY\",\n                \"variable_start\": 0,\n                \"variable_end\": 25,\n                \"value\": \"a3f1ef0ff53236141253c0372\",\n                \"value_start\": 29,\n                \"value_end\": 54,\n                \"entropy\": 3.31908\n            }\n        ]\n    },\n    {\n        \"rule\": \"API\",\n        \"severity\": \"low\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"SECRET_CREDENTIAL_API_KEY = 'a3f1ef0ff53236141253c0372'\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/sample.py\",\n                \"info\": \"FILE:./tests/samples/sample.py|STRUCT|STRING:2|RAW\",\n                \"variable\": \"SECRET_CREDENTIAL_API_KEY\",\n                \"variable_start\": 0,\n                \"variable_end\": 25,\n                \"value\": \"a3f1ef0ff53236141253c0372\",\n                \"value_start\": 29,\n                \"value_end\": 54,\n                \"entropy\": 3.31908\n            }\n        ]\n    },\n    {\n        \"rule\": \"Credential\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"SECRET_CREDENTIAL_API_KEY = 'a3f1ef0ff53236141253c0372'\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/sample.py\",\n                \"info\": \"FILE:./tests/samples/sample.py|STRUCT|STRING:2|RAW\",\n                \"variable\": \"SECRET_CREDENTIAL_API_KEY\",\n                \"variable_start\": 0,\n                \"variable_end\": 25,\n                \"value\": \"a3f1ef0ff53236141253c0372\",\n                \"value_start\": 29,\n                \"value_end\": 54,\n                \"entropy\": 3.31908\n            }\n        ]\n    },\n    {\n        \"rule\": \"Secret\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"SECRET_CREDENTIAL_API_KEY = 'a3f1ef0ff53236141253c0372'\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/sample.py\",\n                \"info\": \"FILE:./tests/samples/sample.py|STRUCT|STRING:2|RAW\",\n                \"variable\": \"SECRET_CREDENTIAL_API_KEY\",\n                \"variable_start\": 0,\n                \"variable_end\": 25,\n                \"value\": \"a3f1ef0ff53236141253c0372\",\n                \"value_start\": 29,\n                \"value_end\": 54,\n                \"entropy\": 3.31908\n            }\n        ]\n    },\n    {\n        \"rule\": \"Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"3: -H 'postman-token: 81f50f8d-4c1a-de4d-8e3f-c1bc8b429a36'\",\n                \"line_num\": 3,\n                \"path\": \"./tests/samples/sample.rtf\",\n                \"info\": \"FILE:./tests/samples/sample.rtf|RTF\",\n                \"variable\": \"postman-token\",\n                \"variable_start\": 7,\n                \"variable_end\": 20,\n                \"value\": \"81f50f8d-4c1a-de4d-8e3f-c1bc8b429a36\",\n                \"value_start\": 22,\n                \"value_end\": 58,\n                \"entropy\": 3.84286\n            }\n        ]\n    },\n    {\n        \"rule\": \"UUID\",\n        \"severity\": \"info\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"3: -H 'postman-token: 81f50f8d-4c1a-de4d-8e3f-c1bc8b429a36'\",\n                \"line_num\": 3,\n                \"path\": \"./tests/samples/sample.rtf\",\n                \"info\": \"FILE:./tests/samples/sample.rtf|RTF\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"81f50f8d-4c1a-de4d-8e3f-c1bc8b429a36\",\n                \"value_start\": 22,\n                \"value_end\": 58,\n                \"entropy\": 3.84286\n            }\n        ]\n    },\n    {\n        \"rule\": \"Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"%define token 4b9a6d8b4bc56fbfa1c638eb0c6cab3746bf32ac7bfa89a6d8b638eb0c619ff2\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/sample.spec\",\n                \"info\": \"FILE:./tests/samples/sample.spec|RAW\",\n                \"variable\": \"token\",\n                \"variable_start\": 8,\n                \"variable_end\": 13,\n                \"value\": \"4b9a6d8b4bc56fbfa1c638eb0c6cab3746bf32ac7bfa89a6d8b638eb0c619ff2\",\n                \"value_start\": 14,\n                \"value_end\": 78,\n                \"entropy\": 3.73644\n            }\n        ]\n    },\n    {\n        \"rule\": \"PKCS without password\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"MIIBPQIBAAJBAK+iCL9cVcK4YKF6fijlA4S6cxD4O12htr3x2jgdPvic1p6b34ouAaI1c665CY3BxANPe+QpKdWyqf7MGK/Kh2cCAwEAAQJBAJBQyXVMTt/oluY4+89oluKKPiCUiFtglQMw5smzJlorURSAWbZMT/8lLZPK8rAPzJpRSgMsJ4bKq4f5SlnCz3ECIQDYzQ/fdC0wLantL1+gv5bd6T0Gy4p1f1L79005+67oWQIhAM9jc0KfY7r1M92VYYH3q9M21pS8U+dnUgBc8AFlnvW/AiEAzfNXXc2uU7M9Vm0Hadw3BE3aREc9G8s9WNCf0zItANkCIQCpUFcsgDaKz199u1R1KEAW24GKwsp5dMfk1ft4GIATvwIhAMyI+VDc34VuaYCcDB89Rv5x+hGtJTEpfq5KrVKKUdCJ\",\n                \"line_num\": 0,\n                \"path\": \"./tests/samples/sample.sqlite\",\n                \"info\": \"FILE:./tests/samples/sample.sqlite|SQLite3.KEYS|BYTES:KEY|PKCS_PASSWORD:None\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"None\",\n                \"value_start\": -2,\n                \"value_end\": -2,\n                \"entropy\": 2.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"UUID\",\n        \"severity\": \"info\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"1d3e45d1-dead-beef-c0de-294622932701\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/sample.sqlite\",\n                \"info\": \"FILE:./tests/samples/sample.sqlite|SQLite3.USERS|STRING:USER|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"1d3e45d1-dead-beef-c0de-294622932701\",\n                \"value_start\": 0,\n                \"value_end\": 36,\n                \"entropy\": 3.7262\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.996,\n        \"line_data_list\": [\n            {\n                \"line\": \"PASSWORD = 'Dt1Js8m#1s'\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/sample.sqlite\",\n                \"info\": \"FILE:./tests/samples/sample.sqlite|SQLite3.USERS|KEYWORD\",\n                \"variable\": \"PASSWORD\",\n                \"variable_start\": 0,\n                \"variable_end\": 8,\n                \"value\": \"Dt1Js8m#1s\",\n                \"value_start\": 12,\n                \"value_end\": 22,\n                \"entropy\": 2.92193\n            }\n        ]\n    },\n    {\n        \"rule\": \"Slack Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"xoxa-FLYLIKEAGIREOGI-b1da04e31f\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/sample.sqlite\",\n                \"info\": \"FILE:./tests/samples/sample.sqlite|SQLite3.USERS|STRING:TOKEN|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"xoxa-FLYLIKEAGIREOGI-b1da04e31f\",\n                \"value_start\": 0,\n                \"value_end\": 31,\n                \"entropy\": 4.3492\n            }\n        ]\n    },\n    {\n        \"rule\": \"Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"TOKEN = '1d3e45d1deadbeefc0de29beda932701'\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/sample.sqlite\",\n                \"info\": \"FILE:./tests/samples/sample.sqlite|SQLite3.USERS|KEYWORD\",\n                \"variable\": \"TOKEN\",\n                \"variable_start\": 0,\n                \"variable_end\": 5,\n                \"value\": \"1d3e45d1deadbeefc0de29beda932701\",\n                \"value_start\": 9,\n                \"value_end\": 41,\n                \"entropy\": 3.50705\n            }\n        ]\n    },\n    {\n        \"rule\": \"Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.984,\n        \"line_data_list\": [\n            {\n                \"line\": \"{\\\"TOKEN\\\":\\\"b234fa59-dead-beef-cafe-91294cd81be4\\\"}\",\n                \"line_num\": 402,\n                \"path\": \"./tests/samples/sample.tiff\",\n                \"info\": \"FILE:./tests/samples/sample.tiff|STRINGS\",\n                \"variable\": \"TOKEN\",\n                \"variable_start\": 2,\n                \"variable_end\": 7,\n                \"value\": \"b234fa59-dead-beef-cafe-91294cd81be4\",\n                \"value_start\": 10,\n                \"value_end\": 46,\n                \"entropy\": 3.66606\n            }\n        ]\n    },\n    {\n        \"rule\": \"UUID\",\n        \"severity\": \"info\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"{\\\"TOKEN\\\":\\\"b234fa59-dead-beef-cafe-91294cd81be4\\\"}\",\n                \"line_num\": 402,\n                \"path\": \"./tests/samples/sample.tiff\",\n                \"info\": \"FILE:./tests/samples/sample.tiff|STRINGS\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"b234fa59-dead-beef-cafe-91294cd81be4\",\n                \"value_start\": 10,\n                \"value_end\": 46,\n                \"entropy\": 3.66606\n            }\n        ]\n    },\n    {\n        \"rule\": \"UUID\",\n        \"severity\": \"info\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"17205d79-dead-beef-a311-26312ad6ea36\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/sample.tm7\",\n                \"info\": \"FILE:./tests/samples/sample.tm7|TMX\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"17205d79-dead-beef-a311-26312ad6ea36\",\n                \"value_start\": 0,\n                \"value_end\": 36,\n                \"entropy\": 3.60702\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"May password:6Ew1ThY0u\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/sample.tm7\",\n                \"info\": \"FILE:./tests/samples/sample.tm7|TMX\",\n                \"variable\": \"password\",\n                \"variable_start\": 4,\n                \"variable_end\": 12,\n                \"value\": \"6Ew1ThY0u\",\n                \"value_start\": 13,\n                \"value_end\": 22,\n                \"entropy\": 3.16993\n            }\n        ]\n    },\n    {\n        \"rule\": \"AWS Client ID\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"AKIAGIREOGIAXLSX4BT5\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/sample.xls\",\n                \"info\": \"FILE:./tests/samples/sample.xls|Sheet1x1:A1\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"AKIAGIREOGIAXLSX4BT5\",\n                \"value_start\": 0,\n                \"value_end\": 20,\n                \"entropy\": 3.64644\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.986,\n        \"line_data_list\": [\n            {\n                \"line\": \"A2 ID:master,PW:dipPr10Gg!\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/sample.xls\",\n                \"info\": \"FILE:./tests/samples/sample.xls|SheetAny:A2\",\n                \"variable\": \"PW\",\n                \"variable_start\": 13,\n                \"variable_end\": 15,\n                \"value\": \"dipPr10Gg!\",\n                \"value_start\": 16,\n                \"value_end\": 26,\n                \"entropy\": 3.32193\n            }\n        ]\n    },\n    {\n        \"rule\": \"AWS Client ID\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"{http://schemas.openxmlformats.org/spreadsheetml/2006/main}t : AKIAGIREOGIAXLSX4BT5\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/sample.xlsx\",\n                \"info\": \"FILE:./tests/samples/sample.xlsx|ZIP:xl/sharedStrings.xml|XML\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"AKIAGIREOGIAXLSX4BT5\",\n                \"value_start\": 63,\n                \"value_end\": 83,\n                \"entropy\": 3.64644\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.823,\n        \"line_data_list\": [\n            {\n                \"line\": \"{http://schemas.openxmlformats.org/spreadsheetml/2006/main}t : A2 ID:master,PW:dipPr10Gg!\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/sample.xlsx\",\n                \"info\": \"FILE:./tests/samples/sample.xlsx|ZIP:xl/sharedStrings.xml|XML\",\n                \"variable\": \"PW\",\n                \"variable_start\": 76,\n                \"variable_end\": 78,\n                \"value\": \"dipPr10Gg!\",\n                \"value_start\": 79,\n                \"value_end\": 89,\n                \"entropy\": 3.32193\n            }\n        ]\n    },\n    {\n        \"rule\": \"API\",\n        \"severity\": \"low\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.996,\n        \"line_data_list\": [\n            {\n                \"line\": \"API = 'AgA3efuxQHUQ58YFsWHvDhu9H/HnD9TY/C99632x5B50vXyItxHQHkTJ1Gj31cuRgokY3/+N34jQhbdX4SUNh3CeDq+Ay52B7iqBHtz+vbSmsBX5ORYCTL80W4pd8R3B5Hm5IyOnvTeFX456GoCechrVRGOSw4VjEwgClxxL/xI8vXOQ/K2PWJ3oDiFyibOibRFCQsJtcZn8IDkq7u4mFkPDEiRNu41TrN5PS9tGTkI6MTBxZWp5Krb1iLhif0O40j1IyoBbIoDI3yqwbBcpITlmA+6s1UOQomfl/eOf1jlA8ix5/WQ8PMIhxr5f2WsM6haNt6aYjB+GsmuA0qhZ7zytAEYDvJ6hRnGKcyFX3FoTypU7iNQ/KE21oO3RQhj+hzdR+u5NisxJhg9nQz5Of1jlA8ix5/WQ8PMIhxr5f2WIymiuRAdctx+O2ejctswFVoAapxwqZ3LFVxC0aHXXc5AW92UnHTjmnmEv20uvasg7HJKVJ7Npqgx6tIMYFsYnJJkTlnN3JWtATBVRVEnRRpEkVe3C+TbT7JZAlrSWdCuYvvhr6wlIHhVI3B4rdlgCuxTcNSH441RKZFzEDXsPL/5mTcjpExLrkhsz7L+Yy042xmaP1118Fjn/IRd03jLsFbv6QkXPHXekDI6rzy8rVysyzu3VvPQLHiC6DUgu3p3dYMYgWpolRz123456d==='\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/sealed_secrets.yaml\",\n                \"info\": \"FILE:./tests/samples/sealed_secrets.yaml|STRUCT|STRUCT:spec|STRUCT:encryptedData|KEYWORD\",\n                \"variable\": \"API\",\n                \"variable_start\": 0,\n                \"variable_end\": 3,\n                \"value\": \"AgA3efuxQHUQ58YFsWHvDhu9H/HnD9TY/C99632x5B50vXyItxHQHkTJ1Gj31cuRgokY3/+N34jQhbdX4SUNh3CeDq+Ay52B7iqBHtz+vbSmsBX5ORYCTL80W4pd8R3B5Hm5IyOnvTeFX456GoCechrVRGOSw4VjEwgClxxL/xI8vXOQ/K2PWJ3oDiFyibOibRFCQsJtcZn8IDkq7u4mFkPDEiRNu41TrN5PS9tGTkI6MTBxZWp5Krb1iLhif0O40j1IyoBbIoDI3yqwbBcpITlmA+6s1UOQomfl/eOf1jlA8ix5/WQ8PMIhxr5f2WsM6haNt6aYjB+GsmuA0qhZ7zytAEYDvJ6hRnGKcyFX3FoTypU7iNQ/KE21oO3RQhj+hzdR+u5NisxJhg9nQz5Of1jlA8ix5/WQ8PMIhxr5f2WIymiuRAdctx+O2ejctswFVoAapxwqZ3LFVxC0aHXXc5AW92UnHTjmnmEv20uvasg7HJKVJ7Npqgx6tIMYFsYnJJkTlnN3JWtATBVRVEnRRpEkVe3C+TbT7JZAlrSWdCuYvvhr6wlIHhVI3B4rdlgCuxTcNSH441RKZFzEDXsPL/5mTcjpExLrkhsz7L+Yy042xmaP1118Fjn/IRd03jLsFbv6QkXPHXekDI6rzy8rVysyzu3VvPQLHiC6DUgu3p3dYMYgWpolRz123456d===\",\n                \"value_start\": 7,\n                \"value_end\": 711,\n                \"entropy\": 5.94887\n            }\n        ]\n    },\n    {\n        \"rule\": \"Auth\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"AUTH = 'AgBBiBMOJxOs213QLtsh0WervLN+kdqwhsihaev4RJNevdLb4j4CC7YM/oLRkWxL9rG91LUO0aHzWy2S56df6UaE7DOF9llDDv4RJNevdLb4j4CC7YM/oLRkWxL9rG91LUAGo2DVFx2zgmbEXo2bzrSiVEDKMsPALGx+gtp24WSwmUlhdOx/2r4eR/O0s2exFrqKizPKPXcvwc4m3e8FLC+lyK9X7PuJvHPfO1XvOfBZbEMHEs+kTK8kdALLOJgph3pHp7FsgLQDMWaqGgjNvcwylwGs4nrdCf2BKDHzBj8MpUK2pIthFVDd3199gGLaxVvHYUH4YIxXuqoaGmnH30Xve+gC23tNnJkatnbMTqv2A1EIHzVkjaqk1y9ybOXQYXSZUbkE5DWRymh32LdsIJPdZ+e+ulH6Hjd11++G70AsUnrJ1MnMEXWDKUlWcD5Ymw1m0cAmtyPHjOOgfJen1dCEQrbi2zoP+aF8LAVrQaSR5hsefJ6UonAzHjM6W5KikdSr7sYZMVlkwf4lByf6a2LAVViNbWq6FV5ywhyDroKU9vjwfq9tu0pY0VP+k11/tikGp9jJ7Oi2KbqCsvxbYt70DB4GlMfmX47I0zhVgdAzmo8vH49jheO+bQK7j1rHwl/RSlb/ZB8sS5AUuQrc3AgU0+KgUOTB5bCHGE90tuuqWPcDMxMQNPopQzNcuwpVVMLV5DPL9dRW0bf5es5p='\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/sealed_secrets.yaml\",\n                \"info\": \"FILE:./tests/samples/sealed_secrets.yaml|STRUCT|STRUCT:spec|STRUCT:encryptedData|KEYWORD\",\n                \"variable\": \"AUTH\",\n                \"variable_start\": 0,\n                \"variable_end\": 4,\n                \"value\": \"AgBBiBMOJxOs213QLtsh0WervLN+kdqwhsihaev4RJNevdLb4j4CC7YM/oLRkWxL9rG91LUO0aHzWy2S56df6UaE7DOF9llDDv4RJNevdLb4j4CC7YM/oLRkWxL9rG91LUAGo2DVFx2zgmbEXo2bzrSiVEDKMsPALGx+gtp24WSwmUlhdOx/2r4eR/O0s2exFrqKizPKPXcvwc4m3e8FLC+lyK9X7PuJvHPfO1XvOfBZbEMHEs+kTK8kdALLOJgph3pHp7FsgLQDMWaqGgjNvcwylwGs4nrdCf2BKDHzBj8MpUK2pIthFVDd3199gGLaxVvHYUH4YIxXuqoaGmnH30Xve+gC23tNnJkatnbMTqv2A1EIHzVkjaqk1y9ybOXQYXSZUbkE5DWRymh32LdsIJPdZ+e+ulH6Hjd11++G70AsUnrJ1MnMEXWDKUlWcD5Ymw1m0cAmtyPHjOOgfJen1dCEQrbi2zoP+aF8LAVrQaSR5hsefJ6UonAzHjM6W5KikdSr7sYZMVlkwf4lByf6a2LAVViNbWq6FV5ywhyDroKU9vjwfq9tu0pY0VP+k11/tikGp9jJ7Oi2KbqCsvxbYt70DB4GlMfmX47I0zhVgdAzmo8vH49jheO+bQK7j1rHwl/RSlb/ZB8sS5AUuQrc3AgU0+KgUOTB5bCHGE90tuuqWPcDMxMQNPopQzNcuwpVVMLV5DPL9dRW0bf5es5p=\",\n                \"value_start\": 8,\n                \"value_end\": 733,\n                \"entropy\": 5.94525\n            }\n        ]\n    },\n    {\n        \"rule\": \"Credential\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"CREDENTIAL = 'AgCF+MstUt6Fka8q26+dOorzSfePXb17SX+N9AUk+VHs9WkCKgkds498SMeUVo1ppHWF5Ky4PF3fC4oy62szpXqD6B7G1bgZr+Ne0yLrU2t0IqVEstar0wcivfxhJekoYQxYPwcubV1IqkhXFaIpJvwL6p4pFfvhFBnZANI7OOsjva3LtBOzReZeRB6ChvMXvDnke61oj/pCT6e9JOb5XcszPQYkVVyebTSLaLEpaINe82WOMJfr+SRNQVmCoT+0O2UJP8m5rgwf0U6KXB7pV7wil1AJyzu3VvPQLHiC6DUgu3p3dYMYgWpolRzdVoqr9nG8T1fxiMcZm1WrtJ/2bO8muqg==/NjXeWbH8e/Z4ZmJYE5PEXGwP83PxoJT1iuHCEXdnP9rr1Jv05H2h0EHeOTrsbQW7WrfouGbhjDW1KiSVz0JxcGF0eSldPGE1BgJmnh/JkdjnPVgdkO1WAc5nxKM3lY/EuXdODga/1xnQV+AHPp9PMo8qjP7ZQbLSV9uN46uudOmvcunP4OJVNKo0gWn/QSPSG8UFa2HSOAVXHNCjMPXJRP891iZccndelKb+bkQuvGoMQWuUwP2b1Hzq4ZvblmMNSJPiMXtx/mWJOekWXI7onHNf0f6MNP/2VHVY7jEx2LnWp42hHVlssHvUB3xORP8/QCdIcZbKdqKxY38FczwMli/I7pTYjL1bbs8XX8NKBwFw/UwWpOczW2IYgZtiYyE46J4VI='\",\n                \"line_num\": 3,\n                \"path\": \"./tests/samples/sealed_secrets.yaml\",\n                \"info\": \"FILE:./tests/samples/sealed_secrets.yaml|STRUCT|STRUCT:spec|STRUCT:encryptedData|KEYWORD\",\n                \"variable\": \"CREDENTIAL\",\n                \"variable_start\": 0,\n                \"variable_end\": 10,\n                \"value\": \"AgCF+MstUt6Fka8q26+dOorzSfePXb17SX+N9AUk+VHs9WkCKgkds498SMeUVo1ppHWF5Ky4PF3fC4oy62szpXqD6B7G1bgZr+Ne0yLrU2t0IqVEstar0wcivfxhJekoYQxYPwcubV1IqkhXFaIpJvwL6p4pFfvhFBnZANI7OOsjva3LtBOzReZeRB6ChvMXvDnke61oj/pCT6e9JOb5XcszPQYkVVyebTSLaLEpaINe82WOMJfr+SRNQVmCoT+0O2UJP8m5rgwf0U6KXB7pV7wil1AJyzu3VvPQLHiC6DUgu3p3dYMYgWpolRzdVoqr9nG8T1fxiMcZm1WrtJ/2bO8muqg==/NjXeWbH8e/Z4ZmJYE5PEXGwP83PxoJT1iuHCEXdnP9rr1Jv05H2h0EHeOTrsbQW7WrfouGbhjDW1KiSVz0JxcGF0eSldPGE1BgJmnh/JkdjnPVgdkO1WAc5nxKM3lY/EuXdODga/1xnQV+AHPp9PMo8qjP7ZQbLSV9uN46uudOmvcunP4OJVNKo0gWn/QSPSG8UFa2HSOAVXHNCjMPXJRP891iZccndelKb+bkQuvGoMQWuUwP2b1Hzq4ZvblmMNSJPiMXtx/mWJOekWXI7onHNf0f6MNP/2VHVY7jEx2LnWp42hHVlssHvUB3xORP8/QCdIcZbKdqKxY38FczwMli/I7pTYjL1bbs8XX8NKBwFw/UwWpOczW2IYgZtiYyE46J4VI=\",\n                \"value_start\": 14,\n                \"value_end\": 754,\n                \"entropy\": 5.9484\n            }\n        ]\n    },\n    {\n        \"rule\": \"Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"KEY = 'AgDuO7+GU7lQXiQNk6M9C+fdDtuMEdMY8pp+/Rjvsk4SZNPvowrzzYJwGYYrqJdH67S7d/dikS+GlFUVvn1ML9PGzYmDmmTUp+sbG+kJil1Xl2n05bN1+tcWRXIvFsStLM5LLgeHDXyhAFk2KsfH02f9FlidcmBHVc4xWnR8Y0fIB5hX591E5/xDawGU6lBKBX3mr1r91eBIZdkwaBVSq0IvW2MSHT1KbwUpB44VbEbolM2essIQ0NW5aEWPynfkwutzsGFL8KNhQSA7z5FBCZOSG6jdY74Z+C5O+V3nvV54SWb5gxwgA5khdYNieblqcab2OFW8Q3gHhxwbAwENt9W3WK3D5RtNdXWNFdIr1Kyd6S0qqimJHWdf0qqBV6k2SIyDMfexlIGlTQPhPoGifJnMbl6qqZV9pcZeSa605ptpNad8Y4eFeYcMK93wgdYWU2Qn/T11zCVqzFpqQ01elyE15moUlkdgrDSw+OeZkCtZ8+p28BF/Xjw3FuwrCroHvQ33Nmc0UJ/hrVCNoCjmKt+P3/ll6BJRE41N4WIgMmUGmaNIrHCc9cKEBeR4AdDuQsAEWNcDL5li9x9oK+jeWJ5TXsLRSHEZgZCmh2C5fMPZXcbRZNhQZy1jb94NZJsawED8ymP8bD3ItJv/wS4Z7WpUcMTEwj9MDt4cvUz22NhEfd4HKXQszGt0gAuPkx/5TIquj+oHqsKBs/QPr6w5uh7qQKXptQF5eAByOU=='\",\n                \"line_num\": 4,\n                \"path\": \"./tests/samples/sealed_secrets.yaml\",\n                \"info\": \"FILE:./tests/samples/sealed_secrets.yaml|STRUCT|STRUCT:spec|STRUCT:encryptedData|KEYWORD\",\n                \"variable\": \"KEY\",\n                \"variable_start\": 0,\n                \"variable_end\": 3,\n                \"value\": \"AgDuO7+GU7lQXiQNk6M9C+fdDtuMEdMY8pp+/Rjvsk4SZNPvowrzzYJwGYYrqJdH67S7d/dikS+GlFUVvn1ML9PGzYmDmmTUp+sbG+kJil1Xl2n05bN1+tcWRXIvFsStLM5LLgeHDXyhAFk2KsfH02f9FlidcmBHVc4xWnR8Y0fIB5hX591E5/xDawGU6lBKBX3mr1r91eBIZdkwaBVSq0IvW2MSHT1KbwUpB44VbEbolM2essIQ0NW5aEWPynfkwutzsGFL8KNhQSA7z5FBCZOSG6jdY74Z+C5O+V3nvV54SWb5gxwgA5khdYNieblqcab2OFW8Q3gHhxwbAwENt9W3WK3D5RtNdXWNFdIr1Kyd6S0qqimJHWdf0qqBV6k2SIyDMfexlIGlTQPhPoGifJnMbl6qqZV9pcZeSa605ptpNad8Y4eFeYcMK93wgdYWU2Qn/T11zCVqzFpqQ01elyE15moUlkdgrDSw+OeZkCtZ8+p28BF/Xjw3FuwrCroHvQ33Nmc0UJ/hrVCNoCjmKt+P3/ll6BJRE41N4WIgMmUGmaNIrHCc9cKEBeR4AdDuQsAEWNcDL5li9x9oK+jeWJ5TXsLRSHEZgZCmh2C5fMPZXcbRZNhQZy1jb94NZJsawED8ymP8bD3ItJv/wS4Z7WpUcMTEwj9MDt4cvUz22NhEfd4HKXQszGt0gAuPkx/5TIquj+oHqsKBs/QPr6w5uh7qQKXptQF5eAByOU==\",\n                \"value_start\": 7,\n                \"value_end\": 751,\n                \"entropy\": 5.96239\n            }\n        ]\n    },\n    {\n        \"rule\": \"Salt\",\n        \"severity\": \"low\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.993,\n        \"line_data_list\": [\n            {\n                \"line\": \"SALT = 'AQBo2FMJiLQM8T3kRNyvAPoKupDDc3RPl/ZOQtuP/KLJ3sDk0qmKMUsimsbpyjIFzuEciskHzabIBhzRuABZCB4b+GLQ3KxiG3T14XANi9mtj1utEceL7Y1rcJ5jOc7x/s1Ce9RczMXkLS+iJrzQ38hcUdOIBnVbkGixyqvCn0tVcurbQy775rGQKsAAvO56aTCHpS4joP3rizqK3Zk4oGSj43K2EC/Tgt20PPTWMyCBBWhccriVozmV8kIhhluOB8Wz5lbOD98HK++RyFE8Uwvq8E7l04RA1+UvrA3Wowq+IY3PdcLGAKkH+C2OIitncl6MXz3phwnt5oPcg+V1OCTcb/S3IjLrey7G06Kx/CZ97rdArHeR5E2bc/0'\",\n                \"line_num\": 7,\n                \"path\": \"./tests/samples/sealed_secrets.yaml\",\n                \"info\": \"FILE:./tests/samples/sealed_secrets.yaml|STRUCT|STRUCT:spec|STRUCT:encryptedData|KEYWORD\",\n                \"variable\": \"SALT\",\n                \"variable_start\": 0,\n                \"variable_end\": 4,\n                \"value\": \"AQBo2FMJiLQM8T3kRNyvAPoKupDDc3RPl/ZOQtuP/KLJ3sDk0qmKMUsimsbpyjIFzuEciskHzabIBhzRuABZCB4b+GLQ3KxiG3T14XANi9mtj1utEceL7Y1rcJ5jOc7x/s1Ce9RczMXkLS+iJrzQ38hcUdOIBnVbkGixyqvCn0tVcurbQy775rGQKsAAvO56aTCHpS4joP3rizqK3Zk4oGSj43K2EC/Tgt20PPTWMyCBBWhccriVozmV8kIhhluOB8Wz5lbOD98HK++RyFE8Uwvq8E7l04RA1+UvrA3Wowq+IY3PdcLGAKkH+C2OIitncl6MXz3phwnt5oPcg+V1OCTcb/S3IjLrey7G06Kx/CZ97rdArHeR5E2bc/0\",\n                \"value_start\": 8,\n                \"value_end\": 387,\n                \"entropy\": 5.85103\n            }\n        ]\n    },\n    {\n        \"rule\": \"Secret\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"SECRET = 'AQC/4e1KLjq5yozJK7OSdaPCpSIrNC8ZhfgJ/rnmBPDly0de/kBhauPOl62fCY0Abn4ToV9IKgAr8o+ijkpg1SNtZoWk9cVX8R8xqGgN88+cIj7rrrrN8w0Y3vUz4pRJNbL4hbVF6L9ioyt8iXufJniiSBKfyaLG+JbOkFcLgbElIXW5zB0FiIq2NHOvxSCuFtoTSrzBOoqnshacJF8Qp71PHZZX/FIKb9S1Wbu85Y3Pl3/UEknd6303vzqECvVd0q5uLxXTPgx6Ug3fulpmIQxuGdYUvQBJSn9hi2Xscvo9u/oLJG6oALUa3TBwKxpJWDjtLB+a2QV07yi9u6+Uu+DvhpB72aKAA9pvbFsNNpci3jutMS1UtJP7gW2cw=='\",\n                \"line_num\": 8,\n                \"path\": \"./tests/samples/sealed_secrets.yaml\",\n                \"info\": \"FILE:./tests/samples/sealed_secrets.yaml|STRUCT|STRUCT:spec|STRUCT:encryptedData|KEYWORD\",\n                \"variable\": \"SECRET\",\n                \"variable_start\": 0,\n                \"variable_end\": 6,\n                \"value\": \"AQC/4e1KLjq5yozJK7OSdaPCpSIrNC8ZhfgJ/rnmBPDly0de/kBhauPOl62fCY0Abn4ToV9IKgAr8o+ijkpg1SNtZoWk9cVX8R8xqGgN88+cIj7rrrrN8w0Y3vUz4pRJNbL4hbVF6L9ioyt8iXufJniiSBKfyaLG+JbOkFcLgbElIXW5zB0FiIq2NHOvxSCuFtoTSrzBOoqnshacJF8Qp71PHZZX/FIKb9S1Wbu85Y3Pl3/UEknd6303vzqECvVd0q5uLxXTPgx6Ug3fulpmIQxuGdYUvQBJSn9hi2Xscvo9u/oLJG6oALUa3TBwKxpJWDjtLB+a2QV07yi9u6+Uu+DvhpB72aKAA9pvbFsNNpci3jutMS1UtJP7gW2cw==\",\n                \"value_start\": 10,\n                \"value_end\": 393,\n                \"entropy\": 5.90879\n            }\n        ]\n    },\n    {\n        \"rule\": \"Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"TOKEN = 'AQDRjFz5B59a6LrvuLJJ6gPwtBT8pudeNH57O1g4UfOYNqH5IncHt0jK/unn0IX/V8Jpoc0aeHVNV66luEsjjCkMqIFNi73VStq4sDFrTwQQZCU6aa5rQJB5zQ2eh5HCsUs1oGKPaR3ByKhnEbpE4sgpJ5OwI4QVqkzQwadxj2GUCyagk3G5f1tPNxVXq6spBCQfzmGYuHOMi/QA4kfJtArnl0kWPwmzwTd1TwAEzXTvodgnv8W8obls4eQA5Tl0CcfxfSd5jnLvNDQIYHdlNJvZXQu9FzoZyocfqYCxMLCeW5BQ1+kY/cWNMbk+TaiVaklhkEgkusVZoCKjXoSpShFr4JryD9g/A48Q8u/nx6renGGdvlWEIf4OzGK1KA='\",\n                \"line_num\": 9,\n                \"path\": \"./tests/samples/sealed_secrets.yaml\",\n                \"info\": \"FILE:./tests/samples/sealed_secrets.yaml|STRUCT|STRUCT:spec|STRUCT:encryptedData|KEYWORD\",\n                \"variable\": \"TOKEN\",\n                \"variable_start\": 0,\n                \"variable_end\": 5,\n                \"value\": \"AQDRjFz5B59a6LrvuLJJ6gPwtBT8pudeNH57O1g4UfOYNqH5IncHt0jK/unn0IX/V8Jpoc0aeHVNV66luEsjjCkMqIFNi73VStq4sDFrTwQQZCU6aa5rQJB5zQ2eh5HCsUs1oGKPaR3ByKhnEbpE4sgpJ5OwI4QVqkzQwadxj2GUCyagk3G5f1tPNxVXq6spBCQfzmGYuHOMi/QA4kfJtArnl0kWPwmzwTd1TwAEzXTvodgnv8W8obls4eQA5Tl0CcfxfSd5jnLvNDQIYHdlNJvZXQu9FzoZyocfqYCxMLCeW5BQ1+kY/cWNMbk+TaiVaklhkEgkusVZoCKjXoSpShFr4JryD9g/A48Q8u/nx6renGGdvlWEIf4OzGK1KA=\",\n                \"value_start\": 9,\n                \"value_end\": 392,\n                \"entropy\": 5.89729\n            }\n        ]\n    },\n    {\n        \"rule\": \"Nonce\",\n        \"severity\": \"low\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.998,\n        \"line_data_list\": [\n            {\n                \"line\": \"    __NONCE: AQ+n0Tth3F1Lt3ReDe+BrQwTzNcs7y+OFND0M/+ipSM+5xE91lsQWW0j1dxGh4PEJtVN0U1oVAL+ZVEIw0IpBDaQQYqkxkkp/+Aj1lp3UgUtGUyX+/CxXFnoK04XZzdpWxcwYeBUikykI5YUUQVldaoTql4BugUy733PXFK91q4UpPK0Dne5yCRKvpqSLWVgigXbUogfRugfYgTgkiGEPsv3izNgRWycIDUInfvpzVvODk1gz6/1nW7xISgLCdcewkRgO6l0WGuOn2dWcndURMOooj4ljD9Aw7g4eIu5hf/B5sCOYh7fB33QxOlAmiMZoliEo6WWGP7P8hneYli7YnRfvvqx7Yh30E3qokRKQXsT+OuSZgK1kKK5yzroO\",\n                \"line_num\": 13,\n                \"path\": \"./tests/samples/sealed_secrets.yaml\",\n                \"info\": \"FILE:./tests/samples/sealed_secrets.yaml|RAW\",\n                \"variable\": \"__NONCE\",\n                \"variable_start\": 4,\n                \"variable_end\": 11,\n                \"value\": \"AQ+n0Tth3F1Lt3ReDe+BrQwTzNcs7y+OFND0M/+ipSM+5xE91lsQWW0j1dxGh4PEJtVN0U1oVAL+ZVEIw0IpBDaQQYqkxkkp/+Aj1lp3UgUtGUyX+/CxXFnoK04XZzdpWxcwYeBUikykI5YUUQVldaoTql4BugUy733PXFK91q4UpPK0Dne5yCRKvpqSLWVgigXbUogfRugfYgTgkiGEPsv3izNgRWycIDUInfvpzVvODk1gz6/1nW7xISgLCdcewkRgO6l0WGuOn2dWcndURMOooj4ljD9Aw7g4eIu5hf/B5sCOYh7fB33QxOlAmiMZoliEo6WWGP7P8hneYli7YnRfvvqx7Yh30E3qokRKQXsT+OuSZgK1kKK5yzroO\",\n                \"value_start\": 13,\n                \"value_end\": 394,\n                \"entropy\": 5.81513\n            }\n        ]\n    },\n    {\n        \"rule\": \"Secret\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.999,\n        \"line_data_list\": [\n            {\n                \"line\": \"        Secret: []byte{333, 9, 100, 114, 245, 164, 134, 217,225,26,0,       172, 39, 248,  203, 201},\",\n                \"line_num\": 3,\n                \"path\": \"./tests/samples/secret.go\",\n                \"info\": \"FILE:./tests/samples/secret.go|RAW\",\n                \"variable\": \"Secret\",\n                \"variable_start\": 8,\n                \"variable_end\": 14,\n                \"value\": \"333, 9, 100, 114, 245, 164, 134, 217,225,26,0,       172, 39, 248,  203, 201\",\n                \"value_start\": 23,\n                \"value_end\": 99,\n                \"entropy\": 3.10882\n            }\n        ]\n    },\n    {\n        \"rule\": \"PEM Private Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"var SECRET = `-----BEGIN OPENSSH PRIVATE KEY-----\",\n                \"line_num\": 7,\n                \"path\": \"./tests/samples/secret.go\",\n                \"info\": \"FILE:./tests/samples/secret.go|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"-----BEGIN OPENSSH PRIVATE KEY-----\",\n                \"value_start\": 14,\n                \"value_end\": 49,\n                \"entropy\": 3.58716\n            },\n            {\n                \"line\": \"b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAAAMwAAAAtzc2gtZWQyNTUx\",\n                \"line_num\": 8,\n                \"path\": \"./tests/samples/secret.go\",\n                \"info\": \"FILE:./tests/samples/secret.go|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAAAMwAAAAtzc2gtZWQyNTUx\",\n                \"value_start\": 0,\n                \"value_end\": 76,\n                \"entropy\": 4.18903\n            },\n            {\n                \"line\": \"OQAAABWHkoN5N0V0OCSXOHWSOHAxRYMJSGc4clgVA0gJgFlIBAAAAJimRM7VpkTO1QAAAAtzc2gt\",\n                \"line_num\": 9,\n                \"path\": \"./tests/samples/secret.go\",\n                \"info\": \"FILE:./tests/samples/secret.go|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"OQAAABWHkoN5N0V0OCSXOHWSOHAxRYMJSGc4clgVA0gJgFlIBAAAAJimRM7VpkTO1QAAAAtzc2gt\",\n                \"value_start\": 0,\n                \"value_end\": 76,\n                \"entropy\": 4.74471\n            },\n            {\n                \"line\": \"ZWQyNTUxOQAAACBqIPMG94HL7zedFzsvi45mHS8ZuyLQXqvHpHobcdNCJAAAAFRoZXJlXzE1LU4w\",\n                \"line_num\": 10,\n                \"path\": \"./tests/samples/secret.go\",\n                \"info\": \"FILE:./tests/samples/secret.go|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"ZWQyNTUxOQAAACBqIPMG94HL7zedFzsvi45mHS8ZuyLQXqvHpHobcdNCJAAAAFRoZXJlXzE1LU4w\",\n                \"value_start\": 0,\n                \"value_end\": 76,\n                \"entropy\": 5.24555\n            },\n            {\n                \"line\": \"dF9UaGVLZXlZb3VBcmVMb29raW5nRm9S8wb3Mj0tZT1hc3A7ZHprejsuZm5tbmRmbmVuZm5pAAAA\",\n                \"line_num\": 11,\n                \"path\": \"./tests/samples/secret.go\",\n                \"info\": \"FILE:./tests/samples/secret.go|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"dF9UaGVLZXlZb3VBcmVMb29raW5nRm9S8wb3Mj0tZT1hc3A7ZHprejsuZm5tbmRmbmVuZm5pAAAA\",\n                \"value_start\": 0,\n                \"value_end\": 76,\n                \"entropy\": 4.94996\n            },\n            {\n                \"line\": \"EXRpemVuQGNyZWRzd2VlcGVyAQIDBA==\",\n                \"line_num\": 12,\n                \"path\": \"./tests/samples/secret.go\",\n                \"info\": \"FILE:./tests/samples/secret.go|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"EXRpemVuQGNyZWRzd2VlcGVyAQIDBA==\",\n                \"value_start\": 0,\n                \"value_end\": 32,\n                \"entropy\": 4.47641\n            },\n            {\n                \"line\": \"-----END OPENSSH PRIVATE KEY-----\",\n                \"line_num\": 13,\n                \"path\": \"./tests/samples/secret.go\",\n                \"info\": \"FILE:./tests/samples/secret.go|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"-----END OPENSSH PRIVATE KEY-----\",\n                \"value_start\": 0,\n                \"value_end\": 33,\n                \"entropy\": 3.46942\n            }\n        ]\n    },\n    {\n        \"rule\": \"Secret\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"var secret_looks_like_linux_path_1=\\\"/VnpmUGWxhQW9KQAwrL2ZYdDJPNG1PQjYxMXNPaF\\\"\",\n                \"line_num\": 17,\n                \"path\": \"./tests/samples/secret.go\",\n                \"info\": \"FILE:./tests/samples/secret.go|RAW\",\n                \"variable\": \"secret_looks_like_linux_path_1\",\n                \"variable_start\": 4,\n                \"variable_end\": 34,\n                \"value\": \"/VnpmUGWxhQW9KQAwrL2ZYdDJPNG1PQjYxMXNPaF\",\n                \"value_start\": 36,\n                \"value_end\": 76,\n                \"entropy\": 4.83418\n            }\n        ]\n    },\n    {\n        \"rule\": \"Secret\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"var secret_looks_like_linux_path_2=\\\"VnpmUGWxhQW/9KQAwrL2ZYd/DJPNG1PQjYxMXNPF\\\"\",\n                \"line_num\": 18,\n                \"path\": \"./tests/samples/secret.go\",\n                \"info\": \"FILE:./tests/samples/secret.go|RAW\",\n                \"variable\": \"secret_looks_like_linux_path_2\",\n                \"variable_start\": 4,\n                \"variable_end\": 34,\n                \"value\": \"VnpmUGWxhQW/9KQAwrL2ZYd/DJPNG1PQjYxMXNPF\",\n                \"value_start\": 36,\n                \"value_end\": 76,\n                \"entropy\": 4.78418\n            }\n        ]\n    },\n    {\n        \"rule\": \"Secret\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"var secret_looks_like_linux_path_3=\\\"VnpmUGWxhQW/9KQAwrL2ZYdDJPNG1PQjYxMXNPF=\\\"\",\n                \"line_num\": 19,\n                \"path\": \"./tests/samples/secret.go\",\n                \"info\": \"FILE:./tests/samples/secret.go|RAW\",\n                \"variable\": \"secret_looks_like_linux_path_3\",\n                \"variable_start\": 4,\n                \"variable_end\": 34,\n                \"value\": \"VnpmUGWxhQW/9KQAwrL2ZYdDJPNG1PQjYxMXNPF=\",\n                \"value_start\": 36,\n                \"value_end\": 76,\n                \"entropy\": 4.83418\n            }\n        ]\n    },\n    {\n        \"rule\": \"Secret\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"var secret_looks_like_linux_path__=\\\"VnpmUGWxhQW/9KQAwrL2ZYd/DJPNG1PQjEXAMbLE\\\"\",\n                \"line_num\": 20,\n                \"path\": \"./tests/samples/secret.go\",\n                \"info\": \"FILE:./tests/samples/secret.go|RAW\",\n                \"variable\": \"secret_looks_like_linux_path__\",\n                \"variable_start\": 4,\n                \"variable_end\": 34,\n                \"value\": \"VnpmUGWxhQW/9KQAwrL2ZYd/DJPNG1PQjEXAMbLE\",\n                \"value_start\": 36,\n                \"value_end\": 76,\n                \"entropy\": 4.85306\n            }\n        ]\n    },\n    {\n        \"rule\": \"Secret\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"LEGACY_GITHUB_SECRET = \\\"fa87409ad3a4589fd279c501b3d2e174855ee9f4\\\"\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/secret.groovy\",\n                \"info\": \"FILE:./tests/samples/secret.groovy|RAW\",\n                \"variable\": \"LEGACY_GITHUB_SECRET\",\n                \"variable_start\": 0,\n                \"variable_end\": 20,\n                \"value\": \"fa87409ad3a4589fd279c501b3d2e174855ee9f4\",\n                \"value_start\": 24,\n                \"value_end\": 64,\n                \"entropy\": 3.80869\n            }\n        ]\n    },\n    {\n        \"rule\": \"SendGrid API Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"SG.gireogigireogigi.gireogigireogigi\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/sendgrid_api_key\",\n                \"info\": \"FILE:./tests/samples/sendgrid_api_key|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"SG.gireogigireogigi.gireogigireogigi\",\n                \"value_start\": 0,\n                \"value_end\": 36,\n                \"entropy\": 2.60219\n            }\n        ]\n    },\n    {\n        \"rule\": \"Sentry Organization Auth Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"sntrys_eyJpYXQiOjE3NDEyNjQzNTYuMDAwMCwidXJsIjoiaHR0cHM6Ly9zZW50cnkuaW8iLCJyZWdpb25fdXJsIjoiaHR0cHM6Ly91YS5zZW50cnkuaW8iLCJvcmciOiIifQ==v8D-whr2cUQK91Civi4yNoLRjC3MDZH5I2aMcs_j5GDv\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/sentry\",\n                \"info\": \"FILE:./tests/samples/sentry|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"sntrys_eyJpYXQiOjE3NDEyNjQzNTYuMDAwMCwidXJsIjoiaHR0cHM6Ly9zZW50cnkuaW8iLCJyZWdpb25fdXJsIjoiaHR0cHM6Ly91YS5zZW50cnkuaW8iLCJvcmciOiIifQ==v8D-whr2cUQK91Civi4yNoLRjC3MDZH5I2aMcs_j5GDv\",\n                \"value_start\": 0,\n                \"value_end\": 179,\n                \"entropy\": 5.53873\n            }\n        ]\n    },\n    {\n        \"rule\": \"Sentry User Auth Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"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\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/sentry\",\n                \"info\": \"FILE:./tests/samples/sentry|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"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\",\n                \"value_start\": 0,\n                \"value_end\": 71,\n                \"entropy\": 4.14384\n            }\n        ]\n    },\n    {\n        \"rule\": \"Shopify Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"    \\\"shopyfy_k\\\": \\\"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\\\",\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/shopify_token\",\n                \"info\": \"FILE:./tests/samples/shopify_token|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"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\",\n                \"value_start\": 18,\n                \"value_end\": 56,\n                \"entropy\": 3.80396\n            }\n        ]\n    },\n    {\n        \"rule\": \"Slack Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"xapp-1-A0F6JEP4877-3425459257038-ff6379c940d5ed64f2cf3c820578dcebe5e83dccc0ebd89574184af9b9d2c1be\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/slack_token.hs\",\n                \"info\": \"FILE:./tests/samples/slack_token.hs|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"xapp-1-A0F6JEP4877-3425459257038-ff6379c940d5ed64f2cf3c820578dcebe5e83dccc0ebd89574184af9b9d2c1be\",\n                \"value_start\": 0,\n                \"value_end\": 97,\n                \"entropy\": 4.32216\n            }\n        ]\n    },\n    {\n        \"rule\": \"Slack Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"xoxb-391809548274-4236212766789-i8EoyACELx2FYnSOkRPEpePN\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/slack_token.hs\",\n                \"info\": \"FILE:./tests/samples/slack_token.hs|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"xoxb-391809548274-4236212766789-i8EoyACELx2FYnSOkRPEpePN\",\n                \"value_start\": 0,\n                \"value_end\": 56,\n                \"entropy\": 4.71996\n            }\n        ]\n    },\n    {\n        \"rule\": \"Slack Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"xoxp-1-Mi0yLTM5MTgwOTU0ODI3NC0xMDUzMjc0NTg2MzIxLTQyMzYyMTI3NjY3ODktMzQyNTQ1OTI1NzAzOC1mZjYzNzljOTQwZDVlZDY0ZjJjZjNjODIwNTc4ZGNlYmU1ZTgzZGNjYzBlYmQ4OTU3NDE4NGFmOWI5ZDJjMWJl\",\n                \"line_num\": 3,\n                \"path\": \"./tests/samples/slack_token.hs\",\n                \"info\": \"FILE:./tests/samples/slack_token.hs|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"xoxp-1-Mi0yLTM5MTgwOTU0ODI3NC0xMDUzMjc0NTg2MzIxLTQyMzYyMTI3NjY3ODktMzQyNTQ1OTI1NzAzOC1mZjYzNzljOTQwZDVlZDY0ZjJjZjNjODIwNTc4ZGNlYmU1ZTgzZGNjYzBlYmQ4OTU3NDE4NGFmOWI5ZDJjMWJl\",\n                \"value_start\": 0,\n                \"value_end\": 171,\n                \"entropy\": 4.93756\n            }\n        ]\n    },\n    {\n        \"rule\": \"Slack Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"xoxe-1-My0xLTM5MTgwOTU0ODI3NC00MjM2MjEyNzY2Nzg5LTM0MjU0NTkyNTcwMzgtZmY2Mzc5Yzk0MGQ1ZWQ2NGYyY2YzYzgyMDU3OGRjZWJlNWU4M2RjY2MwZWJkODk1NzQxODRhZjliOWQyYzFiZQ\",\n                \"line_num\": 4,\n                \"path\": \"./tests/samples/slack_token.hs\",\n                \"info\": \"FILE:./tests/samples/slack_token.hs|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"xoxe-1-My0xLTM5MTgwOTU0ODI3NC00MjM2MjEyNzY2Nzg5LTM0MjU0NTkyNTcwMzgtZmY2Mzc5Yzk0MGQ1ZWQ2NGYyY2YzYzgyMDU3OGRjZWJlNWU4M2RjY2MwZWJkODk1NzQxODRhZjliOWQyYzFiZQ\",\n                \"value_start\": 0,\n                \"value_end\": 153,\n                \"entropy\": 4.95538\n            }\n        ]\n    },\n    {\n        \"rule\": \"Slack Webhook\",\n        \"severity\": \"medium\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"    \\\"hook\\\": \\\"https://hooks.slack.com/services/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\\\",\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/slack_webhook.template\",\n                \"info\": \"FILE:./tests/samples/slack_webhook.template|RAW\",\n                \"variable\": \"hooks.slack.com/services\",\n                \"variable_start\": 21,\n                \"variable_end\": 45,\n                \"value\": \"/T1029384756/B102984756/sjsbfzowhhqbsgftrvajxzpg\",\n                \"value_start\": 45,\n                \"value_end\": 93,\n                \"entropy\": 4.76184\n            }\n        ]\n    },\n    {\n        \"rule\": \"Azure Secret Value\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"qpF8Q~PCM5MhMoyTFc5TYEomnzRUKim9UJhe8a2P\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/small.pdf\",\n                \"info\": \"FILE:./tests/samples/small.pdf|PDF:1|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"qpF8Q~PCM5MhMoyTFc5TYEomnzRUKim9UJhe8a2P\",\n                \"value_start\": 0,\n                \"value_end\": 40,\n                \"entropy\": 4.75306\n            }\n        ]\n    },\n    {\n        \"rule\": \"SonarQube Credentials\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"'sonar.login': 'squ_944fb17dc1ca18eb2750b6238e5c5ad27b68aaab',\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/sonarqube\",\n                \"info\": \"FILE:./tests/samples/sonarqube|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"squ_944fb17dc1ca18eb2750b6238e5c5ad27b68aaab\",\n                \"value_start\": 16,\n                \"value_end\": 60,\n                \"entropy\": 4.10151\n            }\n        ]\n    },\n    {\n        \"rule\": \"SonarQube Credentials\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"-Dsonar.login=squ_5f6278f46c0697b8ce6a07cfaabf363b5a97a984\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/sonarqube\",\n                \"info\": \"FILE:./tests/samples/sonarqube|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"squ_5f6278f46c0697b8ce6a07cfaabf363b5a97a984\",\n                \"value_start\": 14,\n                \"value_end\": 58,\n                \"entropy\": 3.954\n            }\n        ]\n    },\n    {\n        \"rule\": \"SQL Password\",\n        \"severity\": \"medium\",\n        \"confidence\": \"weak\",\n        \"ml_probability\": 0.918,\n        \"line_data_list\": [\n            {\n                \"line\": \"ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'SqLpa5sW0rD';\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/sql_password\",\n                \"info\": \"FILE:./tests/samples/sql_password|RAW\",\n                \"variable\": \"ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY\",\n                \"variable_start\": 0,\n                \"variable_end\": 70,\n                \"value\": \"SqLpa5sW0rD\",\n                \"value_start\": 72,\n                \"value_end\": 83,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"SQL Password\",\n        \"severity\": \"medium\",\n        \"confidence\": \"weak\",\n        \"ml_probability\": 0.917,\n        \"line_data_list\": [\n            {\n                \"line\": \"'create user name identified by 'SqLpa5sW0rD' --\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/sql_password\",\n                \"info\": \"FILE:./tests/samples/sql_password|RAW\",\n                \"variable\": \"create user name identified by\",\n                \"variable_start\": 1,\n                \"variable_end\": 31,\n                \"value\": \"SqLpa5sW0rD\",\n                \"value_start\": 33,\n                \"value_end\": 44,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"SQL Password\",\n        \"severity\": \"medium\",\n        \"confidence\": \"weak\",\n        \"ml_probability\": 0.996,\n        \"line_data_list\": [\n            {\n                \"line\": \"exec(\\\"CREATE USER ExposedTest ACCOUNT UNLOCK IDENTIFIED BY SqLpa5sW0rD\\\");\",\n                \"line_num\": 3,\n                \"path\": \"./tests/samples/sql_password\",\n                \"info\": \"FILE:./tests/samples/sql_password|RAW\",\n                \"variable\": \"CREATE USER ExposedTest ACCOUNT UNLOCK IDENTIFIED BY\",\n                \"variable_start\": 6,\n                \"variable_end\": 58,\n                \"value\": \"SqLpa5sW0rD\",\n                \"value_start\": 59,\n                \"value_end\": 70,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"SQL Password\",\n        \"severity\": \"medium\",\n        \"confidence\": \"weak\",\n        \"ml_probability\": 0.964,\n        \"line_data_list\": [\n            {\n                \"line\": \"\\uff1a`CREATE USER 'haproxy'@'%' IDENTIFIED BY 'SqLpa5sW0rD';`\",\n                \"line_num\": 4,\n                \"path\": \"./tests/samples/sql_password\",\n                \"info\": \"FILE:./tests/samples/sql_password|RAW\",\n                \"variable\": \"CREATE USER 'haproxy'@'%' IDENTIFIED BY\",\n                \"variable_start\": 2,\n                \"variable_end\": 41,\n                \"value\": \"SqLpa5sW0rD\",\n                \"value_start\": 43,\n                \"value_end\": 54,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"SQL Password\",\n        \"severity\": \"medium\",\n        \"confidence\": \"weak\",\n        \"ml_probability\": 0.996,\n        \"line_data_list\": [\n            {\n                \"line\": \"exec(\\\"CREATE USER ExposedTest ACCOUNT UNLOCK IDENTIFIED BY SqLpa5sW0rD\\\");\",\n                \"line_num\": 5,\n                \"path\": \"./tests/samples/sql_password\",\n                \"info\": \"FILE:./tests/samples/sql_password|RAW\",\n                \"variable\": \"CREATE USER ExposedTest ACCOUNT UNLOCK IDENTIFIED BY\",\n                \"variable_start\": 6,\n                \"variable_end\": 58,\n                \"value\": \"SqLpa5sW0rD\",\n                \"value_start\": 59,\n                \"value_end\": 70,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"SQL Password\",\n        \"severity\": \"medium\",\n        \"confidence\": \"weak\",\n        \"ml_probability\": 0.914,\n        \"line_data_list\": [\n            {\n                \"line\": \"CREATE USER foo WITH ENCRYPTED PASSWORD 'SqLpa5sW0rD' CREATEDB;\",\n                \"line_num\": 8,\n                \"path\": \"./tests/samples/sql_password\",\n                \"info\": \"FILE:./tests/samples/sql_password|RAW\",\n                \"variable\": \"CREATE USER foo WITH ENCRYPTED PASSWORD\",\n                \"variable_start\": 0,\n                \"variable_end\": 39,\n                \"value\": \"SqLpa5sW0rD\",\n                \"value_start\": 41,\n                \"value_end\": 52,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.999,\n        \"line_data_list\": [\n            {\n                \"line\": \"ALTER LOGIN username WITH PASSWORD = 'SqLpa5sW0rD';\",\n                \"line_num\": 9,\n                \"path\": \"./tests/samples/sql_password\",\n                \"info\": \"FILE:./tests/samples/sql_password|RAW\",\n                \"variable\": \"PASSWORD\",\n                \"variable_start\": 26,\n                \"variable_end\": 34,\n                \"value\": \"SqLpa5sW0rD\",\n                \"value_start\": 38,\n                \"value_end\": 49,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"SQL Password\",\n        \"severity\": \"medium\",\n        \"confidence\": \"weak\",\n        \"ml_probability\": 0.999,\n        \"line_data_list\": [\n            {\n                \"line\": \"ALTER LOGIN username WITH PASSWORD = 'SqLpa5sW0rD';\",\n                \"line_num\": 9,\n                \"path\": \"./tests/samples/sql_password\",\n                \"info\": \"FILE:./tests/samples/sql_password|RAW\",\n                \"variable\": \"ALTER LOGIN username WITH PASSWORD =\",\n                \"variable_start\": 0,\n                \"variable_end\": 36,\n                \"value\": \"SqLpa5sW0rD\",\n                \"value_start\": 38,\n                \"value_end\": 49,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"SQL Password\",\n        \"severity\": \"medium\",\n        \"confidence\": \"weak\",\n        \"ml_probability\": 0.992,\n        \"line_data_list\": [\n            {\n                \"line\": \"ALTER ROLE postgres PASSWORD 'SqLpa5sW0rD'; SELECT pg_reload_conf()\\\"\",\n                \"line_num\": 10,\n                \"path\": \"./tests/samples/sql_password\",\n                \"info\": \"FILE:./tests/samples/sql_password|RAW\",\n                \"variable\": \"ALTER ROLE postgres PASSWORD\",\n                \"variable_start\": 0,\n                \"variable_end\": 28,\n                \"value\": \"SqLpa5sW0rD\",\n                \"value_start\": 30,\n                \"value_end\": 41,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"SQL Password\",\n        \"severity\": \"medium\",\n        \"confidence\": \"weak\",\n        \"ml_probability\": 0.998,\n        \"line_data_list\": [\n            {\n                \"line\": \"ALTER USER username WITH PASSWORD 'SqLpa5sW0rD';\",\n                \"line_num\": 11,\n                \"path\": \"./tests/samples/sql_password\",\n                \"info\": \"FILE:./tests/samples/sql_password|RAW\",\n                \"variable\": \"ALTER USER username WITH PASSWORD\",\n                \"variable_start\": 0,\n                \"variable_end\": 33,\n                \"value\": \"SqLpa5sW0rD\",\n                \"value_start\": 35,\n                \"value_end\": 46,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"CREATE LOGIN username WITH PASSWORD = 'SqLpa5sW0rD';\",\n                \"line_num\": 12,\n                \"path\": \"./tests/samples/sql_password\",\n                \"info\": \"FILE:./tests/samples/sql_password|RAW\",\n                \"variable\": \"PASSWORD\",\n                \"variable_start\": 27,\n                \"variable_end\": 35,\n                \"value\": \"SqLpa5sW0rD\",\n                \"value_start\": 39,\n                \"value_end\": 50,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"SQL Password\",\n        \"severity\": \"medium\",\n        \"confidence\": \"weak\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"CREATE LOGIN username WITH PASSWORD = 'SqLpa5sW0rD';\",\n                \"line_num\": 12,\n                \"path\": \"./tests/samples/sql_password\",\n                \"info\": \"FILE:./tests/samples/sql_password|RAW\",\n                \"variable\": \"CREATE LOGIN username WITH PASSWORD =\",\n                \"variable_start\": 0,\n                \"variable_end\": 37,\n                \"value\": \"SqLpa5sW0rD\",\n                \"value_start\": 39,\n                \"value_end\": 50,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"SQL Password\",\n        \"severity\": \"medium\",\n        \"confidence\": \"weak\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"CREATE USER chuck WITH PASSWORD 'SqLpa5sW0rD' SUPERUSER;\",\n                \"line_num\": 13,\n                \"path\": \"./tests/samples/sql_password\",\n                \"info\": \"FILE:./tests/samples/sql_password|RAW\",\n                \"variable\": \"CREATE USER chuck WITH PASSWORD\",\n                \"variable_start\": 0,\n                \"variable_end\": 31,\n                \"value\": \"SqLpa5sW0rD\",\n                \"value_start\": 33,\n                \"value_end\": 44,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"SQL Password\",\n        \"severity\": \"medium\",\n        \"confidence\": \"weak\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"CREATE USER IF NOT EXISTS sandy WITH PASSWORD 'SqLpa5sW0rD' NOSUPERUSER;\",\n                \"line_num\": 14,\n                \"path\": \"./tests/samples/sql_password\",\n                \"info\": \"FILE:./tests/samples/sql_password|RAW\",\n                \"variable\": \"CREATE USER IF NOT EXISTS sandy WITH PASSWORD\",\n                \"variable_start\": 0,\n                \"variable_end\": 45,\n                \"value\": \"SqLpa5sW0rD\",\n                \"value_start\": 47,\n                \"value_end\": 58,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"SQL Password\",\n        \"severity\": \"medium\",\n        \"confidence\": \"weak\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"CREATE USER myuser WITH PASSWORD 'SqLpa5sW0rD';\",\n                \"line_num\": 15,\n                \"path\": \"./tests/samples/sql_password\",\n                \"info\": \"FILE:./tests/samples/sql_password|RAW\",\n                \"variable\": \"CREATE USER myuser WITH PASSWORD\",\n                \"variable_start\": 0,\n                \"variable_end\": 32,\n                \"value\": \"SqLpa5sW0rD\",\n                \"value_start\": 34,\n                \"value_end\": 45,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"SQL Password\",\n        \"severity\": \"medium\",\n        \"confidence\": \"weak\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"CREATE USER username WITH PASSWORD 'SqLpa5sW0rD';\",\n                \"line_num\": 16,\n                \"path\": \"./tests/samples/sql_password\",\n                \"info\": \"FILE:./tests/samples/sql_password|RAW\",\n                \"variable\": \"CREATE USER username WITH PASSWORD\",\n                \"variable_start\": 0,\n                \"variable_end\": 34,\n                \"value\": \"SqLpa5sW0rD\",\n                \"value_start\": 36,\n                \"value_end\": 47,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"SQL Password\",\n        \"severity\": \"medium\",\n        \"confidence\": \"weak\",\n        \"ml_probability\": 0.964,\n        \"line_data_list\": [\n            {\n                \"line\": \"ALTER USER 'username'@'localhost' IDENTIFIED BY 'SqLpa5sW0rD';\",\n                \"line_num\": 17,\n                \"path\": \"./tests/samples/sql_password\",\n                \"info\": \"FILE:./tests/samples/sql_password|RAW\",\n                \"variable\": \"ALTER USER 'username'@'localhost' IDENTIFIED BY\",\n                \"variable_start\": 0,\n                \"variable_end\": 47,\n                \"value\": \"SqLpa5sW0rD\",\n                \"value_start\": 49,\n                \"value_end\": 60,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"SQL Password\",\n        \"severity\": \"medium\",\n        \"confidence\": \"weak\",\n        \"ml_probability\": 0.899,\n        \"line_data_list\": [\n            {\n                \"line\": \"ALTER USER username IDENTIFIED BY SqLpa5sW0rD;\",\n                \"line_num\": 19,\n                \"path\": \"./tests/samples/sql_password\",\n                \"info\": \"FILE:./tests/samples/sql_password|RAW\",\n                \"variable\": \"ALTER USER username IDENTIFIED BY\",\n                \"variable_start\": 0,\n                \"variable_end\": 33,\n                \"value\": \"SqLpa5sW0rD\",\n                \"value_start\": 34,\n                \"value_end\": 45,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"SQL Password\",\n        \"severity\": \"medium\",\n        \"confidence\": \"weak\",\n        \"ml_probability\": 0.991,\n        \"line_data_list\": [\n            {\n                \"line\": \"CREATE USER username IDENTIFIED BY SqLpa5sW0rD;\",\n                \"line_num\": 20,\n                \"path\": \"./tests/samples/sql_password\",\n                \"info\": \"FILE:./tests/samples/sql_password|RAW\",\n                \"variable\": \"CREATE USER username IDENTIFIED BY\",\n                \"variable_start\": 0,\n                \"variable_end\": 34,\n                \"value\": \"SqLpa5sW0rD\",\n                \"value_start\": 35,\n                \"value_end\": 46,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"SQL Password\",\n        \"severity\": \"medium\",\n        \"confidence\": \"weak\",\n        \"ml_probability\": 0.997,\n        \"line_data_list\": [\n            {\n                \"line\": \"CREATE USER 'username'@'localhost' IDENTIFIED BY 'SqLpa5sW0rD';\",\n                \"line_num\": 21,\n                \"path\": \"./tests/samples/sql_password\",\n                \"info\": \"FILE:./tests/samples/sql_password|RAW\",\n                \"variable\": \"CREATE USER 'username'@'localhost' IDENTIFIED BY\",\n                \"variable_start\": 0,\n                \"variable_end\": 48,\n                \"value\": \"SqLpa5sW0rD\",\n                \"value_start\": 50,\n                \"value_end\": 61,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"SQL Password\",\n        \"severity\": \"medium\",\n        \"confidence\": \"weak\",\n        \"ml_probability\": 0.998,\n        \"line_data_list\": [\n            {\n                \"line\": \"mysql -u root -pdbadmin -e \\\"CREATE USER 'cactiuser'@'localhost' IDENTIFIED BY 'SqLpa5sW0rD';\\\"\\u2013          \",\n                \"line_num\": 22,\n                \"path\": \"./tests/samples/sql_password\",\n                \"info\": \"FILE:./tests/samples/sql_password|RAW\",\n                \"variable\": \"CREATE USER 'cactiuser'@'localhost' IDENTIFIED BY\",\n                \"variable_start\": 28,\n                \"variable_end\": 77,\n                \"value\": \"SqLpa5sW0rD\",\n                \"value_start\": 79,\n                \"value_end\": 90,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"SQL Password\",\n        \"severity\": \"medium\",\n        \"confidence\": \"weak\",\n        \"ml_probability\": 0.999,\n        \"line_data_list\": [\n            {\n                \"line\": \"-c \\\"CREATE ROLE scram_test login password 'SqLpa5sW0rD'\\\"\",\n                \"line_num\": 23,\n                \"path\": \"./tests/samples/sql_password\",\n                \"info\": \"FILE:./tests/samples/sql_password|RAW\",\n                \"variable\": \"CREATE ROLE scram_test login password\",\n                \"variable_start\": 4,\n                \"variable_end\": 41,\n                \"value\": \"SqLpa5sW0rD\",\n                \"value_start\": 43,\n                \"value_end\": 54,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"SQL Password\",\n        \"severity\": \"medium\",\n        \"confidence\": \"weak\",\n        \"ml_probability\": 0.995,\n        \"line_data_list\": [\n            {\n                \"line\": \"CREATE ROLE app_admin WITH LOGIN PASSWORD SqLpa5sW0rD;\",\n                \"line_num\": 24,\n                \"path\": \"./tests/samples/sql_password\",\n                \"info\": \"FILE:./tests/samples/sql_password|RAW\",\n                \"variable\": \"CREATE ROLE app_admin WITH LOGIN PASSWORD\",\n                \"variable_start\": 0,\n                \"variable_end\": 41,\n                \"value\": \"SqLpa5sW0rD\",\n                \"value_start\": 42,\n                \"value_end\": 53,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"SQL Password\",\n        \"severity\": \"medium\",\n        \"confidence\": \"weak\",\n        \"ml_probability\": 0.999,\n        \"line_data_list\": [\n            {\n                \"line\": \"CREATE ROLE flask_admin_geo LOGIN PASSWORD 'SqLpa5sW0rD';\",\n                \"line_num\": 25,\n                \"path\": \"./tests/samples/sql_password\",\n                \"info\": \"FILE:./tests/samples/sql_password|RAW\",\n                \"variable\": \"CREATE ROLE flask_admin_geo LOGIN PASSWORD\",\n                \"variable_start\": 0,\n                \"variable_end\": 42,\n                \"value\": \"SqLpa5sW0rD\",\n                \"value_start\": 44,\n                \"value_end\": 55,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"SQL Password\",\n        \"severity\": \"medium\",\n        \"confidence\": \"weak\",\n        \"ml_probability\": 0.702,\n        \"line_data_list\": [\n            {\n                \"line\": \"create role forum_example_graph_demo login password 'SqLpa5sW0rD';\",\n                \"line_num\": 26,\n                \"path\": \"./tests/samples/sql_password\",\n                \"info\": \"FILE:./tests/samples/sql_password|RAW\",\n                \"variable\": \"create role forum_example_graph_demo login password\",\n                \"variable_start\": 0,\n                \"variable_end\": 51,\n                \"value\": \"SqLpa5sW0rD\",\n                \"value_start\": 53,\n                \"value_end\": 64,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"SQL Password\",\n        \"severity\": \"medium\",\n        \"confidence\": \"weak\",\n        \"ml_probability\": 0.722,\n        \"line_data_list\": [\n            {\n                \"line\": \"create role forum_example_graph login password 'SqLpa5sW0rD';\",\n                \"line_num\": 27,\n                \"path\": \"./tests/samples/sql_password\",\n                \"info\": \"FILE:./tests/samples/sql_password|RAW\",\n                \"variable\": \"create role forum_example_graph login password\",\n                \"variable_start\": 0,\n                \"variable_end\": 46,\n                \"value\": \"SqLpa5sW0rD\",\n                \"value_start\": 48,\n                \"value_end\": 59,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"SQL Password\",\n        \"severity\": \"medium\",\n        \"confidence\": \"weak\",\n        \"ml_probability\": 0.996,\n        \"line_data_list\": [\n            {\n                \"line\": \"ALTER USER 'test'@'1.1.1.1' IDENTIFIED WITH 'mysql_native_password' AS '*92FD05ADCA2EC9D1E10C096DEB1618BC2470E409' REQUIRE NONE PASSWORD EXPIRE DEFAULT ACCOUNT UNLOCK; -- old MySQL hash scheme with sha1\",\n                \"line_num\": 31,\n                \"path\": \"./tests/samples/sql_password\",\n                \"info\": \"FILE:./tests/samples/sql_password|RAW\",\n                \"variable\": \"ALTER USER 'test'@'1.1.1.1' IDENTIFIED WITH 'mysql_native_password' AS\",\n                \"variable_start\": 0,\n                \"variable_end\": 70,\n                \"value\": \"*92FD05ADCA2EC9D1E10C096DEB1618BC2470E409\",\n                \"value_start\": 72,\n                \"value_end\": 113,\n                \"entropy\": 3.78769\n            }\n        ]\n    },\n    {\n        \"rule\": \"SQL Password\",\n        \"severity\": \"medium\",\n        \"confidence\": \"weak\",\n        \"ml_probability\": 0.849,\n        \"line_data_list\": [\n            {\n                \"line\": \"sh -c 'echo CREATE USER typeorm_mg IDENTIFIED BY SqLpa5sW0rD\\\\; >>tmp.sql;'\",\n                \"line_num\": 32,\n                \"path\": \"./tests/samples/sql_password\",\n                \"info\": \"FILE:./tests/samples/sql_password|RAW\",\n                \"variable\": \"CREATE USER typeorm_mg IDENTIFIED BY\",\n                \"variable_start\": 12,\n                \"variable_end\": 48,\n                \"value\": \"SqLpa5sW0rD\\\\;\",\n                \"value_start\": 49,\n                \"value_end\": 62,\n                \"entropy\": 3.70044\n            }\n        ]\n    },\n    {\n        \"rule\": \"Square Access Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"    \\\"SQT\\\": \\\"EAAAEEPtuW9FnP_CuCV-3DFPB54M7YWBUVEFOWKPRVMWEJYMODIDAEX4FASS64NF\\\",\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/square_access_token\",\n                \"info\": \"FILE:./tests/samples/square_access_token|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"EAAAEEPtuW9FnP_CuCV-3DFPB54M7YWBUVEFOWKPRVMWEJYMODIDAEX4FASS64NF\",\n                \"value_start\": 12,\n                \"value_end\": 76,\n                \"entropy\": 4.66018\n            }\n        ]\n    },\n    {\n        \"rule\": \"Square Credentials\",\n        \"severity\": \"medium\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"sq0atp-GIREOGICR0CKLE12W45A78\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/square_client_id\",\n                \"info\": \"FILE:./tests/samples/square_client_id|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"sq0atp-GIREOGICR0CKLE12W45A78\",\n                \"value_start\": 0,\n                \"value_end\": 29,\n                \"entropy\": 4.44419\n            }\n        ]\n    },\n    {\n        \"rule\": \"Square Credentials\",\n        \"severity\": \"medium\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"20241204_112356 Colored line: \\\"\\u001b[94msq0csp-ST2dsfwyVI7Ydj343EY72hb48ehKQINMST2ds_fwyVI\\u001b[0m\\\";\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/square_oauth_secret\",\n                \"info\": \"FILE:./tests/samples/square_oauth_secret|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"sq0csp-ST2dsfwyVI7Ydj343EY72hb48ehKQINMST2ds_fwyVI\",\n                \"value_start\": 36,\n                \"value_end\": 86,\n                \"entropy\": 4.75856\n            }\n        ]\n    },\n    {\n        \"rule\": \"Stripe Credentials\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"pk_test_Tph4NiI7TYooMQaujxvdEDq5\",\n                \"line_num\": 3,\n                \"path\": \"./tests/samples/stripe_credentials\",\n                \"info\": \"FILE:./tests/samples/stripe_credentials|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"pk_test_Tph4NiI7TYooMQaujxvdEDq5\",\n                \"value_start\": 0,\n                \"value_end\": 32,\n                \"entropy\": 4.6875\n            }\n        ]\n    },\n    {\n        \"rule\": \"Stripe Credentials\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"rk_live_TsS4QI2dNfwyVM7YdjI78ehK\",\n                \"line_num\": 4,\n                \"path\": \"./tests/samples/stripe_credentials\",\n                \"info\": \"FILE:./tests/samples/stripe_credentials|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"rk_live_TsS4QI2dNfwyVM7YdjI78ehK\",\n                \"value_start\": 0,\n                \"value_end\": 32,\n                \"entropy\": 4.6875\n            }\n        ]\n    },\n    {\n        \"rule\": \"Stripe Credentials\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"sk_test_T1z4jtdp7dcC39HqLyjWareD\",\n                \"line_num\": 5,\n                \"path\": \"./tests/samples/stripe_credentials\",\n                \"info\": \"FILE:./tests/samples/stripe_credentials|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"sk_test_T1z4jtdp7dcC39HqLyjWareD\",\n                \"value_start\": 0,\n                \"value_end\": 32,\n                \"entropy\": 4.53891\n            }\n        ]\n    },\n    {\n        \"rule\": \"Stripe Credentials\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"pk_live_KQI2pIpqzh1Nv2ZXfJBqUJItqoO5WdI6zUkITxodxICz85zC00cv0Gk63bDVUMwIymb3zKTeiqfU588jyYJdNYekpiI56wY0IIx\",\n                \"line_num\": 6,\n                \"path\": \"./tests/samples/stripe_credentials\",\n                \"info\": \"FILE:./tests/samples/stripe_credentials|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"pk_live_KQI2pIpqzh1Nv2ZXfJBqUJItqoO5WdI6zUkITxodxICz85zC00cv0Gk63bDVUMwIymb3zKTeiqfU588jyYJdNYekpiI56wY0IIx\",\n                \"value_start\": 0,\n                \"value_end\": 107,\n                \"entropy\": 5.24966\n            }\n        ]\n    },\n    {\n        \"rule\": \"Stripe Credentials\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"sk_test_KQI2pIpqzh1Nv2ZXfyfDQUTUQ63Cw359VjKMwtfJ000DsiXxtcVuxT40W8QRSYWZLQZxszLqOMkbYwYWDV1xKCmRKWR3kgSpi9h\",\n                \"line_num\": 7,\n                \"path\": \"./tests/samples/stripe_credentials\",\n                \"info\": \"FILE:./tests/samples/stripe_credentials|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"sk_test_KQI2pIpqzh1Nv2ZXfyfDQUTUQ63Cw359VjKMwtfJ000DsiXxtcVuxT40W8QRSYWZLQZxszLqOMkbYwYWDV1xKCmRKWR3kgSpi9h\",\n                \"value_start\": 0,\n                \"value_end\": 107,\n                \"entropy\": 5.44092\n            }\n        ]\n    },\n    {\n        \"rule\": \"Stripe Credentials\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"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\",\n                \"line_num\": 8,\n                \"path\": \"./tests/samples/stripe_credentials\",\n                \"info\": \"FILE:./tests/samples/stripe_credentials|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"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\",\n                \"value_start\": 0,\n                \"value_end\": 107,\n                \"entropy\": 5.50064\n            }\n        ]\n    },\n    {\n        \"rule\": \"Stripe Credentials\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"whsec_IsQVcHgjVWTBwlClIsICTD0mpDr4gJ4m\",\n                \"line_num\": 9,\n                \"path\": \"./tests/samples/stripe_credentials\",\n                \"info\": \"FILE:./tests/samples/stripe_credentials|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"whsec_IsQVcHgjVWTBwlClIsICTD0mpDr4gJ4m\",\n                \"value_start\": 0,\n                \"value_end\": 38,\n                \"entropy\": 4.47135\n            }\n        ]\n    },\n    {\n        \"rule\": \"Stripe Credentials\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"whsec_Q4KGL7AstjhYfzCtzK2RTB2EmncHgjVW\",\n                \"line_num\": 10,\n                \"path\": \"./tests/samples/stripe_credentials\",\n                \"info\": \"FILE:./tests/samples/stripe_credentials|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"whsec_Q4KGL7AstjhYfzCtzK2RTB2EmncHgjVW\",\n                \"value_start\": 0,\n                \"value_end\": 38,\n                \"entropy\": 4.82687\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"password = 'Axt4T0eO0lm9sS=='\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/struct.json\",\n                \"info\": \"FILE:./tests/samples/struct.json|STRUCT|KEYWORD\",\n                \"variable\": \"password\",\n                \"variable_start\": 0,\n                \"variable_end\": 8,\n                \"value\": \"Axt4T0eO0lm9sS==\",\n                \"value_start\": 12,\n                \"value_end\": 28,\n                \"entropy\": 3.75\n            }\n        ]\n    },\n    {\n        \"rule\": \"Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.902,\n        \"line_data_list\": [\n            {\n                \"line\": \"token : bace4d19-fa7e-beer-care-9129474bcd81\",\n                \"line_num\": 19,\n                \"path\": \"./tests/samples/table.html\",\n                \"info\": \"FILE:./tests/samples/table.html|HTML\",\n                \"variable\": \"token\",\n                \"variable_start\": 0,\n                \"variable_end\": 5,\n                \"value\": \"bace4d19-fa7e-beer-care-9129474bcd81\",\n                \"value_start\": 8,\n                \"value_end\": 44,\n                \"entropy\": 3.66606\n            }\n        ]\n    },\n    {\n        \"rule\": \"Secret\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.884,\n        \"line_data_list\": [\n            {\n                \"line\": \"secret : 5EcRe7_r0\",\n                \"line_num\": 20,\n                \"path\": \"./tests/samples/table.html\",\n                \"info\": \"FILE:./tests/samples/table.html|HTML\",\n                \"variable\": \"secret\",\n                \"variable_start\": 0,\n                \"variable_end\": 6,\n                \"value\": \"5EcRe7_r0\",\n                \"value_start\": 9,\n                \"value_end\": 18,\n                \"entropy\": 3.16993\n            }\n        ]\n    },\n    {\n        \"rule\": \"Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.961,\n        \"line_data_list\": [\n            {\n                \"line\": \"key : AK1AGIREOGIAWSKEY555\",\n                \"line_num\": 21,\n                \"path\": \"./tests/samples/table.html\",\n                \"info\": \"FILE:./tests/samples/table.html|HTML\",\n                \"variable\": \"key\",\n                \"variable_start\": 0,\n                \"variable_end\": 3,\n                \"value\": \"AK1AGIREOGIAWSKEY555\",\n                \"value_start\": 6,\n                \"value_end\": 26,\n                \"entropy\": 3.44644\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.999,\n        \"line_data_list\": [\n            {\n                \"line\": \"password : Pas1wrD0\",\n                \"line_num\": 22,\n                \"path\": \"./tests/samples/table.html\",\n                \"info\": \"FILE:./tests/samples/table.html|HTML\",\n                \"variable\": \"password\",\n                \"variable_start\": 0,\n                \"variable_end\": 8,\n                \"value\": \"Pas1wrD0\",\n                \"value_start\": 11,\n                \"value_end\": 19,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.922,\n        \"line_data_list\": [\n            {\n                \"line\": \"token : bace4d19-fa7e-beer-care-9129474bcd82\",\n                \"line_num\": 25,\n                \"path\": \"./tests/samples/table.html\",\n                \"info\": \"FILE:./tests/samples/table.html|HTML\",\n                \"variable\": \"token\",\n                \"variable_start\": 0,\n                \"variable_end\": 5,\n                \"value\": \"bace4d19-fa7e-beer-care-9129474bcd82\",\n                \"value_start\": 8,\n                \"value_end\": 44,\n                \"entropy\": 3.68703\n            }\n        ]\n    },\n    {\n        \"rule\": \"Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.993,\n        \"line_data_list\": [\n            {\n                \"line\": \"key : SDFHBH2398SG5VF62VZVQFG2TYGVF9WYSGR\",\n                \"line_num\": 27,\n                \"path\": \"./tests/samples/table.html\",\n                \"info\": \"FILE:./tests/samples/table.html|HTML\",\n                \"variable\": \"key\",\n                \"variable_start\": 0,\n                \"variable_end\": 3,\n                \"value\": \"SDFHBH2398SG5VF62VZVQFG2TYGVF9WYSGR\",\n                \"value_start\": 6,\n                \"value_end\": 41,\n                \"entropy\": 4.00043\n            }\n        ]\n    },\n    {\n        \"rule\": \"Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"key : 3TJDSLKGDFG4MTB34UHWYYSDFHKSDKJH34S\",\n                \"line_num\": 29,\n                \"path\": \"./tests/samples/table.html\",\n                \"info\": \"FILE:./tests/samples/table.html|HTML\",\n                \"variable\": \"key\",\n                \"variable_start\": 0,\n                \"variable_end\": 3,\n                \"value\": \"3TJDSLKGDFG4MTB34UHWYYSDFHKSDKJH34S\",\n                \"value_start\": 6,\n                \"value_end\": 41,\n                \"entropy\": 3.84301\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.999,\n        \"line_data_list\": [\n            {\n                \"line\": \"password : Pas1wrD2\",\n                \"line_num\": 30,\n                \"path\": \"./tests/samples/table.html\",\n                \"info\": \"FILE:./tests/samples/table.html|HTML\",\n                \"variable\": \"password\",\n                \"variable_start\": 0,\n                \"variable_end\": 8,\n                \"value\": \"Pas1wrD2\",\n                \"value_start\": 11,\n                \"value_end\": 19,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.919,\n        \"line_data_list\": [\n            {\n                \"line\": \"token : bace4d19-fa7e-beer-care-9129474bcd83\",\n                \"line_num\": 34,\n                \"path\": \"./tests/samples/table.html\",\n                \"info\": \"FILE:./tests/samples/table.html|HTML\",\n                \"variable\": \"token\",\n                \"variable_start\": 0,\n                \"variable_end\": 5,\n                \"value\": \"bace4d19-fa7e-beer-care-9129474bcd83\",\n                \"value_start\": 8,\n                \"value_end\": 44,\n                \"entropy\": 3.74259\n            }\n        ]\n    },\n    {\n        \"rule\": \"Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.676,\n        \"line_data_list\": [\n            {\n                \"line\": \"key : 3216-4010-0284-8946\",\n                \"line_num\": 37,\n                \"path\": \"./tests/samples/table.html\",\n                \"info\": \"FILE:./tests/samples/table.html|HTML\",\n                \"variable\": \"key\",\n                \"variable_start\": 0,\n                \"variable_end\": 3,\n                \"value\": \"3216-4010-0284-8946\",\n                \"value_start\": 6,\n                \"value_end\": 25,\n                \"entropy\": 3.0761\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.999,\n        \"line_data_list\": [\n            {\n                \"line\": \"password : Pas1wrD3\",\n                \"line_num\": 38,\n                \"path\": \"./tests/samples/table.html\",\n                \"info\": \"FILE:./tests/samples/table.html|HTML\",\n                \"variable\": \"password\",\n                \"variable_start\": 0,\n                \"variable_end\": 8,\n                \"value\": \"Pas1wrD3\",\n                \"value_start\": 11,\n                \"value_end\": 19,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.94,\n        \"line_data_list\": [\n            {\n                \"line\": \"token : bace4d19-fa7e-beer-care-9129474bcd85\",\n                \"line_num\": 42,\n                \"path\": \"./tests/samples/table.html\",\n                \"info\": \"FILE:./tests/samples/table.html|HTML\",\n                \"variable\": \"token\",\n                \"variable_start\": 0,\n                \"variable_end\": 5,\n                \"value\": \"bace4d19-fa7e-beer-care-9129474bcd85\",\n                \"value_start\": 8,\n                \"value_end\": 44,\n                \"entropy\": 3.74259\n            }\n        ]\n    },\n    {\n        \"rule\": \"Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.95,\n        \"line_data_list\": [\n            {\n                \"line\": \"token : bace4d19-fa7e-beer-care-9129474bcd86\",\n                \"line_num\": 43,\n                \"path\": \"./tests/samples/table.html\",\n                \"info\": \"FILE:./tests/samples/table.html|HTML\",\n                \"variable\": \"token\",\n                \"variable_start\": 0,\n                \"variable_end\": 5,\n                \"value\": \"bace4d19-fa7e-beer-care-9129474bcd86\",\n                \"value_start\": 8,\n                \"value_end\": 44,\n                \"entropy\": 3.74259\n            }\n        ]\n    },\n    {\n        \"rule\": \"Secret\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.941,\n        \"line_data_list\": [\n            {\n                \"line\": \"secret : 5EcRe7_r4\",\n                \"line_num\": 44,\n                \"path\": \"./tests/samples/table.html\",\n                \"info\": \"FILE:./tests/samples/table.html|HTML\",\n                \"variable\": \"secret\",\n                \"variable_start\": 0,\n                \"variable_end\": 6,\n                \"value\": \"5EcRe7_r4\",\n                \"value_start\": 9,\n                \"value_end\": 18,\n                \"entropy\": 3.16993\n            }\n        ]\n    },\n    {\n        \"rule\": \"Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.992,\n        \"line_data_list\": [\n            {\n                \"line\": \"key : 741852-321654-963852-654913\",\n                \"line_num\": 45,\n                \"path\": \"./tests/samples/table.html\",\n                \"info\": \"FILE:./tests/samples/table.html|HTML\",\n                \"variable\": \"key\",\n                \"variable_start\": 0,\n                \"variable_end\": 3,\n                \"value\": \"741852-321654-963852-654913\",\n                \"value_start\": 6,\n                \"value_end\": 33,\n                \"entropy\": 3.2538\n            }\n        ]\n    },\n    {\n        \"rule\": \"Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.932,\n        \"line_data_list\": [\n            {\n                \"line\": \"key : 184824-202847-623730-837462\",\n                \"line_num\": 46,\n                \"path\": \"./tests/samples/table.html\",\n                \"info\": \"FILE:./tests/samples/table.html|HTML\",\n                \"variable\": \"key\",\n                \"variable_start\": 0,\n                \"variable_end\": 3,\n                \"value\": \"184824-202847-623730-837462\",\n                \"value_start\": 6,\n                \"value_end\": 33,\n                \"entropy\": 3.05584\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"password : Pas1wrD4\",\n                \"line_num\": 47,\n                \"path\": \"./tests/samples/table.html\",\n                \"info\": \"FILE:./tests/samples/table.html|HTML\",\n                \"variable\": \"password\",\n                \"variable_start\": 0,\n                \"variable_end\": 8,\n                \"value\": \"Pas1wrD4\",\n                \"value_start\": 11,\n                \"value_end\": 19,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.952,\n        \"line_data_list\": [\n            {\n                \"line\": \"token : bace4d19-fa7e-beer-care-9129474bcd87\",\n                \"line_num\": 51,\n                \"path\": \"./tests/samples/table.html\",\n                \"info\": \"FILE:./tests/samples/table.html|HTML\",\n                \"variable\": \"token\",\n                \"variable_start\": 0,\n                \"variable_end\": 5,\n                \"value\": \"bace4d19-fa7e-beer-care-9129474bcd87\",\n                \"value_start\": 8,\n                \"value_end\": 44,\n                \"entropy\": 3.66606\n            }\n        ]\n    },\n    {\n        \"rule\": \"Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.944,\n        \"line_data_list\": [\n            {\n                \"line\": \"token : bace4d19-fa7e-beer-care-9129474bcd88\",\n                \"line_num\": 52,\n                \"path\": \"./tests/samples/table.html\",\n                \"info\": \"FILE:./tests/samples/table.html|HTML\",\n                \"variable\": \"token\",\n                \"variable_start\": 0,\n                \"variable_end\": 5,\n                \"value\": \"bace4d19-fa7e-beer-care-9129474bcd88\",\n                \"value_start\": 8,\n                \"value_end\": 44,\n                \"entropy\": 3.68703\n            }\n        ]\n    },\n    {\n        \"rule\": \"Secret\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.875,\n        \"line_data_list\": [\n            {\n                \"line\": \"secret : 5EcRe7_r5\",\n                \"line_num\": 53,\n                \"path\": \"./tests/samples/table.html\",\n                \"info\": \"FILE:./tests/samples/table.html|HTML\",\n                \"variable\": \"secret\",\n                \"variable_start\": 0,\n                \"variable_end\": 6,\n                \"value\": \"5EcRe7_r5\",\n                \"value_start\": 9,\n                \"value_end\": 18,\n                \"entropy\": 2.9477\n            }\n        ]\n    },\n    {\n        \"rule\": \"Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.994,\n        \"line_data_list\": [\n            {\n                \"line\": \"key : 321654-741852-963852-654980\",\n                \"line_num\": 54,\n                \"path\": \"./tests/samples/table.html\",\n                \"info\": \"FILE:./tests/samples/table.html|HTML\",\n                \"variable\": \"key\",\n                \"variable_start\": 0,\n                \"variable_end\": 3,\n                \"value\": \"321654-741852-963852-654980\",\n                \"value_start\": 6,\n                \"value_end\": 33,\n                \"entropy\": 3.35583\n            }\n        ]\n    },\n    {\n        \"rule\": \"Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.993,\n        \"line_data_list\": [\n            {\n                \"line\": \"key : 321654-741852-963852-654981\",\n                \"line_num\": 55,\n                \"path\": \"./tests/samples/table.html\",\n                \"info\": \"FILE:./tests/samples/table.html|HTML\",\n                \"variable\": \"key\",\n                \"variable_start\": 0,\n                \"variable_end\": 3,\n                \"value\": \"321654-741852-963852-654981\",\n                \"value_start\": 6,\n                \"value_end\": 33,\n                \"entropy\": 3.2538\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"password : Pas1wrD5\",\n                \"line_num\": 56,\n                \"path\": \"./tests/samples/table.html\",\n                \"info\": \"FILE:./tests/samples/table.html|HTML\",\n                \"variable\": \"password\",\n                \"variable_start\": 0,\n                \"variable_end\": 8,\n                \"value\": \"Pas1wrD5\",\n                \"value_start\": 11,\n                \"value_end\": 19,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.947,\n        \"line_data_list\": [\n            {\n                \"line\": \"token : bace4d19-fa7e-beer-care-9129474bcd89\",\n                \"line_num\": 60,\n                \"path\": \"./tests/samples/table.html\",\n                \"info\": \"FILE:./tests/samples/table.html|HTML\",\n                \"variable\": \"token\",\n                \"variable_start\": 0,\n                \"variable_end\": 5,\n                \"value\": \"bace4d19-fa7e-beer-care-9129474bcd89\",\n                \"value_start\": 8,\n                \"value_end\": 44,\n                \"entropy\": 3.65245\n            }\n        ]\n    },\n    {\n        \"rule\": \"Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.91,\n        \"line_data_list\": [\n            {\n                \"line\": \"token : bace4d19-fa7e-beer-care-9129474bcd80\",\n                \"line_num\": 61,\n                \"path\": \"./tests/samples/table.html\",\n                \"info\": \"FILE:./tests/samples/table.html|HTML\",\n                \"variable\": \"token\",\n                \"variable_start\": 0,\n                \"variable_end\": 5,\n                \"value\": \"bace4d19-fa7e-beer-care-9129474bcd80\",\n                \"value_start\": 8,\n                \"value_end\": 44,\n                \"entropy\": 3.74259\n            }\n        ]\n    },\n    {\n        \"rule\": \"Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.995,\n        \"line_data_list\": [\n            {\n                \"line\": \"key : 321654-963852-654987-741851\",\n                \"line_num\": 62,\n                \"path\": \"./tests/samples/table.html\",\n                \"info\": \"FILE:./tests/samples/table.html|HTML\",\n                \"variable\": \"key\",\n                \"variable_start\": 0,\n                \"variable_end\": 3,\n                \"value\": \"321654-963852-654987-741851\",\n                \"value_start\": 6,\n                \"value_end\": 33,\n                \"entropy\": 3.28176\n            }\n        ]\n    },\n    {\n        \"rule\": \"Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.996,\n        \"line_data_list\": [\n            {\n                \"line\": \"key : 321654-963852-654987-741853\",\n                \"line_num\": 63,\n                \"path\": \"./tests/samples/table.html\",\n                \"info\": \"FILE:./tests/samples/table.html|HTML\",\n                \"variable\": \"key\",\n                \"variable_start\": 0,\n                \"variable_end\": 3,\n                \"value\": \"321654-963852-654987-741853\",\n                \"value_start\": 6,\n                \"value_end\": 33,\n                \"entropy\": 3.28176\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"password : Pas1wrD67\",\n                \"line_num\": 64,\n                \"path\": \"./tests/samples/table.html\",\n                \"info\": \"FILE:./tests/samples/table.html|HTML\",\n                \"variable\": \"password\",\n                \"variable_start\": 0,\n                \"variable_end\": 8,\n                \"value\": \"Pas1wrD67\",\n                \"value_start\": 11,\n                \"value_end\": 20,\n                \"entropy\": 3.16993\n            }\n        ]\n    },\n    {\n        \"rule\": \"Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.813,\n        \"line_data_list\": [\n            {\n                \"line\": \"token : bace4d19-fa7e-beer-care-9129474bcd11\",\n                \"line_num\": 67,\n                \"path\": \"./tests/samples/table.html\",\n                \"info\": \"FILE:./tests/samples/table.html|HTML\",\n                \"variable\": \"token\",\n                \"variable_start\": 0,\n                \"variable_end\": 5,\n                \"value\": \"bace4d19-fa7e-beer-care-9129474bcd11\",\n                \"value_start\": 8,\n                \"value_end\": 44,\n                \"entropy\": 3.57592\n            }\n        ]\n    },\n    {\n        \"rule\": \"Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.876,\n        \"line_data_list\": [\n            {\n                \"line\": \"token : bace4d19-fa7e-beer-care-9129474bcd22\",\n                \"line_num\": 68,\n                \"path\": \"./tests/samples/table.html\",\n                \"info\": \"FILE:./tests/samples/table.html|HTML\",\n                \"variable\": \"token\",\n                \"variable_start\": 0,\n                \"variable_end\": 5,\n                \"value\": \"bace4d19-fa7e-beer-care-9129474bcd22\",\n                \"value_start\": 8,\n                \"value_end\": 44,\n                \"entropy\": 3.61051\n            }\n        ]\n    },\n    {\n        \"rule\": \"Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.991,\n        \"line_data_list\": [\n            {\n                \"line\": \"key : 654987-321654-963852-741851\",\n                \"line_num\": 69,\n                \"path\": \"./tests/samples/table.html\",\n                \"info\": \"FILE:./tests/samples/table.html|HTML\",\n                \"variable\": \"key\",\n                \"variable_start\": 0,\n                \"variable_end\": 3,\n                \"value\": \"654987-321654-963852-741851\",\n                \"value_start\": 6,\n                \"value_end\": 33,\n                \"entropy\": 3.28176\n            }\n        ]\n    },\n    {\n        \"rule\": \"Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.992,\n        \"line_data_list\": [\n            {\n                \"line\": \"key : 654987-321654-963852-741852\",\n                \"line_num\": 70,\n                \"path\": \"./tests/samples/table.html\",\n                \"info\": \"FILE:./tests/samples/table.html|HTML\",\n                \"variable\": \"key\",\n                \"variable_start\": 0,\n                \"variable_end\": 3,\n                \"value\": \"654987-321654-963852-741852\",\n                \"value_start\": 6,\n                \"value_end\": 33,\n                \"entropy\": 3.28176\n            }\n        ]\n    },\n    {\n        \"rule\": \"Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.992,\n        \"line_data_list\": [\n            {\n                \"line\": \"key : 654987-321654-963852-741853\",\n                \"line_num\": 71,\n                \"path\": \"./tests/samples/table.html\",\n                \"info\": \"FILE:./tests/samples/table.html|HTML\",\n                \"variable\": \"key\",\n                \"variable_start\": 0,\n                \"variable_end\": 3,\n                \"value\": \"654987-321654-963852-741853\",\n                \"value_start\": 6,\n                \"value_end\": 33,\n                \"entropy\": 3.28176\n            }\n        ]\n    },\n    {\n        \"rule\": \"Telegram Bot API Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"508627689:AAEuLPKs-EhrjrYGnz60bnYNZqakf6HJxc0\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/telegram_api_key\",\n                \"info\": \"FILE:./tests/samples/telegram_api_key|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"508627689:AAEuLPKs-EhrjrYGnz60bnYNZqakf6HJxc0\",\n                \"value_start\": 0,\n                \"value_end\": 45,\n                \"entropy\": 4.94174\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.974,\n        \"line_data_list\": [\n            {\n                \"line\": \"td : Password:            MU$T6Ef09#D!\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/test.html\",\n                \"info\": \"FILE:./tests/samples/test.html|XML\",\n                \"variable\": \"Password\",\n                \"variable_start\": 5,\n                \"variable_end\": 13,\n                \"value\": \"MU$T6Ef09#D!\",\n                \"value_start\": 26,\n                \"value_end\": 38,\n                \"entropy\": 3.58496\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.989,\n        \"line_data_list\": [\n            {\n                \"line\": \"password : 0dm1nk0\",\n                \"line_num\": 29,\n                \"path\": \"./tests/samples/test.html\",\n                \"info\": \"FILE:./tests/samples/test.html|HTML\",\n                \"variable\": \"password\",\n                \"variable_start\": 0,\n                \"variable_end\": 8,\n                \"value\": \"0dm1nk0\",\n                \"value_start\": 11,\n                \"value_end\": 18,\n                \"entropy\": 2.52164\n            }\n        ]\n    },\n    {\n        \"rule\": \"Secret\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"secret : BNbNbws73bdhss329ssakKhds120384\",\n                \"line_num\": 32,\n                \"path\": \"./tests/samples/test.html\",\n                \"info\": \"FILE:./tests/samples/test.html|HTML\",\n                \"variable\": \"secret\",\n                \"variable_start\": 0,\n                \"variable_end\": 6,\n                \"value\": \"BNbNbws73bdhss329ssakKhds120384\",\n                \"value_start\": 9,\n                \"value_end\": 40,\n                \"entropy\": 3.88905\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"password : Cr3DeHTbIal\",\n                \"line_num\": 42,\n                \"path\": \"./tests/samples/test.html\",\n                \"info\": \"FILE:./tests/samples/test.html|HTML\",\n                \"variable\": \"password\",\n                \"variable_start\": 0,\n                \"variable_end\": 8,\n                \"value\": \"Cr3DeHTbIal\",\n                \"value_start\": 11,\n                \"value_end\": 22,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"Secret\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"secret : Ndjbwu88s22ygavsdhgt5454v3h1x\",\n                \"line_num\": 45,\n                \"path\": \"./tests/samples/test.html\",\n                \"info\": \"FILE:./tests/samples/test.html|HTML\",\n                \"variable\": \"secret\",\n                \"variable_start\": 0,\n                \"variable_end\": 6,\n                \"value\": \"Ndjbwu88s22ygavsdhgt5454v3h1x\",\n                \"value_start\": 9,\n                \"value_end\": 38,\n                \"entropy\": 4.23729\n            }\n        ]\n    },\n    {\n        \"rule\": \"Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.974,\n        \"line_data_list\": [\n            {\n                \"line\": \"token : H72gsdv2dswPneHduwhfd\",\n                \"line_num\": 65,\n                \"path\": \"./tests/samples/test.html\",\n                \"info\": \"FILE:./tests/samples/test.html|HTML\",\n                \"variable\": \"token\",\n                \"variable_start\": 0,\n                \"variable_end\": 5,\n                \"value\": \"H72gsdv2dswPneHduwhfd\",\n                \"value_start\": 8,\n                \"value_end\": 29,\n                \"entropy\": 3.63041\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.721,\n        \"line_data_list\": [\n            {\n                \"line\": \"password : p@$$w0Rd42\",\n                \"line_num\": 71,\n                \"path\": \"./tests/samples/test.html\",\n                \"info\": \"FILE:./tests/samples/test.html|HTML\",\n                \"variable\": \"password\",\n                \"variable_start\": 0,\n                \"variable_end\": 8,\n                \"value\": \"p@$$w0Rd42\",\n                \"value_start\": 11,\n                \"value_end\": 21,\n                \"entropy\": 3.12193\n            }\n        ]\n    },\n    {\n        \"rule\": \"Telegram Bot API Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"508627689:AAEuLPKs-EhrjrYGnz60bnYNZqakf6HJxc0\",\n                \"line_num\": 76,\n                \"path\": \"./tests/samples/test.html\",\n                \"info\": \"FILE:./tests/samples/test.html|HTML\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"508627689:AAEuLPKs-EhrjrYGnz60bnYNZqakf6HJxc0\",\n                \"value_start\": 0,\n                \"value_end\": 45,\n                \"entropy\": 4.94174\n            }\n        ]\n    },\n    {\n        \"rule\": \"Google OAuth Access Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"# 94 ya29.dshMb48ehfXwydAj34D32J\",\n                \"line_num\": 83,\n                \"path\": \"./tests/samples/test.html\",\n                \"info\": \"FILE:./tests/samples/test.html|HTML\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"ya29.dshMb48ehfXwydAj34D32J\",\n                \"value_start\": 5,\n                \"value_end\": 32,\n                \"entropy\": 4.31044\n            }\n        ]\n    },\n    {\n        \"rule\": \"Digital Ocean Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"# 95 dop_v1_425522a565f532bc6532d453422e50334a42f5242a3090fbe553b543b124259b\",\n                \"line_num\": 84,\n                \"path\": \"./tests/samples/test.html\",\n                \"info\": \"FILE:./tests/samples/test.html|HTML\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"dop_v1_425522a565f532bc6532d453422e50334a42f5242a3090fbe553b543b124259b\",\n                \"value_start\": 5,\n                \"value_end\": 76,\n                \"entropy\": 3.6568\n            }\n        ]\n    },\n    {\n        \"rule\": \"Google OAuth Access Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"# 94 ya29.dshMb48ehfXwydAj34D32J\",\n                \"line_num\": 86,\n                \"path\": \"./tests/samples/test.html\",\n                \"info\": \"FILE:./tests/samples/test.html|HTML\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"ya29.dshMb48ehfXwydAj34D32J\",\n                \"value_start\": 5,\n                \"value_end\": 32,\n                \"entropy\": 4.31044\n            }\n        ]\n    },\n    {\n        \"rule\": \"Digital Ocean Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"# 95 dop_v1_425522a565f532bc6532d453422e50334a42f5242a3090fbe553b543b124259b\",\n                \"line_num\": 87,\n                \"path\": \"./tests/samples/test.html\",\n                \"info\": \"FILE:./tests/samples/test.html|HTML\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"dop_v1_425522a565f532bc6532d453422e50334a42f5242a3090fbe553b543b124259b\",\n                \"value_start\": 5,\n                \"value_end\": 76,\n                \"entropy\": 3.6568\n            }\n        ]\n    },\n    {\n        \"rule\": \"Facebook Access Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"the line will be found twice # 100 EAACEb00Kse0BAlGy7KeQ5YnaCEd09Eose0cBAlGy7KeQ5Yna9CoDsup39tiYdoQ4jH9Coup39tiYdWoQ4jHFZD\",\n                \"line_num\": 89,\n                \"path\": \"./tests/samples/test.html\",\n                \"info\": \"FILE:./tests/samples/test.html|HTML\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"EAACEb00Kse0BAlGy7KeQ5YnaCEd09Eose0cBAlGy7KeQ5Yna9CoDsup39tiYdoQ4jH9Coup39tiYdWoQ4jHFZD\",\n                \"value_start\": 35,\n                \"value_end\": 122,\n                \"entropy\": 4.93612\n            }\n        ]\n    },\n    {\n        \"rule\": \"Facebook Access Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"the line will be found twice # 100 EAACEb00Kse0BAlGy7KeQ5YnaCEd09Eose0cBAlGy7KeQ5Yna9CoDsup39tiYdoQ4jH9Coup39tiYdWoQ4jHFZD\",\n                \"line_num\": 94,\n                \"path\": \"./tests/samples/test.html\",\n                \"info\": \"FILE:./tests/samples/test.html|HTML\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"EAACEb00Kse0BAlGy7KeQ5YnaCEd09Eose0cBAlGy7KeQ5Yna9CoDsup39tiYdoQ4jH9Coup39tiYdWoQ4jHFZD\",\n                \"value_start\": 35,\n                \"value_end\": 122,\n                \"entropy\": 4.93612\n            }\n        ]\n    },\n    {\n        \"rule\": \"SQL Password\",\n        \"severity\": \"medium\",\n        \"confidence\": \"weak\",\n        \"ml_probability\": 0.994,\n        \"line_data_list\": [\n            {\n                \"line\": \"ALTER\\tUSER\\tdetector\\tIDENTIFIED\\tBY\\tSqLpa5sW0rD4;\",\n                \"line_num\": 110,\n                \"path\": \"./tests/samples/test.html\",\n                \"info\": \"FILE:./tests/samples/test.html|HTML\",\n                \"variable\": \"ALTER\\tUSER\\tdetector\\tIDENTIFIED\\tBY\",\n                \"variable_start\": 0,\n                \"variable_end\": 33,\n                \"value\": \"SqLpa5sW0rD4\",\n                \"value_start\": 34,\n                \"value_end\": 46,\n                \"entropy\": 3.58496\n            }\n        ]\n    },\n    {\n        \"rule\": \"Grafana Provisioned API Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"token in zip: eyJrIjoiMDAwMDAwNDAwMDAwODAwMDAwMDAwMDAwNDAwMDAwMDAwMDAwMDAyMSIsIm4iOiJ4eHh4IiwiaWQiOjQzMDh9Cg\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/test2.eml\",\n                \"info\": \"FILE:./tests/samples/test2.eml|EML-DATA|ZIP:token.txt|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"eyJrIjoiMDAwMDAwNDAwMDAwODAwMDAwMDAwMDAwNDAwMDAwMDAwMDAwMDAyMSIsIm4iOiJ4eHh4IiwiaWQiOjQzMDh9Cg\",\n                \"value_start\": 14,\n                \"value_end\": 108,\n                \"entropy\": 4.00615\n            }\n        ]\n    },\n    {\n        \"rule\": \"Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"token in zip: eyJrIjoiMDAwMDAwNDAwMDAwODAwMDAwMDAwMDAwNDAwMDAwMDAwMDAwMDAyMSIsIm4iOiJ4eHh4IiwiaWQiOjQzMDh9Cg\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/test2.eml\",\n                \"info\": \"FILE:./tests/samples/test2.eml|EML-DATA|ZIP:token.txt|RAW\",\n                \"variable\": \"token in zip\",\n                \"variable_start\": 0,\n                \"variable_end\": 12,\n                \"value\": \"eyJrIjoiMDAwMDAwNDAwMDAwODAwMDAwMDAwMDAwNDAwMDAwMDAwMDAwMDAyMSIsIm4iOiJ4eHh4IiwiaWQiOjQzMDh9Cg\",\n                \"value_start\": 14,\n                \"value_end\": 108,\n                \"entropy\": 4.00615\n            }\n        ]\n    },\n    {\n        \"rule\": \"Grafana Provisioned API Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"token in text: eyJrIjoiMDAwMDAwNDAwMDAwODAwNDAwMDAwMDAwNDAwMDAwMDAwMDAwMDAyMSIsIm4iOiJ4eHh4IiwiaWQiOjQzMDh9Cg\",\n                \"line_num\": 8,\n                \"path\": \"./tests/samples/test2.eml\",\n                \"info\": \"FILE:./tests/samples/test2.eml|EML-TEXT\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"eyJrIjoiMDAwMDAwNDAwMDAwODAwNDAwMDAwMDAwNDAwMDAwMDAwMDAwMDAyMSIsIm4iOiJ4eHh4IiwiaWQiOjQzMDh9Cg\",\n                \"value_start\": 15,\n                \"value_end\": 109,\n                \"entropy\": 4.02967\n            }\n        ]\n    },\n    {\n        \"rule\": \"Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"token in text: eyJrIjoiMDAwMDAwNDAwMDAwODAwNDAwMDAwMDAwNDAwMDAwMDAwMDAwMDAyMSIsIm4iOiJ4eHh4IiwiaWQiOjQzMDh9Cg\",\n                \"line_num\": 8,\n                \"path\": \"./tests/samples/test2.eml\",\n                \"info\": \"FILE:./tests/samples/test2.eml|EML-TEXT\",\n                \"variable\": \"token in text\",\n                \"variable_start\": 0,\n                \"variable_end\": 13,\n                \"value\": \"eyJrIjoiMDAwMDAwNDAwMDAwODAwNDAwMDAwMDAwNDAwMDAwMDAwMDAwMDAyMSIsIm4iOiJ4eHh4IiwiaWQiOjQzMDh9Cg\",\n                \"value_start\": 15,\n                \"value_end\": 109,\n                \"entropy\": 4.02967\n            }\n        ]\n    },\n    {\n        \"rule\": \"Together AI API Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"tgp_v1_45j-rhExaIPrLzTp--mCXcQwaWyNYUK86IG0_XWnNqc\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/together\",\n                \"info\": \"FILE:./tests/samples/together|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"tgp_v1_45j-rhExaIPrLzTp--mCXcQwaWyNYUK86IG0_XWnNqc\",\n                \"value_start\": 0,\n                \"value_end\": 50,\n                \"entropy\": 5.13366\n            }\n        ]\n    },\n    {\n        \"rule\": \"Together AI API Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"tgp_v1_LRvIfXDN2VjuqCi5zcGzrM3oIwIOhhIZd9H8JmE2CpR\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/together\",\n                \"info\": \"FILE:./tests/samples/together|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"tgp_v1_LRvIfXDN2VjuqCi5zcGzrM3oIwIOhhIZd9H8JmE2CpR\",\n                \"value_start\": 0,\n                \"value_end\": 50,\n                \"entropy\": 5.16386\n            }\n        ]\n    },\n    {\n        \"rule\": \"Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"gi_reo_gi_token = \\\"G1Re06G1BdgNseiJDN21Z094M\\\"\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/token.toml\",\n                \"info\": \"FILE:./tests/samples/token.toml|RAW\",\n                \"variable\": \"gi_reo_gi_token\",\n                \"variable_start\": 0,\n                \"variable_end\": 15,\n                \"value\": \"G1Re06G1BdgNseiJDN21Z094M\",\n                \"value_start\": 19,\n                \"value_end\": 44,\n                \"entropy\": 4.13366\n            }\n        ]\n    },\n    {\n        \"rule\": \"Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"Token-> DemoToken: Nxs094M3ed2s1Re0F4M3ed2GZ8M= <- for User : demo\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/token.toml\",\n                \"info\": \"FILE:./tests/samples/token.toml|RAW\",\n                \"variable\": \"DemoToken\",\n                \"variable_start\": 8,\n                \"variable_end\": 17,\n                \"value\": \"Nxs094M3ed2s1Re0F4M3ed2GZ8M=\",\n                \"value_start\": 19,\n                \"value_end\": 47,\n                \"entropy\": 4.03915\n            }\n        ]\n    },\n    {\n        \"rule\": \"Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"tp_token_value=\\\"b035d48j9X2dfjF0hb9sd8Guf5hWu2ia\\\"\",\n                \"line_num\": 4,\n                \"path\": \"./tests/samples/token.toml\",\n                \"info\": \"FILE:./tests/samples/token.toml|RAW\",\n                \"variable\": \"tp_token_value\",\n                \"variable_start\": 0,\n                \"variable_end\": 14,\n                \"value\": \"b035d48j9X2dfjF0hb9sd8Guf5hWu2ia\",\n                \"value_start\": 16,\n                \"value_end\": 48,\n                \"entropy\": 4.22641\n            }\n        ]\n    },\n    {\n        \"rule\": \"Tavily API Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"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  # TP\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/tvly\",\n                \"info\": \"FILE:./tests/samples/tvly|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"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\",\n                \"value_start\": 0,\n                \"value_end\": 37,\n                \"entropy\": 4.84432\n            }\n        ]\n    },\n    {\n        \"rule\": \"Twilio Credentials\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"SK4D2F64E2A108CD72F648B1984C3B5A13\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/twilio_credentials_p\",\n                \"info\": \"FILE:./tests/samples/twilio_credentials_p|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"SK4D2F64E2A108CD72F648B1984C3B5A13\",\n                \"value_start\": 0,\n                \"value_end\": 34,\n                \"entropy\": 4.02086\n            }\n        ]\n    },\n    {\n        \"rule\": \"Twilio Credentials\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"AC4d2f64e2a108cd72f648b1984c3b5a13\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/twilio_credentials_p\",\n                \"info\": \"FILE:./tests/samples/twilio_credentials_p|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"AC4d2f64e2a108cd72f648b1984c3b5a13\",\n                \"value_start\": 0,\n                \"value_end\": 34,\n                \"entropy\": 4.02086\n            }\n        ]\n    },\n    {\n        \"rule\": \"URL Credentials\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"const connection_url = require('dbconnection://ad%6Din:5WdF4f2jE76a@db-host-local');\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/url_cred.js\",\n                \"info\": \"FILE:./tests/samples/url_cred.js|RAW\",\n                \"variable\": \"dbconnection://\",\n                \"variable_start\": 32,\n                \"variable_end\": 47,\n                \"value\": \"5WdF4f2jE76a\",\n                \"value_start\": 55,\n                \"value_end\": 67,\n                \"entropy\": 3.58496\n            }\n        ]\n    },\n    {\n        \"rule\": \"Credential\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"url = \\\"https://secure.com/83675/39084?Credential=546DFS64N90P3AW7DX%2Fkeep%26cut\\\";\",\n                \"line_num\": 3,\n                \"path\": \"./tests/samples/url_cred.js\",\n                \"info\": \"FILE:./tests/samples/url_cred.js|RAW\",\n                \"variable\": \"Credential\",\n                \"variable_start\": 38,\n                \"variable_end\": 48,\n                \"value\": \"546DFS64N90P3AW7DX%2Fkeep%26cut\",\n                \"value_start\": 49,\n                \"value_end\": 80,\n                \"entropy\": 4.41372\n            }\n        ]\n    },\n    {\n        \"rule\": \"Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"39084?Credential=546DFS64N90P3AW7DX&key=3487263-2384579834-234732875-345&hasToBefound=2\",\n                \"line_num\": 10,\n                \"path\": \"./tests/samples/url_cred.js\",\n                \"info\": \"FILE:./tests/samples/url_cred.js|RAW\",\n                \"variable\": \"key\",\n                \"variable_start\": 36,\n                \"variable_end\": 39,\n                \"value\": \"3487263-2384579834-234732875-345\",\n                \"value_start\": 40,\n                \"value_end\": 72,\n                \"entropy\": 2.97591\n            }\n        ]\n    },\n    {\n        \"rule\": \"Credential\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"39084?Credential=546DFS64N90P3AW7DX&key=3487263-2384579834-234732875-345&hasToBefound=2\",\n                \"line_num\": 10,\n                \"path\": \"./tests/samples/url_cred.js\",\n                \"info\": \"FILE:./tests/samples/url_cred.js|RAW\",\n                \"variable\": \"Credential\",\n                \"variable_start\": 6,\n                \"variable_end\": 16,\n                \"value\": \"546DFS64N90P3AW7DX\",\n                \"value_start\": 17,\n                \"value_end\": 35,\n                \"entropy\": 3.83659\n            }\n        ]\n    },\n    {\n        \"rule\": \"URL Credentials\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"email_as_login = \\\"smtps://example@gmail.com:FnD83JZs@smtp.gmail.com:465\\\";\",\n                \"line_num\": 13,\n                \"path\": \"./tests/samples/url_cred.js\",\n                \"info\": \"FILE:./tests/samples/url_cred.js|RAW\",\n                \"variable\": \"smtps://\",\n                \"variable_start\": 18,\n                \"variable_end\": 26,\n                \"value\": \"FnD83JZs\",\n                \"value_start\": 44,\n                \"value_end\": 52,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"url3d = \\\"https://localhost.com/013948?26timestamp%3D1395782596%26token%3Dh1d3Me4ch534d801sl3jdk%26version%3D3.14%26si\\\";\",\n                \"line_num\": 19,\n                \"path\": \"./tests/samples/url_cred.js\",\n                \"info\": \"FILE:./tests/samples/url_cred.js|RAW\",\n                \"variable\": \"token\",\n                \"variable_start\": 65,\n                \"variable_end\": 70,\n                \"value\": \"h1d3Me4ch534d801sl3jdk\",\n                \"value_start\": 73,\n                \"value_end\": 95,\n                \"entropy\": 3.75444\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"if (password !== \\\"PaS5w0rD2#\\\"){\",\n                \"line_num\": 21,\n                \"path\": \"./tests/samples/url_cred.js\",\n                \"info\": \"FILE:./tests/samples/url_cred.js|RAW\",\n                \"variable\": \"password\",\n                \"variable_start\": 4,\n                \"variable_end\": 12,\n                \"value\": \"PaS5w0rD2#\",\n                \"value_start\": 18,\n                \"value_end\": 28,\n                \"entropy\": 3.32193\n            }\n        ]\n    },\n    {\n        \"rule\": \"URL Credentials\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.933,\n        \"line_data_list\": [\n            {\n                \"line\": \"{\\\"line\\\": \\\"url: mongodb://jrfdeg42:p4Dsr8b@127.0.0.1:32768/architecture\\\"}\",\n                \"line_num\": 25,\n                \"path\": \"./tests/samples/url_cred.js\",\n                \"info\": \"FILE:./tests/samples/url_cred.js|RAW\",\n                \"variable\": \"mongodb://\",\n                \"variable_start\": 15,\n                \"variable_end\": 25,\n                \"value\": \"p4Dsr8b\",\n                \"value_start\": 34,\n                \"value_end\": 41,\n                \"entropy\": 2.80735\n            }\n        ]\n    },\n    {\n        \"rule\": \"UUID\",\n        \"severity\": \"info\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"bace4d19-fa7e-beef-cafe-9129474bcd81 # tp\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/uuid\",\n                \"info\": \"FILE:./tests/samples/uuid|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"bace4d19-fa7e-beef-cafe-9129474bcd81\",\n                \"value_start\": 0,\n                \"value_end\": 36,\n                \"entropy\": 3.58954\n            }\n        ]\n    },\n    {\n        \"rule\": \"UUID\",\n        \"severity\": \"info\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"bace4d19-fa7e-beef-cafe-9129474bcd81\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/uuid-update.patch\",\n                \"info\": \"FILE:./tests/samples/uuid-update.patch|PATCH:uuid:deleted\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"bace4d19-fa7e-beef-cafe-9129474bcd81\",\n                \"value_start\": 0,\n                \"value_end\": 36,\n                \"entropy\": 3.58954\n            }\n        ]\n    },\n    {\n        \"rule\": \"UUID\",\n        \"severity\": \"info\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"bace4d19-fa7e-dead-beef-9129474bcd81\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/uuid-update.patch\",\n                \"info\": \"FILE:./tests/samples/uuid-update.patch|PATCH:uuid:added\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"bace4d19-fa7e-dead-beef-9129474bcd81\",\n                \"value_start\": 0,\n                \"value_end\": 36,\n                \"entropy\": 3.57592\n            }\n        ]\n    },\n    {\n        \"rule\": \"Vercel Token\",\n        \"severity\": \"medium\",\n        \"confidence\": \"weak\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"vcp_5G8LQP7fmw80eG7W8y0sWO1QFPuhsYUuLEqyd1ialdvz9r6pL4vzxkC3\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/vercel\",\n                \"info\": \"FILE:./tests/samples/vercel|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"vcp_5G8LQP7fmw80eG7W8y0sWO1QFPuhsYUuLEqyd1ialdvz9r6pL4vzxkC3\",\n                \"value_start\": 0,\n                \"value_end\": 60,\n                \"entropy\": 5.23581\n            }\n        ]\n    },\n    {\n        \"rule\": \"Tencent WeChat API App ID\",\n        \"severity\": \"medium\",\n        \"confidence\": \"weak\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"wxe191bc54fc7d529a\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/wechat_p\",\n                \"info\": \"FILE:./tests/samples/wechat_p|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"wxe191bc54fc7d529a\",\n                \"value_start\": 0,\n                \"value_end\": 18,\n                \"entropy\": 3.72548\n            }\n        ]\n    },\n    {\n        \"rule\": \"Tencent WeChat API App ID\",\n        \"severity\": \"medium\",\n        \"confidence\": \"weak\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"wx2274a335e18222d6\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/wechat_p\",\n                \"info\": \"FILE:./tests/samples/wechat_p|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"wx2274a335e18222d6\",\n                \"value_start\": 0,\n                \"value_end\": 18,\n                \"entropy\": 3.41383\n            }\n        ]\n    },\n    {\n        \"rule\": \"Tencent WeChat API App ID\",\n        \"severity\": \"medium\",\n        \"confidence\": \"weak\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"wx4d82d07e3eb5ba84\",\n                \"line_num\": 3,\n                \"path\": \"./tests/samples/wechat_p\",\n                \"info\": \"FILE:./tests/samples/wechat_p|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"wx4d82d07e3eb5ba84\",\n                \"value_start\": 0,\n                \"value_end\": 18,\n                \"entropy\": 3.61437\n            }\n        ]\n    },\n    {\n        \"rule\": \"X AI API Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"xai-wjluCw1zixzDiYOxeeGtIwuHjIyax8SukK2lFWtBRn1yfEPMQzv63sMCd1nzqylpuDXQjEGd19OJi3cL\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/xai\",\n                \"info\": \"FILE:./tests/samples/xai|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"xai-wjluCw1zixzDiYOxeeGtIwuHjIyax8SukK2lFWtBRn1yfEPMQzv63sMCd1nzqylpuDXQjEGd19OJi3cL\",\n                \"value_start\": 0,\n                \"value_end\": 84,\n                \"entropy\": 5.35637\n            }\n        ]\n    },\n    {\n        \"rule\": \"Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"token : IBOgIBAAJBAJtFfagSXdo0JmX6EdwWGvFMaXeOFY5xOTs3PWsn        hRFakQFbAuI769fdsbkjerfkjrekjnkerjnfkrejnfrejn==\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/xml_data.xml\",\n                \"info\": \"FILE:./tests/samples/xml_data.xml|XML\",\n                \"variable\": \"token\",\n                \"variable_start\": 0,\n                \"variable_end\": 5,\n                \"value\": \"IBOgIBAAJBAJtFfagSXdo0JmX6EdwWGvFMaXeOFY5xOTs3PWsn\",\n                \"value_start\": 8,\n                \"value_end\": 58,\n                \"entropy\": 4.83327\n            }\n        ]\n    },\n    {\n        \"rule\": \"Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.995,\n        \"line_data_list\": [\n            {\n                \"line\": \"token : \\\"IBOgIBAAJBAJtFfagSXdo0JmX6EdwWGvFMaXeOFY5xOTs3PWsn        hRFakQFbAuI769fdsbkjerfkjrekjnkerjnfkrejnfrejn==\\\"\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/xml_data.xml\",\n                \"info\": \"FILE:./tests/samples/xml_data.xml|XML\",\n                \"variable\": \"token\",\n                \"variable_start\": 0,\n                \"variable_end\": 5,\n                \"value\": \"IBOgIBAAJBAJtFfagSXdo0JmX6EdwWGvFMaXeOFY5xOTs3PWsn        hRFakQFbAuI769fdsbkjerfkjrekjnkerjnfkrejnfrejn==\",\n                \"value_start\": 9,\n                \"value_end\": 115,\n                \"entropy\": 5.09578\n            }\n        ]\n    },\n    {\n        \"rule\": \"BASE64 Private Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"data : MIIBOgIBAAJBAJtFfagSXdo0JmX6EdwWGvFMaXeOFY5xOTs3PWsnhRFakQFbAuI/        DaJSTVnp3ObjJPZhJs/P/XPWIKRNIglRqkkCAwEAAQJAbErPFMWah3EPxtfeVO1l        5R0yAZwrFKmLDO29/FoXyL2XbxthJlJmdMQgIYayZYn4W2PSq6C56AI201SlW7Ts        AQIhAMwBYS+NST98g0nytTRD1Y94n+yrhTlyWNR/uC4tT8SpAiEAwthlcs9UDPh5        BnaO8Y7A+im+Aw5ANIhJwSVBxB3QnKECIQCJm9ihic1B7MxmojgGxEcXGwfNTjl0        caRn2qszQs9O2QIgdaBFvkXDrADkry4rpVBU17ETcKzNvej4/Y0MYuTM54ECIGtT        EBUWuiacAxz/WKHb9WVp0F/zkRwucJ0Hr2W4P9cP\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/xml_data.xml\",\n                \"info\": \"FILE:./tests/samples/xml_data.xml|XML\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"MIIBOgIBAAJBAJtFfagSXdo0JmX6EdwWGvFMaXeOFY5xOTs3PWsnhRFakQFbAuI/        DaJSTVnp3ObjJPZhJs/P/XPWIKRNIglRqkkCAwEAAQJAbErPFMWah3EPxtfeVO1l        5R0yAZwrFKmLDO29/FoXyL2XbxthJlJmdMQgIYayZYn4W2PSq6C56AI201SlW7Ts        AQIhAMwBYS+NST98g0nytTRD1Y94n+yrhTlyWNR/uC4tT8SpAiEAwthlcs9UDPh5        BnaO8Y7A+im+Aw5ANIhJwSVBxB3QnKECIQCJm9ihic1B7MxmojgGxEcXGwfNTjl0        caRn2qszQs9O2QIgdaBFvkXDrADkry4rpVBU17ETcKzNvej4/Y0MYuTM54ECIGtT        EBUWuiacAxz/WKHb9WVp0F/zkRwucJ0Hr2W4P9cP\",\n                \"value_start\": 7,\n                \"value_end\": 479,\n                \"entropy\": 5.73206\n            }\n        ]\n    },\n    {\n        \"rule\": \"UUID\",\n        \"severity\": \"info\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"password : Password for authorization        BAIT: bace4d59-fa7e-beef-cafe-9129474bcd81\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/xml_password.xml\",\n                \"info\": \"FILE:./tests/samples/xml_password.xml|XML\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"bace4d59-fa7e-beef-cafe-9129474bcd81\",\n                \"value_start\": 51,\n                \"value_end\": 87,\n                \"entropy\": 3.66606\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.857,\n        \"line_data_list\": [\n            {\n                \"line\": \"password : cackle!\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/xml_password.xml\",\n                \"info\": \"FILE:./tests/samples/xml_password.xml|XML\",\n                \"variable\": \"password\",\n                \"variable_start\": 0,\n                \"variable_end\": 8,\n                \"value\": \"cackle!\",\n                \"value_start\": 11,\n                \"value_end\": 18,\n                \"entropy\": 2.52164\n            }\n        ]\n    }\n]"
  },
  {
    "path": "tests/data/doc.json",
    "content": "[\n    {\n        \"rule\": \"1Password Account Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"ops_eyJb11xLqNoZodWhBSRZjgXFblnyPe_NKm9AQtqj1-g2NkK6QBDIjHwxGYNea8w7cImHWxSXc4ISxk4G9R85CVS1TqBvOOOXycTTH0eqOnwcIGDCQelSMcMIXfHNQVE2pDBHWIsRHmjR-uMUS4SnCU3odPaE9i7BTpHI8mKYEyJzCXzsmLu-mfHfhPM2WffsDLSvlHGwNzVa6wCQio7lsOSrhsjsYkH_boPMB4ZUQ01hn-ix_yBaGvTrMEN6lAy4Z6Pd3KvPb9Pr6c-kI1ifadgIJfRUQJse3IuwLfxeqBUYdHXVgknJ71YECM0-Xg3xwcFjO8oQC1b6kJs2jGX-vdtbLt8MlGzUEn-zYmAam5cj5ye-b_4lVyQjzYrWTI2CP4EkWT7Jsv9KQPVlNye6HwOvUvpm2VHEQDrl-9Kb3XZwo6C53Df0xBfU5Rr6b9p8_r6XrrBGLZWqf2xZkh8pC4OXECo_JzZWNyZXRLZXkiO-jd180LqEfYwfv8_tnxyLXVDX989lmYjZGyJDisytEIwIIcsnnZLCabN-0bOgT_Api9RTXZt7q-9IVxSSm4sgK8ZJ96roIIeukKC_FWVfvZ7uCmGT-TrDc0Kvit44ulvWgt6uoTtMrLGzZYyAx8COjniLSpKk6OOv\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/1password\",\n                \"info\": \"FILE:./tests/samples/1password|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"ops_eyJb11xLqNoZodWhBSRZjgXFblnyPe_NKm9AQtqj1-g2NkK6QBDIjHwxGYNea8w7cImHWxSXc4ISxk4G9R85CVS1TqBvOOOXycTTH0eqOnwcIGDCQelSMcMIXfHNQVE2pDBHWIsRHmjR-uMUS4SnCU3odPaE9i7BTpHI8mKYEyJzCXzsmLu-mfHfhPM2WffsDLSvlHGwNzVa6wCQio7lsOSrhsjsYkH_boPMB4ZUQ01hn-ix_yBaGvTrMEN6lAy4Z6Pd3KvPb9Pr6c-kI1ifadgIJfRUQJse3IuwLfxeqBUYdHXVgknJ71YECM0-Xg3xwcFjO8oQC1b6kJs2jGX-vdtbLt8MlGzUEn-zYmAam5cj5ye-b_4lVyQjzYrWTI2CP4EkWT7Jsv9KQPVlNye6HwOvUvpm2VHEQDrl-9Kb3XZwo6C53Df0xBfU5Rr6b9p8_r6XrrBGLZWqf2xZkh8pC4OXECo_JzZWNyZXRLZXkiO-jd180LqEfYwfv8_tnxyLXVDX989lmYjZGyJDisytEIwIIcsnnZLCabN-0bOgT_Api9RTXZt7q-9IVxSSm4sgK8ZJ96roIIeukKC_FWVfvZ7uCmGT-TrDc0Kvit44ulvWgt6uoTtMrLGzZYyAx8COjniLSpKk6OOv\",\n                \"value_start\": 0,\n                \"value_end\": 656,\n                \"entropy\": 5.94326\n            }\n        ]\n    },\n    {\n        \"rule\": \"BASE64 encoded PEM Private Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"ZGVidWdDb250YWluZXI6CiAgaW1hZ2U6CiAgICB2ZXJzaW9uOiBpbnN0YWxsLWRlYnVnLXZlcnNpb24KaGVhcnRiZWF0U2NoZWR1bGU6IDEgMiAzIDQgNQppZGVudGl0eToKICBpc3N1ZXI6CiAgICB0bHM6CiAgICAgIGNydFBFTTogfAogICAgICAgIC0tLS0tQkVHSU4gQ0VSVElGSUNBVEUtLS0tLQogICAgICAgIE1JSUJ3RENDQVdlZ0F3SUJBZ0lSQUpSSWdaOFJ0TzhFd2cxWGVwZjhUNDR3Q2dZSUtvWkl6ajBFQXdJd0tURW4KICAgICAgICBna2RqaHNsa2Roa2dkamhza2pkZmtkamhna2RqaGtkZmpibmtkZm52amtoYnZqaGRiZGpmaGJmamhiZGZNRGd5CiAgICAgICAgbGZrZGprc2xkamdrbGpkZmtnamhkZmtnamhzZGZrbGdqc2RrbGpmZ2hsa2Rmamhsa3NkZmpsa3Nkamt1YkdsdQogICAgICAgIGxzZGpoZnY1NDZtZmRza2dqaGRmamtoZ2tqZGhramhkZmtqZ2hrZGZqaGdramRmaGtqZGZoZ2tqZmRoZ2tqRnAKICAgICAgICBmY1JkZmdoZmRnbWRuZ2tqeGRuYnZqbmN2a2pua2pkbmdram5mZGtqYmt2YmpibnZja2puYmpuZGRmZ2ZkZ3QxCiAgICAgICAgMmJsa2puZ2JramhnbGpkZmxnaGtsamRmbmdqZGZuZ25sZGZrbWxrZGZqZ21sZGZrZ21sa2ZkbWdsa2RtTUFZQgogICAgICAgIEFmOENmZ2xibmpuZGJqZG5rZmpuZ2tkbmZnamtsbmRranZuYmlqZGlmamdpZXJqZ29pamRmbGtneGxrbmdrQ0MKICAgICAgICBIbWxkZmtmamdvaWRmamdnam5kamtmbmdranNkbnNram5qNXNiMk5oYkRBS0JnZ3Foa2pPUFFRREFnTkhBREJFCiAgICAgICAgQWlBdG9mZ2toOTk0NXU4OXV5OWU4dWdodWRmaGd1aGRmZmhpbGd1aGl1aGtkaGZna2pkaGZramhya2piazFwNQogICAgICAgIDVrZmRsc2lmaHU0aHRpdWg0aXR1aGtqaGt6az0KICAgICAgICAtLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCiAgICAgIGtleVBFTTogfAogICAgICAgIC0tLS0tQkVHSU4gRUMgUFJJVkFURSBLRVktLS0tLQogICAgICAgIE1IY0NBUUVFSUFBZThuZmJ6WnU5Yy9PQjJnZGZramdsaWRma2pibnhqa2hiZ2hiZmdoYmpoYmRqaGJzanhjazkKICAgICAgICBvZGlmanZpamRmdm9pamRmb2l2amRmb2lqZGpnbmZka2pnbmtqZGZna2pkZmtqZ2JrampoYmtnSmpYZ1p0TTcyCiAgICAgICAgZGZpb2hndXhoYmtqZ25rbGpkZm5rbGpkbmdram5rZ2puKz09CiAgICAgICAgLS0tLS1FTkQgRUMgUFJJVkFURSBLRVktLS0tLQppZGVudGl0eVRydXN0QW5jaG9yc1BFTTogfAogIC0tLS0tQkVHSU4gQ0VSVElGSUNBVEUtLS0tLQogIE1JSUJ3VENDQVdhZ0F3SUJBZ0lRZURacDVsRGFJeWdRNVVmTUtaZGZuZ2puZGZrZ2puZmRramdua2RqbmtkamYKICBkZmtuZ2tqYmtqZGZic2tqYm5ma2puc2RrZ2psbnhrY2pibmt4am5ja2pnbmtqbmdreGpuZ2tqeGNua2dqbkk0CiAgTURkc2xrZmpvaWVyOGhzZGY4ZmdoZzc4NGg5OHQ5OGVydWhpdXNkaGtmZ2hoc2poYmdqa2hzdmpmaHZzYVc1cgogIFpYNDhrbmdraGdkZmtmamdic2RoYmpoYnNkaGJoeGJkZmxqZ2xkZmtqZ2tqaGpmZGdramJka2pmYmdrYmM3MFoKICBsZGZsa2pna2xqZGZoZmRrZ2poZXJramJnaGZia2dqYmtqbmtqeGNua2pmbmtnam5ma2pnbmtmam43SEJXVUM0CiAgdWZkZ2tqZGZpZ2hmdWRoZ2l1dWRoYm5ma25iZ3NibmRma2poc2tqa3NqbmdranNibmdramJrZ2pieGtqYmdFQgogIC9zZGZiaHNiamZoYmVod3did2poZmJqc2hiZGpoYnppdWhya2hiZXJoYnNqaGJkZmpoYmpoYmpoc2JqaGJzcysKICBsZGpmbGhranNka2ZqaHNrZGpma2pzZG5ma2puc2RramZuc2Rram5ranhjbmtqdm5ram5kc2Z3bGVra0FNRVlDCiAgSWVmb2h3a3VlaGZranNkaGZranNkaGtmamhzZGtqZmhrc2RqaGZranNkaGZranNkaGRramZoc2trZGpmaGpDOAogIHNkZnNkaHlnZmpoZ2RqaGZnanNoZGdmamhncXIKICAtLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCmxpbmtlcmRWZXJzaW9uOiBpbnN0YWxsLWNvbnRyb2wtcGxhbmUtdmVyc2lvbgpwb2xpY3lWYWxpZGF0b3I6CiAgY2FCdW5kbGU6IHBvbGljeSB2YWxpZGF0b3IgQ0EgYnVuZGxlCiAgZXh0ZXJuYWxTZWNyZXQ6IHRydWUKcHJvZmlsZVZhbGlkYXRvcjoKICBjYUJ1bmRsZTogcHJvZmlsZSB2YWxpZGF0b3IgQ0EgYnVuZGxlCiAgZXh0ZXJuYWxTZWNyZXQ6IHRydWUKcHJveHk6CiAgaW1hZ2U6CiAgICB2ZXJzaW9uOiBpbnN0YWxsLXByb3h5LXZlcnNpb24KcHJveHlJbml0OgogIGlnbm9yZUluYm91bmRQb3J0czogMjIsMzMwNi02MTkyCiAgaWdub3JlT3V0Ym91bmRQb3J0czogIjMyNzgiCnByb3h5SW5qZWN0b3I6CiAgY2FCdW5kbGU6IHByb3h5IGluamVjdG9yIENBIGJ1bmRsZQogIGV4dGVybmFsU2VjcmV0OiB0cnVlCg\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/LS0t_p\",\n                \"info\": \"FILE:./tests/samples/LS0t_p|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"ZGVidWdDb250YWluZXI6CiAgaW1hZ2U6CiAgICB2ZXJzaW9uOiBpbnN0YWxsLWRlYnVnLXZlcnNpb24KaGVhcnRiZWF0U2NoZWR1bGU6IDEgMiAzIDQgNQppZGVudGl0eToKICBpc3N1ZXI6CiAgICB0bHM6CiAgICAgIGNydFBFTTogfAogICAgICAgIC0tLS0tQkVHSU4gQ0VSVElGSUNBVEUtLS0tLQogICAgICAgIE1JSUJ3RENDQVdlZ0F3SUJBZ0lSQUpSSWdaOFJ0TzhFd2cxWGVwZjhUNDR3Q2dZSUtvWkl6ajBFQXdJd0tURW4KICAgICAgICBna2RqaHNsa2Roa2dkamhza2pkZmtkamhna2RqaGtkZmpibmtkZm52amtoYnZqaGRiZGpmaGJmamhiZGZNRGd5CiAgICAgICAgbGZrZGprc2xkamdrbGpkZmtnamhkZmtnamhzZGZrbGdqc2RrbGpmZ2hsa2Rmamhsa3NkZmpsa3Nkamt1YkdsdQogICAgICAgIGxzZGpoZnY1NDZtZmRza2dqaGRmamtoZ2tqZGhramhkZmtqZ2hrZGZqaGdramRmaGtqZGZoZ2tqZmRoZ2tqRnAKICAgICAgICBmY1JkZmdoZmRnbWRuZ2tqeGRuYnZqbmN2a2pua2pkbmdram5mZGtqYmt2YmpibnZja2puYmpuZGRmZ2ZkZ3QxCiAgICAgICAgMmJsa2puZ2JramhnbGpkZmxnaGtsamRmbmdqZGZuZ25sZGZrbWxrZGZqZ21sZGZrZ21sa2ZkbWdsa2RtTUFZQgogICAgICAgIEFmOENmZ2xibmpuZGJqZG5rZmpuZ2tkbmZnamtsbmRranZuYmlqZGlmamdpZXJqZ29pamRmbGtneGxrbmdrQ0MKICAgICAgICBIbWxkZmtmamdvaWRmamdnam5kamtmbmdranNkbnNram5qNXNiMk5oYkRBS0JnZ3Foa2pPUFFRREFnTkhBREJFCiAgICAgICAgQWlBdG9mZ2toOTk0NXU4OXV5OWU4dWdodWRmaGd1aGRmZmhpbGd1aGl1aGtkaGZna2pkaGZramhya2piazFwNQogICAgICAgIDVrZmRsc2lmaHU0aHRpdWg0aXR1aGtqaGt6az0KICAgICAgICAtLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCiAgICAgIGtleVBFTTogfAogICAgICAgIC0tLS0tQkVHSU4gRUMgUFJJVkFURSBLRVktLS0tLQogICAgICAgIE1IY0NBUUVFSUFBZThuZmJ6WnU5Yy9PQjJnZGZramdsaWRma2pibnhqa2hiZ2hiZmdoYmpoYmRqaGJzanhjazkKICAgICAgICBvZGlmanZpamRmdm9pamRmb2l2amRmb2lqZGpnbmZka2pnbmtqZGZna2pkZmtqZ2JrampoYmtnSmpYZ1p0TTcyCiAgICAgICAgZGZpb2hndXhoYmtqZ25rbGpkZm5rbGpkbmdram5rZ2puKz09CiAgICAgICAgLS0tLS1FTkQgRUMgUFJJVkFURSBLRVktLS0tLQppZGVudGl0eVRydXN0QW5jaG9yc1BFTTogfAogIC0tLS0tQkVHSU4gQ0VSVElGSUNBVEUtLS0tLQogIE1JSUJ3VENDQVdhZ0F3SUJBZ0lRZURacDVsRGFJeWdRNVVmTUtaZGZuZ2puZGZrZ2puZmRramdua2RqbmtkamYKICBkZmtuZ2tqYmtqZGZic2tqYm5ma2puc2RrZ2psbnhrY2pibmt4am5ja2pnbmtqbmdreGpuZ2tqeGNua2dqbkk0CiAgTURkc2xrZmpvaWVyOGhzZGY4ZmdoZzc4NGg5OHQ5OGVydWhpdXNkaGtmZ2hoc2poYmdqa2hzdmpmaHZzYVc1cgogIFpYNDhrbmdraGdkZmtmamdic2RoYmpoYnNkaGJoeGJkZmxqZ2xkZmtqZ2tqaGpmZGdramJka2pmYmdrYmM3MFoKICBsZGZsa2pna2xqZGZoZmRrZ2poZXJramJnaGZia2dqYmtqbmtqeGNua2pmbmtnam5ma2pnbmtmam43SEJXVUM0CiAgdWZkZ2tqZGZpZ2hmdWRoZ2l1dWRoYm5ma25iZ3NibmRma2poc2tqa3NqbmdranNibmdramJrZ2pieGtqYmdFQgogIC9zZGZiaHNiamZoYmVod3did2poZmJqc2hiZGpoYnppdWhya2hiZXJoYnNqaGJkZmpoYmpoYmpoc2JqaGJzcysKICBsZGpmbGhranNka2ZqaHNrZGpma2pzZG5ma2puc2RramZuc2Rram5ranhjbmtqdm5ram5kc2Z3bGVra0FNRVlDCiAgSWVmb2h3a3VlaGZranNkaGZranNkaGtmamhzZGtqZmhrc2RqaGZranNkaGZranNkaGRramZoc2trZGpmaGpDOAogIHNkZnNkaHlnZmpoZ2RqaGZnanNoZGdmamhncXIKICAtLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCmxpbmtlcmRWZXJzaW9uOiBpbnN0YWxsLWNvbnRyb2wtcGxhbmUtdmVyc2lvbgpwb2xpY3lWYWxpZGF0b3I6CiAgY2FCdW5kbGU6IHBvbGljeSB2YWxpZGF0b3IgQ0EgYnVuZGxlCiAgZXh0ZXJuYWxTZWNyZXQ6IHRydWUKcHJvZmlsZVZhbGlkYXRvcjoKICBjYUJ1bmRsZTogcHJvZmlsZSB2YWxpZGF0b3IgQ0EgYnVuZGxlCiAgZXh0ZXJuYWxTZWNyZXQ6IHRydWUKcHJveHk6CiAgaW1hZ2U6CiAgICB2ZXJzaW9uOiBpbnN0YWxsLXByb3h5LXZlcnNpb24KcHJveHlJbml0OgogIGlnbm9yZUluYm91bmRQb3J0czogMjIsMzMwNi02MTkyCiAgaWdub3JlT3V0Ym91bmRQb3J0czogIjMyNzgiCnByb3h5SW5qZWN0b3I6CiAgY2FCdW5kbGU6IHByb3h5IGluamVjdG9yIENBIGJ1bmRsZQogIGV4dGVybmFsU2VjcmV0OiB0cnVlCg\",\n                \"value_start\": 0,\n                \"value_end\": 3078,\n                \"entropy\": 5.49785\n            }\n        ]\n    },\n    {\n        \"rule\": \"Akamai Credentials\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"T: akab-tblc7jkffv3wfxh3-h5stbzeswb3v4kj3\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/akamai\",\n                \"info\": \"FILE:./tests/samples/akamai|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"akab-tblc7jkffv3wfxh3-h5stbzeswb3v4kj3\",\n                \"value_start\": 3,\n                \"value_end\": 41,\n                \"entropy\": 4.15557\n            }\n        ]\n    },\n    {\n        \"rule\": \"Anthropic API Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"sk-ant-api03-gigCtxD_mMUnJuUOwVtpBmPFdG0-ybrcBb1EcgpJblpcwh7tpFu-DIChOfbCnT7NgKcobiQ5aQA1oxlu3aJ-HgvUeZoSew\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/antrhropic\",\n                \"info\": \"FILE:./tests/samples/antrhropic|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"sk-ant-api03-gigCtxD_mMUnJuUOwVtpBmPFdG0-ybrcBb1EcgpJblpcwh7tpFu-DIChOfbCnT7NgKcobiQ5aQA1oxlu3aJ-HgvUeZoSew\",\n                \"value_start\": 0,\n                \"value_end\": 107,\n                \"entropy\": 5.42952\n            }\n        ]\n    },\n    {\n        \"rule\": \"Atlassian PAT token\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"ATATT3xFfGF0vNZ7oy6ON4KrWEzKEu96n-r2bCLOOcdOADizvJqPd89yKyP853uTZSflBi1Lk1zD460BqyMTa08VUEy8-oOzr1esg3j_mZKZwAELnRkCDTJZXhHsv5jaWHyAj4LRL-6h8LI-5MrYs4l7xXSaY8odQxDKJB4hDvdkmuh61xea2jE=00203E68\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/atlassian_pat\",\n                \"info\": \"FILE:./tests/samples/atlassian_pat|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"ATATT3xFfGF0vNZ7oy6ON4KrWEzKEu96n-r2bCLOOcdOADizvJqPd89yKyP853uTZSflBi1Lk1zD460BqyMTa08VUEy8-oOzr1esg3j_mZKZwAELnRkCDTJZXhHsv5jaWHyAj4LRL-6h8LI-5MrYs4l7xXSaY8odQxDKJB4hDvdkmuh61xea2jE=00203E68\",\n                \"value_start\": 13,\n                \"value_end\": 205,\n                \"entropy\": 5.77034\n            }\n        ]\n    },\n    {\n        \"rule\": \"Atlassian PAT token\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"ATATT3xFfGF0vNZ7oy6ON4KrWEzKEu96n-r2bCLOOcdOADizvJqPd89yKyP853uTZSflBi1Lk1zD460BqyMTa08VUEy8-oOzr1esg3j_mZKZwAELnRkCDTJZXhHsv5jaWHyAj4LRL-6h8LI-5MrYs4l7xXSaY8odQxDKJB4hDvdkmuh61xea2jE\\\\=00203E68\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/atlassian_pat\",\n                \"info\": \"FILE:./tests/samples/atlassian_pat|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"ATATT3xFfGF0vNZ7oy6ON4KrWEzKEu96n-r2bCLOOcdOADizvJqPd89yKyP853uTZSflBi1Lk1zD460BqyMTa08VUEy8-oOzr1esg3j_mZKZwAELnRkCDTJZXhHsv5jaWHyAj4LRL-6h8LI-5MrYs4l7xXSaY8odQxDKJB4hDvdkmuh61xea2jE\\\\=00203E68\",\n                \"value_start\": 20,\n                \"value_end\": 213,\n                \"entropy\": 5.78724\n            }\n        ]\n    },\n    {\n        \"rule\": \"Atlassian PAT token\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"ATATT3xFfGF0vNZ7oy6ON4KrWEzKEu96n-r2bCLOOcdOADizvJqPd89yKyP853uTZSflBi1Lk1zD460BqyMTa08VUEy8-oOzr1esg3j_mZKZwAELnRkCDTJZXhHsv5jaWHyAj4LRL-6h8LI-5MrYs4l7xXSaY8odQxDKJB4hDvdkmuh61xea2jE%3D00203E68\",\n                \"line_num\": 3,\n                \"path\": \"./tests/samples/atlassian_pat\",\n                \"info\": \"FILE:./tests/samples/atlassian_pat|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"ATATT3xFfGF0vNZ7oy6ON4KrWEzKEu96n-r2bCLOOcdOADizvJqPd89yKyP853uTZSflBi1Lk1zD460BqyMTa08VUEy8-oOzr1esg3j_mZKZwAELnRkCDTJZXhHsv5jaWHyAj4LRL-6h8LI-5MrYs4l7xXSaY8odQxDKJB4hDvdkmuh61xea2jE%3D00203E68\",\n                \"value_start\": 22,\n                \"value_end\": 216,\n                \"entropy\": 5.76529\n            }\n        ]\n    },\n    {\n        \"rule\": \"Atlassian PAT token\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"ATATT3xFfGF0vNZ7oy6ON4KrWEzKEu96n-r2bCLOOcdOADizvJqPd89yKyP853uTZSflBi1Lk1zD460BqyMTa08VUEy8-oOzr1esg3j_mZKZwAELnRkCDTJZXhHsv5jaWHyAj4LRL-6h8LI-5MrYs4l7xXSaY8odQxDKJB4hDvdkmuh61xea2jE%3d00203E68\",\n                \"line_num\": 4,\n                \"path\": \"./tests/samples/atlassian_pat\",\n                \"info\": \"FILE:./tests/samples/atlassian_pat|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"ATATT3xFfGF0vNZ7oy6ON4KrWEzKEu96n-r2bCLOOcdOADizvJqPd89yKyP853uTZSflBi1Lk1zD460BqyMTa08VUEy8-oOzr1esg3j_mZKZwAELnRkCDTJZXhHsv5jaWHyAj4LRL-6h8LI-5MrYs4l7xXSaY8odQxDKJB4hDvdkmuh61xea2jE%3d00203E68\",\n                \"value_start\": 24,\n                \"value_end\": 218,\n                \"entropy\": 5.76679\n            }\n        ]\n    },\n    {\n        \"rule\": \"Bearer Authorization\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"Authorization: NTLM TlRMTUAAABABoITVNIAAZI1AQBuOh4cSAQ8B1A=\",\n                \"line_num\": 4,\n                \"path\": \"./tests/samples/auth.hs\",\n                \"info\": \"FILE:./tests/samples/auth.hs|RAW\",\n                \"variable\": \"NTLM\",\n                \"variable_start\": 15,\n                \"variable_end\": 19,\n                \"value\": \"TlRMTUAAABABoITVNIAAZI1AQBuOh4cSAQ8B1A=\",\n                \"value_start\": 20,\n                \"value_end\": 59,\n                \"entropy\": 4.00235\n            }\n        ]\n    },\n    {\n        \"rule\": \"Basic Authorization\",\n        \"severity\": \"medium\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"curl -H \\\"Authorization: Basic R2hyZG5oYzpycWVpIGVuZ2xiZg==\\\" http://localhost:8080/.\",\n                \"line_num\": 8,\n                \"path\": \"./tests/samples/auth_n.template\",\n                \"info\": \"FILE:./tests/samples/auth_n.template|RAW\",\n                \"variable\": \"Basic\",\n                \"variable_start\": 24,\n                \"variable_end\": 29,\n                \"value\": \"R2hyZG5oYzpycWVpIGVuZ2xiZg==\",\n                \"value_start\": 30,\n                \"value_end\": 58,\n                \"entropy\": 4.20897\n            }\n        ]\n    },\n    {\n        \"rule\": \"Bearer Authorization\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"curl -H \\\"Authorization: Bearer eyJGRpVu1c2VzY2-823r_db32hbf4W1lbj\\\" http://localhost:8080/.\",\n                \"line_num\": 9,\n                \"path\": \"./tests/samples/auth_n.template\",\n                \"info\": \"FILE:./tests/samples/auth_n.template|RAW\",\n                \"variable\": \"Bearer\",\n                \"variable_start\": 24,\n                \"variable_end\": 30,\n                \"value\": \"eyJGRpVu1c2VzY2-823r_db32hbf4W1lbj\",\n                \"value_start\": 31,\n                \"value_end\": 65,\n                \"entropy\": 4.53585\n            }\n        ]\n    },\n    {\n        \"rule\": \"AWS Client ID\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"The items are AKIAGIREOGIAWSKEY123,AKIAGIREOGIAWSKEY45X,A3T1DJ4IS97DLLTH2SZ3\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/aws_client_id\",\n                \"info\": \"FILE:./tests/samples/aws_client_id|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"A3T1DJ4IS97DLLTH2SZ3\",\n                \"value_start\": 56,\n                \"value_end\": 76,\n                \"entropy\": 3.82193\n            }\n        ]\n    },\n    {\n        \"rule\": \"AWS Client ID\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"The items are AKIAGIREOGIAWSKEY123,AKIAGIREOGIAWSKEY45X,A3T1DJ4IS97DLLTH2SZ3\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/aws_client_id\",\n                \"info\": \"FILE:./tests/samples/aws_client_id|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"AKIAGIREOGIAWSKEY123\",\n                \"value_start\": 14,\n                \"value_end\": 34,\n                \"entropy\": 3.54644\n            }\n        ]\n    },\n    {\n        \"rule\": \"AWS Client ID\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"The items are AKIAGIREOGIAWSKEY123,AKIAGIREOGIAWSKEY45X,A3T1DJ4IS97DLLTH2SZ3\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/aws_client_id\",\n                \"info\": \"FILE:./tests/samples/aws_client_id|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"AKIAGIREOGIAWSKEY45X\",\n                \"value_start\": 35,\n                \"value_end\": 55,\n                \"entropy\": 3.54644\n            }\n        ]\n    },\n    {\n        \"rule\": \"Amazon Bedrock API Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"bedrock-api-key-vZKDJRzMKwJH6ewnj9FiyoUlZemipP2t\",\n                \"line_num\": 8,\n                \"path\": \"./tests/samples/aws_client_id\",\n                \"info\": \"FILE:./tests/samples/aws_client_id|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"bedrock-api-key-vZKDJRzMKwJH6ewnj9FiyoUlZemipP2t\",\n                \"value_start\": 0,\n                \"value_end\": 48,\n                \"entropy\": 4.88684\n            }\n        ]\n    },\n    {\n        \"rule\": \"Amazon Bedrock API Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"ABSKpA8zwd50pFVLlH+DeWUlP1+WQ44upInjTDDbiDdaS2IvMOcMgT//XXPzEeJvYPRozcaOxv/no3aR3p7CoHYQf9Yx3PnaQVTYO+iCyiUbinHue1+8DSAx61Froe42\",\n                \"line_num\": 9,\n                \"path\": \"./tests/samples/aws_client_id\",\n                \"info\": \"FILE:./tests/samples/aws_client_id|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"ABSKpA8zwd50pFVLlH+DeWUlP1+WQ44upInjTDDbiDdaS2IvMOcMgT//XXPzEeJvYPRozcaOxv/no3aR3p7CoHYQf9Yx3PnaQVTYO+iCyiUbinHue1+8DSAx61Froe42\",\n                \"value_start\": 0,\n                \"value_end\": 128,\n                \"entropy\": 5.61388\n            }\n        ]\n    },\n    {\n        \"rule\": \"AWS Client ID\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"\\\"AwsAccessID\\\": \\\"AKIAGIREOGIAWSKEY123\\\",\",\n                \"line_num\": 3,\n                \"path\": \"./tests/samples/aws_multi.json\",\n                \"info\": \"FILE:./tests/samples/aws_multi.json|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"AKIAGIREOGIAWSKEY123\",\n                \"value_start\": 24,\n                \"value_end\": 44,\n                \"entropy\": 3.54644\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_CREDENTIALS\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"\\\"AwsSecretKey\\\": \\\"J38YmIgn7dH6cw4W+yqoRgjsFsWvysFjfVcpCh7O9Yyv9/qNvNI\\\"\",\n                \"line_num\": 4,\n                \"path\": \"./tests/samples/aws_multi.json\",\n                \"info\": \"FILE:./tests/samples/aws_multi.json|RAW\",\n                \"variable\": \"AwsSecretKey\",\n                \"variable_start\": 9,\n                \"variable_end\": 21,\n                \"value\": \"J38YmIgn7dH6cw4W+yqoRgjsFsWvysFjfVcpCh7O9Yyv9/qNvNI\",\n                \"value_start\": 25,\n                \"value_end\": 76,\n                \"entropy\": 4.96135\n            }\n        ]\n    },\n    {\n        \"rule\": \"SECRET_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"\\\"AwsSecretKey\\\": \\\"J38YmIgn7dH6cw4W+yqoRgjsFsWvysFjfVcpCh7O9Yyv9/qNvNI\\\"\",\n                \"line_num\": 4,\n                \"path\": \"./tests/samples/aws_multi.json\",\n                \"info\": \"FILE:./tests/samples/aws_multi.json|RAW\",\n                \"variable\": \"Key\",\n                \"variable_start\": 18,\n                \"variable_end\": 21,\n                \"value\": \"J38YmIgn7dH6cw4W+yqoRgjsFsWvysFjfVcpCh7O9Yyv9/qNvNI\",\n                \"value_start\": 25,\n                \"value_end\": 76,\n                \"entropy\": 4.96135\n            }\n        ]\n    },\n    {\n        \"rule\": \"AWS Client ID\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"eaders=host&X-Amz-Expires=999999&X-Amz-Credential=AKIAGIREOGIAWSKEY323%2F21100651%2Feu-west-3%2Fs3%2Faws_dummy&X-Amz-Key=J38YmIg\",\n                \"line_num\": 28,\n                \"path\": \"./tests/samples/aws_multi.json\",\n                \"info\": \"FILE:./tests/samples/aws_multi.json|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"AKIAGIREOGIAWSKEY323\",\n                \"value_start\": 191,\n                \"value_end\": 211,\n                \"entropy\": 3.44644\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_CREDENTIALS\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.997,\n        \"line_data_list\": [\n            {\n                \"line\": \"Amz-Expires=999999&X-Amz-Credential=AKIAGIREOGIAWSKEY323%2F21100651%2Feu-west-3%2Fs3%2Faws_dummy&X-Amz-Key=J38YmIgn7dH6cw4W1yqoR\",\n                \"line_num\": 28,\n                \"path\": \"./tests/samples/aws_multi.json\",\n                \"info\": \"FILE:./tests/samples/aws_multi.json|RAW\",\n                \"variable\": \"Credential\",\n                \"variable_start\": 180,\n                \"variable_end\": 190,\n                \"value\": \"AKIAGIREOGIAWSKEY323%2F21100651%2Feu-west-3%2Fs3%2Faws_dummy\",\n                \"value_start\": 191,\n                \"value_end\": 251,\n                \"entropy\": 4.6314\n            }\n        ]\n    },\n    {\n        \"rule\": \"SECRET_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.999,\n        \"line_data_list\": [\n            {\n                \"line\": \"tial=AKIAGIREOGIAWSKEY323%2F21100651%2Feu-west-3%2Fs3%2Faws_dummy&X-Amz-Key=J38YmIgn7dH6cw4W1yqoRgjsFsWvysFjfVcpCh7O9Yyv9_qNvNI\\\"\",\n                \"line_num\": 28,\n                \"path\": \"./tests/samples/aws_multi.json\",\n                \"info\": \"FILE:./tests/samples/aws_multi.json|RAW\",\n                \"variable\": \"Key\",\n                \"variable_start\": 258,\n                \"variable_end\": 261,\n                \"value\": \"J38YmIgn7dH6cw4W1yqoRgjsFsWvysFjfVcpCh7O9Yyv9_qNvNI\",\n                \"value_start\": 262,\n                \"value_end\": 313,\n                \"entropy\": 4.96135\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_CREDENTIALS\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.998,\n        \"line_data_list\": [\n            {\n                \"line\": \"tial=AKIAGIREOGIAWSKEY323%2F21100651%2Feu-west-3%2Fs3%2Faws_dummy&X-Amz-Key=J38YmIgn7dH6cw4W1yqoRgjsFsWvysFjfVcpCh7O9Yyv9_qNvNI\\\"\",\n                \"line_num\": 28,\n                \"path\": \"./tests/samples/aws_multi.json\",\n                \"info\": \"FILE:./tests/samples/aws_multi.json|RAW\",\n                \"variable\": \"Key\",\n                \"variable_start\": 258,\n                \"variable_end\": 261,\n                \"value\": \"J38YmIgn7dH6cw4W1yqoRgjsFsWvysFjfVcpCh7O9Yyv9_qNvNI\\\"\",\n                \"value_start\": 262,\n                \"value_end\": 314,\n                \"entropy\": 5.00304\n            }\n        ]\n    },\n    {\n        \"rule\": \"AWS S3 Bucket\",\n        \"severity\": \"info\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"\\\"request_url\\\": \\\"https://gireogi323.s3.amazonaws.com/x3342?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Date=203230516T251998Z&X-Amz-Si\",\n                \"line_num\": 28,\n                \"path\": \"./tests/samples/aws_multi.json\",\n                \"info\": \"FILE:./tests/samples/aws_multi.json|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"gireogi323.s3.amazonaws.com\",\n                \"value_start\": 32,\n                \"value_end\": 59,\n                \"entropy\": 3.75416\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_CREDENTIALS\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"\\\"AwsSecretKey\\\": \\\"J38YmIgn7dH6cw4W1yqoRgjsFsWvysFjfVcpCh7O9Yyv9/qNvNI\\\",\",\n                \"line_num\": 52,\n                \"path\": \"./tests/samples/aws_multi.json\",\n                \"info\": \"FILE:./tests/samples/aws_multi.json|RAW\",\n                \"variable\": \"AwsSecretKey\",\n                \"variable_start\": 9,\n                \"variable_end\": 21,\n                \"value\": \"J38YmIgn7dH6cw4W1yqoRgjsFsWvysFjfVcpCh7O9Yyv9/qNvNI\",\n                \"value_start\": 25,\n                \"value_end\": 76,\n                \"entropy\": 4.96135\n            }\n        ]\n    },\n    {\n        \"rule\": \"SECRET_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"\\\"AwsSecretKey\\\": \\\"J38YmIgn7dH6cw4W1yqoRgjsFsWvysFjfVcpCh7O9Yyv9/qNvNI\\\",\",\n                \"line_num\": 52,\n                \"path\": \"./tests/samples/aws_multi.json\",\n                \"info\": \"FILE:./tests/samples/aws_multi.json|RAW\",\n                \"variable\": \"Key\",\n                \"variable_start\": 18,\n                \"variable_end\": 21,\n                \"value\": \"J38YmIgn7dH6cw4W1yqoRgjsFsWvysFjfVcpCh7O9Yyv9/qNvNI\",\n                \"value_start\": 25,\n                \"value_end\": 76,\n                \"entropy\": 4.96135\n            }\n        ]\n    },\n    {\n        \"rule\": \"AWS Client ID\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"\\\"AwsAccessID\\\": \\\"AKIAGIREOGIAWSKEY321\\\"\",\n                \"line_num\": 53,\n                \"path\": \"./tests/samples/aws_multi.json\",\n                \"info\": \"FILE:./tests/samples/aws_multi.json|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"AKIAGIREOGIAWSKEY321\",\n                \"value_start\": 24,\n                \"value_end\": 44,\n                \"entropy\": 3.54644\n            }\n        ]\n    },\n    {\n        \"rule\": \"AWS Client ID\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"\\\"AccessKeyId\\\" : \\\"AKIA0ON7V2DD57PL3JXM\\\",\",\n                \"line_num\": 7,\n                \"path\": \"./tests/samples/aws_multi.md\",\n                \"info\": \"FILE:./tests/samples/aws_multi.md|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"AKIA0ON7V2DD57PL3JXM\",\n                \"value_start\": 21,\n                \"value_end\": 41,\n                \"entropy\": 4.02193\n            }\n        ]\n    },\n    {\n        \"rule\": \"AWS Multi\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"\\\"AccessKeyId\\\" : \\\"AKIA0ON7V2DD57PL3JXM\\\",\",\n                \"line_num\": 7,\n                \"path\": \"./tests/samples/aws_multi.md\",\n                \"info\": \"FILE:./tests/samples/aws_multi.md|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"AKIA0ON7V2DD57PL3JXM\",\n                \"value_start\": 21,\n                \"value_end\": 41,\n                \"entropy\": 4.02193\n            },\n            {\n                \"line\": \"\\\"SecretAccessKey\\\" : \\\"RMkMm8niUJ1iuhAA+AAyugy3fFt/rtrf7GFQ9xz1\\\",\",\n                \"line_num\": 8,\n                \"path\": \"./tests/samples/aws_multi.md\",\n                \"info\": \"FILE:./tests/samples/aws_multi.md|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"RMkMm8niUJ1iuhAA+AAyugy3fFt/rtrf7GFQ9xz1\",\n                \"value_start\": 25,\n                \"value_end\": 65,\n                \"entropy\": 4.67193\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_CREDENTIALS\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"\\\"AccessKeyId\\\" : \\\"AKIA0ON7V2DD57PL3JXM\\\",\",\n                \"line_num\": 7,\n                \"path\": \"./tests/samples/aws_multi.md\",\n                \"info\": \"FILE:./tests/samples/aws_multi.md|RAW\",\n                \"variable\": \"AccessKeyId\",\n                \"variable_start\": 5,\n                \"variable_end\": 16,\n                \"value\": \"AKIA0ON7V2DD57PL3JXM\",\n                \"value_start\": 21,\n                \"value_end\": 41,\n                \"entropy\": 4.02193\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_CREDENTIALS\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"\\\"SecretAccessKey\\\" : \\\"RMkMm8niUJ1iuhAA+AAyugy3fFt/rtrf7GFQ9xz1\\\",\",\n                \"line_num\": 8,\n                \"path\": \"./tests/samples/aws_multi.md\",\n                \"info\": \"FILE:./tests/samples/aws_multi.md|RAW\",\n                \"variable\": \"SecretAccessKey\",\n                \"variable_start\": 5,\n                \"variable_end\": 20,\n                \"value\": \"RMkMm8niUJ1iuhAA+AAyugy3fFt/rtrf7GFQ9xz1\",\n                \"value_start\": 25,\n                \"value_end\": 65,\n                \"entropy\": 4.67193\n            }\n        ]\n    },\n    {\n        \"rule\": \"SECRET_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"\\\"SecretAccessKey\\\" : \\\"RMkMm8niUJ1iuhAA+AAyugy3fFt/rtrf7GFQ9xz1\\\",\",\n                \"line_num\": 8,\n                \"path\": \"./tests/samples/aws_multi.md\",\n                \"info\": \"FILE:./tests/samples/aws_multi.md|RAW\",\n                \"variable\": \"Key\",\n                \"variable_start\": 17,\n                \"variable_end\": 20,\n                \"value\": \"RMkMm8niUJ1iuhAA+AAyugy3fFt/rtrf7GFQ9xz1\",\n                \"value_start\": 25,\n                \"value_end\": 65,\n                \"entropy\": 4.67193\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_CREDENTIALS\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"\\\"Token\\\" : \\\"J38YmIgn7dH6cw4W1yqoRgjsFsWvysFjfVcpCh7O9Yyv9/qNvNI\\\",\",\n                \"line_num\": 9,\n                \"path\": \"./tests/samples/aws_multi.md\",\n                \"info\": \"FILE:./tests/samples/aws_multi.md|RAW\",\n                \"variable\": \"Token\",\n                \"variable_start\": 5,\n                \"variable_end\": 10,\n                \"value\": \"J38YmIgn7dH6cw4W1yqoRgjsFsWvysFjfVcpCh7O9Yyv9/qNvNI\",\n                \"value_start\": 15,\n                \"value_end\": 66,\n                \"entropy\": 4.96135\n            }\n        ]\n    },\n    {\n        \"rule\": \"SECRET_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"\\\"Token\\\" : \\\"J38YmIgn7dH6cw4W1yqoRgjsFsWvysFjfVcpCh7O9Yyv9/qNvNI\\\",\",\n                \"line_num\": 9,\n                \"path\": \"./tests/samples/aws_multi.md\",\n                \"info\": \"FILE:./tests/samples/aws_multi.md|RAW\",\n                \"variable\": \"Token\",\n                \"variable_start\": 5,\n                \"variable_end\": 10,\n                \"value\": \"J38YmIgn7dH6cw4W1yqoRgjsFsWvysFjfVcpCh7O9Yyv9/qNvNI\",\n                \"value_start\": 15,\n                \"value_end\": 66,\n                \"entropy\": 4.96135\n            }\n        ]\n    },\n    {\n        \"rule\": \"AWS MWS Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"AWS_MWS_KEY = \\\"amzn.mws.c1dg4haz-6xd6-4gqi-vna2-ed3whf71x9k6\\\"\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/aws_mws_key\",\n                \"info\": \"FILE:./tests/samples/aws_mws_key|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"amzn.mws.c1dg4haz-6xd6-4gqi-vna2-ed3whf71x9k6\",\n                \"value_start\": 15,\n                \"value_end\": 60,\n                \"entropy\": 4.55264\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_CREDENTIALS\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.855,\n        \"line_data_list\": [\n            {\n                \"line\": \"AWS_MWS_KEY = \\\"amzn.mws.c1dg4haz-6xd6-4gqi-vna2-ed3whf71x9k6\\\"\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/aws_mws_key\",\n                \"info\": \"FILE:./tests/samples/aws_mws_key|RAW\",\n                \"variable\": \"AWS_MWS_KEY\",\n                \"variable_start\": 0,\n                \"variable_end\": 11,\n                \"value\": \"amzn.mws.c1dg4haz-6xd6-4gqi-vna2-ed3whf71x9k6\",\n                \"value_start\": 15,\n                \"value_end\": 60,\n                \"entropy\": 4.55264\n            }\n        ]\n    },\n    {\n        \"rule\": \"AWS S3 Bucket\",\n        \"severity\": \"info\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"{\\\"url\\\" : \\\"https://circle-production-action-output.s3.amazonaws.com/283746ds4?X-Amz-Algorithm=AWS4-HMAC-SHA256\\\"}\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/aws_s3_bucket\",\n                \"info\": \"FILE:./tests/samples/aws_s3_bucket|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"circle-production-action-output.s3.amazonaws.com\",\n                \"value_start\": 18,\n                \"value_end\": 66,\n                \"entropy\": 4.02467\n            }\n        ]\n    },\n    {\n        \"rule\": \"Azure Access Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIng1dCI6Imk2bEdrM0ZaenhSY1ViMkMzbkVRN3N5SEpsWSIsImtpZCI6Imk2bEdrM0ZaenhSY1ViMkMzbkVRN3N5SEpsWSJ9.eyJhdWQiOiJlZjFkYTlkNC1mZjc3LTRjM2UtYTAwNS04NDBjM2Y4MzA3NDUiLCJpc3MiOiJodHRwczovL3N0cy53aW5kb3dzLm5ldC9mYTE1ZDY5Mi1lOWM3LTQ0NjAtYTc0My0yOWYyOTUyMjIyOS8iLCJpYXQiOjE1MzcyMzMxMDYsIm5iZiI6MTUzNzIzMzEwNiwiZXhwIjoxNTM3MjM3MDA2LCJhY3IiOiIxIiwiYWlvIjoiQVhRQWkvOElBQUFBRm0rRS9RVEcrZ0ZuVnhMaldkdzhLKzYxQUdyU091TU1GNmViYU1qN1hPM0libUQzZkdtck95RCtOdlp5R24yVmFUL2tES1h3NE1JaHJnR1ZxNkJuOHdMWG9UMUxrSVorRnpRVmtKUFBMUU9WNEtjWHFTbENWUERTL0RpQ0RnRTIyMlRJbU12V05hRU1hVU9Uc0lHdlRRPT0iLCJhbXIiOlsid2lhIl0sImFwcGlkIjoiNzVkYmU3N2YtMTBhMy00ZTU5LTg1ZmQtOGMxMjc1NDRmMTdjIiwiYXBwaWRhY3IiOiIwIiwiZW1haWwiOiJBYmVMaUBtaWNyb3NvZnQuY29tIiwiZmFtaWx5X25hbWUiOiJMaW5jb2xuIiwiZ2l2ZW5fbmFtZSI6IkFiZSAoTVNGVCkiLCJpZHAiOiJodHRwczovL3N0cy53aW5kb3dzLm5ldC83MmY5ODhiZi04NmYxLTQxYWYtOTFhYi0yZDdjZDAxMjIyNDcvIiwiaXBhZGRyIjoiMjIyLjIyMi4yMjIuMjIiLCJuYW1lIjoiYWJlbGkiLCJvaWQiOiIwMjIyM2I2Yi1hYTFkLTQyZDQtOWVjMC0xYjJiYjkxOTQ0MzgiLCJyaCI6IkkiLCJzY3AiOiJ1c2VyX2ltcGVyc29uYXRpb24iLCJzdWIiOiJsM19yb0lTUVUyMjJiVUxTOXlpMmswWHBxcE9pTXo1SDNaQUNvMUdlWEEiLCJ0aWQiOiJmYTE1ZDY5Mi1lOWM3LTQ0NjAtYTc0My0yOWYyOTU2ZmQ0MjkiLCJ1bmlxdWVfbmFtZSI6ImFiZWxpQG1pY3Jvc29mdC5jb20iLCJ1dGkiOiJGVnNHeFlYSTMwLVR1aWt1dVVvRkFBIiwidmVyIjoiMS4wIn0.D3H6pMUtQnoJAGq6AHd\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/azure_access_token\",\n                \"info\": \"FILE:./tests/samples/azure_access_token|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIng1dCI6Imk2bEdrM0ZaenhSY1ViMkMzbkVRN3N5SEpsWSIsImtpZCI6Imk2bEdrM0ZaenhSY1ViMkMzbkVRN3N5SEpsWSJ9.eyJhdWQiOiJlZjFkYTlkNC1mZjc3LTRjM2UtYTAwNS04NDBjM2Y4MzA3NDUiLCJpc3MiOiJodHRwczovL3N0cy53aW5kb3dzLm5ldC9mYTE1ZDY5Mi1lOWM3LTQ0NjAtYTc0My0yOWYyOTUyMjIyOS8iLCJpYXQiOjE1MzcyMzMxMDYsIm5iZiI6MTUzNzIzMzEwNiwiZXhwIjoxNTM3MjM3MDA2LCJhY3IiOiIxIiwiYWlvIjoiQVhRQWkvOElBQUFBRm0rRS9RVEcrZ0ZuVnhMaldkdzhLKzYxQUdyU091TU1GNmViYU1qN1hPM0libUQzZkdtck95RCtOdlp5R24yVmFUL2tES1h3NE1JaHJnR1ZxNkJuOHdMWG9UMUxrSVorRnpRVmtKUFBMUU9WNEtjWHFTbENWUERTL0RpQ0RnRTIyMlRJbU12V05hRU1hVU9Uc0lHdlRRPT0iLCJhbXIiOlsid2lhIl0sImFwcGlkIjoiNzVkYmU3N2YtMTBhMy00ZTU5LTg1ZmQtOGMxMjc1NDRmMTdjIiwiYXBwaWRhY3IiOiIwIiwiZW1haWwiOiJBYmVMaUBtaWNyb3NvZnQuY29tIiwiZmFtaWx5X25hbWUiOiJMaW5jb2xuIiwiZ2l2ZW5fbmFtZSI6IkFiZSAoTVNGVCkiLCJpZHAiOiJodHRwczovL3N0cy53aW5kb3dzLm5ldC83MmY5ODhiZi04NmYxLTQxYWYtOTFhYi0yZDdjZDAxMjIyNDcvIiwiaXBhZGRyIjoiMjIyLjIyMi4yMjIuMjIiLCJuYW1lIjoiYWJlbGkiLCJvaWQiOiIwMjIyM2I2Yi1hYTFkLTQyZDQtOWVjMC0xYjJiYjkxOTQ0MzgiLCJyaCI6IkkiLCJzY3AiOiJ1c2VyX2ltcGVyc29uYXRpb24iLCJzdWIiOiJsM19yb0lTUVUyMjJiVUxTOXlpMmswWHBxcE9pTXo1SDNaQUNvMUdlWEEiLCJ0aWQiOiJmYTE1ZDY5Mi1lOWM3LTQ0NjAtYTc0My0yOWYyOTU2ZmQ0MjkiLCJ1bmlxdWVfbmFtZSI6ImFiZWxpQG1pY3Jvc29mdC5jb20iLCJ1dGkiOiJGVnNHeFlYSTMwLVR1aWt1dVVvRkFBIiwidmVyIjoiMS4wIn0.D3H6pMUtQnoJAGq6AHd\",\n                \"value_start\": 0,\n                \"value_end\": 1316,\n                \"entropy\": 5.63018\n            }\n        ]\n    },\n    {\n        \"rule\": \"JSON Web Token\",\n        \"severity\": \"medium\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIng1dCI6Imk2bEdrM0ZaenhSY1ViMkMzbkVRN3N5SEpsWSIsImtpZCI6Imk2bEdrM0ZaenhSY1ViMkMzbkVRN3N5SEpsWSJ9.eyJhdWQiOiJlZjFkYTlkNC1mZjc3LTRjM2UtYTAwNS04NDBjM2Y4MzA3NDUiLCJpc3MiOiJodHRwczovL3N0cy53aW5kb3dzLm5ldC9mYTE1ZDY5Mi1lOWM3LTQ0NjAtYTc0My0yOWYyOTUyMjIyOS8iLCJpYXQiOjE1MzcyMzMxMDYsIm5iZiI6MTUzNzIzMzEwNiwiZXhwIjoxNTM3MjM3MDA2LCJhY3IiOiIxIiwiYWlvIjoiQVhRQWkvOElBQUFBRm0rRS9RVEcrZ0ZuVnhMaldkdzhLKzYxQUdyU091TU1GNmViYU1qN1hPM0libUQzZkdtck95RCtOdlp5R24yVmFUL2tES1h3NE1JaHJnR1ZxNkJuOHdMWG9UMUxrSVorRnpRVmtKUFBMUU9WNEtjWHFTbENWUERTL0RpQ0RnRTIyMlRJbU12V05hRU1hVU9Uc0lHdlRRPT0iLCJhbXIiOlsid2lhIl0sImFwcGlkIjoiNzVkYmU3N2YtMTBhMy00ZTU5LTg1ZmQtOGMxMjc1NDRmMTdjIiwiYXBwaWRhY3IiOiIwIiwiZW1haWwiOiJBYmVMaUBtaWNyb3NvZnQuY29tIiwiZmFtaWx5X25hbWUiOiJMaW5jb2xuIiwiZ2l2ZW5fbmFtZSI6IkFiZSAoTVNGVCkiLCJpZHAiOiJodHRwczovL3N0cy53aW5kb3dzLm5ldC83MmY5ODhiZi04NmYxLTQxYWYtOTFhYi0yZDdjZDAxMjIyNDcvIiwiaXBhZGRyIjoiMjIyLjIyMi4yMjIuMjIiLCJuYW1lIjoiYWJlbGkiLCJvaWQiOiIwMjIyM2I2Yi1hYTFkLTQyZDQtOWVjMC0xYjJiYjkxOTQ0MzgiLCJyaCI6IkkiLCJzY3AiOiJ1c2VyX2ltcGVyc29uYXRpb24iLCJzdWIiOiJsM19yb0lTUVUyMjJiVUxTOXlpMmswWHBxcE9pTXo1SDNaQUNvMUdlWEEiLCJ0aWQiOiJmYTE1ZDY5Mi1lOWM3LTQ0NjAtYTc0My0yOWYyOTU2ZmQ0MjkiLCJ1bmlxdWVfbmFtZSI6ImFiZWxpQG1pY3Jvc29mdC5jb20iLCJ1dGkiOiJGVnNHeFlYSTMwLVR1aWt1dVVvRkFBIiwidmVyIjoiMS4wIn0.D3H6pMUtQnoJAGq6AHd\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/azure_access_token\",\n                \"info\": \"FILE:./tests/samples/azure_access_token|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIng1dCI6Imk2bEdrM0ZaenhSY1ViMkMzbkVRN3N5SEpsWSIsImtpZCI6Imk2bEdrM0ZaenhSY1ViMkMzbkVRN3N5SEpsWSJ9.eyJhdWQiOiJlZjFkYTlkNC1mZjc3LTRjM2UtYTAwNS04NDBjM2Y4MzA3NDUiLCJpc3MiOiJodHRwczovL3N0cy53aW5kb3dzLm5ldC9mYTE1ZDY5Mi1lOWM3LTQ0NjAtYTc0My0yOWYyOTUyMjIyOS8iLCJpYXQiOjE1MzcyMzMxMDYsIm5iZiI6MTUzNzIzMzEwNiwiZXhwIjoxNTM3MjM3MDA2LCJhY3IiOiIxIiwiYWlvIjoiQVhRQWkvOElBQUFBRm0rRS9RVEcrZ0ZuVnhMaldkdzhLKzYxQUdyU091TU1GNmViYU1qN1hPM0libUQzZkdtck95RCtOdlp5R24yVmFUL2tES1h3NE1JaHJnR1ZxNkJuOHdMWG9UMUxrSVorRnpRVmtKUFBMUU9WNEtjWHFTbENWUERTL0RpQ0RnRTIyMlRJbU12V05hRU1hVU9Uc0lHdlRRPT0iLCJhbXIiOlsid2lhIl0sImFwcGlkIjoiNzVkYmU3N2YtMTBhMy00ZTU5LTg1ZmQtOGMxMjc1NDRmMTdjIiwiYXBwaWRhY3IiOiIwIiwiZW1haWwiOiJBYmVMaUBtaWNyb3NvZnQuY29tIiwiZmFtaWx5X25hbWUiOiJMaW5jb2xuIiwiZ2l2ZW5fbmFtZSI6IkFiZSAoTVNGVCkiLCJpZHAiOiJodHRwczovL3N0cy53aW5kb3dzLm5ldC83MmY5ODhiZi04NmYxLTQxYWYtOTFhYi0yZDdjZDAxMjIyNDcvIiwiaXBhZGRyIjoiMjIyLjIyMi4yMjIuMjIiLCJuYW1lIjoiYWJlbGkiLCJvaWQiOiIwMjIyM2I2Yi1hYTFkLTQyZDQtOWVjMC0xYjJiYjkxOTQ0MzgiLCJyaCI6IkkiLCJzY3AiOiJ1c2VyX2ltcGVyc29uYXRpb24iLCJzdWIiOiJsM19yb0lTUVUyMjJiVUxTOXlpMmswWHBxcE9pTXo1SDNaQUNvMUdlWEEiLCJ0aWQiOiJmYTE1ZDY5Mi1lOWM3LTQ0NjAtYTc0My0yOWYyOTU2ZmQ0MjkiLCJ1bmlxdWVfbmFtZSI6ImFiZWxpQG1pY3Jvc29mdC5jb20iLCJ1dGkiOiJGVnNHeFlYSTMwLVR1aWt1dVVvRkFBIiwidmVyIjoiMS4wIn0.D3H6pMUtQnoJAGq6AHd\",\n                \"value_start\": 0,\n                \"value_end\": 1316,\n                \"entropy\": 5.63018\n            }\n        ]\n    },\n    {\n        \"rule\": \"Azure Access Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImtpZCI6Imk2bEdrM0ZaenhSY1ViMkMzbkVRN3N5SEpsWSJ9.eyJhdWQiOiI2ZTc0MTcyYi1iZTU2LTQ4NDMtOWZmNC1lNjZhMzliYjEyZTMiLCJpc3MiOiJodHRwczovL2xvZ2luLm1pY3Jvc29mdG9ubGluZS5jb20vNzJmOTg4YmYtODZmMS00MWFmLTkxYWItMmQ3Y2QwMTFkYjQ3L3YyLjAiLCJpYXQiOjE1MzcyMzEwNDgsIm5iZiI6MTUzNzIzMTA0OCwiZXhwIjoxNTM3MjM0OTQ4LCJhaW8iOiJBWFFBaS84SUFBQUF0QWFaTG8zQ2hNaWY2S09udHRSQjdlQnE0L0RjY1F6amNKR3hQWXkvQzNqRGFOR3hYZDZ3TklJVkdSZ2hOUm53SjFsT2NBbk5aY2p2a295ckZ4Q3R0djMzMTQwUmlvT0ZKNGJDQ0dWdW9DYWcxdU9UVDIyMjIyZ0h3TFBZUS91Zjc5UVgrMEtJaWpkcm1wNjlSY3R6bVE9PSIsImF6cCI6IjZlNzQxNzJiLWJlNTYtNDg0My05ZmY0LWU2NmEzOWJiMTJlMyIsImF6cGFjciI6IjAiLCJuYW1lIjoiQWJlIExpbmNvbG4iLCJvaWQiOiI2OTAyMjJiZS1mZjFhLTRkNTYtYWJkMS03ZTRmN2QzOGU0NzQiLCJwcmVmZXJyZWRfdXNlcm5hbWUiOiJhYmVsaUBtaWNyb3NvZnQuY29tIiwicmgiOiJJIiwic2NwIjoiYWNjZXNzX2FzX3VzZXIiLCJzdWIiOiJIS1pwZmFIeVdhZGVPb3VZbGl0anJJLUtmZlRtMjIyWDVyclYzeERxZktRIiwidGlkIjoiNzJmOTg4YmYtODZmMS00MWFmLTkxYWItMmQ3Y2QwMTFkYjQ3IiwidXRpIjoiZnFpQnFYTFBqMGVRYTgyUy1JWUZBQSIsInZlciI6IjIuMCJ9.pj4N-w_3Us9DrBLfpCt\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/azure_access_token\",\n                \"info\": \"FILE:./tests/samples/azure_access_token|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImtpZCI6Imk2bEdrM0ZaenhSY1ViMkMzbkVRN3N5SEpsWSJ9.eyJhdWQiOiI2ZTc0MTcyYi1iZTU2LTQ4NDMtOWZmNC1lNjZhMzliYjEyZTMiLCJpc3MiOiJodHRwczovL2xvZ2luLm1pY3Jvc29mdG9ubGluZS5jb20vNzJmOTg4YmYtODZmMS00MWFmLTkxYWItMmQ3Y2QwMTFkYjQ3L3YyLjAiLCJpYXQiOjE1MzcyMzEwNDgsIm5iZiI6MTUzNzIzMTA0OCwiZXhwIjoxNTM3MjM0OTQ4LCJhaW8iOiJBWFFBaS84SUFBQUF0QWFaTG8zQ2hNaWY2S09udHRSQjdlQnE0L0RjY1F6amNKR3hQWXkvQzNqRGFOR3hYZDZ3TklJVkdSZ2hOUm53SjFsT2NBbk5aY2p2a295ckZ4Q3R0djMzMTQwUmlvT0ZKNGJDQ0dWdW9DYWcxdU9UVDIyMjIyZ0h3TFBZUS91Zjc5UVgrMEtJaWpkcm1wNjlSY3R6bVE9PSIsImF6cCI6IjZlNzQxNzJiLWJlNTYtNDg0My05ZmY0LWU2NmEzOWJiMTJlMyIsImF6cGFjciI6IjAiLCJuYW1lIjoiQWJlIExpbmNvbG4iLCJvaWQiOiI2OTAyMjJiZS1mZjFhLTRkNTYtYWJkMS03ZTRmN2QzOGU0NzQiLCJwcmVmZXJyZWRfdXNlcm5hbWUiOiJhYmVsaUBtaWNyb3NvZnQuY29tIiwicmgiOiJJIiwic2NwIjoiYWNjZXNzX2FzX3VzZXIiLCJzdWIiOiJIS1pwZmFIeVdhZGVPb3VZbGl0anJJLUtmZlRtMjIyWDVyclYzeERxZktRIiwidGlkIjoiNzJmOTg4YmYtODZmMS00MWFmLTkxYWItMmQ3Y2QwMTFkYjQ3IiwidXRpIjoiZnFpQnFYTFBqMGVRYTgyUy1JWUZBQSIsInZlciI6IjIuMCJ9.pj4N-w_3Us9DrBLfpCt\",\n                \"value_start\": 0,\n                \"value_end\": 1029,\n                \"entropy\": 5.64141\n            }\n        ]\n    },\n    {\n        \"rule\": \"JSON Web Token\",\n        \"severity\": \"medium\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImtpZCI6Imk2bEdrM0ZaenhSY1ViMkMzbkVRN3N5SEpsWSJ9.eyJhdWQiOiI2ZTc0MTcyYi1iZTU2LTQ4NDMtOWZmNC1lNjZhMzliYjEyZTMiLCJpc3MiOiJodHRwczovL2xvZ2luLm1pY3Jvc29mdG9ubGluZS5jb20vNzJmOTg4YmYtODZmMS00MWFmLTkxYWItMmQ3Y2QwMTFkYjQ3L3YyLjAiLCJpYXQiOjE1MzcyMzEwNDgsIm5iZiI6MTUzNzIzMTA0OCwiZXhwIjoxNTM3MjM0OTQ4LCJhaW8iOiJBWFFBaS84SUFBQUF0QWFaTG8zQ2hNaWY2S09udHRSQjdlQnE0L0RjY1F6amNKR3hQWXkvQzNqRGFOR3hYZDZ3TklJVkdSZ2hOUm53SjFsT2NBbk5aY2p2a295ckZ4Q3R0djMzMTQwUmlvT0ZKNGJDQ0dWdW9DYWcxdU9UVDIyMjIyZ0h3TFBZUS91Zjc5UVgrMEtJaWpkcm1wNjlSY3R6bVE9PSIsImF6cCI6IjZlNzQxNzJiLWJlNTYtNDg0My05ZmY0LWU2NmEzOWJiMTJlMyIsImF6cGFjciI6IjAiLCJuYW1lIjoiQWJlIExpbmNvbG4iLCJvaWQiOiI2OTAyMjJiZS1mZjFhLTRkNTYtYWJkMS03ZTRmN2QzOGU0NzQiLCJwcmVmZXJyZWRfdXNlcm5hbWUiOiJhYmVsaUBtaWNyb3NvZnQuY29tIiwicmgiOiJJIiwic2NwIjoiYWNjZXNzX2FzX3VzZXIiLCJzdWIiOiJIS1pwZmFIeVdhZGVPb3VZbGl0anJJLUtmZlRtMjIyWDVyclYzeERxZktRIiwidGlkIjoiNzJmOTg4YmYtODZmMS00MWFmLTkxYWItMmQ3Y2QwMTFkYjQ3IiwidXRpIjoiZnFpQnFYTFBqMGVRYTgyUy1JWUZBQSIsInZlciI6IjIuMCJ9.pj4N-w_3Us9DrBLfpCt\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/azure_access_token\",\n                \"info\": \"FILE:./tests/samples/azure_access_token|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImtpZCI6Imk2bEdrM0ZaenhSY1ViMkMzbkVRN3N5SEpsWSJ9.eyJhdWQiOiI2ZTc0MTcyYi1iZTU2LTQ4NDMtOWZmNC1lNjZhMzliYjEyZTMiLCJpc3MiOiJodHRwczovL2xvZ2luLm1pY3Jvc29mdG9ubGluZS5jb20vNzJmOTg4YmYtODZmMS00MWFmLTkxYWItMmQ3Y2QwMTFkYjQ3L3YyLjAiLCJpYXQiOjE1MzcyMzEwNDgsIm5iZiI6MTUzNzIzMTA0OCwiZXhwIjoxNTM3MjM0OTQ4LCJhaW8iOiJBWFFBaS84SUFBQUF0QWFaTG8zQ2hNaWY2S09udHRSQjdlQnE0L0RjY1F6amNKR3hQWXkvQzNqRGFOR3hYZDZ3TklJVkdSZ2hOUm53SjFsT2NBbk5aY2p2a295ckZ4Q3R0djMzMTQwUmlvT0ZKNGJDQ0dWdW9DYWcxdU9UVDIyMjIyZ0h3TFBZUS91Zjc5UVgrMEtJaWpkcm1wNjlSY3R6bVE9PSIsImF6cCI6IjZlNzQxNzJiLWJlNTYtNDg0My05ZmY0LWU2NmEzOWJiMTJlMyIsImF6cGFjciI6IjAiLCJuYW1lIjoiQWJlIExpbmNvbG4iLCJvaWQiOiI2OTAyMjJiZS1mZjFhLTRkNTYtYWJkMS03ZTRmN2QzOGU0NzQiLCJwcmVmZXJyZWRfdXNlcm5hbWUiOiJhYmVsaUBtaWNyb3NvZnQuY29tIiwicmgiOiJJIiwic2NwIjoiYWNjZXNzX2FzX3VzZXIiLCJzdWIiOiJIS1pwZmFIeVdhZGVPb3VZbGl0anJJLUtmZlRtMjIyWDVyclYzeERxZktRIiwidGlkIjoiNzJmOTg4YmYtODZmMS00MWFmLTkxYWItMmQ3Y2QwMTFkYjQ3IiwidXRpIjoiZnFpQnFYTFBqMGVRYTgyUy1JWUZBQSIsInZlciI6IjIuMCJ9.pj4N-w_3Us9DrBLfpCt\",\n                \"value_start\": 0,\n                \"value_end\": 1029,\n                \"entropy\": 5.64141\n            }\n        ]\n    },\n    {\n        \"rule\": \"Azure Storage Account Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"t 189shdhgr893rgdg74sdsdfkksdhtg87dyfwegjddshjhsgjsgdhJQQJ99ALACAAAAAAAAAAAAASAZDO1e4drs==\",\n                \"line_num\": 5,\n                \"path\": \"./tests/samples/azure_access_token\",\n                \"info\": \"FILE:./tests/samples/azure_access_token|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"189shdhgr893rgdg74sdsdfkksdhtg87dyfwegjddshjhsgjsgdhJQQJ99ALACAAAAAAAAAAAAASAZDO1e4drs==\",\n                \"value_start\": 2,\n                \"value_end\": 90,\n                \"entropy\": 4.22483\n            }\n        ]\n    },\n    {\n        \"rule\": \"Azure Secret Value\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"client_srt = \\\"qpF8Q~PCM5MhMoyTFc5TYEomnzRUKim9UJhe8a2P\\\";\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/azure_secret_value\",\n                \"info\": \"FILE:./tests/samples/azure_secret_value|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"qpF8Q~PCM5MhMoyTFc5TYEomnzRUKim9UJhe8a2P\",\n                \"value_start\": 14,\n                \"value_end\": 54,\n                \"entropy\": 4.75306\n            }\n        ]\n    },\n    {\n        \"rule\": \"Bitbucket HTTP Access Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"\\\"bitbucket\\\" : \\\"BBDC-MzQ2Njc4NjkyMDgwOsEidtxMt9WDExIOYPEWBFXH093l\\\"\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/bitbuckert_http_access_token\",\n                \"info\": \"FILE:./tests/samples/bitbuckert_http_access_token|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"BBDC-MzQ2Njc4NjkyMDgwOsEidtxMt9WDExIOYPEWBFXH093l\",\n                \"value_start\": 15,\n                \"value_end\": 64,\n                \"entropy\": 4.94084\n            }\n        ]\n    },\n    {\n        \"rule\": \"Bitbucket App Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"app_sample:ATBBcCe6fczW96Vzwgvb4r8F2gZS54D591C4\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/bitbucket_app_password\",\n                \"info\": \"FILE:./tests/samples/bitbucket_app_password|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"ATBBcCe6fczW96Vzwgvb4r8F2gZS54D591C4\",\n                \"value_start\": 11,\n                \"value_end\": 47,\n                \"entropy\": 4.5934\n            }\n        ]\n    },\n    {\n        \"rule\": \"Bitbucket Repository Access Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"ATCTT3xFfGN0zXtbKHz2POF86xa-2aBiYC4o_T3-myk01bmFVluUIFtGm_VFQwLizp4o1FKw-AMZhtdA0NzizshnA8WzRdfgv6GeTyowCD101oqKbJ4nx9DFsar5YyUNkwO9maR9-00tQvfciyfOHtPKG6K1d76Ki3iFo7roGeyJu4j1jM3GwQ4=EDDE81AD\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/bitbucket_repository_access_token\",\n                \"info\": \"FILE:./tests/samples/bitbucket_repository_access_token|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"ATCTT3xFfGN0zXtbKHz2POF86xa-2aBiYC4o_T3-myk01bmFVluUIFtGm_VFQwLizp4o1FKw-AMZhtdA0NzizshnA8WzRdfgv6GeTyowCD101oqKbJ4nx9DFsar5YyUNkwO9maR9-00tQvfciyfOHtPKG6K1d76Ki3iFo7roGeyJu4j1jM3GwQ4=EDDE81AD\",\n                \"value_start\": 39,\n                \"value_end\": 231,\n                \"entropy\": 5.75803\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_CREDENTIALS\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.998,\n        \"line_data_list\": [\n            {\n                \"line\": \"Token\\\" : \\\"ATCTT3xFfGN0zXtbKHz2POF86xa-2aBiYC4o_T3-myk01bmFVluUIFtGm_VFQwLizp4o1FKw-AMZhtdA0NzizshnA8WzRdfgv6GeTyowCD101oqKbJ4nx9DFsar5YyUNkwO9maR9-00tQvfciyfOHtPKG6K1d76Ki3iFo7roGeyJu4j1jM3GwQ4=EDDE81AD\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/bitbucket_repository_access_token\",\n                \"info\": \"FILE:./tests/samples/bitbucket_repository_access_token|RAW\",\n                \"variable\": \"Token\",\n                \"variable_start\": 29,\n                \"variable_end\": 34,\n                \"value\": \"ATCTT3xFfGN0zXtbKHz2POF86xa-2aBiYC4o_T3-myk01bmFVluUIFtGm_VFQwLizp4o1FKw-AMZhtdA0NzizshnA8WzRdfgv6GeTyowCD101oqKbJ4nx9DFsar5YyUNkwO9maR9-00tQvfciyfOHtPKG6K1d76Ki3iFo7roGeyJu4j1jM3GwQ4=EDDE81AD\",\n                \"value_start\": 39,\n                \"value_end\": 231,\n                \"entropy\": 5.75803\n            }\n        ]\n    },\n    {\n        \"rule\": \"SECRET_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.998,\n        \"line_data_list\": [\n            {\n                \"line\": \"Token\\\" : \\\"ATCTT3xFfGN0zXtbKHz2POF86xa-2aBiYC4o_T3-myk01bmFVluUIFtGm_VFQwLizp4o1FKw-AMZhtdA0NzizshnA8WzRdfgv6GeTyowCD101oqKbJ4nx9DFsar5YyUNkwO9maR9-00tQvfciyfOHtPKG6K1d76Ki3iFo7roGeyJu4j1jM3GwQ4=EDDE81AD\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/bitbucket_repository_access_token\",\n                \"info\": \"FILE:./tests/samples/bitbucket_repository_access_token|RAW\",\n                \"variable\": \"Token\",\n                \"variable_start\": 29,\n                \"variable_end\": 34,\n                \"value\": \"ATCTT3xFfGN0zXtbKHz2POF86xa-2aBiYC4o_T3-myk01bmFVluUIFtGm_VFQwLizp4o1FKw-AMZhtdA0NzizshnA8WzRdfgv6GeTyowCD101oqKbJ4nx9DFsar5YyUNkwO9maR9-00tQvfciyfOHtPKG6K1d76Ki3iFo7roGeyJu4j1jM3GwQ4=EDDE81AD\",\n                \"value_start\": 39,\n                \"value_end\": 231,\n                \"entropy\": 5.75803\n            }\n        ]\n    },\n    {\n        \"rule\": \"Brevo API Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"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\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/brevo\",\n                \"info\": \"FILE:./tests/samples/brevo|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"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\",\n                \"value_start\": 0,\n                \"value_end\": 89,\n                \"entropy\": 4.64688\n            }\n        ]\n    },\n    {\n        \"rule\": \"JKS sensitive data with password 'changeit'\",\n        \"severity\": \"low\",\n        \"confidence\": \"weak\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"'changeit'\",\n                \"line_num\": 0,\n                \"path\": \"./tests/samples/changeit_crt.jks\",\n                \"info\": \"FILE:./tests/samples/changeit_crt.jks|JKS:sensitive data\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"'changeit'\",\n                \"value_start\": 0,\n                \"value_end\": 10,\n                \"entropy\": 3.12193\n            }\n        ]\n    },\n    {\n        \"rule\": \"JKS private key with password 'changeme'\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"'changeme'\",\n                \"line_num\": 0,\n                \"path\": \"./tests/samples/changeme_key.jks\",\n                \"info\": \"FILE:./tests/samples/changeme_key.jks|JKS:default password\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"'changeme'\",\n                \"value_start\": 0,\n                \"value_end\": 10,\n                \"entropy\": 2.92193\n            }\n        ]\n    },\n    {\n        \"rule\": \"CMD Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"gpg --decrypt --passphrase N1DdkUD3E73 --output decrypted.txt encrypted.txt.gpg\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/cmd_credential\",\n                \"info\": \"FILE:./tests/samples/cmd_credential|RAW\",\n                \"variable\": \"passphrase\",\n                \"variable_start\": 16,\n                \"variable_end\": 26,\n                \"value\": \"N1DdkUD3E73\",\n                \"value_start\": 27,\n                \"value_end\": 38,\n                \"entropy\": 3.0958\n            }\n        ]\n    },\n    {\n        \"rule\": \"ID_PAIR_PASSWD_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"mysql -u root --password Sne3sd8AZjq\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/cmd_credential\",\n                \"info\": \"FILE:./tests/samples/cmd_credential|RAW\",\n                \"variable\": \"root\",\n                \"variable_start\": 9,\n                \"variable_end\": 13,\n                \"value\": \"--password\",\n                \"value_start\": 14,\n                \"value_end\": 24,\n                \"entropy\": 2.92193\n            },\n            {\n                \"line\": \"mysql -u root --password Sne3sd8AZjq\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/cmd_credential\",\n                \"info\": \"FILE:./tests/samples/cmd_credential|RAW\",\n                \"variable\": \"password\",\n                \"variable_start\": 16,\n                \"variable_end\": 24,\n                \"value\": \"Sne3sd8AZjq\",\n                \"value_start\": 25,\n                \"value_end\": 36,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"CMD Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"mysql -u root --password Sne3sd8AZjq\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/cmd_credential\",\n                \"info\": \"FILE:./tests/samples/cmd_credential|RAW\",\n                \"variable\": \"password\",\n                \"variable_start\": 16,\n                \"variable_end\": 24,\n                \"value\": \"Sne3sd8AZjq\",\n                \"value_start\": 25,\n                \"value_end\": 36,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"CMD Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"-Domain 'localhost' -Password 'Sjdn43ss@!'\",\n                \"line_num\": 3,\n                \"path\": \"./tests/samples/cmd_credential\",\n                \"info\": \"FILE:./tests/samples/cmd_credential|RAW\",\n                \"variable\": \"Password\",\n                \"variable_start\": 21,\n                \"variable_end\": 29,\n                \"value\": \"Sjdn43ss@!\",\n                \"value_start\": 31,\n                \"value_end\": 41,\n                \"entropy\": 3.12193\n            }\n        ]\n    },\n    {\n        \"rule\": \"CMD Secret\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.999,\n        \"line_data_list\": [\n            {\n                \"line\": \"--super-secret_token 1ace4d19-fa7e-b4e2-c3f0-9129474bcd81\",\n                \"line_num\": 4,\n                \"path\": \"./tests/samples/cmd_credential\",\n                \"info\": \"FILE:./tests/samples/cmd_credential|RAW\",\n                \"variable\": \"super-secret_token\",\n                \"variable_start\": 2,\n                \"variable_end\": 20,\n                \"value\": \"1ace4d19-fa7e-b4e2-c3f0-9129474bcd81\",\n                \"value_start\": 21,\n                \"value_end\": 57,\n                \"entropy\": 3.77368\n            }\n        ]\n    },\n    {\n        \"rule\": \"CMD Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.999,\n        \"line_data_list\": [\n            {\n                \"line\": \"--super-secret_token 1ace4d19-fa7e-b4e2-c3f0-9129474bcd81\",\n                \"line_num\": 4,\n                \"path\": \"./tests/samples/cmd_credential\",\n                \"info\": \"FILE:./tests/samples/cmd_credential|RAW\",\n                \"variable\": \"super-secret_token\",\n                \"variable_start\": 2,\n                \"variable_end\": 20,\n                \"value\": \"1ace4d19-fa7e-b4e2-c3f0-9129474bcd81\",\n                \"value_start\": 21,\n                \"value_end\": 57,\n                \"entropy\": 3.77368\n            }\n        ]\n    },\n    {\n        \"rule\": \"UUID\",\n        \"severity\": \"info\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"--super-secret_token 1ace4d19-fa7e-b4e2-c3f0-9129474bcd81\",\n                \"line_num\": 4,\n                \"path\": \"./tests/samples/cmd_credential\",\n                \"info\": \"FILE:./tests/samples/cmd_credential|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"1ace4d19-fa7e-b4e2-c3f0-9129474bcd81\",\n                \"value_start\": 21,\n                \"value_end\": 57,\n                \"entropy\": 3.77368\n            }\n        ]\n    },\n    {\n        \"rule\": \"CMD Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"--oauth2-bearer \\\"eZs2fjkjD8hUcsQ37b8zHig==\\\" \\\\\",\n                \"line_num\": 7,\n                \"path\": \"./tests/samples/cmd_credential\",\n                \"info\": \"FILE:./tests/samples/cmd_credential|RAW\",\n                \"variable\": \"oauth2-bearer\",\n                \"variable_start\": 6,\n                \"variable_end\": 19,\n                \"value\": \"eZs2fjkjD8hUcsQ37b8zHig==\",\n                \"value_start\": 21,\n                \"value_end\": 46,\n                \"entropy\": 4.32386\n            }\n        ]\n    },\n    {\n        \"rule\": \"CMD ConvertTo-SecureString\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.918,\n        \"line_data_list\": [\n            {\n                \"line\": \"ConvertTo-SecureString -String -Force dsjUE#$gds8s\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/cmd_secure_string\",\n                \"info\": \"FILE:./tests/samples/cmd_secure_string|RAW\",\n                \"variable\": \"ConvertTo-SecureString -String -Force\",\n                \"variable_start\": 0,\n                \"variable_end\": 37,\n                \"value\": \"dsjUE#$gds8s\",\n                \"value_start\": 38,\n                \"value_end\": 50,\n                \"entropy\": 3.02206\n            }\n        ]\n    },\n    {\n        \"rule\": \"CMD ConvertTo-SecureString\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"\\\"ConvertTo-SecureString \\\\\\\"4yd21JKH~GE8dkd\\\\\\\"\\\"\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/cmd_secure_string\",\n                \"info\": \"FILE:./tests/samples/cmd_secure_string|RAW\",\n                \"variable\": \"ConvertTo-SecureString\",\n                \"variable_start\": 1,\n                \"variable_end\": 23,\n                \"value\": \"4yd21JKH~GE8dkd\",\n                \"value_start\": 26,\n                \"value_end\": 41,\n                \"entropy\": 3.5899\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_CREDENTIALS\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.995,\n        \"line_data_list\": [\n            {\n                \"line\": \"gi_reo_gi_credential = \\\"K2u6mFw8wJOsAf\\\"\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/credential.hs\",\n                \"info\": \"FILE:./tests/samples/credential.hs|RAW\",\n                \"variable\": \"gi_reo_gi_credential\",\n                \"variable_start\": 0,\n                \"variable_end\": 20,\n                \"value\": \"K2u6mFw8wJOsAf\",\n                \"value_start\": 24,\n                \"value_end\": 38,\n                \"entropy\": 3.6645\n            }\n        ]\n    },\n    {\n        \"rule\": \"CURL User Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"curl -X PUT -u \\\"admin:dG9rZW4g\\\" https://127.0.0.1 # TP\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/curl_user_password\",\n                \"info\": \"FILE:./tests/samples/curl_user_password|RAW\",\n                \"variable\": \"curl\",\n                \"variable_start\": 0,\n                \"variable_end\": 4,\n                \"value\": \"dG9rZW4g\",\n                \"value_start\": 22,\n                \"value_end\": 30,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"DeepSeek API Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \">>>\\u001b[93msk-615ef152bf865a131f88b23571dc4ee6\\u001b[0m<<<\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/deepseek\",\n                \"info\": \"FILE:./tests/samples/deepseek|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"sk-615ef152bf865a131f88b23571dc4ee6\",\n                \"value_start\": 8,\n                \"value_end\": 43,\n                \"entropy\": 3.85416\n            }\n        ]\n    },\n    {\n        \"rule\": \"Digital Ocean Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"digital_oc = 'doo_v1_c46dde8bd623be6efab141fa2452e10fcc382e70d5da882493477828eba24a8c';\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/digital_ocean_oauth_access_token\",\n                \"info\": \"FILE:./tests/samples/digital_ocean_oauth_access_token|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"doo_v1_c46dde8bd623be6efab141fa2452e10fcc382e70d5da882493477828eba24a8c\",\n                \"value_start\": 14,\n                \"value_end\": 85,\n                \"entropy\": 4.05874\n            }\n        ]\n    },\n    {\n        \"rule\": \"Digital Ocean Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"dop_v1_425522a565f532bc6532d453422e50334a42f5242a3090fbe553b543b124259b\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/digital_ocean_pat\",\n                \"info\": \"FILE:./tests/samples/digital_ocean_pat|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"dop_v1_425522a565f532bc6532d453422e50334a42f5242a3090fbe553b543b124259b\",\n                \"value_start\": 0,\n                \"value_end\": 71,\n                \"entropy\": 3.6568\n            }\n        ]\n    },\n    {\n        \"rule\": \"Discord Bot Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"MTIzNDU2Nzg5MDEyMzQ1Njc4OQ.E2-E4_.Zig9V5mpMk-JybgCFvqSfgY9EoqWjkA5O_qDje\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/discord_bot_token\",\n                \"info\": \"FILE:./tests/samples/discord_bot_token|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"MTIzNDU2Nzg5MDEyMzQ1Njc4OQ.E2-E4_.Zig9V5mpMk-JybgCFvqSfgY9EoqWjkA5O_qDje\",\n                \"value_start\": 0,\n                \"value_end\": 72,\n                \"entropy\": 5.16257\n            }\n        ]\n    },\n    {\n        \"rule\": \"Discord Webhook\",\n        \"severity\": \"medium\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"T https://discordapp.com/api/webhooks/148392840000482200/ihUFAgIi-OsnNHsjJBpvzkzZOicbe0R2UkWo1nvOnkLGHWJnW8HZjF_dRDj7fi5q3u2h\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/discord_webhook\",\n                \"info\": \"FILE:./tests/samples/discord_webhook|RAW\",\n                \"variable\": \"discordapp.com/api/webhooks\",\n                \"variable_start\": 10,\n                \"variable_end\": 37,\n                \"value\": \"/148392840000482200/ihUFAgIi-OsnNHsjJBpvzkzZOicbe0R2UkWo1nvOnkLGHWJnW8HZjF_dRDj7fi5q3u2h\",\n                \"value_start\": 37,\n                \"value_end\": 125,\n                \"entropy\": 5.23454\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_CREDENTIALS\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"the password is incorrect\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/doc_credentials_n\",\n                \"info\": \"FILE:./tests/samples/doc_credentials_n|RAW\",\n                \"variable\": \"password\",\n                \"variable_start\": 4,\n                \"variable_end\": 12,\n                \"value\": \"incorrect\",\n                \"value_start\": 16,\n                \"value_end\": 25,\n                \"entropy\": 2.72548\n            }\n        ]\n    },\n    {\n        \"rule\": \"UUID\",\n        \"severity\": \"info\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"\\\"UserKeyword\\\": \\\"A1328E04-88B6-4E2A-A5C0-A4D9B21754C4\\\"\",\n                \"line_num\": 5,\n                \"path\": \"./tests/samples/doc_credentials_n\",\n                \"info\": \"FILE:./tests/samples/doc_credentials_n|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"A1328E04-88B6-4E2A-A5C0-A4D9B21754C4\",\n                \"value_start\": 16,\n                \"value_end\": 52,\n                \"entropy\": 3.8055\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_CREDENTIALS\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"my password is 237dg546fs9\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/doc_credentials_p\",\n                \"info\": \"FILE:./tests/samples/doc_credentials_p|RAW\",\n                \"variable\": \"password\",\n                \"variable_start\": 3,\n                \"variable_end\": 11,\n                \"value\": \"237dg546fs9\",\n                \"value_start\": 15,\n                \"value_end\": 26,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_CREDENTIALS\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.998,\n        \"line_data_list\": [\n            {\n                \"line\": \"Activation key : ZAQWS-XCDER-VBGTR-FRTGU-KLMNX\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/doc_credentials_p\",\n                \"info\": \"FILE:./tests/samples/doc_credentials_p|RAW\",\n                \"variable\": \"key\",\n                \"variable_start\": 11,\n                \"variable_end\": 14,\n                \"value\": \"ZAQWS-XCDER-VBGTR-FRTGU-KLMNX\",\n                \"value_start\": 17,\n                \"value_end\": 46,\n                \"entropy\": 4.21126\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_CREDENTIALS\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.97,\n        \"line_data_list\": [\n            {\n                \"line\": \"password:!Dd5G4s9\",\n                \"line_num\": 3,\n                \"path\": \"./tests/samples/doc_credentials_p\",\n                \"info\": \"FILE:./tests/samples/doc_credentials_p|RAW\",\n                \"variable\": \"password\",\n                \"variable_start\": 0,\n                \"variable_end\": 8,\n                \"value\": \"!Dd5G4s9\",\n                \"value_start\": 9,\n                \"value_end\": 17,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"PASSWD_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.97,\n        \"line_data_list\": [\n            {\n                \"line\": \"password:!Dd5G4s9\",\n                \"line_num\": 3,\n                \"path\": \"./tests/samples/doc_credentials_p\",\n                \"info\": \"FILE:./tests/samples/doc_credentials_p|RAW\",\n                \"variable\": \"password\",\n                \"variable_start\": 0,\n                \"variable_end\": 8,\n                \"value\": \"!Dd5G4s9\",\n                \"value_start\": 9,\n                \"value_end\": 17,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_CREDENTIALS\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.992,\n        \"line_data_list\": [\n            {\n                \"line\": \"LONG_CREDENTIAL: AgV4TakqXDSaUSruBPiKENLUg+aN/Z5HzG4y5q21GOWteXBNZSVXAh1G8ZCdf8AKaa73TipBRAOT0gI0o2xrm1AFzfnoa2J56rr5WtWfAmr5WCGdZx68H+ghRZMa7C8c76I0zDleUKuPbRhJEM+OZPLGVrL/yodyF+7wF5di84Cb5NOyuAHBZUGxxMWCFuwjRH13JRABMygbrOKaauKjQ5aUAp6ggKijEwr4oysBclvocYin4w1TDApHF5lbd6ytfAYSREJIhbswoUmzlyJ/3ftvl3w6qC2Hikfc8S2rRZ7Evdsbr1lDeNckRmzb3ZQKmREjnxYWM5X5ZekKdLOyo9wdmUleEfX0gU0ZXgB9tKDdR7bP//2p8lJreW51DuF4EynVTSoPqB0mLo0iMkxx0xBCEp5BNC5XpYi7jjvuCKWaHETR+60CsZG1cy12cQlZKtscrc4MI7D7jg9y+GooV+pF05A7a9QgBmqTunmEYBvP7C54nmiHM91fb1W/9XBqCgJZB/Bky9R/nmrRb7+yeRoC8HodzrBlRdciWzkXk0MG63xUGA5K4cH/s+EvmbP+eAi42vneKt9mslid7cxq//AdnXOiIBmhVQ+hn07V/rQxetqbvIYHIEmCdUqqOAmtuV5ba2TPcMtbYEcEGxQJX9e8oYvoShpFbVDpSoEUlVkqI0Bjdts3hsl7B7vV09OdPcMGWFRswu8OIvtllh1C3+2XarwXBs/EfNCWOR5XYDMrHKAWHgvNEI2uZQukt0ekN4BGKA+XNs8T9gdKzun7FoWuSpsXqbvkNS1lXe4dOYay5OoY3Od6eSpwboYmC7Y1GxEi6ixOTePovwot4cIYFvILJExraDEnRQCm53mcvr2qewiy5o8brTr8cA/Fp2VJGiIGmU2cUmz90Tx15/9ZzWA6N/Q0aaiKVDYmAirhUJaMf6gNeDYbodN9tJxEbeNN6krZvdLrsxBZdBViciX2X8Ju8ws0DQlIh54FhHKwwWeoxKPN05RFLORlNQdrV5bKt9FCA/igQECZP233wg7pBEw0wvdASDhaZs0pWX98jDUEJzfwSK4ivc3F15BuKy2Sh3rNjUXht95Dzl4iGsPIsA8DgZjgPbmcjrZXaMdQ5H8l/L4xce0mIAz3s9S/O2ginpFCbwTl2Txrnv44OPjif1S45wSwjzNvchTwduBi1Q13S78xsP//BopuNjxScQU0W8e06HOf9Cg9EkEQ08g57ekS7QcuCfVTQeHj+bltRUbL9en1iwNDgkI49S7kCy2hpSAbVn9WIJMJvMaUEm+jICKQdhnY2XuBiic4bznR+4TOkBaBXBVTKUr1EUH9PigkyliiLtIhHsCvungvP3htfH325ZAKcNxarlKgJrJvfCBnxtNzplF0R8UQUPUmYBRO2VYRT14iFqsU9Y21bG4aiz9SdJgh20KIBjtY1bn7FUNlJ0LHPuKiZSoX5Z71Y5o06YHBP5ijXsfDbEYW5nwfL1sDIqIgxJ0d5bnY9lJ8IdgFjnNqWECLinfjFCXdqiOPprIHD9N/x7DmDstNzjDKw+3aUtRboJmUCN/VsNhOgvBbPux1+UZcf4W01u3fT/JglhjApwqtoQnszIglHxSTHL3WphAB671pr2PK9vgkDeASmrSSrG0LuTx9d5UQLm/NV6j5MXxL1q7/Kk/RTHRd4l5SkcjmA+7Ds7W5rTVIOXV7j/ZYL6HdVv6MWqMKL7QvwUNseM2cnbOxWKg2T37rpZsCk1eU7AeVA69LxS7BHFiswfEi32YWVaxJu0lNoMiZg4WaNhmOtTIzoZU/INWQsRkfbdSROOIiUAYy983kE6h8HjgCvmebb0BeJeMZBM5jyRVrcwrnPEnZzHOiPruNovstlEt6IFvUotNKZgk5Y3DBUUVB4fo/Dv2zBoobQHcomWa2W6Fux6uYuIxG2i6VEVBX3QhItPFr6wc6+n00qiLBG1vhUFGsJzsomMFJx0wrA6voi/kfjRU2TnJjwG0mKMwLurxVVJyLtgwJy3BEDmR2vcaW18G3xoNjc3E+5XS6MutGX3TSoY7n2DftHvKSj46tjPyGPujOQ0tsN9z3EDVLemgnEl42L4FgLtgMOERfIs2XiMy384LbTJQ6xtknjEL3cFNN765s04wFGyI/hc1npJnkCCfKg/sVFLW3YrVGMZAVo/648q655vw2oKKRq8h48g7rnOj239TKUZhxwXZiWqnNZnnBXMIT5hSXwNyIotGcWyuqG2WGL+us/rT6jekSofQaswm8XRDSQPLO9ZqSCX7uM709gLrc/gyNtWaZ9+jpi+o60ydRvYaAgnBzAqhG2spKFTcuOx3usTuQssR2eDZlomRi2zo/nGqDke1sFWr7AULH40IYXqyrle6oY4j8Wf7f6evtNm9b42fFmVAdE04X27tEOe9b1q4o2IWibni0eNdjvjCaMu+DveYqyGXTSTIZt6UzSYFP18YjHKrSsr8SJE9LNMlxwl93v1AfwVFejK7eg3tm7+HRgRVTBaQyuf3EWgXdwcRH8Nqo/rrLBjXmeKZSjWpQIOX9h0TRc91DSJFu02PdqcmIG5T3lFHToLZYB1ohQMIHmfX8+fyR59o86hE/dm8WD1LuEpDlHsIOe4ZKVB9PqRfFpEIZ9gBcyW4co3Kl7uxh5UJVWDLv97ROG29tLBC5rq9mUXxbFiuQSV1/YGnkJQL3IlJ+KKE9fd8Lk+QVjfz2Kc2LBiaTwGoJ5MreVo5LxGf4joXXOpmk+g2dbo6bmuz0WpoGDLYON26mOQawWP+LIpMGlPYiTbUlwgwVv4iQr1ntgpka309haHfh/PeadIJ5FftNERTbNEtO7yKdKbf8ESLl3mVfZW4/bWmO9PBQQAu7dhXNqwG8AmsS62w77UgS7OSvAoSbtCSGZ+9HiGNdn/LI/K+7W4y9S10lR5Npa+5WSnSSTvh9ICfBQVD6iO0HChhEfXKLhesp/250V9kC0yuwq5eLi+A7tCfNQ9iTsmj0hQvnemxISy26OyBe5y39+d+lx45sbx1ijnT6+5PHsmSKx+/tDf6FxdcJpp/D5jUYNvjDASBS9ZxeA/JJDCC3sde9F9ZHZDY4gASDLmzQJYGOthD+bm7aA/RWofNJVpbLRq/7AjonvEOMgc3sk2nLlkfppE7EChJ75xV3aJ4EenBpkjSJVdEMckybT6d+Io9lH8YOuxpzSLo2kVt1vDRr26UZKW/M5OXY3tEHFj8679f4oddmJ1OGLG8SYuCIf5U6qPiom5C1CSVz/8ObNAxPR4ECdGpIpfJO0HmtwMvRmsAbsOEBGg4wIVa945ukJugZNwklFZ6wI0ys2jyvNCDRcgDRrV/fzkfyEIO/WMT/dLx4tbgqksXpnbfvUEJKorLMm2Lye4LuJ3msHvu0c274bJ7E8Y8KXKoMLNRdL7ZwwNUfrbj2KHyaAyqE0YOjIF3+06YOWyC0rJVOthFh+I9ah7RKPwSpsaqK6abzCFZLFdx8qBYA7mO4avHlm2SqiIgdivfHMm/RIFKHuEv+FxWXzfT8KD/jtDhBo672uY8c+nVsfZQysAsalkjd9qkhaqZbDbsHZi2LssBabP5MFqOOGpHgiV9UgMd1vDmz42E7MDCVcgvOF6IgB2Qz62fWdgL94HpRJTY794aJfhPFdk1K4PVo1Cs4CPoCo7gYoqcIBa0vUYwz5zSJe+0Mk21E5ltTl9A2hZhnbt8XFJRTtmXP8g4Jx9EP5hMtj4o7nKgvUwUXcVpa7COGw2UL2eU8TtFvKpWkQd05G1WaTDzHaGUXmo5/LQTLyBvrgi+NbM5JXklvefyZ2Va6LtWethJBfU3KM/PNh/qn9PnjBbfvMe4gVeX1WLxud7DBER6aVL5SqSKlXLbvoi2osQKKM0ExfOvtIs5l5wCp/aoHVgbCnADu6dN877zmNpJdnov1Qj0RYALV1ivdN//vnr47Y7vCJqennCd6IAL5PiZFi0VIBjMG4WL+wwU5tkfnxPL1ukvpEdZqaejBrPqqU+ewlpX7enAwzAaihYMSOfLlVrM/ybIpBtuDtRkQRPr8nUa1r2EDQi/jWeKN1CNJpxnKv9peG2z9FHQBhFS2WdqshVeGBACqG/dqDhugOi/P9FLNv4buPcLL7Yd+GOg66DnvEWGAvUXuE3152NOykn1zRyMQZTLdcNRfuX3WfLklPYO6Nf2JRaylcMcrErbsixgcT+p1+qXLQ8GCnkfqyMjmPo+FJ2BWd5KDRUim0ihUmO6Vd4B2/JMTZXsWNwOPmN/DqjpX/Z64UVO7yh0emaA9Vt6+bNlxrR/l/9Hy1JGz9GpK22jLIHDBcUwGP53ZHKSSm/WyfNzOJxRdeSTK+SApsglmdYUSNLVJjVraDURTkVI0XjVFTvu98yM95w9y3DoX9iYWLdg4NRysVMoWkOB0Ts0MBQeCZkn+erzs+7KNFTXxPrQA5LHMgbT/2ukEeKhuKypLsu9s4BLqGWTFnHgv1SL37dqvqigY55fxfEvHBuw+ea41xnfFPSb2yjm9d/lLnXapCkIGoss6ecxHg9481heyM32bnlqzngiluuuMQoEU9Lwk5VBMhKuQN+LbJds2Nb+XnHz4yLIWLIXX+4+Uv4uh0zYJSLABk8piLuFQ7NwkHbQR+cptvefLwpZmBOC68065t5WR/IeOlYpg6ND320XSOyshBXH9hgCXWtIHzxG64rAf/UkmB+UsnP2g2xbklc2s8hoYtMQP8F3qKbL557mBBDVVc8MPyamBusSVbYowBNzASZ64PsdfOSIAmjb9gv8+4X0EK9F789s7predBaFZRJNzfUXwhMrPeCmVGP692781db4K9vD5HJISA7juhIjL5f1uLXaJkBFbJJxkp6MTtWDFtwnXPYmhkEDPIF4oas7scywk70fkAaXzIgDymYlBMUVXR29X2gp49Kvo/kuGR3/oDV4DpEMrfK94BBL9rSXicnF4zDcMnW30gYY5Q/NLTLVktfvoea8QTwJ18BsD27fxEkCkupxrez2JgHx+m6u+2hPEO+V8PhpHCgM2aONfr1ZCcGBjcRtZLw1v2Gtd6QkwkrNgDwy3B/7gShoZSDRno3ceu5V0//JgKQOGuQP2MpxeX/Wu+e3BsftOdBct8E0m3MKek4Ij9bIXNim8taEz0VczllW3nEhgy1IJ5pL2q8AgxsHxjqCsBIH8KL5l0rwWiqFSw+Kb4Y8dUi/im8kZQerV8LwOCXvyPlgkIkPcDFlkeoFaYgWhmPfFGqhJIab7g8cMmT0hp51sRq8KmkHCEU+GmHHkwBuycA9/5gp6niJAuLNuQf5t6DacELYr6U/wsddBce6vaaPWWMYPrkJh52TIvszYapEZSynFZsOqb3SAbe0AGZuSL3NbD3SYNOpXLcdIZbCfczHChbLB+ljuOhURZzWHaY6oxXGqLJyo3pzbiS2PQ3q7nFWzMXxrXWVEO+zL/2U14A==\",\n                \"line_num\": 4,\n                \"path\": \"./tests/samples/doc_credentials_p\",\n                \"info\": \"FILE:./tests/samples/doc_credentials_p|RAW\",\n                \"variable\": \"LONG_CREDENTIAL\",\n                \"variable_start\": 0,\n                \"variable_end\": 15,\n                \"value\": \"AgV4TakqXDSaUSruBPiKENLUg+aN/Z5HzG4y5q21GOWteXBNZSVXAh1G8ZCdf8AKaa73TipBRAOT0gI0o2xrm1AFzfnoa2J56rr5WtWfAmr5WCGdZx68H+ghRZMa7C8c76I0zDleUKuPbRhJEM+OZPLGVrL/yodyF+7wF5di84Cb5NOyuAHBZUGxxMWCFuwjRH13JRABMygbrOKaauKjQ5aUAp6ggKijEwr4oysBclvocYin4w1TDApHF5lbd6ytfAYSREJIhbswoUmzlyJ/3ftvl3w6qC2Hikfc8S2rRZ7Evdsbr1lDeNckRmzb3ZQKmREjnxYWM5X5ZekKdLOyo9wdmUleEfX0gU0ZXgB9tKDdR7bP//2p8lJreW51DuF4EynVTSoPqB0mLo0iMkxx0xBCEp5BNC5XpYi7jjvuCKWaHETR+60CsZG1cy12cQlZKtscrc4MI7D7jg9y+GooV+pF05A7a9QgBmqTunmEYBvP7C54nmiHM91fb1W/9XBqCgJZB/Bky9R/nmrRb7+yeRoC8HodzrBlRdciWzkXk0MG63xUGA5K4cH/s+EvmbP+eAi42vneKt9mslid7cxq//AdnXOiIBmhVQ+hn07V/rQxetqbvIYHIEmCdUqqOAmtuV5ba2TPcMtbYEcEGxQJX9e8oYvoShpFbVDpSoEUlVkqI0Bjdts3hsl7B7vV09OdPcMGWFRswu8OIvtllh1C3+2XarwXBs/EfNCWOR5XYDMrHKAWHgvNEI2uZQukt0ekN4BGKA+XNs8T9gdKzun7FoWuSpsXqbvkNS1lXe4dOYay5OoY3Od6eSpwboYmC7Y1GxEi6ixOTePovwot4cIYFvILJExraDEnRQCm53mcvr2qewiy5o8brTr8cA/Fp2VJGiIGmU2cUmz90Tx15/9ZzWA6N/Q0aaiKVDYmAirhUJaMf6gNeDYbodN9tJxEbeNN6krZvdLrsxBZdBViciX2X8Ju8ws0DQlIh54FhHKwwWeoxKPN05RFLORlNQdrV5bKt9FCA/igQECZP233wg7pBEw0wvdASDhaZs0pWX98jDUEJzfwSK4ivc3F15BuKy2Sh3rNjUXht95Dzl4iGsPIsA8DgZjgPbmcjrZXaMdQ5H8l/L4xce0mIAz3s9S/O2ginpFCbwTl2Txrnv44OPjif1S45wSwjzNvchTwduBi1Q13S78xsP//BopuNjxScQU0W8e06HOf9Cg9EkEQ08g57ekS7QcuCfVTQeHj+bltRUbL9en1iwNDgkI49S7kCy2hpSAbVn9WIJMJvMaUEm+jICKQdhnY2XuBiic4bznR+4TOkBaBXBVTKUr1EUH9PigkyliiLtIhHsCvungvP3htfH325ZAKcNxarlKgJrJvfCBnxtNzplF0R8UQUPUmYBRO2VYRT14iFqsU9Y21bG4aiz9SdJgh20KIBjtY1bn7FUNlJ0LHPuKiZSoX5Z71Y5o06YHBP5ijXsfDbEYW5nwfL1sDIqIgxJ0d5bnY9lJ8IdgFjnNqWECLinfjFCXdqiOPprIHD9N/x7DmDstNzjDKw+3aUtRboJmUCN/VsNhOgvBbPux1+UZcf4W01u3fT/JglhjApwqtoQnszIglHxSTHL3WphAB671pr2PK9vgkDeASmrSSrG0LuTx9d5UQLm/NV6j5MXxL1q7/Kk/RTHRd4l5SkcjmA+7Ds7W5rTVIOXV7j/ZYL6HdVv6MWqMKL7QvwUNseM2cnbOxWKg2T37rpZsCk1eU7AeVA69LxS7BHFiswfEi32YWVaxJu0lNoMiZg4WaNhmOtTIzoZU/INWQsRkfbdSROOIiUAYy983kE6h8HjgCvmebb0BeJeMZBM5jyRVrcwrnPEnZzHOiPruNovstlEt6IFvUotNKZgk5Y3DBUUVB4fo/Dv2zBoobQHcomWa2W6Fux6uYuIxG2i6VEVBX3QhItPFr6wc6+n00qiLBG1vhUFGsJzsomMFJx0wrA6voi/kfjRU2TnJjwG0mKMwLurxVVJyLtgwJy3BEDmR2vcaW18G3xoNjc3E+5XS6MutGX3TSoY7n2DftHvKSj46tjPyGPujOQ0tsN9z3EDVLemgnEl42L4FgLtgMOERfIs2XiMy384LbTJQ6xtknjEL3cFNN765s04wFGyI/hc1npJnkCCfKg/sVFLW3YrVGMZAVo/648q655vw2oKKRq8h48g7rnOj239TKUZhxwXZiWqnNZnnBXMIT5hSXwNyIotGcWyuqG2WGL+us/rT6jekSofQaswm8XRDSQPLO9ZqSCX7uM709gLrc/gyNtWaZ9+jpi+o60ydRvYaAgnBzAqhG2spKFTcuOx3usTuQssR2eDZlomRi2zo/nGqDke1sFWr7AULH40IYXqyrle6oY4j8Wf7f6evtNm9b42fFmVAdE04X27tEOe9b1q4o2IWibni0eNdjvjCaMu+DveYqyGXTSTIZt6UzSYFP18YjHKrSsr8SJE9LNMlxwl93v1AfwVFejK7eg3tm7+HRgRVTBaQyuf3EWgXdwcRH8Nqo/rrLBjXmeKZSjWpQIOX9h0TRc91DSJFu02PdqcmIG5T3lFHToLZYB1ohQMIHmfX8+fyR59o86hE/dm8WD1LuEpDlHsIOe4ZKVB9PqRfFpEIZ9gBcyW4co3Kl7uxh5UJVWDLv97ROG29tLBC5rq9mUXxbFiuQSV1/YGnkJQL3IlJ+KKE9fd8Lk+QVjfz2Kc2LBiaTwGoJ5MreVo5LxGf4joXXOpmk+g2dbo6bmuz0WpoGDLYON26mOQawWP+LIpMGlPYiTbUlwgwVv4iQr1ntgpka309haHfh/PeadIJ5FftNERTbNEtO7yKdKbf8ESLl3mVfZW4/bWmO9PBQQAu7dhXNqwG8AmsS62w77UgS7OSvAoSbtCSGZ+9HiGNdn/LI/K+7W4y9S10lR5Npa+5WSnSSTvh9ICfBQVD6iO0HChhEfXKLhesp/250V9kC0yuwq5eLi+A7tCfNQ9iTsmj0hQvnemxISy26OyBe5y39+d+lx45sbx1ijnT6+5PHsmSKx+/tDf6FxdcJpp/D5jUYNvjDASBS9ZxeA/JJDCC3sde9F9ZHZDY4gASDLmzQJYGOthD+bm7aA/RWofNJVpbLRq/7AjonvEOMgc3sk2nLlkfppE7EChJ75xV3aJ4EenBpkjSJVdEMckybT6d+Io9lH8YOuxpzSLo2kVt1vDRr26UZKW/M5OXY3tEHFj8679f4oddmJ1OGLG8SYuCIf5U6qPiom5C1CSVz/8ObNAxPR4ECdGpIpfJO0HmtwMvRmsAbsOEBGg4wIVa945ukJugZNwklFZ6wI0ys2jyvNCDRcgDRrV/fzkfyEIO/WMT/dLx4tbgqksXpnbfvUEJKorLMm2Lye4LuJ3msHvu0c274bJ7E8Y8KXKoMLNRdL7ZwwNUfrbj2KHyaAyqE0YOjIF3+06YOWyC0rJVOthFh+I9ah7RKPwSpsaqK6abzCFZLFdx8qBYA7mO4avHlm2SqiIgdivfHMm/RIFKHuEv+FxWXzfT8KD/jtDhBo672uY8c+nVsfZQysAsalkjd9qkhaqZbDbsHZi2LssBabP5MFqOOGpHgiV9UgMd1vDmz42E7MDCVcgvOF6IgB2Qz62fWdgL94HpRJTY794aJfhPFdk1K4PVo1Cs4CPoCo7gYoqcIBa0vUYwz5zSJe+0Mk21E5ltTl9A2hZhnbt8XFJRTtmXP8g4Jx9EP5hMtj4o7nKgvUwUXcVpa7COGw2UL2eU8TtFvKpWkQd05G1WaTDzHaGUXmo5/LQTLyBvrgi+NbM5JXklvefyZ2Va6LtWethJBfU3KM/PNh/qn9PnjBbfvMe4gVeX1WLxud7DBER6aVL5SqSKlXLbvoi2osQKKM0ExfOvtIs5l5wCp/aoHVgbCnADu6dN877zmNpJdnov1Qj0RYALV1ivdN//vnr47Y7vCJqennCd6IAL5PiZFi0VIBjMG4WL+wwU5tkfnxPL1ukvpEdZqaejBrPqqU+ewlpX7enAwzAaihYMSOfLlVrM/ybIpBtuDtRkQRPr8nUa1r2EDQi/jWeKN1CNJpxnKv9peG2z9FHQBhFS2WdqshVeGBACqG/dqDhugOi/P9FLNv4buPcLL7Yd+GOg66DnvEWGAvUXuE3152NOykn1zRyMQZTLdcNRfuX3WfLklPYO6Nf2JRaylcMcrErbsixgcT+p1+qXLQ8GCnkfqyMjmPo+FJ2BWd5KDRUim0ihUmO6Vd4B2/JMTZXsWNwOPmN/DqjpX/Z64UVO7yh0emaA9Vt6+bNlxrR/l/9Hy1JGz9GpK22jLIHDBcUwGP53ZHKSSm/WyfNzOJxRdeSTK+SApsglmdYUSNLVJjVraDURTkVI0XjVFTvu98yM95w9y3DoX9iYWLdg4NRysVMoWkOB0Ts0MBQeCZkn+erzs+7KNFTXxPrQA5LHMgbT/2ukEeKhuKypLsu9s4BLqGWTFnHgv1SL37dqvqigY55fxfEvHBuw+ea41xnfFPSb2yjm9d/lLnXapCkIGoss6ecxHg9481heyM32bnlqzngiluuuMQoEU9Lwk5VBMhKuQN+LbJds2Nb+XnHz4yLIWLIXX+4+Uv4uh0zYJSLABk8piLuFQ7NwkHbQR+cptvefLwpZmBOC68065t5WR/IeOlYpg6ND320XSOyshBXH9hgCXWtIHzxG64rAf/UkmB+UsnP2g2xbklc2s8hoYtMQP8F3qKbL557mBBDVVc8MPyamBusSVbYowBNzASZ64PsdfOSIAmjb9gv8+4X0EK9F789s7predBaFZRJNzfUXwhMrPeCmVGP692781db4K9vD5HJISA7juhIjL5f1uLXaJkBFbJJxkp6MTtWDFtwnXPYmhkEDPIF4oas7scywk70fkAaXzIgDymYlBMUVXR29X2gp49Kvo/kuGR3/oDV4DpEMrfK94BBL9rSXicnF4zDcMnW30gYY5Q/NLTLVktfvoea8QTwJ18BsD27fxEkCkupxrez2JgHx+m6u+2hPEO+V8PhpHCgM2aONfr1ZCcGBjcRtZLw1v2Gtd6QkwkrNgDwy3B/7gShoZSDRno3ceu5V0//JgKQOGuQP2MpxeX/Wu+e3BsftOdBct8E0m3MKek4Ij9bIXNim8taEz0VczllW3nEhgy1IJ5pL2q8AgxsHxjqCsBIH8KL5l0rwWiqFSw+Kb4Y8dUi/im8kZQerV8LwOCXvyPlgkIkPcDFlkeoFaYgWhmPfFGqhJIab7g8cMmT0hp51sRq8KmkHCEU+GmHHkwBuycA9/5gp6niJAuLNuQf5t6DacELYr6U/wsddBce6vaaPWWMYPrkJh52TIvszYapEZSynFZsOqb3SAbe0AGZuSL3NbD3SYNOpXLcdIZbCfczHChbLB+ljuOhURZzWHaY6oxXGqLJyo3pzbiS2PQ3q7nFWzMXxrXWVEO+zL/2U14A==\",\n                \"value_start\": 17,\n                \"value_end\": 5485,\n                \"entropy\": 5.99409\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_CREDENTIALS\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.441,\n        \"line_data_list\": [\n            {\n                \"line\": \"SECRET = getenv(\\\"GEHE1MN15\\\", '')\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/doc_get_n\",\n                \"info\": \"FILE:./tests/samples/doc_get_n|RAW\",\n                \"variable\": \"SECRET\",\n                \"variable_start\": 0,\n                \"variable_end\": 6,\n                \"value\": \"getenv(\\\"GEHE1MN15\\\",\",\n                \"value_start\": 9,\n                \"value_end\": 28,\n                \"entropy\": 3.82687\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_GET\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.952,\n        \"line_data_list\": [\n            {\n                \"line\": \"if SECRET := getenv(\\\"CEKPET\\\", \\\"GEHEIMN1S\\\"):\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/doc_get_p\",\n                \"info\": \"FILE:./tests/samples/doc_get_p|RAW\",\n                \"variable\": \"SECRET :=\",\n                \"variable_start\": 3,\n                \"variable_end\": 12,\n                \"value\": \"GEHEIMN1S\",\n                \"value_start\": 31,\n                \"value_end\": 40,\n                \"entropy\": 2.9477\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_CREDENTIALS\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.007,\n        \"line_data_list\": [\n            {\n                \"line\": \"if SECRET := getenv(\\\"CEKPET\\\", \\\"GEHEIMN1S\\\"):\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/doc_get_p\",\n                \"info\": \"FILE:./tests/samples/doc_get_p|RAW\",\n                \"variable\": \"SECRET\",\n                \"variable_start\": 3,\n                \"variable_end\": 9,\n                \"value\": \"getenv(\\\"CEKPET\\\",\",\n                \"value_start\": 13,\n                \"value_end\": 29,\n                \"entropy\": 3.625\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_GET\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.001,\n        \"line_data_list\": [\n            {\n                \"line\": \"create(getenv(\\\\\\\"SECRET\\\\\\\", \\\\\\\"TeRcE52\\\\\\\"))\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/doc_get_p\",\n                \"info\": \"FILE:./tests/samples/doc_get_p|RAW\",\n                \"variable\": null,\n                \"variable_start\": -1,\n                \"variable_end\": -1,\n                \"value\": \"TeRcE52\",\n                \"value_start\": 28,\n                \"value_end\": 35,\n                \"entropy\": 2.80735\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_GET\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"{\\\"id\\\" : getenv(SECRET, \\\"TeRcE'5\\\"), \\\"workaround\\\": \\\"confuses csv parser\\\"}\",\n                \"line_num\": 3,\n                \"path\": \"./tests/samples/doc_get_p\",\n                \"info\": \"FILE:./tests/samples/doc_get_p|RAW\",\n                \"variable\": null,\n                \"variable_start\": -1,\n                \"variable_end\": -1,\n                \"value\": \"TeRcE'5\",\n                \"value_start\": 24,\n                \"value_end\": 31,\n                \"entropy\": 2.80735\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_GET\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.999,\n        \"line_data_list\": [\n            {\n                \"line\": \"password\\uc124\\uc815\\uc740getenv(\\\"DBPW\\\", b\\\"GEHE1MNIS\\\")\",\n                \"line_num\": 4,\n                \"path\": \"./tests/samples/doc_get_p\",\n                \"info\": \"FILE:./tests/samples/doc_get_p|RAW\",\n                \"variable\": \"password\\uc124\\uc815\\uc740\",\n                \"variable_start\": 0,\n                \"variable_end\": 11,\n                \"value\": \"GEHE1MNIS\",\n                \"value_start\": 28,\n                \"value_end\": 37,\n                \"entropy\": 2.9477\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_CREDENTIALS\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.466,\n        \"line_data_list\": [\n            {\n                \"line\": \"password\\uc124\\uc815\\uc740getenv(\\\"DBPW\\\", b\\\"GEHE1MNIS\\\")\",\n                \"line_num\": 4,\n                \"path\": \"./tests/samples/doc_get_p\",\n                \"info\": \"FILE:./tests/samples/doc_get_p|RAW\",\n                \"variable\": \"password\",\n                \"variable_start\": 0,\n                \"variable_end\": 8,\n                \"value\": \"getenv(\\\"DBPW\\\",\",\n                \"value_start\": 11,\n                \"value_end\": 25,\n                \"entropy\": 3.52164\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_GET\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.969,\n        \"line_data_list\": [\n            {\n                \"line\": \"PASSWORD = os.environ.get(\\\"PASSWORD\\\") or \\\"at5G6zi!m\\\"\",\n                \"line_num\": 5,\n                \"path\": \"./tests/samples/doc_get_p\",\n                \"info\": \"FILE:./tests/samples/doc_get_p|RAW\",\n                \"variable\": \"PASSWORD =\",\n                \"variable_start\": 0,\n                \"variable_end\": 10,\n                \"value\": \"at5G6zi!m\",\n                \"value_start\": 42,\n                \"value_end\": 51,\n                \"entropy\": 3.16993\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_CREDENTIALS\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.724,\n        \"line_data_list\": [\n            {\n                \"line\": \"ID:master,PW:dipPr10Gg!\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"PW\",\n                \"variable_start\": 10,\n                \"variable_end\": 12,\n                \"value\": \"dipPr10Gg!\",\n                \"value_start\": 13,\n                \"value_end\": 23,\n                \"entropy\": 3.32193\n            }\n        ]\n    },\n    {\n        \"rule\": \"ID_PAIR_PASSWD_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.724,\n        \"line_data_list\": [\n            {\n                \"line\": \"ID:master,PW:dipPr10Gg!\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"PW\",\n                \"variable_start\": 10,\n                \"variable_end\": 12,\n                \"value\": \"dipPr10Gg!\",\n                \"value_start\": 13,\n                \"value_end\": 23,\n                \"entropy\": 3.32193\n            },\n            {\n                \"line\": \"ID:master,PW:dipPr10Gg!\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"ID\",\n                \"variable_start\": 0,\n                \"variable_end\": 2,\n                \"value\": \"master,PW:dipPr10Gg!\",\n                \"value_start\": 3,\n                \"value_end\": 23,\n                \"entropy\": 4.12193\n            }\n        ]\n    },\n    {\n        \"rule\": \"PASSWD_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.724,\n        \"line_data_list\": [\n            {\n                \"line\": \"ID:master,PW:dipPr10Gg!\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"PW\",\n                \"variable_start\": 10,\n                \"variable_end\": 12,\n                \"value\": \"dipPr10Gg!\",\n                \"value_start\": 13,\n                \"value_end\": 23,\n                \"entropy\": 3.32193\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_CREDENTIALS\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.741,\n        \"line_data_list\": [\n            {\n                \"line\": \"ID:master PW:dipPr11Gg!\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"PW\",\n                \"variable_start\": 10,\n                \"variable_end\": 12,\n                \"value\": \"dipPr11Gg!\",\n                \"value_start\": 13,\n                \"value_end\": 23,\n                \"entropy\": 3.12193\n            }\n        ]\n    },\n    {\n        \"rule\": \"ID_PAIR_PASSWD_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.741,\n        \"line_data_list\": [\n            {\n                \"line\": \"ID:master PW:dipPr11Gg!\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"PW\",\n                \"variable_start\": 10,\n                \"variable_end\": 12,\n                \"value\": \"dipPr11Gg!\",\n                \"value_start\": 13,\n                \"value_end\": 23,\n                \"entropy\": 3.12193\n            },\n            {\n                \"line\": \"ID:master PW:dipPr11Gg!\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"ID\",\n                \"variable_start\": 0,\n                \"variable_end\": 2,\n                \"value\": \"master\",\n                \"value_start\": 3,\n                \"value_end\": 9,\n                \"entropy\": 2.58496\n            }\n        ]\n    },\n    {\n        \"rule\": \"PASSWD_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.741,\n        \"line_data_list\": [\n            {\n                \"line\": \"ID:master PW:dipPr11Gg!\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"PW\",\n                \"variable_start\": 10,\n                \"variable_end\": 12,\n                \"value\": \"dipPr11Gg!\",\n                \"value_start\": 13,\n                \"value_end\": 23,\n                \"entropy\": 3.12193\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_CREDENTIALS\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.86,\n        \"line_data_list\": [\n            {\n                \"line\": \"ANYID:master PW:dipPr12Gg!\",\n                \"line_num\": 3,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"PW\",\n                \"variable_start\": 13,\n                \"variable_end\": 15,\n                \"value\": \"dipPr12Gg!\",\n                \"value_start\": 16,\n                \"value_end\": 26,\n                \"entropy\": 3.32193\n            }\n        ]\n    },\n    {\n        \"rule\": \"ID_PAIR_PASSWD_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.86,\n        \"line_data_list\": [\n            {\n                \"line\": \"ANYID:master PW:dipPr12Gg!\",\n                \"line_num\": 3,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"PW\",\n                \"variable_start\": 13,\n                \"variable_end\": 15,\n                \"value\": \"dipPr12Gg!\",\n                \"value_start\": 16,\n                \"value_end\": 26,\n                \"entropy\": 3.32193\n            },\n            {\n                \"line\": \"ANYID:master PW:dipPr12Gg!\",\n                \"line_num\": 3,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"ID\",\n                \"variable_start\": 3,\n                \"variable_end\": 5,\n                \"value\": \"master\",\n                \"value_start\": 6,\n                \"value_end\": 12,\n                \"entropy\": 2.58496\n            }\n        ]\n    },\n    {\n        \"rule\": \"PASSWD_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.86,\n        \"line_data_list\": [\n            {\n                \"line\": \"ANYID:master PW:dipPr12Gg!\",\n                \"line_num\": 3,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"PW\",\n                \"variable_start\": 13,\n                \"variable_end\": 15,\n                \"value\": \"dipPr12Gg!\",\n                \"value_start\": 16,\n                \"value_end\": 26,\n                \"entropy\": 3.32193\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_CREDENTIALS\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.974,\n        \"line_data_list\": [\n            {\n                \"line\": \"Username:master Password:dipPr13Gg!\",\n                \"line_num\": 4,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"Password\",\n                \"variable_start\": 16,\n                \"variable_end\": 24,\n                \"value\": \"dipPr13Gg!\",\n                \"value_start\": 25,\n                \"value_end\": 35,\n                \"entropy\": 3.32193\n            }\n        ]\n    },\n    {\n        \"rule\": \"ID_PAIR_PASSWD_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.974,\n        \"line_data_list\": [\n            {\n                \"line\": \"Username:master Password:dipPr13Gg!\",\n                \"line_num\": 4,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"Password\",\n                \"variable_start\": 16,\n                \"variable_end\": 24,\n                \"value\": \"dipPr13Gg!\",\n                \"value_start\": 25,\n                \"value_end\": 35,\n                \"entropy\": 3.32193\n            },\n            {\n                \"line\": \"Username:master Password:dipPr13Gg!\",\n                \"line_num\": 4,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"Username\",\n                \"variable_start\": 0,\n                \"variable_end\": 8,\n                \"value\": \"master\",\n                \"value_start\": 9,\n                \"value_end\": 15,\n                \"entropy\": 2.58496\n            }\n        ]\n    },\n    {\n        \"rule\": \"PASSWD_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.974,\n        \"line_data_list\": [\n            {\n                \"line\": \"Username:master Password:dipPr13Gg!\",\n                \"line_num\": 4,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"Password\",\n                \"variable_start\": 16,\n                \"variable_end\": 24,\n                \"value\": \"dipPr13Gg!\",\n                \"value_start\": 25,\n                \"value_end\": 35,\n                \"entropy\": 3.32193\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_CREDENTIALS\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.998,\n        \"line_data_list\": [\n            {\n                \"line\": \"id:master,password:dipPr14Gg!\",\n                \"line_num\": 5,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"password\",\n                \"variable_start\": 10,\n                \"variable_end\": 18,\n                \"value\": \"dipPr14Gg!\",\n                \"value_start\": 19,\n                \"value_end\": 29,\n                \"entropy\": 3.32193\n            }\n        ]\n    },\n    {\n        \"rule\": \"ID_PAIR_PASSWD_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.998,\n        \"line_data_list\": [\n            {\n                \"line\": \"id:master,password:dipPr14Gg!\",\n                \"line_num\": 5,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"password\",\n                \"variable_start\": 10,\n                \"variable_end\": 18,\n                \"value\": \"dipPr14Gg!\",\n                \"value_start\": 19,\n                \"value_end\": 29,\n                \"entropy\": 3.32193\n            },\n            {\n                \"line\": \"id:master,password:dipPr14Gg!\",\n                \"line_num\": 5,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"id\",\n                \"variable_start\": 0,\n                \"variable_end\": 2,\n                \"value\": \"master,password:dipPr14Gg!\",\n                \"value_start\": 3,\n                \"value_end\": 29,\n                \"entropy\": 4.10391\n            }\n        ]\n    },\n    {\n        \"rule\": \"PASSWD_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.998,\n        \"line_data_list\": [\n            {\n                \"line\": \"id:master,password:dipPr14Gg!\",\n                \"line_num\": 5,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"password\",\n                \"variable_start\": 10,\n                \"variable_end\": 18,\n                \"value\": \"dipPr14Gg!\",\n                \"value_start\": 19,\n                \"value_end\": 29,\n                \"entropy\": 3.32193\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_CREDENTIALS\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.798,\n        \"line_data_list\": [\n            {\n                \"line\": \"ID:master/PW:dipPr15Gg!\",\n                \"line_num\": 6,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"PW\",\n                \"variable_start\": 10,\n                \"variable_end\": 12,\n                \"value\": \"dipPr15Gg!\",\n                \"value_start\": 13,\n                \"value_end\": 23,\n                \"entropy\": 3.32193\n            }\n        ]\n    },\n    {\n        \"rule\": \"ID_PAIR_PASSWD_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.798,\n        \"line_data_list\": [\n            {\n                \"line\": \"ID:master/PW:dipPr15Gg!\",\n                \"line_num\": 6,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"PW\",\n                \"variable_start\": 10,\n                \"variable_end\": 12,\n                \"value\": \"dipPr15Gg!\",\n                \"value_start\": 13,\n                \"value_end\": 23,\n                \"entropy\": 3.32193\n            },\n            {\n                \"line\": \"ID:master/PW:dipPr15Gg!\",\n                \"line_num\": 6,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"ID\",\n                \"variable_start\": 0,\n                \"variable_end\": 2,\n                \"value\": \"master/PW:dipPr15Gg!\",\n                \"value_start\": 3,\n                \"value_end\": 23,\n                \"entropy\": 4.12193\n            }\n        ]\n    },\n    {\n        \"rule\": \"PASSWD_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.798,\n        \"line_data_list\": [\n            {\n                \"line\": \"ID:master/PW:dipPr15Gg!\",\n                \"line_num\": 6,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"PW\",\n                \"variable_start\": 10,\n                \"variable_end\": 12,\n                \"value\": \"dipPr15Gg!\",\n                \"value_start\": 13,\n                \"value_end\": 23,\n                \"entropy\": 3.32193\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_CREDENTIALS\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.998,\n        \"line_data_list\": [\n            {\n                \"line\": \"id:master password:dipPr16Gg!\",\n                \"line_num\": 7,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"password\",\n                \"variable_start\": 10,\n                \"variable_end\": 18,\n                \"value\": \"dipPr16Gg!\",\n                \"value_start\": 19,\n                \"value_end\": 29,\n                \"entropy\": 3.32193\n            }\n        ]\n    },\n    {\n        \"rule\": \"ID_PAIR_PASSWD_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.998,\n        \"line_data_list\": [\n            {\n                \"line\": \"id:master password:dipPr16Gg!\",\n                \"line_num\": 7,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"password\",\n                \"variable_start\": 10,\n                \"variable_end\": 18,\n                \"value\": \"dipPr16Gg!\",\n                \"value_start\": 19,\n                \"value_end\": 29,\n                \"entropy\": 3.32193\n            },\n            {\n                \"line\": \"id:master password:dipPr16Gg!\",\n                \"line_num\": 7,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"id\",\n                \"variable_start\": 0,\n                \"variable_end\": 2,\n                \"value\": \"master\",\n                \"value_start\": 3,\n                \"value_end\": 9,\n                \"entropy\": 2.58496\n            }\n        ]\n    },\n    {\n        \"rule\": \"PASSWD_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.998,\n        \"line_data_list\": [\n            {\n                \"line\": \"id:master password:dipPr16Gg!\",\n                \"line_num\": 7,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"password\",\n                \"variable_start\": 10,\n                \"variable_end\": 18,\n                \"value\": \"dipPr16Gg!\",\n                \"value_start\": 19,\n                \"value_end\": 29,\n                \"entropy\": 3.32193\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_CREDENTIALS\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.995,\n        \"line_data_list\": [\n            {\n                \"line\": \"user:master password:dipPr17Gg!\",\n                \"line_num\": 8,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"password\",\n                \"variable_start\": 12,\n                \"variable_end\": 20,\n                \"value\": \"dipPr17Gg!\",\n                \"value_start\": 21,\n                \"value_end\": 31,\n                \"entropy\": 3.32193\n            }\n        ]\n    },\n    {\n        \"rule\": \"ID_PAIR_PASSWD_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.995,\n        \"line_data_list\": [\n            {\n                \"line\": \"user:master password:dipPr17Gg!\",\n                \"line_num\": 8,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"password\",\n                \"variable_start\": 12,\n                \"variable_end\": 20,\n                \"value\": \"dipPr17Gg!\",\n                \"value_start\": 21,\n                \"value_end\": 31,\n                \"entropy\": 3.32193\n            },\n            {\n                \"line\": \"user:master password:dipPr17Gg!\",\n                \"line_num\": 8,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"user\",\n                \"variable_start\": 0,\n                \"variable_end\": 4,\n                \"value\": \"master\",\n                \"value_start\": 5,\n                \"value_end\": 11,\n                \"entropy\": 2.58496\n            }\n        ]\n    },\n    {\n        \"rule\": \"PASSWD_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.995,\n        \"line_data_list\": [\n            {\n                \"line\": \"user:master password:dipPr17Gg!\",\n                \"line_num\": 8,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"password\",\n                \"variable_start\": 12,\n                \"variable_end\": 20,\n                \"value\": \"dipPr17Gg!\",\n                \"value_start\": 21,\n                \"value_end\": 31,\n                \"entropy\": 3.32193\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_CREDENTIALS\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.993,\n        \"line_data_list\": [\n            {\n                \"line\": \"username:master,password:dipPr19Gg!\",\n                \"line_num\": 10,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"password\",\n                \"variable_start\": 16,\n                \"variable_end\": 24,\n                \"value\": \"dipPr19Gg!\",\n                \"value_start\": 25,\n                \"value_end\": 35,\n                \"entropy\": 3.32193\n            }\n        ]\n    },\n    {\n        \"rule\": \"ID_PAIR_PASSWD_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.993,\n        \"line_data_list\": [\n            {\n                \"line\": \"username:master,password:dipPr19Gg!\",\n                \"line_num\": 10,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"password\",\n                \"variable_start\": 16,\n                \"variable_end\": 24,\n                \"value\": \"dipPr19Gg!\",\n                \"value_start\": 25,\n                \"value_end\": 35,\n                \"entropy\": 3.32193\n            },\n            {\n                \"line\": \"username:master,password:dipPr19Gg!\",\n                \"line_num\": 10,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"username\",\n                \"variable_start\": 0,\n                \"variable_end\": 8,\n                \"value\": \"master,password:dipPr19Gg!\",\n                \"value_start\": 9,\n                \"value_end\": 35,\n                \"entropy\": 4.10391\n            }\n        ]\n    },\n    {\n        \"rule\": \"PASSWD_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.993,\n        \"line_data_list\": [\n            {\n                \"line\": \"username:master,password:dipPr19Gg!\",\n                \"line_num\": 10,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"password\",\n                \"variable_start\": 16,\n                \"variable_end\": 24,\n                \"value\": \"dipPr19Gg!\",\n                \"value_start\": 25,\n                \"value_end\": 35,\n                \"entropy\": 3.32193\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_CREDENTIALS\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.864,\n        \"line_data_list\": [\n            {\n                \"line\": \"username:master pwd:dipPr110Gg!\",\n                \"line_num\": 11,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"pwd\",\n                \"variable_start\": 16,\n                \"variable_end\": 19,\n                \"value\": \"dipPr110Gg!\",\n                \"value_start\": 20,\n                \"value_end\": 31,\n                \"entropy\": 3.27761\n            }\n        ]\n    },\n    {\n        \"rule\": \"ID_PAIR_PASSWD_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.864,\n        \"line_data_list\": [\n            {\n                \"line\": \"username:master pwd:dipPr110Gg!\",\n                \"line_num\": 11,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"pwd\",\n                \"variable_start\": 16,\n                \"variable_end\": 19,\n                \"value\": \"dipPr110Gg!\",\n                \"value_start\": 20,\n                \"value_end\": 31,\n                \"entropy\": 3.27761\n            },\n            {\n                \"line\": \"username:master pwd:dipPr110Gg!\",\n                \"line_num\": 11,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"username\",\n                \"variable_start\": 0,\n                \"variable_end\": 8,\n                \"value\": \"master\",\n                \"value_start\": 9,\n                \"value_end\": 15,\n                \"entropy\": 2.58496\n            }\n        ]\n    },\n    {\n        \"rule\": \"PASSWD_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.864,\n        \"line_data_list\": [\n            {\n                \"line\": \"username:master pwd:dipPr110Gg!\",\n                \"line_num\": 11,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"pwd\",\n                \"variable_start\": 16,\n                \"variable_end\": 19,\n                \"value\": \"dipPr110Gg!\",\n                \"value_start\": 20,\n                \"value_end\": 31,\n                \"entropy\": 3.27761\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_CREDENTIALS\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.933,\n        \"line_data_list\": [\n            {\n                \"line\": \"ANYid:master,password:dipPr111Gg!\",\n                \"line_num\": 12,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"password\",\n                \"variable_start\": 13,\n                \"variable_end\": 21,\n                \"value\": \"dipPr111Gg!\",\n                \"value_start\": 22,\n                \"value_end\": 33,\n                \"entropy\": 3.02717\n            }\n        ]\n    },\n    {\n        \"rule\": \"ID_PAIR_PASSWD_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.933,\n        \"line_data_list\": [\n            {\n                \"line\": \"ANYid:master,password:dipPr111Gg!\",\n                \"line_num\": 12,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"password\",\n                \"variable_start\": 13,\n                \"variable_end\": 21,\n                \"value\": \"dipPr111Gg!\",\n                \"value_start\": 22,\n                \"value_end\": 33,\n                \"entropy\": 3.02717\n            },\n            {\n                \"line\": \"ANYid:master,password:dipPr111Gg!\",\n                \"line_num\": 12,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"id\",\n                \"variable_start\": 3,\n                \"variable_end\": 5,\n                \"value\": \"master,password:dipPr111Gg!\",\n                \"value_start\": 6,\n                \"value_end\": 33,\n                \"entropy\": 4.00434\n            }\n        ]\n    },\n    {\n        \"rule\": \"PASSWD_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.933,\n        \"line_data_list\": [\n            {\n                \"line\": \"ANYid:master,password:dipPr111Gg!\",\n                \"line_num\": 12,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"password\",\n                \"variable_start\": 13,\n                \"variable_end\": 21,\n                \"value\": \"dipPr111Gg!\",\n                \"value_start\": 22,\n                \"value_end\": 33,\n                \"entropy\": 3.02717\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_CREDENTIALS\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.712,\n        \"line_data_list\": [\n            {\n                \"line\": \"ID:master PWD:dipPr112Gg!\",\n                \"line_num\": 13,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"PWD\",\n                \"variable_start\": 10,\n                \"variable_end\": 13,\n                \"value\": \"dipPr112Gg!\",\n                \"value_start\": 14,\n                \"value_end\": 25,\n                \"entropy\": 3.27761\n            }\n        ]\n    },\n    {\n        \"rule\": \"ID_PAIR_PASSWD_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.712,\n        \"line_data_list\": [\n            {\n                \"line\": \"ID:master PWD:dipPr112Gg!\",\n                \"line_num\": 13,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"PWD\",\n                \"variable_start\": 10,\n                \"variable_end\": 13,\n                \"value\": \"dipPr112Gg!\",\n                \"value_start\": 14,\n                \"value_end\": 25,\n                \"entropy\": 3.27761\n            },\n            {\n                \"line\": \"ID:master PWD:dipPr112Gg!\",\n                \"line_num\": 13,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"ID\",\n                \"variable_start\": 0,\n                \"variable_end\": 2,\n                \"value\": \"master\",\n                \"value_start\": 3,\n                \"value_end\": 9,\n                \"entropy\": 2.58496\n            }\n        ]\n    },\n    {\n        \"rule\": \"PASSWD_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.712,\n        \"line_data_list\": [\n            {\n                \"line\": \"ID:master PWD:dipPr112Gg!\",\n                \"line_num\": 13,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"PWD\",\n                \"variable_start\": 10,\n                \"variable_end\": 13,\n                \"value\": \"dipPr112Gg!\",\n                \"value_start\": 14,\n                \"value_end\": 25,\n                \"entropy\": 3.27761\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_CREDENTIALS\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.992,\n        \"line_data_list\": [\n            {\n                \"line\": \"user id:master password:dipPr113Gg!\",\n                \"line_num\": 14,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"password\",\n                \"variable_start\": 15,\n                \"variable_end\": 23,\n                \"value\": \"dipPr113Gg!\",\n                \"value_start\": 24,\n                \"value_end\": 35,\n                \"entropy\": 3.27761\n            }\n        ]\n    },\n    {\n        \"rule\": \"ID_PAIR_PASSWD_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.992,\n        \"line_data_list\": [\n            {\n                \"line\": \"user id:master password:dipPr113Gg!\",\n                \"line_num\": 14,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"password\",\n                \"variable_start\": 15,\n                \"variable_end\": 23,\n                \"value\": \"dipPr113Gg!\",\n                \"value_start\": 24,\n                \"value_end\": 35,\n                \"entropy\": 3.27761\n            },\n            {\n                \"line\": \"user id:master password:dipPr113Gg!\",\n                \"line_num\": 14,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"user id\",\n                \"variable_start\": 0,\n                \"variable_end\": 7,\n                \"value\": \"master\",\n                \"value_start\": 8,\n                \"value_end\": 14,\n                \"entropy\": 2.58496\n            }\n        ]\n    },\n    {\n        \"rule\": \"PASSWD_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.992,\n        \"line_data_list\": [\n            {\n                \"line\": \"user id:master password:dipPr113Gg!\",\n                \"line_num\": 14,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"password\",\n                \"variable_start\": 15,\n                \"variable_end\": 23,\n                \"value\": \"dipPr113Gg!\",\n                \"value_start\": 24,\n                \"value_end\": 35,\n                \"entropy\": 3.27761\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_CREDENTIALS\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.99,\n        \"line_data_list\": [\n            {\n                \"line\": \"user:master,password:dipPr114Gg!\",\n                \"line_num\": 15,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"password\",\n                \"variable_start\": 12,\n                \"variable_end\": 20,\n                \"value\": \"dipPr114Gg!\",\n                \"value_start\": 21,\n                \"value_end\": 32,\n                \"entropy\": 3.27761\n            }\n        ]\n    },\n    {\n        \"rule\": \"ID_PAIR_PASSWD_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.99,\n        \"line_data_list\": [\n            {\n                \"line\": \"user:master,password:dipPr114Gg!\",\n                \"line_num\": 15,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"password\",\n                \"variable_start\": 12,\n                \"variable_end\": 20,\n                \"value\": \"dipPr114Gg!\",\n                \"value_start\": 21,\n                \"value_end\": 32,\n                \"entropy\": 3.27761\n            },\n            {\n                \"line\": \"user:master,password:dipPr114Gg!\",\n                \"line_num\": 15,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"user\",\n                \"variable_start\": 0,\n                \"variable_end\": 4,\n                \"value\": \"master,password:dipPr114Gg!\",\n                \"value_start\": 5,\n                \"value_end\": 32,\n                \"entropy\": 4.10638\n            }\n        ]\n    },\n    {\n        \"rule\": \"PASSWD_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.99,\n        \"line_data_list\": [\n            {\n                \"line\": \"user:master,password:dipPr114Gg!\",\n                \"line_num\": 15,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"password\",\n                \"variable_start\": 12,\n                \"variable_end\": 20,\n                \"value\": \"dipPr114Gg!\",\n                \"value_start\": 21,\n                \"value_end\": 32,\n                \"entropy\": 3.27761\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_CREDENTIALS\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.991,\n        \"line_data_list\": [\n            {\n                \"line\": \"user=master,password=dipPr115Gg!\",\n                \"line_num\": 16,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"password\",\n                \"variable_start\": 12,\n                \"variable_end\": 20,\n                \"value\": \"dipPr115Gg!\",\n                \"value_start\": 21,\n                \"value_end\": 32,\n                \"entropy\": 3.27761\n            }\n        ]\n    },\n    {\n        \"rule\": \"ID_PAIR_PASSWD_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.991,\n        \"line_data_list\": [\n            {\n                \"line\": \"user=master,password=dipPr115Gg!\",\n                \"line_num\": 16,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"password\",\n                \"variable_start\": 12,\n                \"variable_end\": 20,\n                \"value\": \"dipPr115Gg!\",\n                \"value_start\": 21,\n                \"value_end\": 32,\n                \"entropy\": 3.27761\n            },\n            {\n                \"line\": \"user=master,password=dipPr115Gg!\",\n                \"line_num\": 16,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"user\",\n                \"variable_start\": 0,\n                \"variable_end\": 4,\n                \"value\": \"master,password=dipPr115Gg!\",\n                \"value_start\": 5,\n                \"value_end\": 32,\n                \"entropy\": 4.10638\n            }\n        ]\n    },\n    {\n        \"rule\": \"PASSWD_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.991,\n        \"line_data_list\": [\n            {\n                \"line\": \"user=master,password=dipPr115Gg!\",\n                \"line_num\": 16,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"password\",\n                \"variable_start\": 12,\n                \"variable_end\": 20,\n                \"value\": \"dipPr115Gg!\",\n                \"value_start\": 21,\n                \"value_end\": 32,\n                \"entropy\": 3.27761\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_CREDENTIALS\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.992,\n        \"line_data_list\": [\n            {\n                \"line\": \"username=master password=dipPr116Gg!\",\n                \"line_num\": 17,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"password\",\n                \"variable_start\": 16,\n                \"variable_end\": 24,\n                \"value\": \"dipPr116Gg!\",\n                \"value_start\": 25,\n                \"value_end\": 36,\n                \"entropy\": 3.27761\n            }\n        ]\n    },\n    {\n        \"rule\": \"ID_PAIR_PASSWD_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.992,\n        \"line_data_list\": [\n            {\n                \"line\": \"username=master password=dipPr116Gg!\",\n                \"line_num\": 17,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"password\",\n                \"variable_start\": 16,\n                \"variable_end\": 24,\n                \"value\": \"dipPr116Gg!\",\n                \"value_start\": 25,\n                \"value_end\": 36,\n                \"entropy\": 3.27761\n            },\n            {\n                \"line\": \"username=master password=dipPr116Gg!\",\n                \"line_num\": 17,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"username\",\n                \"variable_start\": 0,\n                \"variable_end\": 8,\n                \"value\": \"master\",\n                \"value_start\": 9,\n                \"value_end\": 15,\n                \"entropy\": 2.58496\n            }\n        ]\n    },\n    {\n        \"rule\": \"PASSWD_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.992,\n        \"line_data_list\": [\n            {\n                \"line\": \"username=master password=dipPr116Gg!\",\n                \"line_num\": 17,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"password\",\n                \"variable_start\": 16,\n                \"variable_end\": 24,\n                \"value\": \"dipPr116Gg!\",\n                \"value_start\": 25,\n                \"value_end\": 36,\n                \"entropy\": 3.27761\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_CREDENTIALS\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.989,\n        \"line_data_list\": [\n            {\n                \"line\": \"User name:master Password:dipPr117Gg!\",\n                \"line_num\": 18,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"Password\",\n                \"variable_start\": 17,\n                \"variable_end\": 25,\n                \"value\": \"dipPr117Gg!\",\n                \"value_start\": 26,\n                \"value_end\": 37,\n                \"entropy\": 3.27761\n            }\n        ]\n    },\n    {\n        \"rule\": \"ID_PAIR_PASSWD_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.989,\n        \"line_data_list\": [\n            {\n                \"line\": \"User name:master Password:dipPr117Gg!\",\n                \"line_num\": 18,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"Password\",\n                \"variable_start\": 17,\n                \"variable_end\": 25,\n                \"value\": \"dipPr117Gg!\",\n                \"value_start\": 26,\n                \"value_end\": 37,\n                \"entropy\": 3.27761\n            },\n            {\n                \"line\": \"User name:master Password:dipPr117Gg!\",\n                \"line_num\": 18,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"User name\",\n                \"variable_start\": 0,\n                \"variable_end\": 9,\n                \"value\": \"master\",\n                \"value_start\": 10,\n                \"value_end\": 16,\n                \"entropy\": 2.58496\n            }\n        ]\n    },\n    {\n        \"rule\": \"PASSWD_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.989,\n        \"line_data_list\": [\n            {\n                \"line\": \"User name:master Password:dipPr117Gg!\",\n                \"line_num\": 18,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"Password\",\n                \"variable_start\": 17,\n                \"variable_end\": 25,\n                \"value\": \"dipPr117Gg!\",\n                \"value_start\": 26,\n                \"value_end\": 37,\n                \"entropy\": 3.27761\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_CREDENTIALS\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.987,\n        \"line_data_list\": [\n            {\n                \"line\": \"username=master,password=dipPr118Gg!\",\n                \"line_num\": 19,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"password\",\n                \"variable_start\": 16,\n                \"variable_end\": 24,\n                \"value\": \"dipPr118Gg!\",\n                \"value_start\": 25,\n                \"value_end\": 36,\n                \"entropy\": 3.27761\n            }\n        ]\n    },\n    {\n        \"rule\": \"ID_PAIR_PASSWD_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.987,\n        \"line_data_list\": [\n            {\n                \"line\": \"username=master,password=dipPr118Gg!\",\n                \"line_num\": 19,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"password\",\n                \"variable_start\": 16,\n                \"variable_end\": 24,\n                \"value\": \"dipPr118Gg!\",\n                \"value_start\": 25,\n                \"value_end\": 36,\n                \"entropy\": 3.27761\n            },\n            {\n                \"line\": \"username=master,password=dipPr118Gg!\",\n                \"line_num\": 19,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"username\",\n                \"variable_start\": 0,\n                \"variable_end\": 8,\n                \"value\": \"master,password=dipPr118Gg!\",\n                \"value_start\": 9,\n                \"value_end\": 36,\n                \"entropy\": 4.10638\n            }\n        ]\n    },\n    {\n        \"rule\": \"PASSWD_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.987,\n        \"line_data_list\": [\n            {\n                \"line\": \"username=master,password=dipPr118Gg!\",\n                \"line_num\": 19,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"password\",\n                \"variable_start\": 16,\n                \"variable_end\": 24,\n                \"value\": \"dipPr118Gg!\",\n                \"value_start\": 25,\n                \"value_end\": 36,\n                \"entropy\": 3.27761\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_CREDENTIALS\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.997,\n        \"line_data_list\": [\n            {\n                \"line\": \"--user=master --password=dipPr119Gg!\",\n                \"line_num\": 20,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"password\",\n                \"variable_start\": 16,\n                \"variable_end\": 24,\n                \"value\": \"dipPr119Gg!\",\n                \"value_start\": 25,\n                \"value_end\": 36,\n                \"entropy\": 3.27761\n            }\n        ]\n    },\n    {\n        \"rule\": \"ID_PAIR_PASSWD_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.997,\n        \"line_data_list\": [\n            {\n                \"line\": \"--user=master --password=dipPr119Gg!\",\n                \"line_num\": 20,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"password\",\n                \"variable_start\": 16,\n                \"variable_end\": 24,\n                \"value\": \"dipPr119Gg!\",\n                \"value_start\": 25,\n                \"value_end\": 36,\n                \"entropy\": 3.27761\n            },\n            {\n                \"line\": \"--user=master --password=dipPr119Gg!\",\n                \"line_num\": 20,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"user\",\n                \"variable_start\": 2,\n                \"variable_end\": 6,\n                \"value\": \"master\",\n                \"value_start\": 7,\n                \"value_end\": 13,\n                \"entropy\": 2.58496\n            }\n        ]\n    },\n    {\n        \"rule\": \"PASSWD_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.997,\n        \"line_data_list\": [\n            {\n                \"line\": \"--user=master --password=dipPr119Gg!\",\n                \"line_num\": 20,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"password\",\n                \"variable_start\": 16,\n                \"variable_end\": 24,\n                \"value\": \"dipPr119Gg!\",\n                \"value_start\": 25,\n                \"value_end\": 36,\n                \"entropy\": 3.27761\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_CREDENTIALS\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.918,\n        \"line_data_list\": [\n            {\n                \"line\": \"user=master passwd=dipPr120Gg!\",\n                \"line_num\": 21,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"passwd\",\n                \"variable_start\": 12,\n                \"variable_end\": 18,\n                \"value\": \"dipPr120Gg!\",\n                \"value_start\": 19,\n                \"value_end\": 30,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"ID_PAIR_PASSWD_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.918,\n        \"line_data_list\": [\n            {\n                \"line\": \"user=master passwd=dipPr120Gg!\",\n                \"line_num\": 21,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"passwd\",\n                \"variable_start\": 12,\n                \"variable_end\": 18,\n                \"value\": \"dipPr120Gg!\",\n                \"value_start\": 19,\n                \"value_end\": 30,\n                \"entropy\": 3.45943\n            },\n            {\n                \"line\": \"user=master passwd=dipPr120Gg!\",\n                \"line_num\": 21,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"user\",\n                \"variable_start\": 0,\n                \"variable_end\": 4,\n                \"value\": \"master\",\n                \"value_start\": 5,\n                \"value_end\": 11,\n                \"entropy\": 2.58496\n            }\n        ]\n    },\n    {\n        \"rule\": \"PASSWD_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.918,\n        \"line_data_list\": [\n            {\n                \"line\": \"user=master passwd=dipPr120Gg!\",\n                \"line_num\": 21,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"passwd\",\n                \"variable_start\": 12,\n                \"variable_end\": 18,\n                \"value\": \"dipPr120Gg!\",\n                \"value_start\": 19,\n                \"value_end\": 30,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"ID_PAIR_PASSWD_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.999,\n        \"line_data_list\": [\n            {\n                \"line\": \"account:dipPr121Gg! password:dipPr121Gg!\",\n                \"line_num\": 22,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"account\",\n                \"variable_start\": 0,\n                \"variable_end\": 7,\n                \"value\": \"dipPr121Gg!\",\n                \"value_start\": 8,\n                \"value_end\": 19,\n                \"entropy\": 3.27761\n            },\n            {\n                \"line\": \"account:dipPr121Gg! password:dipPr121Gg!\",\n                \"line_num\": 22,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"password\",\n                \"variable_start\": 20,\n                \"variable_end\": 28,\n                \"value\": \"dipPr121Gg!\",\n                \"value_start\": 29,\n                \"value_end\": 40,\n                \"entropy\": 3.27761\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_CREDENTIALS\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.999,\n        \"line_data_list\": [\n            {\n                \"line\": \"account:dipPr121Gg! password:dipPr121Gg!\",\n                \"line_num\": 22,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"password\",\n                \"variable_start\": 20,\n                \"variable_end\": 28,\n                \"value\": \"dipPr121Gg!\",\n                \"value_start\": 29,\n                \"value_end\": 40,\n                \"entropy\": 3.27761\n            }\n        ]\n    },\n    {\n        \"rule\": \"PASSWD_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.999,\n        \"line_data_list\": [\n            {\n                \"line\": \"account:dipPr121Gg! password:dipPr121Gg!\",\n                \"line_num\": 22,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"password\",\n                \"variable_start\": 20,\n                \"variable_end\": 28,\n                \"value\": \"dipPr121Gg!\",\n                \"value_start\": 29,\n                \"value_end\": 40,\n                \"entropy\": 3.27761\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_CREDENTIALS\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.945,\n        \"line_data_list\": [\n            {\n                \"line\": \"id:master pass:dipPr122Gg!\",\n                \"line_num\": 23,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"pass\",\n                \"variable_start\": 10,\n                \"variable_end\": 14,\n                \"value\": \"dipPr122Gg!\",\n                \"value_start\": 15,\n                \"value_end\": 26,\n                \"entropy\": 3.27761\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_CREDENTIALS\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"\\uc544\\uc774\\ub514:master \\ud328\\uc2a4\\uc6cc\\ub4dc:dipPr123Gg!\",\n                \"line_num\": 24,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"\\ud328\\uc2a4\\uc6cc\\ub4dc\",\n                \"variable_start\": 11,\n                \"variable_end\": 15,\n                \"value\": \"dipPr123Gg!\",\n                \"value_start\": 16,\n                \"value_end\": 27,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"ID_PAIR_PASSWD_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"\\uc544\\uc774\\ub514:master \\ud328\\uc2a4\\uc6cc\\ub4dc:dipPr123Gg!\",\n                \"line_num\": 24,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"\\ud328\\uc2a4\\uc6cc\\ub4dc\",\n                \"variable_start\": 11,\n                \"variable_end\": 15,\n                \"value\": \"dipPr123Gg!\",\n                \"value_start\": 16,\n                \"value_end\": 27,\n                \"entropy\": 3.45943\n            },\n            {\n                \"line\": \"\\uc544\\uc774\\ub514:master \\ud328\\uc2a4\\uc6cc\\ub4dc:dipPr123Gg!\",\n                \"line_num\": 24,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"\\uc544\\uc774\\ub514\",\n                \"variable_start\": 0,\n                \"variable_end\": 3,\n                \"value\": \"master\",\n                \"value_start\": 4,\n                \"value_end\": 10,\n                \"entropy\": 2.58496\n            }\n        ]\n    },\n    {\n        \"rule\": \"PASSWD_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"\\uc544\\uc774\\ub514:master \\ud328\\uc2a4\\uc6cc\\ub4dc:dipPr123Gg!\",\n                \"line_num\": 24,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"\\ud328\\uc2a4\\uc6cc\\ub4dc\",\n                \"variable_start\": 11,\n                \"variable_end\": 15,\n                \"value\": \"dipPr123Gg!\",\n                \"value_start\": 16,\n                \"value_end\": 27,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_CREDENTIALS\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.937,\n        \"line_data_list\": [\n            {\n                \"line\": \"user:master pw:dipPr124Gg!\",\n                \"line_num\": 25,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"pw\",\n                \"variable_start\": 12,\n                \"variable_end\": 14,\n                \"value\": \"dipPr124Gg!\",\n                \"value_start\": 15,\n                \"value_end\": 26,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"ID_PAIR_PASSWD_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.937,\n        \"line_data_list\": [\n            {\n                \"line\": \"user:master pw:dipPr124Gg!\",\n                \"line_num\": 25,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"pw\",\n                \"variable_start\": 12,\n                \"variable_end\": 14,\n                \"value\": \"dipPr124Gg!\",\n                \"value_start\": 15,\n                \"value_end\": 26,\n                \"entropy\": 3.45943\n            },\n            {\n                \"line\": \"user:master pw:dipPr124Gg!\",\n                \"line_num\": 25,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"user\",\n                \"variable_start\": 0,\n                \"variable_end\": 4,\n                \"value\": \"master\",\n                \"value_start\": 5,\n                \"value_end\": 11,\n                \"entropy\": 2.58496\n            }\n        ]\n    },\n    {\n        \"rule\": \"PASSWD_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.937,\n        \"line_data_list\": [\n            {\n                \"line\": \"user:master pw:dipPr124Gg!\",\n                \"line_num\": 25,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"pw\",\n                \"variable_start\": 12,\n                \"variable_end\": 14,\n                \"value\": \"dipPr124Gg!\",\n                \"value_start\": 15,\n                \"value_end\": 26,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_CREDENTIALS\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.974,\n        \"line_data_list\": [\n            {\n                \"line\": \"Username:master/Password:dipPr125Gg!\",\n                \"line_num\": 26,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"Password\",\n                \"variable_start\": 16,\n                \"variable_end\": 24,\n                \"value\": \"dipPr125Gg!\",\n                \"value_start\": 25,\n                \"value_end\": 36,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"ID_PAIR_PASSWD_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.974,\n        \"line_data_list\": [\n            {\n                \"line\": \"Username:master/Password:dipPr125Gg!\",\n                \"line_num\": 26,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"Password\",\n                \"variable_start\": 16,\n                \"variable_end\": 24,\n                \"value\": \"dipPr125Gg!\",\n                \"value_start\": 25,\n                \"value_end\": 36,\n                \"entropy\": 3.45943\n            },\n            {\n                \"line\": \"Username:master/Password:dipPr125Gg!\",\n                \"line_num\": 26,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"Username\",\n                \"variable_start\": 0,\n                \"variable_end\": 8,\n                \"value\": \"master/Password:dipPr125Gg!\",\n                \"value_start\": 9,\n                \"value_end\": 36,\n                \"entropy\": 4.18045\n            }\n        ]\n    },\n    {\n        \"rule\": \"PASSWD_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.974,\n        \"line_data_list\": [\n            {\n                \"line\": \"Username:master/Password:dipPr125Gg!\",\n                \"line_num\": 26,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"Password\",\n                \"variable_start\": 16,\n                \"variable_end\": 24,\n                \"value\": \"dipPr125Gg!\",\n                \"value_start\": 25,\n                \"value_end\": 36,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_CREDENTIALS\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.981,\n        \"line_data_list\": [\n            {\n                \"line\": \"userId:master,password:dipPr126Gg!\",\n                \"line_num\": 27,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"password\",\n                \"variable_start\": 14,\n                \"variable_end\": 22,\n                \"value\": \"dipPr126Gg!\",\n                \"value_start\": 23,\n                \"value_end\": 34,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"ID_PAIR_PASSWD_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.981,\n        \"line_data_list\": [\n            {\n                \"line\": \"userId:master,password:dipPr126Gg!\",\n                \"line_num\": 27,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"password\",\n                \"variable_start\": 14,\n                \"variable_end\": 22,\n                \"value\": \"dipPr126Gg!\",\n                \"value_start\": 23,\n                \"value_end\": 34,\n                \"entropy\": 3.45943\n            },\n            {\n                \"line\": \"userId:master,password:dipPr126Gg!\",\n                \"line_num\": 27,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"userId\",\n                \"variable_start\": 0,\n                \"variable_end\": 6,\n                \"value\": \"master,password:dipPr126Gg!\",\n                \"value_start\": 7,\n                \"value_end\": 34,\n                \"entropy\": 4.18045\n            }\n        ]\n    },\n    {\n        \"rule\": \"PASSWD_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.981,\n        \"line_data_list\": [\n            {\n                \"line\": \"userId:master,password:dipPr126Gg!\",\n                \"line_num\": 27,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"password\",\n                \"variable_start\": 14,\n                \"variable_end\": 22,\n                \"value\": \"dipPr126Gg!\",\n                \"value_start\": 23,\n                \"value_end\": 34,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"CMD Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"--user master --password dipPr127Gg!\",\n                \"line_num\": 28,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"password\",\n                \"variable_start\": 16,\n                \"variable_end\": 24,\n                \"value\": \"dipPr127Gg!\",\n                \"value_start\": 25,\n                \"value_end\": 36,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"ID_PAIR_PASSWD_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"--user master --password dipPr127Gg!\",\n                \"line_num\": 28,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"password\",\n                \"variable_start\": 16,\n                \"variable_end\": 24,\n                \"value\": \"dipPr127Gg!\",\n                \"value_start\": 25,\n                \"value_end\": 36,\n                \"entropy\": 3.45943\n            },\n            {\n                \"line\": \"--user master --password dipPr127Gg!\",\n                \"line_num\": 28,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"user\",\n                \"variable_start\": 2,\n                \"variable_end\": 6,\n                \"value\": \"master\",\n                \"value_start\": 7,\n                \"value_end\": 13,\n                \"entropy\": 2.58496\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_CREDENTIALS\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.995,\n        \"line_data_list\": [\n            {\n                \"line\": \"dipPr128Gg! ID:master dipPr128Gg! Password:dipPr128Gg!\",\n                \"line_num\": 29,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"Password\",\n                \"variable_start\": 34,\n                \"variable_end\": 42,\n                \"value\": \"dipPr128Gg!\",\n                \"value_start\": 43,\n                \"value_end\": 54,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"ID_PAIR_PASSWD_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.995,\n        \"line_data_list\": [\n            {\n                \"line\": \"dipPr128Gg! ID:master dipPr128Gg! Password:dipPr128Gg!\",\n                \"line_num\": 29,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"Password\",\n                \"variable_start\": 34,\n                \"variable_end\": 42,\n                \"value\": \"dipPr128Gg!\",\n                \"value_start\": 43,\n                \"value_end\": 54,\n                \"entropy\": 3.45943\n            },\n            {\n                \"line\": \"dipPr128Gg! ID:master dipPr128Gg! Password:dipPr128Gg!\",\n                \"line_num\": 29,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"ID\",\n                \"variable_start\": 12,\n                \"variable_end\": 14,\n                \"value\": \"master\",\n                \"value_start\": 15,\n                \"value_end\": 21,\n                \"entropy\": 2.58496\n            }\n        ]\n    },\n    {\n        \"rule\": \"PASSWD_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.995,\n        \"line_data_list\": [\n            {\n                \"line\": \"dipPr128Gg! ID:master dipPr128Gg! Password:dipPr128Gg!\",\n                \"line_num\": 29,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"Password\",\n                \"variable_start\": 34,\n                \"variable_end\": 42,\n                \"value\": \"dipPr128Gg!\",\n                \"value_start\": 43,\n                \"value_end\": 54,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_CREDENTIALS\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.99,\n        \"line_data_list\": [\n            {\n                \"line\": \"ANYid:master,pw:dipPr129Gg!\",\n                \"line_num\": 30,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"pw\",\n                \"variable_start\": 13,\n                \"variable_end\": 15,\n                \"value\": \"dipPr129Gg!\",\n                \"value_start\": 16,\n                \"value_end\": 27,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"ID_PAIR_PASSWD_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.99,\n        \"line_data_list\": [\n            {\n                \"line\": \"ANYid:master,pw:dipPr129Gg!\",\n                \"line_num\": 30,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"pw\",\n                \"variable_start\": 13,\n                \"variable_end\": 15,\n                \"value\": \"dipPr129Gg!\",\n                \"value_start\": 16,\n                \"value_end\": 27,\n                \"entropy\": 3.45943\n            },\n            {\n                \"line\": \"ANYid:master,pw:dipPr129Gg!\",\n                \"line_num\": 30,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"id\",\n                \"variable_start\": 3,\n                \"variable_end\": 5,\n                \"value\": \"master,pw:dipPr129Gg!\",\n                \"value_start\": 6,\n                \"value_end\": 27,\n                \"entropy\": 4.20184\n            }\n        ]\n    },\n    {\n        \"rule\": \"PASSWD_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.99,\n        \"line_data_list\": [\n            {\n                \"line\": \"ANYid:master,pw:dipPr129Gg!\",\n                \"line_num\": 30,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"pw\",\n                \"variable_start\": 13,\n                \"variable_end\": 15,\n                \"value\": \"dipPr129Gg!\",\n                \"value_start\": 16,\n                \"value_end\": 27,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_CREDENTIALS\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.923,\n        \"line_data_list\": [\n            {\n                \"line\": \"user:master pwd:dipPr130Gg!\",\n                \"line_num\": 31,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"pwd\",\n                \"variable_start\": 12,\n                \"variable_end\": 15,\n                \"value\": \"dipPr130Gg!\",\n                \"value_start\": 16,\n                \"value_end\": 27,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"ID_PAIR_PASSWD_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.923,\n        \"line_data_list\": [\n            {\n                \"line\": \"user:master pwd:dipPr130Gg!\",\n                \"line_num\": 31,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"pwd\",\n                \"variable_start\": 12,\n                \"variable_end\": 15,\n                \"value\": \"dipPr130Gg!\",\n                \"value_start\": 16,\n                \"value_end\": 27,\n                \"entropy\": 3.45943\n            },\n            {\n                \"line\": \"user:master pwd:dipPr130Gg!\",\n                \"line_num\": 31,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"user\",\n                \"variable_start\": 0,\n                \"variable_end\": 4,\n                \"value\": \"master\",\n                \"value_start\": 5,\n                \"value_end\": 11,\n                \"entropy\": 2.58496\n            }\n        ]\n    },\n    {\n        \"rule\": \"PASSWD_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.923,\n        \"line_data_list\": [\n            {\n                \"line\": \"user:master pwd:dipPr130Gg!\",\n                \"line_num\": 31,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"pwd\",\n                \"variable_start\": 12,\n                \"variable_end\": 15,\n                \"value\": \"dipPr130Gg!\",\n                \"value_start\": 16,\n                \"value_end\": 27,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"ID_PAIR_PASSWD_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.99,\n        \"line_data_list\": [\n            {\n                \"line\": \"Login:dipPr131Gg! Pwd:dipPr131Gg!\",\n                \"line_num\": 32,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"Login\",\n                \"variable_start\": 0,\n                \"variable_end\": 5,\n                \"value\": \"dipPr131Gg!\",\n                \"value_start\": 6,\n                \"value_end\": 17,\n                \"entropy\": 3.27761\n            },\n            {\n                \"line\": \"Login:dipPr131Gg! Pwd:dipPr131Gg!\",\n                \"line_num\": 32,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"Pwd\",\n                \"variable_start\": 18,\n                \"variable_end\": 21,\n                \"value\": \"dipPr131Gg!\",\n                \"value_start\": 22,\n                \"value_end\": 33,\n                \"entropy\": 3.27761\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_CREDENTIALS\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.99,\n        \"line_data_list\": [\n            {\n                \"line\": \"Login:dipPr131Gg! Pwd:dipPr131Gg!\",\n                \"line_num\": 32,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"Pwd\",\n                \"variable_start\": 18,\n                \"variable_end\": 21,\n                \"value\": \"dipPr131Gg!\",\n                \"value_start\": 22,\n                \"value_end\": 33,\n                \"entropy\": 3.27761\n            }\n        ]\n    },\n    {\n        \"rule\": \"PASSWD_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.99,\n        \"line_data_list\": [\n            {\n                \"line\": \"Login:dipPr131Gg! Pwd:dipPr131Gg!\",\n                \"line_num\": 32,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"Pwd\",\n                \"variable_start\": 18,\n                \"variable_end\": 21,\n                \"value\": \"dipPr131Gg!\",\n                \"value_start\": 22,\n                \"value_end\": 33,\n                \"entropy\": 3.27761\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_CREDENTIALS\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.994,\n        \"line_data_list\": [\n            {\n                \"line\": \"ANYID:master Password:dipPr132Gg!\",\n                \"line_num\": 33,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"Password\",\n                \"variable_start\": 13,\n                \"variable_end\": 21,\n                \"value\": \"dipPr132Gg!\",\n                \"value_start\": 22,\n                \"value_end\": 33,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"ID_PAIR_PASSWD_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.994,\n        \"line_data_list\": [\n            {\n                \"line\": \"ANYID:master Password:dipPr132Gg!\",\n                \"line_num\": 33,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"Password\",\n                \"variable_start\": 13,\n                \"variable_end\": 21,\n                \"value\": \"dipPr132Gg!\",\n                \"value_start\": 22,\n                \"value_end\": 33,\n                \"entropy\": 3.45943\n            },\n            {\n                \"line\": \"ANYID:master Password:dipPr132Gg!\",\n                \"line_num\": 33,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"ID\",\n                \"variable_start\": 3,\n                \"variable_end\": 5,\n                \"value\": \"master\",\n                \"value_start\": 6,\n                \"value_end\": 12,\n                \"entropy\": 2.58496\n            }\n        ]\n    },\n    {\n        \"rule\": \"PASSWD_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.994,\n        \"line_data_list\": [\n            {\n                \"line\": \"ANYID:master Password:dipPr132Gg!\",\n                \"line_num\": 33,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"Password\",\n                \"variable_start\": 13,\n                \"variable_end\": 21,\n                \"value\": \"dipPr132Gg!\",\n                \"value_start\": 22,\n                \"value_end\": 33,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_CREDENTIALS\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.959,\n        \"line_data_list\": [\n            {\n                \"line\": \"-Username:master -Password:dipPr133Gg!\",\n                \"line_num\": 34,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"Password\",\n                \"variable_start\": 18,\n                \"variable_end\": 26,\n                \"value\": \"dipPr133Gg!\",\n                \"value_start\": 27,\n                \"value_end\": 38,\n                \"entropy\": 3.27761\n            }\n        ]\n    },\n    {\n        \"rule\": \"ID_PAIR_PASSWD_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.959,\n        \"line_data_list\": [\n            {\n                \"line\": \"-Username:master -Password:dipPr133Gg!\",\n                \"line_num\": 34,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"Password\",\n                \"variable_start\": 18,\n                \"variable_end\": 26,\n                \"value\": \"dipPr133Gg!\",\n                \"value_start\": 27,\n                \"value_end\": 38,\n                \"entropy\": 3.27761\n            },\n            {\n                \"line\": \"-Username:master -Password:dipPr133Gg!\",\n                \"line_num\": 34,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"Username\",\n                \"variable_start\": 1,\n                \"variable_end\": 9,\n                \"value\": \"master\",\n                \"value_start\": 10,\n                \"value_end\": 16,\n                \"entropy\": 2.58496\n            }\n        ]\n    },\n    {\n        \"rule\": \"PASSWD_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.959,\n        \"line_data_list\": [\n            {\n                \"line\": \"-Username:master -Password:dipPr133Gg!\",\n                \"line_num\": 34,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"Password\",\n                \"variable_start\": 18,\n                \"variable_end\": 26,\n                \"value\": \"dipPr133Gg!\",\n                \"value_start\": 27,\n                \"value_end\": 38,\n                \"entropy\": 3.27761\n            }\n        ]\n    },\n    {\n        \"rule\": \"ID_PAIR_PASSWD_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.998,\n        \"line_data_list\": [\n            {\n                \"line\": \"account:dipPr134Gg! pw:dipPr134Gg!\",\n                \"line_num\": 35,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"account\",\n                \"variable_start\": 0,\n                \"variable_end\": 7,\n                \"value\": \"dipPr134Gg!\",\n                \"value_start\": 8,\n                \"value_end\": 19,\n                \"entropy\": 3.45943\n            },\n            {\n                \"line\": \"account:dipPr134Gg! pw:dipPr134Gg!\",\n                \"line_num\": 35,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"pw\",\n                \"variable_start\": 20,\n                \"variable_end\": 22,\n                \"value\": \"dipPr134Gg!\",\n                \"value_start\": 23,\n                \"value_end\": 34,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_CREDENTIALS\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.998,\n        \"line_data_list\": [\n            {\n                \"line\": \"account:dipPr134Gg! pw:dipPr134Gg!\",\n                \"line_num\": 35,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"pw\",\n                \"variable_start\": 20,\n                \"variable_end\": 22,\n                \"value\": \"dipPr134Gg!\",\n                \"value_start\": 23,\n                \"value_end\": 34,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"PASSWD_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.998,\n        \"line_data_list\": [\n            {\n                \"line\": \"account:dipPr134Gg! pw:dipPr134Gg!\",\n                \"line_num\": 35,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"pw\",\n                \"variable_start\": 20,\n                \"variable_end\": 22,\n                \"value\": \"dipPr134Gg!\",\n                \"value_start\": 23,\n                \"value_end\": 34,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_CREDENTIALS\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.956,\n        \"line_data_list\": [\n            {\n                \"line\": \"user id:master user pw:dipPr135Gg!\",\n                \"line_num\": 36,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"pw\",\n                \"variable_start\": 20,\n                \"variable_end\": 22,\n                \"value\": \"dipPr135Gg!\",\n                \"value_start\": 23,\n                \"value_end\": 34,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"ID_PAIR_PASSWD_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.956,\n        \"line_data_list\": [\n            {\n                \"line\": \"user id:master user pw:dipPr135Gg!\",\n                \"line_num\": 36,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"pw\",\n                \"variable_start\": 20,\n                \"variable_end\": 22,\n                \"value\": \"dipPr135Gg!\",\n                \"value_start\": 23,\n                \"value_end\": 34,\n                \"entropy\": 3.45943\n            },\n            {\n                \"line\": \"user id:master user pw:dipPr135Gg!\",\n                \"line_num\": 36,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"user id\",\n                \"variable_start\": 0,\n                \"variable_end\": 7,\n                \"value\": \"master\",\n                \"value_start\": 8,\n                \"value_end\": 14,\n                \"entropy\": 2.58496\n            },\n            {\n                \"line\": \"user id:master user pw:dipPr135Gg!\",\n                \"line_num\": 36,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"user\",\n                \"variable_start\": 15,\n                \"variable_end\": 19,\n                \"value\": \"pw:dipPr135Gg!\",\n                \"value_start\": 20,\n                \"value_end\": 34,\n                \"entropy\": 3.6645\n            }\n        ]\n    },\n    {\n        \"rule\": \"PASSWD_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.956,\n        \"line_data_list\": [\n            {\n                \"line\": \"user id:master user pw:dipPr135Gg!\",\n                \"line_num\": 36,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"pw\",\n                \"variable_start\": 20,\n                \"variable_end\": 22,\n                \"value\": \"dipPr135Gg!\",\n                \"value_start\": 23,\n                \"value_end\": 34,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_CREDENTIALS\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.992,\n        \"line_data_list\": [\n            {\n                \"line\": \"user_name=master password=dipPr136Gg!\",\n                \"line_num\": 37,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"password\",\n                \"variable_start\": 17,\n                \"variable_end\": 25,\n                \"value\": \"dipPr136Gg!\",\n                \"value_start\": 26,\n                \"value_end\": 37,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"ID_PAIR_PASSWD_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.992,\n        \"line_data_list\": [\n            {\n                \"line\": \"user_name=master password=dipPr136Gg!\",\n                \"line_num\": 37,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"password\",\n                \"variable_start\": 17,\n                \"variable_end\": 25,\n                \"value\": \"dipPr136Gg!\",\n                \"value_start\": 26,\n                \"value_end\": 37,\n                \"entropy\": 3.45943\n            },\n            {\n                \"line\": \"user_name=master password=dipPr136Gg!\",\n                \"line_num\": 37,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"name\",\n                \"variable_start\": 5,\n                \"variable_end\": 9,\n                \"value\": \"master\",\n                \"value_start\": 10,\n                \"value_end\": 16,\n                \"entropy\": 2.58496\n            }\n        ]\n    },\n    {\n        \"rule\": \"PASSWD_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.992,\n        \"line_data_list\": [\n            {\n                \"line\": \"user_name=master password=dipPr136Gg!\",\n                \"line_num\": 37,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"password\",\n                \"variable_start\": 17,\n                \"variable_end\": 25,\n                \"value\": \"dipPr136Gg!\",\n                \"value_start\": 26,\n                \"value_end\": 37,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"CMD Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"--username master --password dipPr137Gg!\",\n                \"line_num\": 38,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"password\",\n                \"variable_start\": 20,\n                \"variable_end\": 28,\n                \"value\": \"dipPr137Gg!\",\n                \"value_start\": 29,\n                \"value_end\": 40,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"ID_PAIR_PASSWD_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"--username master --password dipPr137Gg!\",\n                \"line_num\": 38,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"password\",\n                \"variable_start\": 20,\n                \"variable_end\": 28,\n                \"value\": \"dipPr137Gg!\",\n                \"value_start\": 29,\n                \"value_end\": 40,\n                \"entropy\": 3.45943\n            },\n            {\n                \"line\": \"--username master --password dipPr137Gg!\",\n                \"line_num\": 38,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"username\",\n                \"variable_start\": 2,\n                \"variable_end\": 10,\n                \"value\": \"master\",\n                \"value_start\": 11,\n                \"value_end\": 17,\n                \"entropy\": 2.58496\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_CREDENTIALS\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.997,\n        \"line_data_list\": [\n            {\n                \"line\": \"ANYlogin:master,ANYpassword:dipPr138Gg!\",\n                \"line_num\": 39,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"ANYpassword\",\n                \"variable_start\": 16,\n                \"variable_end\": 27,\n                \"value\": \"dipPr138Gg!\",\n                \"value_start\": 28,\n                \"value_end\": 39,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"ID_PAIR_PASSWD_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.997,\n        \"line_data_list\": [\n            {\n                \"line\": \"ANYlogin:master,ANYpassword:dipPr138Gg!\",\n                \"line_num\": 39,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"ANYpassword\",\n                \"variable_start\": 16,\n                \"variable_end\": 27,\n                \"value\": \"dipPr138Gg!\",\n                \"value_start\": 28,\n                \"value_end\": 39,\n                \"entropy\": 3.45943\n            },\n            {\n                \"line\": \"ANYlogin:master,ANYpassword:dipPr138Gg!\",\n                \"line_num\": 39,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"login\",\n                \"variable_start\": 3,\n                \"variable_end\": 8,\n                \"value\": \"master,ANYpassword:dipPr138Gg!\",\n                \"value_start\": 9,\n                \"value_end\": 39,\n                \"entropy\": 4.3899\n            }\n        ]\n    },\n    {\n        \"rule\": \"PASSWD_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.997,\n        \"line_data_list\": [\n            {\n                \"line\": \"ANYlogin:master,ANYpassword:dipPr138Gg!\",\n                \"line_num\": 39,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"password\",\n                \"variable_start\": 19,\n                \"variable_end\": 27,\n                \"value\": \"dipPr138Gg!\",\n                \"value_start\": 28,\n                \"value_end\": 39,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_CREDENTIALS\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.997,\n        \"line_data_list\": [\n            {\n                \"line\": \"ANYusername=master ANYpassword=dipPr139Gg!\",\n                \"line_num\": 40,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"ANYpassword\",\n                \"variable_start\": 19,\n                \"variable_end\": 30,\n                \"value\": \"dipPr139Gg!\",\n                \"value_start\": 31,\n                \"value_end\": 42,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"ID_PAIR_PASSWD_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.997,\n        \"line_data_list\": [\n            {\n                \"line\": \"ANYusername=master ANYpassword=dipPr139Gg!\",\n                \"line_num\": 40,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"ANYpassword\",\n                \"variable_start\": 19,\n                \"variable_end\": 30,\n                \"value\": \"dipPr139Gg!\",\n                \"value_start\": 31,\n                \"value_end\": 42,\n                \"entropy\": 3.45943\n            },\n            {\n                \"line\": \"ANYusername=master ANYpassword=dipPr139Gg!\",\n                \"line_num\": 40,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"username\",\n                \"variable_start\": 3,\n                \"variable_end\": 11,\n                \"value\": \"master\",\n                \"value_start\": 12,\n                \"value_end\": 18,\n                \"entropy\": 2.58496\n            }\n        ]\n    },\n    {\n        \"rule\": \"PASSWD_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.997,\n        \"line_data_list\": [\n            {\n                \"line\": \"ANYusername=master ANYpassword=dipPr139Gg!\",\n                \"line_num\": 40,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"password\",\n                \"variable_start\": 22,\n                \"variable_end\": 30,\n                \"value\": \"dipPr139Gg!\",\n                \"value_start\": 31,\n                \"value_end\": 42,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_CREDENTIALS\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.842,\n        \"line_data_list\": [\n            {\n                \"line\": \"ID:master,PWD:dipPr140Gg!\",\n                \"line_num\": 41,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"PWD\",\n                \"variable_start\": 10,\n                \"variable_end\": 13,\n                \"value\": \"dipPr140Gg!\",\n                \"value_start\": 14,\n                \"value_end\": 25,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"ID_PAIR_PASSWD_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.842,\n        \"line_data_list\": [\n            {\n                \"line\": \"ID:master,PWD:dipPr140Gg!\",\n                \"line_num\": 41,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"PWD\",\n                \"variable_start\": 10,\n                \"variable_end\": 13,\n                \"value\": \"dipPr140Gg!\",\n                \"value_start\": 14,\n                \"value_end\": 25,\n                \"entropy\": 3.45943\n            },\n            {\n                \"line\": \"ID:master,PWD:dipPr140Gg!\",\n                \"line_num\": 41,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"ID\",\n                \"variable_start\": 0,\n                \"variable_end\": 2,\n                \"value\": \"master,PWD:dipPr140Gg!\",\n                \"value_start\": 3,\n                \"value_end\": 25,\n                \"entropy\": 4.27761\n            }\n        ]\n    },\n    {\n        \"rule\": \"PASSWD_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.842,\n        \"line_data_list\": [\n            {\n                \"line\": \"ID:master,PWD:dipPr140Gg!\",\n                \"line_num\": 41,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"PWD\",\n                \"variable_start\": 10,\n                \"variable_end\": 13,\n                \"value\": \"dipPr140Gg!\",\n                \"value_start\": 14,\n                \"value_end\": 25,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_CREDENTIALS\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.958,\n        \"line_data_list\": [\n            {\n                \"line\": \"ID:master/PASS:dipPr141Gg!\",\n                \"line_num\": 42,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"PASS\",\n                \"variable_start\": 10,\n                \"variable_end\": 14,\n                \"value\": \"dipPr141Gg!\",\n                \"value_start\": 15,\n                \"value_end\": 26,\n                \"entropy\": 3.27761\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_CREDENTIALS\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.992,\n        \"line_data_list\": [\n            {\n                \"line\": \"account:master passwd:dipPr142Gg!\",\n                \"line_num\": 43,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"passwd\",\n                \"variable_start\": 15,\n                \"variable_end\": 21,\n                \"value\": \"dipPr142Gg!\",\n                \"value_start\": 22,\n                \"value_end\": 33,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"ID_PAIR_PASSWD_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.992,\n        \"line_data_list\": [\n            {\n                \"line\": \"account:master passwd:dipPr142Gg!\",\n                \"line_num\": 43,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"passwd\",\n                \"variable_start\": 15,\n                \"variable_end\": 21,\n                \"value\": \"dipPr142Gg!\",\n                \"value_start\": 22,\n                \"value_end\": 33,\n                \"entropy\": 3.45943\n            },\n            {\n                \"line\": \"account:master passwd:dipPr142Gg!\",\n                \"line_num\": 43,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"account\",\n                \"variable_start\": 0,\n                \"variable_end\": 7,\n                \"value\": \"master\",\n                \"value_start\": 8,\n                \"value_end\": 14,\n                \"entropy\": 2.58496\n            }\n        ]\n    },\n    {\n        \"rule\": \"PASSWD_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.992,\n        \"line_data_list\": [\n            {\n                \"line\": \"account:master passwd:dipPr142Gg!\",\n                \"line_num\": 43,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"passwd\",\n                \"variable_start\": 15,\n                \"variable_end\": 21,\n                \"value\": \"dipPr142Gg!\",\n                \"value_start\": 22,\n                \"value_end\": 33,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_CREDENTIALS\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.993,\n        \"line_data_list\": [\n            {\n                \"line\": \"login:master password:dipPr143Gg!\",\n                \"line_num\": 44,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"password\",\n                \"variable_start\": 13,\n                \"variable_end\": 21,\n                \"value\": \"dipPr143Gg!\",\n                \"value_start\": 22,\n                \"value_end\": 33,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"ID_PAIR_PASSWD_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.993,\n        \"line_data_list\": [\n            {\n                \"line\": \"login:master password:dipPr143Gg!\",\n                \"line_num\": 44,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"password\",\n                \"variable_start\": 13,\n                \"variable_end\": 21,\n                \"value\": \"dipPr143Gg!\",\n                \"value_start\": 22,\n                \"value_end\": 33,\n                \"entropy\": 3.45943\n            },\n            {\n                \"line\": \"login:master password:dipPr143Gg!\",\n                \"line_num\": 44,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"login\",\n                \"variable_start\": 0,\n                \"variable_end\": 5,\n                \"value\": \"master\",\n                \"value_start\": 6,\n                \"value_end\": 12,\n                \"entropy\": 2.58496\n            }\n        ]\n    },\n    {\n        \"rule\": \"PASSWD_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.993,\n        \"line_data_list\": [\n            {\n                \"line\": \"login:master password:dipPr143Gg!\",\n                \"line_num\": 44,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"password\",\n                \"variable_start\": 13,\n                \"variable_end\": 21,\n                \"value\": \"dipPr143Gg!\",\n                \"value_start\": 22,\n                \"value_end\": 33,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_CREDENTIALS\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.963,\n        \"line_data_list\": [\n            {\n                \"line\": \"user=master,pass=dipPr144Gg!\",\n                \"line_num\": 45,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"pass\",\n                \"variable_start\": 12,\n                \"variable_end\": 16,\n                \"value\": \"dipPr144Gg!\",\n                \"value_start\": 17,\n                \"value_end\": 28,\n                \"entropy\": 3.27761\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_CREDENTIALS\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.998,\n        \"line_data_list\": [\n            {\n                \"line\": \"password:dipPr145Gg! username:master\",\n                \"line_num\": 46,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"password\",\n                \"variable_start\": 0,\n                \"variable_end\": 8,\n                \"value\": \"dipPr145Gg!\",\n                \"value_start\": 9,\n                \"value_end\": 20,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"ID_PAIR_PASSWD_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.998,\n        \"line_data_list\": [\n            {\n                \"line\": \"password:dipPr145Gg! username:master\",\n                \"line_num\": 46,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"password\",\n                \"variable_start\": 0,\n                \"variable_end\": 8,\n                \"value\": \"dipPr145Gg!\",\n                \"value_start\": 9,\n                \"value_end\": 20,\n                \"entropy\": 3.45943\n            },\n            {\n                \"line\": \"password:dipPr145Gg! username:master\",\n                \"line_num\": 46,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"username\",\n                \"variable_start\": 21,\n                \"variable_end\": 29,\n                \"value\": \"master\",\n                \"value_start\": 30,\n                \"value_end\": 36,\n                \"entropy\": 2.58496\n            }\n        ]\n    },\n    {\n        \"rule\": \"PASSWD_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.998,\n        \"line_data_list\": [\n            {\n                \"line\": \"password:dipPr145Gg! username:master\",\n                \"line_num\": 46,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"password\",\n                \"variable_start\": 0,\n                \"variable_end\": 8,\n                \"value\": \"dipPr145Gg!\",\n                \"value_start\": 9,\n                \"value_end\": 20,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"ID_PAIR_PASSWD_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.998,\n        \"line_data_list\": [\n            {\n                \"line\": \"Login as:master Password:dipPr146Gg!\",\n                \"line_num\": 47,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"Login\",\n                \"variable_start\": 0,\n                \"variable_end\": 5,\n                \"value\": \"as:master\",\n                \"value_start\": 6,\n                \"value_end\": 15,\n                \"entropy\": 2.72548\n            },\n            {\n                \"line\": \"Login as:master Password:dipPr146Gg!\",\n                \"line_num\": 47,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"Password\",\n                \"variable_start\": 16,\n                \"variable_end\": 24,\n                \"value\": \"dipPr146Gg!\",\n                \"value_start\": 25,\n                \"value_end\": 36,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_CREDENTIALS\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.998,\n        \"line_data_list\": [\n            {\n                \"line\": \"Login as:master Password:dipPr146Gg!\",\n                \"line_num\": 47,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"Password\",\n                \"variable_start\": 16,\n                \"variable_end\": 24,\n                \"value\": \"dipPr146Gg!\",\n                \"value_start\": 25,\n                \"value_end\": 36,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"PASSWD_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.998,\n        \"line_data_list\": [\n            {\n                \"line\": \"Login as:master Password:dipPr146Gg!\",\n                \"line_num\": 47,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"Password\",\n                \"variable_start\": 16,\n                \"variable_end\": 24,\n                \"value\": \"dipPr146Gg!\",\n                \"value_start\": 25,\n                \"value_end\": 36,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_CREDENTIALS\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.995,\n        \"line_data_list\": [\n            {\n                \"line\": \"ID:master,pass:dipPr147Gg!\",\n                \"line_num\": 48,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"pass\",\n                \"variable_start\": 10,\n                \"variable_end\": 14,\n                \"value\": \"dipPr147Gg!\",\n                \"value_start\": 15,\n                \"value_end\": 26,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_CREDENTIALS\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.987,\n        \"line_data_list\": [\n            {\n                \"line\": \"id:master pw:dipPr148Gg!\",\n                \"line_num\": 49,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"pw\",\n                \"variable_start\": 10,\n                \"variable_end\": 12,\n                \"value\": \"dipPr148Gg!\",\n                \"value_start\": 13,\n                \"value_end\": 24,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"ID_PAIR_PASSWD_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.987,\n        \"line_data_list\": [\n            {\n                \"line\": \"id:master pw:dipPr148Gg!\",\n                \"line_num\": 49,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"pw\",\n                \"variable_start\": 10,\n                \"variable_end\": 12,\n                \"value\": \"dipPr148Gg!\",\n                \"value_start\": 13,\n                \"value_end\": 24,\n                \"entropy\": 3.45943\n            },\n            {\n                \"line\": \"id:master pw:dipPr148Gg!\",\n                \"line_num\": 49,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"id\",\n                \"variable_start\": 0,\n                \"variable_end\": 2,\n                \"value\": \"master\",\n                \"value_start\": 3,\n                \"value_end\": 9,\n                \"entropy\": 2.58496\n            }\n        ]\n    },\n    {\n        \"rule\": \"PASSWD_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.987,\n        \"line_data_list\": [\n            {\n                \"line\": \"id:master pw:dipPr148Gg!\",\n                \"line_num\": 49,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"pw\",\n                \"variable_start\": 10,\n                \"variable_end\": 12,\n                \"value\": \"dipPr148Gg!\",\n                \"value_start\": 13,\n                \"value_end\": 24,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_CREDENTIALS\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.938,\n        \"line_data_list\": [\n            {\n                \"line\": \"(98.76.54.32)ID:master PW:dipPr149Gg!\",\n                \"line_num\": 50,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"PW\",\n                \"variable_start\": 23,\n                \"variable_end\": 25,\n                \"value\": \"dipPr149Gg!\",\n                \"value_start\": 26,\n                \"value_end\": 37,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"ID_PAIR_PASSWD_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.938,\n        \"line_data_list\": [\n            {\n                \"line\": \"(98.76.54.32)ID:master PW:dipPr149Gg!\",\n                \"line_num\": 50,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"PW\",\n                \"variable_start\": 23,\n                \"variable_end\": 25,\n                \"value\": \"dipPr149Gg!\",\n                \"value_start\": 26,\n                \"value_end\": 37,\n                \"entropy\": 3.45943\n            },\n            {\n                \"line\": \"(98.76.54.32)ID:master PW:dipPr149Gg!\",\n                \"line_num\": 50,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"ID\",\n                \"variable_start\": 13,\n                \"variable_end\": 15,\n                \"value\": \"master\",\n                \"value_start\": 16,\n                \"value_end\": 22,\n                \"entropy\": 2.58496\n            }\n        ]\n    },\n    {\n        \"rule\": \"PASSWD_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.938,\n        \"line_data_list\": [\n            {\n                \"line\": \"(98.76.54.32)ID:master PW:dipPr149Gg!\",\n                \"line_num\": 50,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"PW\",\n                \"variable_start\": 23,\n                \"variable_end\": 25,\n                \"value\": \"dipPr149Gg!\",\n                \"value_start\": 26,\n                \"value_end\": 37,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_CREDENTIALS\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.956,\n        \"line_data_list\": [\n            {\n                \"line\": \"-id:master -pw:dipPr151Gg!\",\n                \"line_num\": 52,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"pw\",\n                \"variable_start\": 12,\n                \"variable_end\": 14,\n                \"value\": \"dipPr151Gg!\",\n                \"value_start\": 15,\n                \"value_end\": 26,\n                \"entropy\": 3.27761\n            }\n        ]\n    },\n    {\n        \"rule\": \"ID_PAIR_PASSWD_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.956,\n        \"line_data_list\": [\n            {\n                \"line\": \"-id:master -pw:dipPr151Gg!\",\n                \"line_num\": 52,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"pw\",\n                \"variable_start\": 12,\n                \"variable_end\": 14,\n                \"value\": \"dipPr151Gg!\",\n                \"value_start\": 15,\n                \"value_end\": 26,\n                \"entropy\": 3.27761\n            },\n            {\n                \"line\": \"-id:master -pw:dipPr151Gg!\",\n                \"line_num\": 52,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"id\",\n                \"variable_start\": 1,\n                \"variable_end\": 3,\n                \"value\": \"master\",\n                \"value_start\": 4,\n                \"value_end\": 10,\n                \"entropy\": 2.58496\n            }\n        ]\n    },\n    {\n        \"rule\": \"PASSWD_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.956,\n        \"line_data_list\": [\n            {\n                \"line\": \"-id:master -pw:dipPr151Gg!\",\n                \"line_num\": 52,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"pw\",\n                \"variable_start\": 12,\n                \"variable_end\": 14,\n                \"value\": \"dipPr151Gg!\",\n                \"value_start\": 15,\n                \"value_end\": 26,\n                \"entropy\": 3.27761\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_CREDENTIALS\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.904,\n        \"line_data_list\": [\n            {\n                \"line\": \"username:master pw:dipPr152Gg!\",\n                \"line_num\": 53,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"pw\",\n                \"variable_start\": 16,\n                \"variable_end\": 18,\n                \"value\": \"dipPr152Gg!\",\n                \"value_start\": 19,\n                \"value_end\": 30,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"ID_PAIR_PASSWD_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.904,\n        \"line_data_list\": [\n            {\n                \"line\": \"username:master pw:dipPr152Gg!\",\n                \"line_num\": 53,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"pw\",\n                \"variable_start\": 16,\n                \"variable_end\": 18,\n                \"value\": \"dipPr152Gg!\",\n                \"value_start\": 19,\n                \"value_end\": 30,\n                \"entropy\": 3.45943\n            },\n            {\n                \"line\": \"username:master pw:dipPr152Gg!\",\n                \"line_num\": 53,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"username\",\n                \"variable_start\": 0,\n                \"variable_end\": 8,\n                \"value\": \"master\",\n                \"value_start\": 9,\n                \"value_end\": 15,\n                \"entropy\": 2.58496\n            }\n        ]\n    },\n    {\n        \"rule\": \"PASSWD_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.904,\n        \"line_data_list\": [\n            {\n                \"line\": \"username:master pw:dipPr152Gg!\",\n                \"line_num\": 53,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"pw\",\n                \"variable_start\": 16,\n                \"variable_end\": 18,\n                \"value\": \"dipPr152Gg!\",\n                \"value_start\": 19,\n                \"value_end\": 30,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_CREDENTIALS\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.005,\n        \"line_data_list\": [\n            {\n                \"line\": \"\\uacc4\\uc815:master \\ud328\\uc2a4\\uc6cc\\ub4dc:dipPr153Gg!\",\n                \"line_num\": 54,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"\\ud328\\uc2a4\\uc6cc\\ub4dc\",\n                \"variable_start\": 10,\n                \"variable_end\": 14,\n                \"value\": \"dipPr153Gg!\",\n                \"value_start\": 15,\n                \"value_end\": 26,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"ID_PAIR_PASSWD_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.005,\n        \"line_data_list\": [\n            {\n                \"line\": \"\\uacc4\\uc815:master \\ud328\\uc2a4\\uc6cc\\ub4dc:dipPr153Gg!\",\n                \"line_num\": 54,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"\\ud328\\uc2a4\\uc6cc\\ub4dc\",\n                \"variable_start\": 10,\n                \"variable_end\": 14,\n                \"value\": \"dipPr153Gg!\",\n                \"value_start\": 15,\n                \"value_end\": 26,\n                \"entropy\": 3.45943\n            },\n            {\n                \"line\": \"\\uacc4\\uc815:master \\ud328\\uc2a4\\uc6cc\\ub4dc:dipPr153Gg!\",\n                \"line_num\": 54,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"\\uacc4\\uc815\",\n                \"variable_start\": 0,\n                \"variable_end\": 2,\n                \"value\": \"master\",\n                \"value_start\": 3,\n                \"value_end\": 9,\n                \"entropy\": 2.58496\n            }\n        ]\n    },\n    {\n        \"rule\": \"PASSWD_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.005,\n        \"line_data_list\": [\n            {\n                \"line\": \"\\uacc4\\uc815:master \\ud328\\uc2a4\\uc6cc\\ub4dc:dipPr153Gg!\",\n                \"line_num\": 54,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"\\ud328\\uc2a4\\uc6cc\\ub4dc\",\n                \"variable_start\": 10,\n                \"variable_end\": 14,\n                \"value\": \"dipPr153Gg!\",\n                \"value_start\": 15,\n                \"value_end\": 26,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_CREDENTIALS\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.994,\n        \"line_data_list\": [\n            {\n                \"line\": \"-User Name:master -Password:dipPr154Gg!\",\n                \"line_num\": 55,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"Password\",\n                \"variable_start\": 19,\n                \"variable_end\": 27,\n                \"value\": \"dipPr154Gg!\",\n                \"value_start\": 28,\n                \"value_end\": 39,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"ID_PAIR_PASSWD_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.994,\n        \"line_data_list\": [\n            {\n                \"line\": \"-User Name:master -Password:dipPr154Gg!\",\n                \"line_num\": 55,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"Password\",\n                \"variable_start\": 19,\n                \"variable_end\": 27,\n                \"value\": \"dipPr154Gg!\",\n                \"value_start\": 28,\n                \"value_end\": 39,\n                \"entropy\": 3.45943\n            },\n            {\n                \"line\": \"-User Name:master -Password:dipPr154Gg!\",\n                \"line_num\": 55,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"User Name\",\n                \"variable_start\": 1,\n                \"variable_end\": 10,\n                \"value\": \"master\",\n                \"value_start\": 11,\n                \"value_end\": 17,\n                \"entropy\": 2.58496\n            }\n        ]\n    },\n    {\n        \"rule\": \"PASSWD_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.994,\n        \"line_data_list\": [\n            {\n                \"line\": \"-User Name:master -Password:dipPr154Gg!\",\n                \"line_num\": 55,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"Password\",\n                \"variable_start\": 19,\n                \"variable_end\": 27,\n                \"value\": \"dipPr154Gg!\",\n                \"value_start\": 28,\n                \"value_end\": 39,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_CREDENTIALS\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.999,\n        \"line_data_list\": [\n            {\n                \"line\": \"account:dipPr155Gg!/password:dipPr155Gg!\",\n                \"line_num\": 56,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"password\",\n                \"variable_start\": 20,\n                \"variable_end\": 28,\n                \"value\": \"dipPr155Gg!\",\n                \"value_start\": 29,\n                \"value_end\": 40,\n                \"entropy\": 3.27761\n            }\n        ]\n    },\n    {\n        \"rule\": \"ID_PAIR_PASSWD_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.999,\n        \"line_data_list\": [\n            {\n                \"line\": \"account:dipPr155Gg!/password:dipPr155Gg!\",\n                \"line_num\": 56,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"password\",\n                \"variable_start\": 20,\n                \"variable_end\": 28,\n                \"value\": \"dipPr155Gg!\",\n                \"value_start\": 29,\n                \"value_end\": 40,\n                \"entropy\": 3.27761\n            },\n            {\n                \"line\": \"account:dipPr155Gg!/password:dipPr155Gg!\",\n                \"line_num\": 56,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"account\",\n                \"variable_start\": 0,\n                \"variable_end\": 7,\n                \"value\": \"dipPr155Gg!/password:dipPr155Gg!\",\n                \"value_start\": 8,\n                \"value_end\": 40,\n                \"entropy\": 3.86673\n            }\n        ]\n    },\n    {\n        \"rule\": \"PASSWD_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.999,\n        \"line_data_list\": [\n            {\n                \"line\": \"account:dipPr155Gg!/password:dipPr155Gg!\",\n                \"line_num\": 56,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"password\",\n                \"variable_start\": 20,\n                \"variable_end\": 28,\n                \"value\": \"dipPr155Gg!\",\n                \"value_start\": 29,\n                \"value_end\": 40,\n                \"entropy\": 3.27761\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_CREDENTIALS\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.981,\n        \"line_data_list\": [\n            {\n                \"line\": \"ANYuser=master ANY_pass=dipPr156Gg!\",\n                \"line_num\": 57,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"ANY_pass\",\n                \"variable_start\": 15,\n                \"variable_end\": 23,\n                \"value\": \"dipPr156Gg!\",\n                \"value_start\": 24,\n                \"value_end\": 35,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_CREDENTIALS\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.999,\n        \"line_data_list\": [\n            {\n                \"line\": \"ANYUser:master password:dipPr157Gg!\",\n                \"line_num\": 58,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"password\",\n                \"variable_start\": 15,\n                \"variable_end\": 23,\n                \"value\": \"dipPr157Gg!\",\n                \"value_start\": 24,\n                \"value_end\": 35,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"ID_PAIR_PASSWD_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.999,\n        \"line_data_list\": [\n            {\n                \"line\": \"ANYUser:master password:dipPr157Gg!\",\n                \"line_num\": 58,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"password\",\n                \"variable_start\": 15,\n                \"variable_end\": 23,\n                \"value\": \"dipPr157Gg!\",\n                \"value_start\": 24,\n                \"value_end\": 35,\n                \"entropy\": 3.45943\n            },\n            {\n                \"line\": \"ANYUser:master password:dipPr157Gg!\",\n                \"line_num\": 58,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"User\",\n                \"variable_start\": 3,\n                \"variable_end\": 7,\n                \"value\": \"master\",\n                \"value_start\": 8,\n                \"value_end\": 14,\n                \"entropy\": 2.58496\n            }\n        ]\n    },\n    {\n        \"rule\": \"PASSWD_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.999,\n        \"line_data_list\": [\n            {\n                \"line\": \"ANYUser:master password:dipPr157Gg!\",\n                \"line_num\": 58,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"password\",\n                \"variable_start\": 15,\n                \"variable_end\": 23,\n                \"value\": \"dipPr157Gg!\",\n                \"value_start\": 24,\n                \"value_end\": 35,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_CREDENTIALS\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.963,\n        \"line_data_list\": [\n            {\n                \"line\": \"user:master,pwd:dipPr158Gg!\",\n                \"line_num\": 59,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"pwd\",\n                \"variable_start\": 12,\n                \"variable_end\": 15,\n                \"value\": \"dipPr158Gg!\",\n                \"value_start\": 16,\n                \"value_end\": 27,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"ID_PAIR_PASSWD_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.963,\n        \"line_data_list\": [\n            {\n                \"line\": \"user:master,pwd:dipPr158Gg!\",\n                \"line_num\": 59,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"pwd\",\n                \"variable_start\": 12,\n                \"variable_end\": 15,\n                \"value\": \"dipPr158Gg!\",\n                \"value_start\": 16,\n                \"value_end\": 27,\n                \"entropy\": 3.45943\n            },\n            {\n                \"line\": \"user:master,pwd:dipPr158Gg!\",\n                \"line_num\": 59,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"user\",\n                \"variable_start\": 0,\n                \"variable_end\": 4,\n                \"value\": \"master,pwd:dipPr158Gg!\",\n                \"value_start\": 5,\n                \"value_end\": 27,\n                \"entropy\": 4.1867\n            }\n        ]\n    },\n    {\n        \"rule\": \"PASSWD_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.963,\n        \"line_data_list\": [\n            {\n                \"line\": \"user:master,pwd:dipPr158Gg!\",\n                \"line_num\": 59,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"pwd\",\n                \"variable_start\": 12,\n                \"variable_end\": 15,\n                \"value\": \"dipPr158Gg!\",\n                \"value_start\": 16,\n                \"value_end\": 27,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_CREDENTIALS\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.993,\n        \"line_data_list\": [\n            {\n                \"line\": \"ANY_username:master,ANY_password:dipPr159Gg!\",\n                \"line_num\": 60,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"ANY_password\",\n                \"variable_start\": 20,\n                \"variable_end\": 32,\n                \"value\": \"dipPr159Gg!\",\n                \"value_start\": 33,\n                \"value_end\": 44,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"ID_PAIR_PASSWD_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.993,\n        \"line_data_list\": [\n            {\n                \"line\": \"ANY_username:master,ANY_password:dipPr159Gg!\",\n                \"line_num\": 60,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"ANY_password\",\n                \"variable_start\": 20,\n                \"variable_end\": 32,\n                \"value\": \"dipPr159Gg!\",\n                \"value_start\": 33,\n                \"value_end\": 44,\n                \"entropy\": 3.45943\n            },\n            {\n                \"line\": \"ANY_username:master,ANY_password:dipPr159Gg!\",\n                \"line_num\": 60,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"username\",\n                \"variable_start\": 4,\n                \"variable_end\": 12,\n                \"value\": \"master,ANY_password:dipPr159Gg!\",\n                \"value_start\": 13,\n                \"value_end\": 44,\n                \"entropy\": 4.45388\n            }\n        ]\n    },\n    {\n        \"rule\": \"PASSWD_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.993,\n        \"line_data_list\": [\n            {\n                \"line\": \"ANY_username:master,ANY_password:dipPr159Gg!\",\n                \"line_num\": 60,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"password\",\n                \"variable_start\": 24,\n                \"variable_end\": 32,\n                \"value\": \"dipPr159Gg!\",\n                \"value_start\": 33,\n                \"value_end\": 44,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_CREDENTIALS\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.988,\n        \"line_data_list\": [\n            {\n                \"line\": \"ANYusername:master,ANY_password:dipPr160Gg!\",\n                \"line_num\": 61,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"ANY_password\",\n                \"variable_start\": 19,\n                \"variable_end\": 31,\n                \"value\": \"dipPr160Gg!\",\n                \"value_start\": 32,\n                \"value_end\": 43,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"ID_PAIR_PASSWD_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.988,\n        \"line_data_list\": [\n            {\n                \"line\": \"ANYusername:master,ANY_password:dipPr160Gg!\",\n                \"line_num\": 61,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"ANY_password\",\n                \"variable_start\": 19,\n                \"variable_end\": 31,\n                \"value\": \"dipPr160Gg!\",\n                \"value_start\": 32,\n                \"value_end\": 43,\n                \"entropy\": 3.45943\n            },\n            {\n                \"line\": \"ANYusername:master,ANY_password:dipPr160Gg!\",\n                \"line_num\": 61,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"username\",\n                \"variable_start\": 3,\n                \"variable_end\": 11,\n                \"value\": \"master,ANY_password:dipPr160Gg!\",\n                \"value_start\": 12,\n                \"value_end\": 43,\n                \"entropy\": 4.45388\n            }\n        ]\n    },\n    {\n        \"rule\": \"PASSWD_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.988,\n        \"line_data_list\": [\n            {\n                \"line\": \"ANYusername:master,ANY_password:dipPr160Gg!\",\n                \"line_num\": 61,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"password\",\n                \"variable_start\": 23,\n                \"variable_end\": 31,\n                \"value\": \"dipPr160Gg!\",\n                \"value_start\": 32,\n                \"value_end\": 43,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_CREDENTIALS\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.99,\n        \"line_data_list\": [\n            {\n                \"line\": \"ANY_USER=master ANY_PASS=dipPr161Gg!\",\n                \"line_num\": 62,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"ANY_PASS\",\n                \"variable_start\": 16,\n                \"variable_end\": 24,\n                \"value\": \"dipPr161Gg!\",\n                \"value_start\": 25,\n                \"value_end\": 36,\n                \"entropy\": 3.27761\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_CREDENTIALS\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.998,\n        \"line_data_list\": [\n            {\n                \"line\": \"User Account:master User password:dipPr162Gg!\",\n                \"line_num\": 63,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"password\",\n                \"variable_start\": 25,\n                \"variable_end\": 33,\n                \"value\": \"dipPr162Gg!\",\n                \"value_start\": 34,\n                \"value_end\": 45,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"ID_PAIR_PASSWD_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.998,\n        \"line_data_list\": [\n            {\n                \"line\": \"User Account:master User password:dipPr162Gg!\",\n                \"line_num\": 63,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"password\",\n                \"variable_start\": 25,\n                \"variable_end\": 33,\n                \"value\": \"dipPr162Gg!\",\n                \"value_start\": 34,\n                \"value_end\": 45,\n                \"entropy\": 3.45943\n            },\n            {\n                \"line\": \"User Account:master User password:dipPr162Gg!\",\n                \"line_num\": 63,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"User Account\",\n                \"variable_start\": 0,\n                \"variable_end\": 12,\n                \"value\": \"master\",\n                \"value_start\": 13,\n                \"value_end\": 19,\n                \"entropy\": 2.58496\n            },\n            {\n                \"line\": \"User Account:master User password:dipPr162Gg!\",\n                \"line_num\": 63,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"User\",\n                \"variable_start\": 20,\n                \"variable_end\": 24,\n                \"value\": \"password:dipPr162Gg!\",\n                \"value_start\": 25,\n                \"value_end\": 45,\n                \"entropy\": 3.92193\n            }\n        ]\n    },\n    {\n        \"rule\": \"PASSWD_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.998,\n        \"line_data_list\": [\n            {\n                \"line\": \"User Account:master User password:dipPr162Gg!\",\n                \"line_num\": 63,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"password\",\n                \"variable_start\": 25,\n                \"variable_end\": 33,\n                \"value\": \"dipPr162Gg!\",\n                \"value_start\": 34,\n                \"value_end\": 45,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_CREDENTIALS\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.922,\n        \"line_data_list\": [\n            {\n                \"line\": \"dipPr163Gg! ID:master dipPr163Gg! PWD:dipPr163Gg!\",\n                \"line_num\": 64,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"PWD\",\n                \"variable_start\": 34,\n                \"variable_end\": 37,\n                \"value\": \"dipPr163Gg!\",\n                \"value_start\": 38,\n                \"value_end\": 49,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"ID_PAIR_PASSWD_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.922,\n        \"line_data_list\": [\n            {\n                \"line\": \"dipPr163Gg! ID:master dipPr163Gg! PWD:dipPr163Gg!\",\n                \"line_num\": 64,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"PWD\",\n                \"variable_start\": 34,\n                \"variable_end\": 37,\n                \"value\": \"dipPr163Gg!\",\n                \"value_start\": 38,\n                \"value_end\": 49,\n                \"entropy\": 3.45943\n            },\n            {\n                \"line\": \"dipPr163Gg! ID:master dipPr163Gg! PWD:dipPr163Gg!\",\n                \"line_num\": 64,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"ID\",\n                \"variable_start\": 12,\n                \"variable_end\": 14,\n                \"value\": \"master\",\n                \"value_start\": 15,\n                \"value_end\": 21,\n                \"entropy\": 2.58496\n            }\n        ]\n    },\n    {\n        \"rule\": \"PASSWD_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.922,\n        \"line_data_list\": [\n            {\n                \"line\": \"dipPr163Gg! ID:master dipPr163Gg! PWD:dipPr163Gg!\",\n                \"line_num\": 64,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"PWD\",\n                \"variable_start\": 34,\n                \"variable_end\": 37,\n                \"value\": \"dipPr163Gg!\",\n                \"value_start\": 38,\n                \"value_end\": 49,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_CREDENTIALS\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.996,\n        \"line_data_list\": [\n            {\n                \"line\": \"userid=master password=dipPr164Gg!\",\n                \"line_num\": 65,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"password\",\n                \"variable_start\": 14,\n                \"variable_end\": 22,\n                \"value\": \"dipPr164Gg!\",\n                \"value_start\": 23,\n                \"value_end\": 34,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"ID_PAIR_PASSWD_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.996,\n        \"line_data_list\": [\n            {\n                \"line\": \"userid=master password=dipPr164Gg!\",\n                \"line_num\": 65,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"password\",\n                \"variable_start\": 14,\n                \"variable_end\": 22,\n                \"value\": \"dipPr164Gg!\",\n                \"value_start\": 23,\n                \"value_end\": 34,\n                \"entropy\": 3.45943\n            },\n            {\n                \"line\": \"userid=master password=dipPr164Gg!\",\n                \"line_num\": 65,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"userid\",\n                \"variable_start\": 0,\n                \"variable_end\": 6,\n                \"value\": \"master\",\n                \"value_start\": 7,\n                \"value_end\": 13,\n                \"entropy\": 2.58496\n            }\n        ]\n    },\n    {\n        \"rule\": \"PASSWD_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.996,\n        \"line_data_list\": [\n            {\n                \"line\": \"userid=master password=dipPr164Gg!\",\n                \"line_num\": 65,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"password\",\n                \"variable_start\": 14,\n                \"variable_end\": 22,\n                \"value\": \"dipPr164Gg!\",\n                \"value_start\": 23,\n                \"value_end\": 34,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_CREDENTIALS\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"ANY-username=master ANY-password=dipPr165Gg!\",\n                \"line_num\": 66,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"password\",\n                \"variable_start\": 24,\n                \"variable_end\": 32,\n                \"value\": \"dipPr165Gg!\",\n                \"value_start\": 33,\n                \"value_end\": 44,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"ID_PAIR_PASSWD_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"ANY-username=master ANY-password=dipPr165Gg!\",\n                \"line_num\": 66,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"password\",\n                \"variable_start\": 24,\n                \"variable_end\": 32,\n                \"value\": \"dipPr165Gg!\",\n                \"value_start\": 33,\n                \"value_end\": 44,\n                \"entropy\": 3.45943\n            },\n            {\n                \"line\": \"ANY-username=master ANY-password=dipPr165Gg!\",\n                \"line_num\": 66,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"username\",\n                \"variable_start\": 4,\n                \"variable_end\": 12,\n                \"value\": \"master\",\n                \"value_start\": 13,\n                \"value_end\": 19,\n                \"entropy\": 2.58496\n            }\n        ]\n    },\n    {\n        \"rule\": \"PASSWD_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"ANY-username=master ANY-password=dipPr165Gg!\",\n                \"line_num\": 66,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"password\",\n                \"variable_start\": 24,\n                \"variable_end\": 32,\n                \"value\": \"dipPr165Gg!\",\n                \"value_start\": 33,\n                \"value_end\": 44,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_CREDENTIALS\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.948,\n        \"line_data_list\": [\n            {\n                \"line\": \"username:master pass:dipPr166Gg!\",\n                \"line_num\": 67,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"pass\",\n                \"variable_start\": 16,\n                \"variable_end\": 20,\n                \"value\": \"dipPr166Gg!\",\n                \"value_start\": 21,\n                \"value_end\": 32,\n                \"entropy\": 3.27761\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_CREDENTIALS\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.977,\n        \"line_data_list\": [\n            {\n                \"line\": \"user=master pwd=dipPr168Gg!\",\n                \"line_num\": 69,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"pwd\",\n                \"variable_start\": 12,\n                \"variable_end\": 15,\n                \"value\": \"dipPr168Gg!\",\n                \"value_start\": 16,\n                \"value_end\": 27,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"ID_PAIR_PASSWD_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.977,\n        \"line_data_list\": [\n            {\n                \"line\": \"user=master pwd=dipPr168Gg!\",\n                \"line_num\": 69,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"pwd\",\n                \"variable_start\": 12,\n                \"variable_end\": 15,\n                \"value\": \"dipPr168Gg!\",\n                \"value_start\": 16,\n                \"value_end\": 27,\n                \"entropy\": 3.45943\n            },\n            {\n                \"line\": \"user=master pwd=dipPr168Gg!\",\n                \"line_num\": 69,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"user\",\n                \"variable_start\": 0,\n                \"variable_end\": 4,\n                \"value\": \"master\",\n                \"value_start\": 5,\n                \"value_end\": 11,\n                \"entropy\": 2.58496\n            }\n        ]\n    },\n    {\n        \"rule\": \"PASSWD_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.977,\n        \"line_data_list\": [\n            {\n                \"line\": \"user=master pwd=dipPr168Gg!\",\n                \"line_num\": 69,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"pwd\",\n                \"variable_start\": 12,\n                \"variable_end\": 15,\n                \"value\": \"dipPr168Gg!\",\n                \"value_start\": 16,\n                \"value_end\": 27,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_CREDENTIALS\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.825,\n        \"line_data_list\": [\n            {\n                \"line\": \"Name:master,PW:dipPr169Gg!\",\n                \"line_num\": 70,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"PW\",\n                \"variable_start\": 12,\n                \"variable_end\": 14,\n                \"value\": \"dipPr169Gg!\",\n                \"value_start\": 15,\n                \"value_end\": 26,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"ID_PAIR_PASSWD_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.825,\n        \"line_data_list\": [\n            {\n                \"line\": \"Name:master,PW:dipPr169Gg!\",\n                \"line_num\": 70,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"PW\",\n                \"variable_start\": 12,\n                \"variable_end\": 14,\n                \"value\": \"dipPr169Gg!\",\n                \"value_start\": 15,\n                \"value_end\": 26,\n                \"entropy\": 3.45943\n            },\n            {\n                \"line\": \"Name:master,PW:dipPr169Gg!\",\n                \"line_num\": 70,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"Name\",\n                \"variable_start\": 0,\n                \"variable_end\": 4,\n                \"value\": \"master,PW:dipPr169Gg!\",\n                \"value_start\": 5,\n                \"value_end\": 26,\n                \"entropy\": 4.20184\n            }\n        ]\n    },\n    {\n        \"rule\": \"PASSWD_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.825,\n        \"line_data_list\": [\n            {\n                \"line\": \"Name:master,PW:dipPr169Gg!\",\n                \"line_num\": 70,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"PW\",\n                \"variable_start\": 12,\n                \"variable_end\": 14,\n                \"value\": \"dipPr169Gg!\",\n                \"value_start\": 15,\n                \"value_end\": 26,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_CREDENTIALS\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.953,\n        \"line_data_list\": [\n            {\n                \"line\": \"user:master pass:dipPr172Gg!\",\n                \"line_num\": 73,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"pass\",\n                \"variable_start\": 12,\n                \"variable_end\": 16,\n                \"value\": \"dipPr172Gg!\",\n                \"value_start\": 17,\n                \"value_end\": 28,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_CREDENTIALS\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.131,\n        \"line_data_list\": [\n            {\n                \"line\": \"\\uacc4\\uc815:master \\ube44\\ubc88:dipPr173Gg!\",\n                \"line_num\": 74,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"\\ube44\\ubc88\",\n                \"variable_start\": 10,\n                \"variable_end\": 12,\n                \"value\": \"dipPr173Gg!\",\n                \"value_start\": 13,\n                \"value_end\": 24,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"ID_PAIR_PASSWD_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.131,\n        \"line_data_list\": [\n            {\n                \"line\": \"\\uacc4\\uc815:master \\ube44\\ubc88:dipPr173Gg!\",\n                \"line_num\": 74,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"\\ube44\\ubc88\",\n                \"variable_start\": 10,\n                \"variable_end\": 12,\n                \"value\": \"dipPr173Gg!\",\n                \"value_start\": 13,\n                \"value_end\": 24,\n                \"entropy\": 3.45943\n            },\n            {\n                \"line\": \"\\uacc4\\uc815:master \\ube44\\ubc88:dipPr173Gg!\",\n                \"line_num\": 74,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"\\uacc4\\uc815\",\n                \"variable_start\": 0,\n                \"variable_end\": 2,\n                \"value\": \"master\",\n                \"value_start\": 3,\n                \"value_end\": 9,\n                \"entropy\": 2.58496\n            }\n        ]\n    },\n    {\n        \"rule\": \"PASSWD_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.131,\n        \"line_data_list\": [\n            {\n                \"line\": \"\\uacc4\\uc815:master \\ube44\\ubc88:dipPr173Gg!\",\n                \"line_num\": 74,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"\\ube44\\ubc88\",\n                \"variable_start\": 10,\n                \"variable_end\": 12,\n                \"value\": \"dipPr173Gg!\",\n                \"value_start\": 13,\n                \"value_end\": 24,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_CREDENTIALS\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.997,\n        \"line_data_list\": [\n            {\n                \"line\": \"user=master password=dipPr174Gg!\",\n                \"line_num\": 75,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"password\",\n                \"variable_start\": 12,\n                \"variable_end\": 20,\n                \"value\": \"dipPr174Gg!\",\n                \"value_start\": 21,\n                \"value_end\": 32,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"ID_PAIR_PASSWD_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.997,\n        \"line_data_list\": [\n            {\n                \"line\": \"user=master password=dipPr174Gg!\",\n                \"line_num\": 75,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"password\",\n                \"variable_start\": 12,\n                \"variable_end\": 20,\n                \"value\": \"dipPr174Gg!\",\n                \"value_start\": 21,\n                \"value_end\": 32,\n                \"entropy\": 3.45943\n            },\n            {\n                \"line\": \"user=master password=dipPr174Gg!\",\n                \"line_num\": 75,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"user\",\n                \"variable_start\": 0,\n                \"variable_end\": 4,\n                \"value\": \"master\",\n                \"value_start\": 5,\n                \"value_end\": 11,\n                \"entropy\": 2.58496\n            }\n        ]\n    },\n    {\n        \"rule\": \"PASSWD_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.997,\n        \"line_data_list\": [\n            {\n                \"line\": \"user=master password=dipPr174Gg!\",\n                \"line_num\": 75,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"password\",\n                \"variable_start\": 12,\n                \"variable_end\": 20,\n                \"value\": \"dipPr174Gg!\",\n                \"value_start\": 21,\n                \"value_end\": 32,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_CREDENTIALS\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.996,\n        \"line_data_list\": [\n            {\n                \"line\": \"Host name:master/Password:dipPr175Gg!\",\n                \"line_num\": 76,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"Password\",\n                \"variable_start\": 17,\n                \"variable_end\": 25,\n                \"value\": \"dipPr175Gg!\",\n                \"value_start\": 26,\n                \"value_end\": 37,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"ID_PAIR_PASSWD_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.996,\n        \"line_data_list\": [\n            {\n                \"line\": \"Host name:master/Password:dipPr175Gg!\",\n                \"line_num\": 76,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"Password\",\n                \"variable_start\": 17,\n                \"variable_end\": 25,\n                \"value\": \"dipPr175Gg!\",\n                \"value_start\": 26,\n                \"value_end\": 37,\n                \"entropy\": 3.45943\n            },\n            {\n                \"line\": \"Host name:master/Password:dipPr175Gg!\",\n                \"line_num\": 76,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"Host\",\n                \"variable_start\": 0,\n                \"variable_end\": 4,\n                \"value\": \"name:master/Password:dipPr175Gg!\",\n                \"value_start\": 5,\n                \"value_end\": 37,\n                \"entropy\": 4.24173\n            }\n        ]\n    },\n    {\n        \"rule\": \"PASSWD_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.996,\n        \"line_data_list\": [\n            {\n                \"line\": \"Host name:master/Password:dipPr175Gg!\",\n                \"line_num\": 76,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"Password\",\n                \"variable_start\": 17,\n                \"variable_end\": 25,\n                \"value\": \"dipPr175Gg!\",\n                \"value_start\": 26,\n                \"value_end\": 37,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_CREDENTIALS\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.999,\n        \"line_data_list\": [\n            {\n                \"line\": \"role:master,password:dipPr176Gg!\",\n                \"line_num\": 77,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"password\",\n                \"variable_start\": 12,\n                \"variable_end\": 20,\n                \"value\": \"dipPr176Gg!\",\n                \"value_start\": 21,\n                \"value_end\": 32,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"ID_PAIR_PASSWD_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.999,\n        \"line_data_list\": [\n            {\n                \"line\": \"role:master,password:dipPr176Gg!\",\n                \"line_num\": 77,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"password\",\n                \"variable_start\": 12,\n                \"variable_end\": 20,\n                \"value\": \"dipPr176Gg!\",\n                \"value_start\": 21,\n                \"value_end\": 32,\n                \"entropy\": 3.45943\n            },\n            {\n                \"line\": \"role:master,password:dipPr176Gg!\",\n                \"line_num\": 77,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"role\",\n                \"variable_start\": 0,\n                \"variable_end\": 4,\n                \"value\": \"master,password:dipPr176Gg!\",\n                \"value_start\": 5,\n                \"value_end\": 32,\n                \"entropy\": 4.18045\n            }\n        ]\n    },\n    {\n        \"rule\": \"PASSWD_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.999,\n        \"line_data_list\": [\n            {\n                \"line\": \"role:master,password:dipPr176Gg!\",\n                \"line_num\": 77,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"password\",\n                \"variable_start\": 12,\n                \"variable_end\": 20,\n                \"value\": \"dipPr176Gg!\",\n                \"value_start\": 21,\n                \"value_end\": 32,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"ID_PAIR_PASSWD_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.842,\n        \"line_data_list\": [\n            {\n                \"line\": \"Wifi Name:master,PW:dipPr177Gg!\",\n                \"line_num\": 78,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"Wifi\",\n                \"variable_start\": 0,\n                \"variable_end\": 4,\n                \"value\": \"Name:master,PW:dipPr177Gg!\",\n                \"value_start\": 5,\n                \"value_end\": 31,\n                \"entropy\": 4.16198\n            },\n            {\n                \"line\": \"Wifi Name:master,PW:dipPr177Gg!\",\n                \"line_num\": 78,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"PW\",\n                \"variable_start\": 17,\n                \"variable_end\": 19,\n                \"value\": \"dipPr177Gg!\",\n                \"value_start\": 20,\n                \"value_end\": 31,\n                \"entropy\": 3.27761\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_CREDENTIALS\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.842,\n        \"line_data_list\": [\n            {\n                \"line\": \"Wifi Name:master,PW:dipPr177Gg!\",\n                \"line_num\": 78,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"PW\",\n                \"variable_start\": 17,\n                \"variable_end\": 19,\n                \"value\": \"dipPr177Gg!\",\n                \"value_start\": 20,\n                \"value_end\": 31,\n                \"entropy\": 3.27761\n            }\n        ]\n    },\n    {\n        \"rule\": \"PASSWD_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.842,\n        \"line_data_list\": [\n            {\n                \"line\": \"Wifi Name:master,PW:dipPr177Gg!\",\n                \"line_num\": 78,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"PW\",\n                \"variable_start\": 17,\n                \"variable_end\": 19,\n                \"value\": \"dipPr177Gg!\",\n                \"value_start\": 20,\n                \"value_end\": 31,\n                \"entropy\": 3.27761\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_CREDENTIALS\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.997,\n        \"line_data_list\": [\n            {\n                \"line\": \"ID:master/Password:dipPr178Gg!\",\n                \"line_num\": 79,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"Password\",\n                \"variable_start\": 10,\n                \"variable_end\": 18,\n                \"value\": \"dipPr178Gg!\",\n                \"value_start\": 19,\n                \"value_end\": 30,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"ID_PAIR_PASSWD_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.997,\n        \"line_data_list\": [\n            {\n                \"line\": \"ID:master/Password:dipPr178Gg!\",\n                \"line_num\": 79,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"Password\",\n                \"variable_start\": 10,\n                \"variable_end\": 18,\n                \"value\": \"dipPr178Gg!\",\n                \"value_start\": 19,\n                \"value_end\": 30,\n                \"entropy\": 3.45943\n            },\n            {\n                \"line\": \"ID:master/Password:dipPr178Gg!\",\n                \"line_num\": 79,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"ID\",\n                \"variable_start\": 0,\n                \"variable_end\": 2,\n                \"value\": \"master/Password:dipPr178Gg!\",\n                \"value_start\": 3,\n                \"value_end\": 30,\n                \"entropy\": 4.18045\n            }\n        ]\n    },\n    {\n        \"rule\": \"PASSWD_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.997,\n        \"line_data_list\": [\n            {\n                \"line\": \"ID:master/Password:dipPr178Gg!\",\n                \"line_num\": 79,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"Password\",\n                \"variable_start\": 10,\n                \"variable_end\": 18,\n                \"value\": \"dipPr178Gg!\",\n                \"value_start\": 19,\n                \"value_end\": 30,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_CREDENTIALS\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.999,\n        \"line_data_list\": [\n            {\n                \"line\": \"name:master,password:dipPr179Gg!\",\n                \"line_num\": 80,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"password\",\n                \"variable_start\": 12,\n                \"variable_end\": 20,\n                \"value\": \"dipPr179Gg!\",\n                \"value_start\": 21,\n                \"value_end\": 32,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"ID_PAIR_PASSWD_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.999,\n        \"line_data_list\": [\n            {\n                \"line\": \"name:master,password:dipPr179Gg!\",\n                \"line_num\": 80,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"password\",\n                \"variable_start\": 12,\n                \"variable_end\": 20,\n                \"value\": \"dipPr179Gg!\",\n                \"value_start\": 21,\n                \"value_end\": 32,\n                \"entropy\": 3.45943\n            },\n            {\n                \"line\": \"name:master,password:dipPr179Gg!\",\n                \"line_num\": 80,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"name\",\n                \"variable_start\": 0,\n                \"variable_end\": 4,\n                \"value\": \"master,password:dipPr179Gg!\",\n                \"value_start\": 5,\n                \"value_end\": 32,\n                \"entropy\": 4.18045\n            }\n        ]\n    },\n    {\n        \"rule\": \"PASSWD_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.999,\n        \"line_data_list\": [\n            {\n                \"line\": \"name:master,password:dipPr179Gg!\",\n                \"line_num\": 80,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"password\",\n                \"variable_start\": 12,\n                \"variable_end\": 20,\n                \"value\": \"dipPr179Gg!\",\n                \"value_start\": 21,\n                \"value_end\": 32,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_CREDENTIALS\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.996,\n        \"line_data_list\": [\n            {\n                \"line\": \"Loging:master Password:dipPr180Gg!\",\n                \"line_num\": 81,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"Password\",\n                \"variable_start\": 14,\n                \"variable_end\": 22,\n                \"value\": \"dipPr180Gg!\",\n                \"value_start\": 23,\n                \"value_end\": 34,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"PASSWD_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.996,\n        \"line_data_list\": [\n            {\n                \"line\": \"Loging:master Password:dipPr180Gg!\",\n                \"line_num\": 81,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"Password\",\n                \"variable_start\": 14,\n                \"variable_end\": 22,\n                \"value\": \"dipPr180Gg!\",\n                \"value_start\": 23,\n                \"value_end\": 34,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_CREDENTIALS\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.96,\n        \"line_data_list\": [\n            {\n                \"line\": \"Loging:master Pwd:dipPr181Gg!\",\n                \"line_num\": 82,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"Pwd\",\n                \"variable_start\": 14,\n                \"variable_end\": 17,\n                \"value\": \"dipPr181Gg!\",\n                \"value_start\": 18,\n                \"value_end\": 29,\n                \"entropy\": 3.27761\n            }\n        ]\n    },\n    {\n        \"rule\": \"PASSWD_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.96,\n        \"line_data_list\": [\n            {\n                \"line\": \"Loging:master Pwd:dipPr181Gg!\",\n                \"line_num\": 82,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"Pwd\",\n                \"variable_start\": 14,\n                \"variable_end\": 17,\n                \"value\": \"dipPr181Gg!\",\n                \"value_start\": 18,\n                \"value_end\": 29,\n                \"entropy\": 3.27761\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_CREDENTIALS\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.966,\n        \"line_data_list\": [\n            {\n                \"line\": \"id:master,default pw:dipPr182Gg!\",\n                \"line_num\": 83,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"pw\",\n                \"variable_start\": 18,\n                \"variable_end\": 20,\n                \"value\": \"dipPr182Gg!\",\n                \"value_start\": 21,\n                \"value_end\": 32,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"ID_PAIR_PASSWD_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.966,\n        \"line_data_list\": [\n            {\n                \"line\": \"id:master,default pw:dipPr182Gg!\",\n                \"line_num\": 83,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"pw\",\n                \"variable_start\": 18,\n                \"variable_end\": 20,\n                \"value\": \"dipPr182Gg!\",\n                \"value_start\": 21,\n                \"value_end\": 32,\n                \"entropy\": 3.45943\n            },\n            {\n                \"line\": \"id:master,default pw:dipPr182Gg!\",\n                \"line_num\": 83,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"id\",\n                \"variable_start\": 0,\n                \"variable_end\": 2,\n                \"value\": \"master,default\",\n                \"value_start\": 3,\n                \"value_end\": 17,\n                \"entropy\": 3.37878\n            }\n        ]\n    },\n    {\n        \"rule\": \"PASSWD_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.966,\n        \"line_data_list\": [\n            {\n                \"line\": \"id:master,default pw:dipPr182Gg!\",\n                \"line_num\": 83,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"pw\",\n                \"variable_start\": 18,\n                \"variable_end\": 20,\n                \"value\": \"dipPr182Gg!\",\n                \"value_start\": 21,\n                \"value_end\": 32,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_CREDENTIALS\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.592,\n        \"line_data_list\": [\n            {\n                \"line\": \"ID:master/\\ube44\\ubc88:dipPr184Gg!\",\n                \"line_num\": 85,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"\\ube44\\ubc88\",\n                \"variable_start\": 10,\n                \"variable_end\": 12,\n                \"value\": \"dipPr184Gg!\",\n                \"value_start\": 13,\n                \"value_end\": 24,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"ID_PAIR_PASSWD_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.592,\n        \"line_data_list\": [\n            {\n                \"line\": \"ID:master/\\ube44\\ubc88:dipPr184Gg!\",\n                \"line_num\": 85,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"\\ube44\\ubc88\",\n                \"variable_start\": 10,\n                \"variable_end\": 12,\n                \"value\": \"dipPr184Gg!\",\n                \"value_start\": 13,\n                \"value_end\": 24,\n                \"entropy\": 3.45943\n            },\n            {\n                \"line\": \"ID:master/\\ube44\\ubc88:dipPr184Gg!\",\n                \"line_num\": 85,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"ID\",\n                \"variable_start\": 0,\n                \"variable_end\": 2,\n                \"value\": \"master/\\ube44\\ubc88:dipPr184Gg!\",\n                \"value_start\": 3,\n                \"value_end\": 24,\n                \"entropy\": 4.29708\n            }\n        ]\n    },\n    {\n        \"rule\": \"PASSWD_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.592,\n        \"line_data_list\": [\n            {\n                \"line\": \"ID:master/\\ube44\\ubc88:dipPr184Gg!\",\n                \"line_num\": 85,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"\\ube44\\ubc88\",\n                \"variable_start\": 10,\n                \"variable_end\": 12,\n                \"value\": \"dipPr184Gg!\",\n                \"value_start\": 13,\n                \"value_end\": 24,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_CREDENTIALS\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.972,\n        \"line_data_list\": [\n            {\n                \"line\": \"id/pw id:master pw:dipPr185Gg!\",\n                \"line_num\": 86,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"pw\",\n                \"variable_start\": 16,\n                \"variable_end\": 18,\n                \"value\": \"dipPr185Gg!\",\n                \"value_start\": 19,\n                \"value_end\": 30,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"ID_PAIR_PASSWD_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.972,\n        \"line_data_list\": [\n            {\n                \"line\": \"id/pw id:master pw:dipPr185Gg!\",\n                \"line_num\": 86,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"pw\",\n                \"variable_start\": 16,\n                \"variable_end\": 18,\n                \"value\": \"dipPr185Gg!\",\n                \"value_start\": 19,\n                \"value_end\": 30,\n                \"entropy\": 3.45943\n            },\n            {\n                \"line\": \"id/pw id:master pw:dipPr185Gg!\",\n                \"line_num\": 86,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"id\",\n                \"variable_start\": 6,\n                \"variable_end\": 8,\n                \"value\": \"master\",\n                \"value_start\": 9,\n                \"value_end\": 15,\n                \"entropy\": 2.58496\n            }\n        ]\n    },\n    {\n        \"rule\": \"PASSWD_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.972,\n        \"line_data_list\": [\n            {\n                \"line\": \"id/pw id:master pw:dipPr185Gg!\",\n                \"line_num\": 86,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"pw\",\n                \"variable_start\": 16,\n                \"variable_end\": 18,\n                \"value\": \"dipPr185Gg!\",\n                \"value_start\": 19,\n                \"value_end\": 30,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_CREDENTIALS\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.963,\n        \"line_data_list\": [\n            {\n                \"line\": \"user:master,pwd:dipPr186Gg!\",\n                \"line_num\": 87,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"pwd\",\n                \"variable_start\": 12,\n                \"variable_end\": 15,\n                \"value\": \"dipPr186Gg!\",\n                \"value_start\": 16,\n                \"value_end\": 27,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"ID_PAIR_PASSWD_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.963,\n        \"line_data_list\": [\n            {\n                \"line\": \"user:master,pwd:dipPr186Gg!\",\n                \"line_num\": 87,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"pwd\",\n                \"variable_start\": 12,\n                \"variable_end\": 15,\n                \"value\": \"dipPr186Gg!\",\n                \"value_start\": 16,\n                \"value_end\": 27,\n                \"entropy\": 3.45943\n            },\n            {\n                \"line\": \"user:master,pwd:dipPr186Gg!\",\n                \"line_num\": 87,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"user\",\n                \"variable_start\": 0,\n                \"variable_end\": 4,\n                \"value\": \"master,pwd:dipPr186Gg!\",\n                \"value_start\": 5,\n                \"value_end\": 27,\n                \"entropy\": 4.1867\n            }\n        ]\n    },\n    {\n        \"rule\": \"PASSWD_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.963,\n        \"line_data_list\": [\n            {\n                \"line\": \"user:master,pwd:dipPr186Gg!\",\n                \"line_num\": 87,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"pwd\",\n                \"variable_start\": 12,\n                \"variable_end\": 15,\n                \"value\": \"dipPr186Gg!\",\n                \"value_start\": 16,\n                \"value_end\": 27,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_CREDENTIALS\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.894,\n        \"line_data_list\": [\n            {\n                \"line\": \"username:master/pw:dipPr188Gg!\",\n                \"line_num\": 89,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"pw\",\n                \"variable_start\": 16,\n                \"variable_end\": 18,\n                \"value\": \"dipPr188Gg!\",\n                \"value_start\": 19,\n                \"value_end\": 30,\n                \"entropy\": 3.27761\n            }\n        ]\n    },\n    {\n        \"rule\": \"ID_PAIR_PASSWD_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.894,\n        \"line_data_list\": [\n            {\n                \"line\": \"username:master/pw:dipPr188Gg!\",\n                \"line_num\": 89,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"pw\",\n                \"variable_start\": 16,\n                \"variable_end\": 18,\n                \"value\": \"dipPr188Gg!\",\n                \"value_start\": 19,\n                \"value_end\": 30,\n                \"entropy\": 3.27761\n            },\n            {\n                \"line\": \"username:master/pw:dipPr188Gg!\",\n                \"line_num\": 89,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"username\",\n                \"variable_start\": 0,\n                \"variable_end\": 8,\n                \"value\": \"master/pw:dipPr188Gg!\",\n                \"value_start\": 9,\n                \"value_end\": 30,\n                \"entropy\": 4.1066\n            }\n        ]\n    },\n    {\n        \"rule\": \"PASSWD_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.894,\n        \"line_data_list\": [\n            {\n                \"line\": \"username:master/pw:dipPr188Gg!\",\n                \"line_num\": 89,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"pw\",\n                \"variable_start\": 16,\n                \"variable_end\": 18,\n                \"value\": \"dipPr188Gg!\",\n                \"value_start\": 19,\n                \"value_end\": 30,\n                \"entropy\": 3.27761\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_CREDENTIALS\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.957,\n        \"line_data_list\": [\n            {\n                \"line\": \"username:master pw:dipPr189Gg!\",\n                \"line_num\": 90,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"pw\",\n                \"variable_start\": 16,\n                \"variable_end\": 18,\n                \"value\": \"dipPr189Gg!\",\n                \"value_start\": 19,\n                \"value_end\": 30,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"ID_PAIR_PASSWD_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.957,\n        \"line_data_list\": [\n            {\n                \"line\": \"username:master pw:dipPr189Gg!\",\n                \"line_num\": 90,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"pw\",\n                \"variable_start\": 16,\n                \"variable_end\": 18,\n                \"value\": \"dipPr189Gg!\",\n                \"value_start\": 19,\n                \"value_end\": 30,\n                \"entropy\": 3.45943\n            },\n            {\n                \"line\": \"username:master pw:dipPr189Gg!\",\n                \"line_num\": 90,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"username\",\n                \"variable_start\": 0,\n                \"variable_end\": 8,\n                \"value\": \"master\",\n                \"value_start\": 9,\n                \"value_end\": 15,\n                \"entropy\": 2.58496\n            }\n        ]\n    },\n    {\n        \"rule\": \"PASSWD_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.957,\n        \"line_data_list\": [\n            {\n                \"line\": \"username:master pw:dipPr189Gg!\",\n                \"line_num\": 90,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"pw\",\n                \"variable_start\": 16,\n                \"variable_end\": 18,\n                \"value\": \"dipPr189Gg!\",\n                \"value_start\": 19,\n                \"value_end\": 30,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_CREDENTIALS\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.629,\n        \"line_data_list\": [\n            {\n                \"line\": \"PW:dipPr190Gg! ID:master\",\n                \"line_num\": 91,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"PW\",\n                \"variable_start\": 0,\n                \"variable_end\": 2,\n                \"value\": \"dipPr190Gg!\",\n                \"value_start\": 3,\n                \"value_end\": 14,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"ID_PAIR_PASSWD_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.629,\n        \"line_data_list\": [\n            {\n                \"line\": \"PW:dipPr190Gg! ID:master\",\n                \"line_num\": 91,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"PW\",\n                \"variable_start\": 0,\n                \"variable_end\": 2,\n                \"value\": \"dipPr190Gg!\",\n                \"value_start\": 3,\n                \"value_end\": 14,\n                \"entropy\": 3.45943\n            },\n            {\n                \"line\": \"PW:dipPr190Gg! ID:master\",\n                \"line_num\": 91,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"ID\",\n                \"variable_start\": 15,\n                \"variable_end\": 17,\n                \"value\": \"master\",\n                \"value_start\": 18,\n                \"value_end\": 24,\n                \"entropy\": 2.58496\n            }\n        ]\n    },\n    {\n        \"rule\": \"PASSWD_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.629,\n        \"line_data_list\": [\n            {\n                \"line\": \"PW:dipPr190Gg! ID:master\",\n                \"line_num\": 91,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"PW\",\n                \"variable_start\": 0,\n                \"variable_end\": 2,\n                \"value\": \"dipPr190Gg!\",\n                \"value_start\": 3,\n                \"value_end\": 14,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_CREDENTIALS\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.002,\n        \"line_data_list\": [\n            {\n                \"line\": \"\\uc544\\uc774\\ub514:master \\ube44\\ubc00\\ubc88\\ud638:dipPr191Gg!\",\n                \"line_num\": 92,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"\\ube44\\ubc00\\ubc88\\ud638\",\n                \"variable_start\": 11,\n                \"variable_end\": 15,\n                \"value\": \"dipPr191Gg!\",\n                \"value_start\": 16,\n                \"value_end\": 27,\n                \"entropy\": 3.27761\n            }\n        ]\n    },\n    {\n        \"rule\": \"ID_PAIR_PASSWD_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.002,\n        \"line_data_list\": [\n            {\n                \"line\": \"\\uc544\\uc774\\ub514:master \\ube44\\ubc00\\ubc88\\ud638:dipPr191Gg!\",\n                \"line_num\": 92,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"\\ube44\\ubc00\\ubc88\\ud638\",\n                \"variable_start\": 11,\n                \"variable_end\": 15,\n                \"value\": \"dipPr191Gg!\",\n                \"value_start\": 16,\n                \"value_end\": 27,\n                \"entropy\": 3.27761\n            },\n            {\n                \"line\": \"\\uc544\\uc774\\ub514:master \\ube44\\ubc00\\ubc88\\ud638:dipPr191Gg!\",\n                \"line_num\": 92,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"\\uc544\\uc774\\ub514\",\n                \"variable_start\": 0,\n                \"variable_end\": 3,\n                \"value\": \"master\",\n                \"value_start\": 4,\n                \"value_end\": 10,\n                \"entropy\": 2.58496\n            }\n        ]\n    },\n    {\n        \"rule\": \"PASSWD_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.002,\n        \"line_data_list\": [\n            {\n                \"line\": \"\\uc544\\uc774\\ub514:master \\ube44\\ubc00\\ubc88\\ud638:dipPr191Gg!\",\n                \"line_num\": 92,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"\\ube44\\ubc00\\ubc88\\ud638\",\n                \"variable_start\": 11,\n                \"variable_end\": 15,\n                \"value\": \"dipPr191Gg!\",\n                \"value_start\": 16,\n                \"value_end\": 27,\n                \"entropy\": 3.27761\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_CREDENTIALS\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.998,\n        \"line_data_list\": [\n            {\n                \"line\": \"ANYid:master pw:dipPr194Gg! ip:98.76.54.32\",\n                \"line_num\": 95,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"pw\",\n                \"variable_start\": 13,\n                \"variable_end\": 15,\n                \"value\": \"dipPr194Gg!\",\n                \"value_start\": 16,\n                \"value_end\": 27,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"ID_PAIR_PASSWD_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.998,\n        \"line_data_list\": [\n            {\n                \"line\": \"ANYid:master pw:dipPr194Gg! ip:98.76.54.32\",\n                \"line_num\": 95,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"pw\",\n                \"variable_start\": 13,\n                \"variable_end\": 15,\n                \"value\": \"dipPr194Gg!\",\n                \"value_start\": 16,\n                \"value_end\": 27,\n                \"entropy\": 3.45943\n            },\n            {\n                \"line\": \"ANYid:master pw:dipPr194Gg! ip:98.76.54.32\",\n                \"line_num\": 95,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"id\",\n                \"variable_start\": 3,\n                \"variable_end\": 5,\n                \"value\": \"master\",\n                \"value_start\": 6,\n                \"value_end\": 12,\n                \"entropy\": 2.58496\n            }\n        ]\n    },\n    {\n        \"rule\": \"PASSWD_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.998,\n        \"line_data_list\": [\n            {\n                \"line\": \"ANYid:master pw:dipPr194Gg! ip:98.76.54.32\",\n                \"line_num\": 95,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"pw\",\n                \"variable_start\": 13,\n                \"variable_end\": 15,\n                \"value\": \"dipPr194Gg!\",\n                \"value_start\": 16,\n                \"value_end\": 27,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_CREDENTIALS\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.188,\n        \"line_data_list\": [\n            {\n                \"line\": \"\\uacc4\\uc815:master \\uc554\\ud638:dipPr195Gg!\",\n                \"line_num\": 96,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"\\uc554\\ud638\",\n                \"variable_start\": 10,\n                \"variable_end\": 12,\n                \"value\": \"dipPr195Gg!\",\n                \"value_start\": 13,\n                \"value_end\": 24,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"ID_PAIR_PASSWD_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.188,\n        \"line_data_list\": [\n            {\n                \"line\": \"\\uacc4\\uc815:master \\uc554\\ud638:dipPr195Gg!\",\n                \"line_num\": 96,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"\\uc554\\ud638\",\n                \"variable_start\": 10,\n                \"variable_end\": 12,\n                \"value\": \"dipPr195Gg!\",\n                \"value_start\": 13,\n                \"value_end\": 24,\n                \"entropy\": 3.45943\n            },\n            {\n                \"line\": \"\\uacc4\\uc815:master \\uc554\\ud638:dipPr195Gg!\",\n                \"line_num\": 96,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"\\uacc4\\uc815\",\n                \"variable_start\": 0,\n                \"variable_end\": 2,\n                \"value\": \"master\",\n                \"value_start\": 3,\n                \"value_end\": 9,\n                \"entropy\": 2.58496\n            }\n        ]\n    },\n    {\n        \"rule\": \"PASSWD_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.188,\n        \"line_data_list\": [\n            {\n                \"line\": \"\\uacc4\\uc815:master \\uc554\\ud638:dipPr195Gg!\",\n                \"line_num\": 96,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"\\uc554\\ud638\",\n                \"variable_start\": 10,\n                \"variable_end\": 12,\n                \"value\": \"dipPr195Gg!\",\n                \"value_start\": 13,\n                \"value_end\": 24,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_CREDENTIALS\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.993,\n        \"line_data_list\": [\n            {\n                \"line\": \"id: master pw:dipPr197Gg!\",\n                \"line_num\": 98,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"pw\",\n                \"variable_start\": 11,\n                \"variable_end\": 13,\n                \"value\": \"dipPr197Gg!\",\n                \"value_start\": 14,\n                \"value_end\": 25,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"ID_PAIR_PASSWD_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.993,\n        \"line_data_list\": [\n            {\n                \"line\": \"id: master pw:dipPr197Gg!\",\n                \"line_num\": 98,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"pw\",\n                \"variable_start\": 11,\n                \"variable_end\": 13,\n                \"value\": \"dipPr197Gg!\",\n                \"value_start\": 14,\n                \"value_end\": 25,\n                \"entropy\": 3.45943\n            },\n            {\n                \"line\": \"id: master pw:dipPr197Gg!\",\n                \"line_num\": 98,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"id\",\n                \"variable_start\": 0,\n                \"variable_end\": 2,\n                \"value\": \"master\",\n                \"value_start\": 4,\n                \"value_end\": 10,\n                \"entropy\": 2.58496\n            }\n        ]\n    },\n    {\n        \"rule\": \"PASSWD_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.993,\n        \"line_data_list\": [\n            {\n                \"line\": \"id: master pw:dipPr197Gg!\",\n                \"line_num\": 98,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"pw\",\n                \"variable_start\": 11,\n                \"variable_end\": 13,\n                \"value\": \"dipPr197Gg!\",\n                \"value_start\": 14,\n                \"value_end\": 25,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_CREDENTIALS\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.804,\n        \"line_data_list\": [\n            {\n                \"line\": \"id:master@example.com,pw:dipPr198Gg!\",\n                \"line_num\": 99,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"pw\",\n                \"variable_start\": 22,\n                \"variable_end\": 24,\n                \"value\": \"dipPr198Gg!\",\n                \"value_start\": 25,\n                \"value_end\": 36,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"ID_PAIR_PASSWD_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.804,\n        \"line_data_list\": [\n            {\n                \"line\": \"id:master@example.com,pw:dipPr198Gg!\",\n                \"line_num\": 99,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"pw\",\n                \"variable_start\": 22,\n                \"variable_end\": 24,\n                \"value\": \"dipPr198Gg!\",\n                \"value_start\": 25,\n                \"value_end\": 36,\n                \"entropy\": 3.45943\n            },\n            {\n                \"line\": \"id:master@example.com,pw:dipPr198Gg!\",\n                \"line_num\": 99,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"id\",\n                \"variable_start\": 0,\n                \"variable_end\": 2,\n                \"value\": \"master@example.com,pw:dipPr198Gg!\",\n                \"value_start\": 3,\n                \"value_end\": 36,\n                \"entropy\": 4.49092\n            }\n        ]\n    },\n    {\n        \"rule\": \"PASSWD_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.804,\n        \"line_data_list\": [\n            {\n                \"line\": \"id:master@example.com,pw:dipPr198Gg!\",\n                \"line_num\": 99,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"pw\",\n                \"variable_start\": 22,\n                \"variable_end\": 24,\n                \"value\": \"dipPr198Gg!\",\n                \"value_start\": 25,\n                \"value_end\": 36,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_CREDENTIALS\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.666,\n        \"line_data_list\": [\n            {\n                \"line\": \"id:master@example.com,pw:IHQSB1GG!\",\n                \"line_num\": 102,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_pair_passwd_pair|RAW\",\n                \"variable\": \"pw\",\n                \"variable_start\": 22,\n                \"variable_end\": 24,\n                \"value\": \"IHQSB1GG!\",\n                \"value_start\": 25,\n                \"value_end\": 34,\n                \"entropy\": 2.9477\n            }\n        ]\n    },\n    {\n        \"rule\": \"ID_PASSWD_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.868,\n        \"line_data_list\": [\n            {\n                \"line\": \"ID/PW:master/iPp0@GRq\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/doc_id_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_passwd_pair|RAW\",\n                \"variable\": \"ID/PW\",\n                \"variable_start\": 0,\n                \"variable_end\": 5,\n                \"value\": \"iPp0@GRq\",\n                \"value_start\": 13,\n                \"value_end\": 21,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_CREDENTIALS\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.005,\n        \"line_data_list\": [\n            {\n                \"line\": \"ID/PW:master/iPp0@GRq\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/doc_id_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_passwd_pair|RAW\",\n                \"variable\": \"PW\",\n                \"variable_start\": 3,\n                \"variable_end\": 5,\n                \"value\": \"master/iPp0@GRq\",\n                \"value_start\": 6,\n                \"value_end\": 21,\n                \"entropy\": 3.90689\n            }\n        ]\n    },\n    {\n        \"rule\": \"ID_PASSWD_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.679,\n        \"line_data_list\": [\n            {\n                \"line\": \"ANYID(PW):master(iPp1@GRq)\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/doc_id_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_passwd_pair|RAW\",\n                \"variable\": \"ANYID(PW\",\n                \"variable_start\": 0,\n                \"variable_end\": 8,\n                \"value\": \"iPp1@GRq\",\n                \"value_start\": 17,\n                \"value_end\": 25,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"ID_PASSWD_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.989,\n        \"line_data_list\": [\n            {\n                \"line\": \"ID/Password:master/iPp2@GRq\",\n                \"line_num\": 3,\n                \"path\": \"./tests/samples/doc_id_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_passwd_pair|RAW\",\n                \"variable\": \"ID/Password\",\n                \"variable_start\": 0,\n                \"variable_end\": 11,\n                \"value\": \"iPp2@GRq\",\n                \"value_start\": 19,\n                \"value_end\": 27,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_CREDENTIALS\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.104,\n        \"line_data_list\": [\n            {\n                \"line\": \"ID/Password:master/iPp2@GRq\",\n                \"line_num\": 3,\n                \"path\": \"./tests/samples/doc_id_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_passwd_pair|RAW\",\n                \"variable\": \"Password\",\n                \"variable_start\": 3,\n                \"variable_end\": 11,\n                \"value\": \"master/iPp2@GRq\",\n                \"value_start\": 12,\n                \"value_end\": 27,\n                \"entropy\": 3.90689\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_CREDENTIALS\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.02,\n        \"line_data_list\": [\n            {\n                \"line\": \"ID/Pass:master/iPp3@GRq\",\n                \"line_num\": 4,\n                \"path\": \"./tests/samples/doc_id_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_passwd_pair|RAW\",\n                \"variable\": \"Pass\",\n                \"variable_start\": 3,\n                \"variable_end\": 7,\n                \"value\": \"master/iPp3@GRq\",\n                \"value_start\": 8,\n                \"value_end\": 23,\n                \"entropy\": 3.90689\n            }\n        ]\n    },\n    {\n        \"rule\": \"ID_PAIR_PASSWD_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.027,\n        \"line_data_list\": [\n            {\n                \"line\": \"ID:PW=master:iPp4@GRq\",\n                \"line_num\": 5,\n                \"path\": \"./tests/samples/doc_id_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_passwd_pair|RAW\",\n                \"variable\": \"ID\",\n                \"variable_start\": 0,\n                \"variable_end\": 2,\n                \"value\": \"PW=master:iPp4@GRq\",\n                \"value_start\": 3,\n                \"value_end\": 21,\n                \"entropy\": 4.05881\n            },\n            {\n                \"line\": \"ID:PW=master:iPp4@GRq\",\n                \"line_num\": 5,\n                \"path\": \"./tests/samples/doc_id_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_passwd_pair|RAW\",\n                \"variable\": \"PW\",\n                \"variable_start\": 3,\n                \"variable_end\": 5,\n                \"value\": \"master:iPp4@GRq\",\n                \"value_start\": 6,\n                \"value_end\": 21,\n                \"entropy\": 3.90689\n            }\n        ]\n    },\n    {\n        \"rule\": \"ID_PASSWD_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.982,\n        \"line_data_list\": [\n            {\n                \"line\": \"ID:PW=master:iPp4@GRq\",\n                \"line_num\": 5,\n                \"path\": \"./tests/samples/doc_id_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_passwd_pair|RAW\",\n                \"variable\": \"ID:PW\",\n                \"variable_start\": 0,\n                \"variable_end\": 5,\n                \"value\": \"iPp4@GRq\",\n                \"value_start\": 13,\n                \"value_end\": 21,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_CREDENTIALS\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.027,\n        \"line_data_list\": [\n            {\n                \"line\": \"ID:PW=master:iPp4@GRq\",\n                \"line_num\": 5,\n                \"path\": \"./tests/samples/doc_id_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_passwd_pair|RAW\",\n                \"variable\": \"PW\",\n                \"variable_start\": 3,\n                \"variable_end\": 5,\n                \"value\": \"master:iPp4@GRq\",\n                \"value_start\": 6,\n                \"value_end\": 21,\n                \"entropy\": 3.90689\n            }\n        ]\n    },\n    {\n        \"rule\": \"ID_PASSWD_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.952,\n        \"line_data_list\": [\n            {\n                \"line\": \"ID/PW=master/iPp5@GRq\",\n                \"line_num\": 6,\n                \"path\": \"./tests/samples/doc_id_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_passwd_pair|RAW\",\n                \"variable\": \"ID/PW\",\n                \"variable_start\": 0,\n                \"variable_end\": 5,\n                \"value\": \"iPp5@GRq\",\n                \"value_start\": 13,\n                \"value_end\": 21,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_CREDENTIALS\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.008,\n        \"line_data_list\": [\n            {\n                \"line\": \"ID/PW=master/iPp5@GRq\",\n                \"line_num\": 6,\n                \"path\": \"./tests/samples/doc_id_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_passwd_pair|RAW\",\n                \"variable\": \"PW\",\n                \"variable_start\": 3,\n                \"variable_end\": 5,\n                \"value\": \"master/iPp5@GRq\",\n                \"value_start\": 6,\n                \"value_end\": 21,\n                \"entropy\": 3.90689\n            }\n        ]\n    },\n    {\n        \"rule\": \"ID_PASSWD_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.967,\n        \"line_data_list\": [\n            {\n                \"line\": \"id/pw master/iPp6@GRq\",\n                \"line_num\": 7,\n                \"path\": \"./tests/samples/doc_id_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_passwd_pair|RAW\",\n                \"variable\": \"id/pw\",\n                \"variable_start\": 0,\n                \"variable_end\": 5,\n                \"value\": \"iPp6@GRq\",\n                \"value_start\": 13,\n                \"value_end\": 21,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"ID_PASSWD_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.985,\n        \"line_data_list\": [\n            {\n                \"line\": \"username/password:master/iPp7@GRq\",\n                \"line_num\": 8,\n                \"path\": \"./tests/samples/doc_id_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_passwd_pair|RAW\",\n                \"variable\": \"username/password\",\n                \"variable_start\": 0,\n                \"variable_end\": 17,\n                \"value\": \"iPp7@GRq\",\n                \"value_start\": 25,\n                \"value_end\": 33,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_CREDENTIALS\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.212,\n        \"line_data_list\": [\n            {\n                \"line\": \"username/password:master/iPp7@GRq\",\n                \"line_num\": 8,\n                \"path\": \"./tests/samples/doc_id_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_passwd_pair|RAW\",\n                \"variable\": \"password\",\n                \"variable_start\": 9,\n                \"variable_end\": 17,\n                \"value\": \"master/iPp7@GRq\",\n                \"value_start\": 18,\n                \"value_end\": 33,\n                \"entropy\": 3.90689\n            }\n        ]\n    },\n    {\n        \"rule\": \"ID_PASSWD_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.956,\n        \"line_data_list\": [\n            {\n                \"line\": \"id/passwd:master/iPp8@GRq\",\n                \"line_num\": 9,\n                \"path\": \"./tests/samples/doc_id_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_passwd_pair|RAW\",\n                \"variable\": \"id/passwd\",\n                \"variable_start\": 0,\n                \"variable_end\": 9,\n                \"value\": \"iPp8@GRq\",\n                \"value_start\": 17,\n                \"value_end\": 25,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_CREDENTIALS\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.023,\n        \"line_data_list\": [\n            {\n                \"line\": \"id/passwd:master/iPp8@GRq\",\n                \"line_num\": 9,\n                \"path\": \"./tests/samples/doc_id_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_passwd_pair|RAW\",\n                \"variable\": \"passwd\",\n                \"variable_start\": 3,\n                \"variable_end\": 9,\n                \"value\": \"master/iPp8@GRq\",\n                \"value_start\": 10,\n                \"value_end\": 25,\n                \"entropy\": 3.90689\n            }\n        ]\n    },\n    {\n        \"rule\": \"ID_PASSWD_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.933,\n        \"line_data_list\": [\n            {\n                \"line\": \"ID PW master iPp9@GRq\",\n                \"line_num\": 10,\n                \"path\": \"./tests/samples/doc_id_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_passwd_pair|RAW\",\n                \"variable\": \"ID PW\",\n                \"variable_start\": 0,\n                \"variable_end\": 5,\n                \"value\": \"iPp9@GRq\",\n                \"value_start\": 13,\n                \"value_end\": 21,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_CREDENTIALS\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.569,\n        \"line_data_list\": [\n            {\n                \"line\": \"98.76.54.32(ID:master/PW:iPp10@GRq)      # todo: move into other sample ?\",\n                \"line_num\": 11,\n                \"path\": \"./tests/samples/doc_id_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_passwd_pair|RAW\",\n                \"variable\": \"PW\",\n                \"variable_start\": 22,\n                \"variable_end\": 24,\n                \"value\": \"iPp10@GRq\",\n                \"value_start\": 25,\n                \"value_end\": 34,\n                \"entropy\": 3.16993\n            }\n        ]\n    },\n    {\n        \"rule\": \"ID_PAIR_PASSWD_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.569,\n        \"line_data_list\": [\n            {\n                \"line\": \"98.76.54.32(ID:master/PW:iPp10@GRq)      # todo: move into other sample ?\",\n                \"line_num\": 11,\n                \"path\": \"./tests/samples/doc_id_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_passwd_pair|RAW\",\n                \"variable\": \"PW\",\n                \"variable_start\": 22,\n                \"variable_end\": 24,\n                \"value\": \"iPp10@GRq\",\n                \"value_start\": 25,\n                \"value_end\": 34,\n                \"entropy\": 3.16993\n            },\n            {\n                \"line\": \"98.76.54.32(ID:master/PW:iPp10@GRq)      # todo: move into other sample ?\",\n                \"line_num\": 11,\n                \"path\": \"./tests/samples/doc_id_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_passwd_pair|RAW\",\n                \"variable\": \"ID\",\n                \"variable_start\": 12,\n                \"variable_end\": 14,\n                \"value\": \"master/PW:iPp10@GRq\",\n                \"value_start\": 15,\n                \"value_end\": 34,\n                \"entropy\": 4.14266\n            }\n        ]\n    },\n    {\n        \"rule\": \"PASSWD_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.569,\n        \"line_data_list\": [\n            {\n                \"line\": \"98.76.54.32(ID:master/PW:iPp10@GRq)      # todo: move into other sample ?\",\n                \"line_num\": 11,\n                \"path\": \"./tests/samples/doc_id_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_passwd_pair|RAW\",\n                \"variable\": \"PW\",\n                \"variable_start\": 22,\n                \"variable_end\": 24,\n                \"value\": \"iPp10@GRq\",\n                \"value_start\": 25,\n                \"value_end\": 34,\n                \"entropy\": 3.16993\n            }\n        ]\n    },\n    {\n        \"rule\": \"ID_PASSWD_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.882,\n        \"line_data_list\": [\n            {\n                \"line\": \"ID / PW : db / iPp14@GRq\",\n                \"line_num\": 15,\n                \"path\": \"./tests/samples/doc_id_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_passwd_pair|RAW\",\n                \"variable\": \"ID / PW\",\n                \"variable_start\": 1,\n                \"variable_end\": 8,\n                \"value\": \"iPp14@GRq\",\n                \"value_start\": 16,\n                \"value_end\": 25,\n                \"entropy\": 3.16993\n            }\n        ]\n    },\n    {\n        \"rule\": \"ID_PASSWD_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.017,\n        \"line_data_list\": [\n            {\n                \"line\": \"\\uc544\\uc774\\ub514/PW:master/iPp16@GRq\",\n                \"line_num\": 17,\n                \"path\": \"./tests/samples/doc_id_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_passwd_pair|RAW\",\n                \"variable\": \"\\uc544\\uc774\\ub514/PW\",\n                \"variable_start\": 0,\n                \"variable_end\": 6,\n                \"value\": \"iPp16@GRq\",\n                \"value_start\": 14,\n                \"value_end\": 23,\n                \"entropy\": 3.16993\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_CREDENTIALS\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.001,\n        \"line_data_list\": [\n            {\n                \"line\": \"\\uc544\\uc774\\ub514/PW:master/iPp16@GRq\",\n                \"line_num\": 17,\n                \"path\": \"./tests/samples/doc_id_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_passwd_pair|RAW\",\n                \"variable\": \"PW\",\n                \"variable_start\": 4,\n                \"variable_end\": 6,\n                \"value\": \"master/iPp16@GRq\",\n                \"value_start\": 7,\n                \"value_end\": 23,\n                \"entropy\": 4.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"ID_PASSWD_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.103,\n        \"line_data_list\": [\n            {\n                \"line\": \"\\uacc4\\uc815/PW:master/iPp17@GRq\",\n                \"line_num\": 18,\n                \"path\": \"./tests/samples/doc_id_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_passwd_pair|RAW\",\n                \"variable\": \"\\uacc4\\uc815/PW\",\n                \"variable_start\": 0,\n                \"variable_end\": 5,\n                \"value\": \"iPp17@GRq\",\n                \"value_start\": 13,\n                \"value_end\": 22,\n                \"entropy\": 3.16993\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_CREDENTIALS\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.001,\n        \"line_data_list\": [\n            {\n                \"line\": \"\\uacc4\\uc815/PW:master/iPp17@GRq\",\n                \"line_num\": 18,\n                \"path\": \"./tests/samples/doc_id_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_passwd_pair|RAW\",\n                \"variable\": \"PW\",\n                \"variable_start\": 3,\n                \"variable_end\": 5,\n                \"value\": \"master/iPp17@GRq\",\n                \"value_start\": 6,\n                \"value_end\": 22,\n                \"entropy\": 4.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"ID_PASSWD_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.596,\n        \"line_data_list\": [\n            {\n                \"line\": \"ID/PW(master/iPp18@GRq)\",\n                \"line_num\": 19,\n                \"path\": \"./tests/samples/doc_id_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_passwd_pair|RAW\",\n                \"variable\": \"ID/PW\",\n                \"variable_start\": 0,\n                \"variable_end\": 5,\n                \"value\": \"iPp18@GRq\",\n                \"value_start\": 13,\n                \"value_end\": 22,\n                \"entropy\": 3.16993\n            }\n        ]\n    },\n    {\n        \"rule\": \"ID_PASSWD_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.992,\n        \"line_data_list\": [\n            {\n                \"line\": \"98.76.54.32 id/pw:master/iPp19@GRq\",\n                \"line_num\": 20,\n                \"path\": \"./tests/samples/doc_id_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_passwd_pair|RAW\",\n                \"variable\": \"id/pw\",\n                \"variable_start\": 12,\n                \"variable_end\": 17,\n                \"value\": \"iPp19@GRq\",\n                \"value_start\": 25,\n                \"value_end\": 34,\n                \"entropy\": 3.16993\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_CREDENTIALS\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.16,\n        \"line_data_list\": [\n            {\n                \"line\": \"98.76.54.32 id/pw:master/iPp19@GRq\",\n                \"line_num\": 20,\n                \"path\": \"./tests/samples/doc_id_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_passwd_pair|RAW\",\n                \"variable\": \"pw\",\n                \"variable_start\": 15,\n                \"variable_end\": 17,\n                \"value\": \"master/iPp19@GRq\",\n                \"value_start\": 18,\n                \"value_end\": 34,\n                \"entropy\": 4.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_CREDENTIALS\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.02,\n        \"line_data_list\": [\n            {\n                \"line\": \"id/pass:master,iPp20@GRq\",\n                \"line_num\": 21,\n                \"path\": \"./tests/samples/doc_id_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_passwd_pair|RAW\",\n                \"variable\": \"pass\",\n                \"variable_start\": 3,\n                \"variable_end\": 7,\n                \"value\": \"master,iPp20@GRq\",\n                \"value_start\": 8,\n                \"value_end\": 24,\n                \"entropy\": 4.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"ID_PASSWD_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.837,\n        \"line_data_list\": [\n            {\n                \"line\": \"ID/PWD:master/iPp21@GRq\",\n                \"line_num\": 22,\n                \"path\": \"./tests/samples/doc_id_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_passwd_pair|RAW\",\n                \"variable\": \"ID/PWD\",\n                \"variable_start\": 0,\n                \"variable_end\": 6,\n                \"value\": \"iPp21@GRq\",\n                \"value_start\": 14,\n                \"value_end\": 23,\n                \"entropy\": 3.16993\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_CREDENTIALS\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.008,\n        \"line_data_list\": [\n            {\n                \"line\": \"ID/PWD:master/iPp21@GRq\",\n                \"line_num\": 22,\n                \"path\": \"./tests/samples/doc_id_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_passwd_pair|RAW\",\n                \"variable\": \"PWD\",\n                \"variable_start\": 3,\n                \"variable_end\": 6,\n                \"value\": \"master/iPp21@GRq\",\n                \"value_start\": 7,\n                \"value_end\": 23,\n                \"entropy\": 4.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"ID_PASSWD_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.583,\n        \"line_data_list\": [\n            {\n                \"line\": \"user/pwd:master/iPp22@GRq\",\n                \"line_num\": 23,\n                \"path\": \"./tests/samples/doc_id_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_passwd_pair|RAW\",\n                \"variable\": \"user/pwd\",\n                \"variable_start\": 0,\n                \"variable_end\": 8,\n                \"value\": \"iPp22@GRq\",\n                \"value_start\": 16,\n                \"value_end\": 25,\n                \"entropy\": 2.9477\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_CREDENTIALS\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.019,\n        \"line_data_list\": [\n            {\n                \"line\": \"user/pwd:master/iPp22@GRq\",\n                \"line_num\": 23,\n                \"path\": \"./tests/samples/doc_id_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_passwd_pair|RAW\",\n                \"variable\": \"pwd\",\n                \"variable_start\": 5,\n                \"variable_end\": 8,\n                \"value\": \"master/iPp22@GRq\",\n                \"value_start\": 9,\n                \"value_end\": 25,\n                \"entropy\": 3.875\n            }\n        ]\n    },\n    {\n        \"rule\": \"ID_PASSWD_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.758,\n        \"line_data_list\": [\n            {\n                \"line\": \"id pw master // iPp23@GRq\",\n                \"line_num\": 24,\n                \"path\": \"./tests/samples/doc_id_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_passwd_pair|RAW\",\n                \"variable\": \"id pw\",\n                \"variable_start\": 0,\n                \"variable_end\": 5,\n                \"value\": \"iPp23@GRq\",\n                \"value_start\": 16,\n                \"value_end\": 25,\n                \"entropy\": 3.16993\n            }\n        ]\n    },\n    {\n        \"rule\": \"ID_PASSWD_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.951,\n        \"line_data_list\": [\n            {\n                \"line\": \"User/Password master/iPp24@GRq\",\n                \"line_num\": 25,\n                \"path\": \"./tests/samples/doc_id_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_passwd_pair|RAW\",\n                \"variable\": \"User/Password\",\n                \"variable_start\": 0,\n                \"variable_end\": 13,\n                \"value\": \"iPp24@GRq\",\n                \"value_start\": 21,\n                \"value_end\": 30,\n                \"entropy\": 3.16993\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_CREDENTIALS\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.02,\n        \"line_data_list\": [\n            {\n                \"line\": \"user/pass:master/iPp25@GRq\",\n                \"line_num\": 26,\n                \"path\": \"./tests/samples/doc_id_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_passwd_pair|RAW\",\n                \"variable\": \"pass\",\n                \"variable_start\": 5,\n                \"variable_end\": 9,\n                \"value\": \"master/iPp25@GRq\",\n                \"value_start\": 10,\n                \"value_end\": 26,\n                \"entropy\": 4.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"ID_PASSWD_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.94,\n        \"line_data_list\": [\n            {\n                \"line\": \"id/pwd master/iPp26@GRq\",\n                \"line_num\": 27,\n                \"path\": \"./tests/samples/doc_id_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_passwd_pair|RAW\",\n                \"variable\": \"id/pwd\",\n                \"variable_start\": 0,\n                \"variable_end\": 6,\n                \"value\": \"iPp26@GRq\",\n                \"value_start\": 14,\n                \"value_end\": 23,\n                \"entropy\": 3.16993\n            }\n        ]\n    },\n    {\n        \"rule\": \"ID_PASSWD_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.994,\n        \"line_data_list\": [\n            {\n                \"line\": \"ID/Password=master/iPp27@GRq\",\n                \"line_num\": 28,\n                \"path\": \"./tests/samples/doc_id_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_passwd_pair|RAW\",\n                \"variable\": \"ID/Password\",\n                \"variable_start\": 0,\n                \"variable_end\": 11,\n                \"value\": \"iPp27@GRq\",\n                \"value_start\": 19,\n                \"value_end\": 28,\n                \"entropy\": 3.16993\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_CREDENTIALS\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.284,\n        \"line_data_list\": [\n            {\n                \"line\": \"ID/Password=master/iPp27@GRq\",\n                \"line_num\": 28,\n                \"path\": \"./tests/samples/doc_id_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_passwd_pair|RAW\",\n                \"variable\": \"Password\",\n                \"variable_start\": 3,\n                \"variable_end\": 11,\n                \"value\": \"master/iPp27@GRq\",\n                \"value_start\": 12,\n                \"value_end\": 28,\n                \"entropy\": 4.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"ID_PASSWD_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.91,\n        \"line_data_list\": [\n            {\n                \"line\": \"ID/PW:master/iPp28@GRq\",\n                \"line_num\": 29,\n                \"path\": \"./tests/samples/doc_id_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_passwd_pair|RAW\",\n                \"variable\": \"ID/PW\",\n                \"variable_start\": 0,\n                \"variable_end\": 5,\n                \"value\": \"iPp28@GRq\",\n                \"value_start\": 13,\n                \"value_end\": 22,\n                \"entropy\": 3.16993\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_CREDENTIALS\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.011,\n        \"line_data_list\": [\n            {\n                \"line\": \"ID/PW:master/iPp28@GRq\",\n                \"line_num\": 29,\n                \"path\": \"./tests/samples/doc_id_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_passwd_pair|RAW\",\n                \"variable\": \"PW\",\n                \"variable_start\": 3,\n                \"variable_end\": 5,\n                \"value\": \"master/iPp28@GRq\",\n                \"value_start\": 6,\n                \"value_end\": 22,\n                \"entropy\": 4.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"ID_PASSWD_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.957,\n        \"line_data_list\": [\n            {\n                \"line\": \"ID/PW->master/iPp29@GRq\",\n                \"line_num\": 30,\n                \"path\": \"./tests/samples/doc_id_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_passwd_pair|RAW\",\n                \"variable\": \"ID/PW\",\n                \"variable_start\": 0,\n                \"variable_end\": 5,\n                \"value\": \"iPp29@GRq\",\n                \"value_start\": 14,\n                \"value_end\": 23,\n                \"entropy\": 3.16993\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_CREDENTIALS\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"Default ID/PW are wpasp/wpasp.\",\n                \"line_num\": 32,\n                \"path\": \"./tests/samples/doc_id_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_passwd_pair|RAW\",\n                \"variable\": \"PW\",\n                \"variable_start\": 11,\n                \"variable_end\": 13,\n                \"value\": \"wpasp/wpasp.\",\n                \"value_start\": 18,\n                \"value_end\": 30,\n                \"entropy\": 2.4183\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_CREDENTIALS\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.001,\n        \"line_data_list\": [\n            {\n                \"line\": \"password: <PostgreSQL PW>\",\n                \"line_num\": 35,\n                \"path\": \"./tests/samples/doc_id_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_id_passwd_pair|RAW\",\n                \"variable\": \"password\",\n                \"variable_start\": 0,\n                \"variable_end\": 8,\n                \"value\": \"<PostgreSQL\",\n                \"value_start\": 10,\n                \"value_end\": 21,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"IP_ID_PASSWORD_TRIPLE\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.038,\n        \"line_data_list\": [\n            {\n                \"line\": \"192.168.0.1 master/iP30dT_o\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/doc_ip_id_password_triple\",\n                \"info\": \"FILE:./tests/samples/doc_ip_id_password_triple|RAW\",\n                \"variable\": null,\n                \"variable_start\": -1,\n                \"variable_end\": -1,\n                \"value\": \"iP30dT_o\",\n                \"value_start\": 19,\n                \"value_end\": 27,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"IP_ID_PASSWORD_TRIPLE\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.022,\n        \"line_data_list\": [\n            {\n                \"line\": \"192.168.0.1 master iP31dT_o    # many FP\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/doc_ip_id_password_triple\",\n                \"info\": \"FILE:./tests/samples/doc_ip_id_password_triple|RAW\",\n                \"variable\": null,\n                \"variable_start\": -1,\n                \"variable_end\": -1,\n                \"value\": \"iP31dT_o\",\n                \"value_start\": 19,\n                \"value_end\": 27,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"IP_ID_PASSWORD_TRIPLE\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.026,\n        \"line_data_list\": [\n            {\n                \"line\": \"192.168.0.1,master/iP32dT_o\",\n                \"line_num\": 3,\n                \"path\": \"./tests/samples/doc_ip_id_password_triple\",\n                \"info\": \"FILE:./tests/samples/doc_ip_id_password_triple|RAW\",\n                \"variable\": null,\n                \"variable_start\": -1,\n                \"variable_end\": -1,\n                \"value\": \"iP32dT_o\",\n                \"value_start\": 19,\n                \"value_end\": 27,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"IP_ID_PASSWORD_TRIPLE\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.017,\n        \"line_data_list\": [\n            {\n                \"line\": \"IP ID PW 192.168.0.1 master iP33dT_o\",\n                \"line_num\": 4,\n                \"path\": \"./tests/samples/doc_ip_id_password_triple\",\n                \"info\": \"FILE:./tests/samples/doc_ip_id_password_triple|RAW\",\n                \"variable\": \"IP ID PW\",\n                \"variable_start\": 0,\n                \"variable_end\": 8,\n                \"value\": \"iP33dT_o\",\n                \"value_start\": 28,\n                \"value_end\": 36,\n                \"entropy\": 2.75\n            }\n        ]\n    },\n    {\n        \"rule\": \"IP_ID_PASSWORD_TRIPLE\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.025,\n        \"line_data_list\": [\n            {\n                \"line\": \"IP/ID/PW 192.168.0.1/master/iP34dT_o\",\n                \"line_num\": 5,\n                \"path\": \"./tests/samples/doc_ip_id_password_triple\",\n                \"info\": \"FILE:./tests/samples/doc_ip_id_password_triple|RAW\",\n                \"variable\": \"IP/ID/PW\",\n                \"variable_start\": 0,\n                \"variable_end\": 8,\n                \"value\": \"iP34dT_o\",\n                \"value_start\": 28,\n                \"value_end\": 36,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_CREDENTIALS\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.906,\n        \"line_data_list\": [\n            {\n                \"line\": \"Password:Prl23Db#@\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/doc_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_passwd_pair|RAW\",\n                \"variable\": \"Password\",\n                \"variable_start\": 0,\n                \"variable_end\": 8,\n                \"value\": \"Prl23Db#@\",\n                \"value_start\": 9,\n                \"value_end\": 18,\n                \"entropy\": 3.16993\n            }\n        ]\n    },\n    {\n        \"rule\": \"PASSWD_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.906,\n        \"line_data_list\": [\n            {\n                \"line\": \"Password:Prl23Db#@\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/doc_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_passwd_pair|RAW\",\n                \"variable\": \"Password\",\n                \"variable_start\": 0,\n                \"variable_end\": 8,\n                \"value\": \"Prl23Db#@\",\n                \"value_start\": 9,\n                \"value_end\": 18,\n                \"entropy\": 3.16993\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_CREDENTIALS\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.002,\n        \"line_data_list\": [\n            {\n                \"line\": \"\\ube44\\ubc00\\ubc88\\ud638:Prl23Db#@\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/doc_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_passwd_pair|RAW\",\n                \"variable\": \"\\ube44\\ubc00\\ubc88\\ud638\",\n                \"variable_start\": 0,\n                \"variable_end\": 4,\n                \"value\": \"Prl23Db#@\",\n                \"value_start\": 5,\n                \"value_end\": 14,\n                \"entropy\": 3.16993\n            }\n        ]\n    },\n    {\n        \"rule\": \"PASSWD_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.002,\n        \"line_data_list\": [\n            {\n                \"line\": \"\\ube44\\ubc00\\ubc88\\ud638:Prl23Db#@\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/doc_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_passwd_pair|RAW\",\n                \"variable\": \"\\ube44\\ubc00\\ubc88\\ud638\",\n                \"variable_start\": 0,\n                \"variable_end\": 4,\n                \"value\": \"Prl23Db#@\",\n                \"value_start\": 5,\n                \"value_end\": 14,\n                \"entropy\": 3.16993\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_CREDENTIALS\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.933,\n        \"line_data_list\": [\n            {\n                \"line\": \"pw:Prl23Db#@\",\n                \"line_num\": 3,\n                \"path\": \"./tests/samples/doc_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_passwd_pair|RAW\",\n                \"variable\": \"pw\",\n                \"variable_start\": 0,\n                \"variable_end\": 2,\n                \"value\": \"Prl23Db#@\",\n                \"value_start\": 3,\n                \"value_end\": 12,\n                \"entropy\": 3.16993\n            }\n        ]\n    },\n    {\n        \"rule\": \"PASSWD_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.933,\n        \"line_data_list\": [\n            {\n                \"line\": \"pw:Prl23Db#@\",\n                \"line_num\": 3,\n                \"path\": \"./tests/samples/doc_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_passwd_pair|RAW\",\n                \"variable\": \"pw\",\n                \"variable_start\": 0,\n                \"variable_end\": 2,\n                \"value\": \"Prl23Db#@\",\n                \"value_start\": 3,\n                \"value_end\": 12,\n                \"entropy\": 3.16993\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_CREDENTIALS\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.893,\n        \"line_data_list\": [\n            {\n                \"line\": \"Password=Prl23Db#@\",\n                \"line_num\": 4,\n                \"path\": \"./tests/samples/doc_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_passwd_pair|RAW\",\n                \"variable\": \"Password\",\n                \"variable_start\": 0,\n                \"variable_end\": 8,\n                \"value\": \"Prl23Db#@\",\n                \"value_start\": 9,\n                \"value_end\": 18,\n                \"entropy\": 3.16993\n            }\n        ]\n    },\n    {\n        \"rule\": \"PASSWD_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.893,\n        \"line_data_list\": [\n            {\n                \"line\": \"Password=Prl23Db#@\",\n                \"line_num\": 4,\n                \"path\": \"./tests/samples/doc_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_passwd_pair|RAW\",\n                \"variable\": \"Password\",\n                \"variable_start\": 0,\n                \"variable_end\": 8,\n                \"value\": \"Prl23Db#@\",\n                \"value_start\": 9,\n                \"value_end\": 18,\n                \"entropy\": 3.16993\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_CREDENTIALS\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.965,\n        \"line_data_list\": [\n            {\n                \"line\": \"pwd:Prl23Db#@\",\n                \"line_num\": 5,\n                \"path\": \"./tests/samples/doc_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_passwd_pair|RAW\",\n                \"variable\": \"pwd\",\n                \"variable_start\": 0,\n                \"variable_end\": 3,\n                \"value\": \"Prl23Db#@\",\n                \"value_start\": 4,\n                \"value_end\": 13,\n                \"entropy\": 3.16993\n            }\n        ]\n    },\n    {\n        \"rule\": \"PASSWD_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.965,\n        \"line_data_list\": [\n            {\n                \"line\": \"pwd:Prl23Db#@\",\n                \"line_num\": 5,\n                \"path\": \"./tests/samples/doc_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_passwd_pair|RAW\",\n                \"variable\": \"pwd\",\n                \"variable_start\": 0,\n                \"variable_end\": 3,\n                \"value\": \"Prl23Db#@\",\n                \"value_start\": 4,\n                \"value_end\": 13,\n                \"entropy\": 3.16993\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_CREDENTIALS\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.036,\n        \"line_data_list\": [\n            {\n                \"line\": \"\\ube44\\ubc88:Prl23Db#@\",\n                \"line_num\": 6,\n                \"path\": \"./tests/samples/doc_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_passwd_pair|RAW\",\n                \"variable\": \"\\ube44\\ubc88\",\n                \"variable_start\": 0,\n                \"variable_end\": 2,\n                \"value\": \"Prl23Db#@\",\n                \"value_start\": 3,\n                \"value_end\": 12,\n                \"entropy\": 3.16993\n            }\n        ]\n    },\n    {\n        \"rule\": \"PASSWD_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.036,\n        \"line_data_list\": [\n            {\n                \"line\": \"\\ube44\\ubc88:Prl23Db#@\",\n                \"line_num\": 6,\n                \"path\": \"./tests/samples/doc_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_passwd_pair|RAW\",\n                \"variable\": \"\\ube44\\ubc88\",\n                \"variable_start\": 0,\n                \"variable_end\": 2,\n                \"value\": \"Prl23Db#@\",\n                \"value_start\": 3,\n                \"value_end\": 12,\n                \"entropy\": 3.16993\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_CREDENTIALS\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.985,\n        \"line_data_list\": [\n            {\n                \"line\": \"ANY_password=Prl23Db#@\",\n                \"line_num\": 8,\n                \"path\": \"./tests/samples/doc_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_passwd_pair|RAW\",\n                \"variable\": \"ANY_password\",\n                \"variable_start\": 0,\n                \"variable_end\": 12,\n                \"value\": \"Prl23Db#@\",\n                \"value_start\": 13,\n                \"value_end\": 22,\n                \"entropy\": 3.16993\n            }\n        ]\n    },\n    {\n        \"rule\": \"PASSWD_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.985,\n        \"line_data_list\": [\n            {\n                \"line\": \"ANY_password=Prl23Db#@\",\n                \"line_num\": 8,\n                \"path\": \"./tests/samples/doc_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_passwd_pair|RAW\",\n                \"variable\": \"password\",\n                \"variable_start\": 4,\n                \"variable_end\": 12,\n                \"value\": \"Prl23Db#@\",\n                \"value_start\": 13,\n                \"value_end\": 22,\n                \"entropy\": 3.16993\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_CREDENTIALS\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.909,\n        \"line_data_list\": [\n            {\n                \"line\": \"pass:Prl23Db#@\",\n                \"line_num\": 10,\n                \"path\": \"./tests/samples/doc_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_passwd_pair|RAW\",\n                \"variable\": \"pass\",\n                \"variable_start\": 0,\n                \"variable_end\": 4,\n                \"value\": \"Prl23Db#@\",\n                \"value_start\": 5,\n                \"value_end\": 14,\n                \"entropy\": 3.16993\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_CREDENTIALS\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.997,\n        \"line_data_list\": [\n            {\n                \"line\": \"ANY-password=Prl23Db#@\",\n                \"line_num\": 11,\n                \"path\": \"./tests/samples/doc_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_passwd_pair|RAW\",\n                \"variable\": \"password\",\n                \"variable_start\": 4,\n                \"variable_end\": 12,\n                \"value\": \"Prl23Db#@\",\n                \"value_start\": 13,\n                \"value_end\": 22,\n                \"entropy\": 3.16993\n            }\n        ]\n    },\n    {\n        \"rule\": \"PASSWD_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.997,\n        \"line_data_list\": [\n            {\n                \"line\": \"ANY-password=Prl23Db#@\",\n                \"line_num\": 11,\n                \"path\": \"./tests/samples/doc_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_passwd_pair|RAW\",\n                \"variable\": \"password\",\n                \"variable_start\": 4,\n                \"variable_end\": 12,\n                \"value\": \"Prl23Db#@\",\n                \"value_start\": 13,\n                \"value_end\": 22,\n                \"entropy\": 3.16993\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_CREDENTIALS\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.036,\n        \"line_data_list\": [\n            {\n                \"line\": \"\\uc554\\ud638:Prl23Db#@\",\n                \"line_num\": 12,\n                \"path\": \"./tests/samples/doc_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_passwd_pair|RAW\",\n                \"variable\": \"\\uc554\\ud638\",\n                \"variable_start\": 0,\n                \"variable_end\": 2,\n                \"value\": \"Prl23Db#@\",\n                \"value_start\": 3,\n                \"value_end\": 12,\n                \"entropy\": 3.16993\n            }\n        ]\n    },\n    {\n        \"rule\": \"PASSWD_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.036,\n        \"line_data_list\": [\n            {\n                \"line\": \"\\uc554\\ud638:Prl23Db#@\",\n                \"line_num\": 12,\n                \"path\": \"./tests/samples/doc_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_passwd_pair|RAW\",\n                \"variable\": \"\\uc554\\ud638\",\n                \"variable_start\": 0,\n                \"variable_end\": 2,\n                \"value\": \"Prl23Db#@\",\n                \"value_start\": 3,\n                \"value_end\": 12,\n                \"entropy\": 3.16993\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_CREDENTIALS\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.998,\n        \"line_data_list\": [\n            {\n                \"line\": \"master@98.76.54.32 password:Prl23Db#@\",\n                \"line_num\": 14,\n                \"path\": \"./tests/samples/doc_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_passwd_pair|RAW\",\n                \"variable\": \"password\",\n                \"variable_start\": 19,\n                \"variable_end\": 27,\n                \"value\": \"Prl23Db#@\",\n                \"value_start\": 28,\n                \"value_end\": 37,\n                \"entropy\": 3.16993\n            }\n        ]\n    },\n    {\n        \"rule\": \"PASSWD_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.998,\n        \"line_data_list\": [\n            {\n                \"line\": \"master@98.76.54.32 password:Prl23Db#@\",\n                \"line_num\": 14,\n                \"path\": \"./tests/samples/doc_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_passwd_pair|RAW\",\n                \"variable\": \"password\",\n                \"variable_start\": 19,\n                \"variable_end\": 27,\n                \"value\": \"Prl23Db#@\",\n                \"value_start\": 28,\n                \"value_end\": 37,\n                \"entropy\": 3.16993\n            }\n        ]\n    },\n    {\n        \"rule\": \"CMD Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.998,\n        \"line_data_list\": [\n            {\n                \"line\": \"--Password Prl23Db#@\",\n                \"line_num\": 15,\n                \"path\": \"./tests/samples/doc_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_passwd_pair|RAW\",\n                \"variable\": \"Password\",\n                \"variable_start\": 2,\n                \"variable_end\": 10,\n                \"value\": \"Prl23Db#@\",\n                \"value_start\": 11,\n                \"value_end\": 20,\n                \"entropy\": 3.16993\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_CREDENTIALS\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.994,\n        \"line_data_list\": [\n            {\n                \"line\": \"password is Prl23Db#@\",\n                \"line_num\": 16,\n                \"path\": \"./tests/samples/doc_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_passwd_pair|RAW\",\n                \"variable\": \"password\",\n                \"variable_start\": 0,\n                \"variable_end\": 8,\n                \"value\": \"Prl23Db#@\",\n                \"value_start\": 12,\n                \"value_end\": 21,\n                \"entropy\": 3.16993\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_CREDENTIALS\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.927,\n        \"line_data_list\": [\n            {\n                \"line\": \"ANY_PW:Prl23Db#@\",\n                \"line_num\": 17,\n                \"path\": \"./tests/samples/doc_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_passwd_pair|RAW\",\n                \"variable\": \"ANY_PW\",\n                \"variable_start\": 0,\n                \"variable_end\": 6,\n                \"value\": \"Prl23Db#@\",\n                \"value_start\": 7,\n                \"value_end\": 16,\n                \"entropy\": 3.16993\n            }\n        ]\n    },\n    {\n        \"rule\": \"PASSWD_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.927,\n        \"line_data_list\": [\n            {\n                \"line\": \"ANY_PW:Prl23Db#@\",\n                \"line_num\": 17,\n                \"path\": \"./tests/samples/doc_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_passwd_pair|RAW\",\n                \"variable\": \"PW\",\n                \"variable_start\": 4,\n                \"variable_end\": 6,\n                \"value\": \"Prl23Db#@\",\n                \"value_start\": 7,\n                \"value_end\": 16,\n                \"entropy\": 3.16993\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_CREDENTIALS\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.998,\n        \"line_data_list\": [\n            {\n                \"line\": \"default password:Prl23Db#@\",\n                \"line_num\": 18,\n                \"path\": \"./tests/samples/doc_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_passwd_pair|RAW\",\n                \"variable\": \"password\",\n                \"variable_start\": 8,\n                \"variable_end\": 16,\n                \"value\": \"Prl23Db#@\",\n                \"value_start\": 17,\n                \"value_end\": 26,\n                \"entropy\": 3.16993\n            }\n        ]\n    },\n    {\n        \"rule\": \"ID_PAIR_PASSWD_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.998,\n        \"line_data_list\": [\n            {\n                \"line\": \"default password:Prl23Db#@\",\n                \"line_num\": 18,\n                \"path\": \"./tests/samples/doc_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_passwd_pair|RAW\",\n                \"variable\": \"password\",\n                \"variable_start\": 8,\n                \"variable_end\": 16,\n                \"value\": \"Prl23Db#@\",\n                \"value_start\": 17,\n                \"value_end\": 26,\n                \"entropy\": 3.16993\n            },\n            {\n                \"line\": \"default password:Prl23Db#@\",\n                \"line_num\": 18,\n                \"path\": \"./tests/samples/doc_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_passwd_pair|RAW\",\n                \"variable\": \"default\",\n                \"variable_start\": 0,\n                \"variable_end\": 7,\n                \"value\": \"password:Prl23Db#@\",\n                \"value_start\": 8,\n                \"value_end\": 26,\n                \"entropy\": 3.9477\n            }\n        ]\n    },\n    {\n        \"rule\": \"PASSWD_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.998,\n        \"line_data_list\": [\n            {\n                \"line\": \"default password:Prl23Db#@\",\n                \"line_num\": 18,\n                \"path\": \"./tests/samples/doc_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_passwd_pair|RAW\",\n                \"variable\": \"password\",\n                \"variable_start\": 8,\n                \"variable_end\": 16,\n                \"value\": \"Prl23Db#@\",\n                \"value_start\": 17,\n                \"value_end\": 26,\n                \"entropy\": 3.16993\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_CREDENTIALS\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.002,\n        \"line_data_list\": [\n            {\n                \"line\": \"\\ud328\\uc2a4\\uc6cc\\ub4dc:Prl23Db#@\",\n                \"line_num\": 20,\n                \"path\": \"./tests/samples/doc_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_passwd_pair|RAW\",\n                \"variable\": \"\\ud328\\uc2a4\\uc6cc\\ub4dc\",\n                \"variable_start\": 0,\n                \"variable_end\": 4,\n                \"value\": \"Prl23Db#@\",\n                \"value_start\": 5,\n                \"value_end\": 14,\n                \"entropy\": 3.16993\n            }\n        ]\n    },\n    {\n        \"rule\": \"PASSWD_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.002,\n        \"line_data_list\": [\n            {\n                \"line\": \"\\ud328\\uc2a4\\uc6cc\\ub4dc:Prl23Db#@\",\n                \"line_num\": 20,\n                \"path\": \"./tests/samples/doc_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_passwd_pair|RAW\",\n                \"variable\": \"\\ud328\\uc2a4\\uc6cc\\ub4dc\",\n                \"variable_start\": 0,\n                \"variable_end\": 4,\n                \"value\": \"Prl23Db#@\",\n                \"value_start\": 5,\n                \"value_end\": 14,\n                \"entropy\": 3.16993\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_CREDENTIALS\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.998,\n        \"line_data_list\": [\n            {\n                \"line\": \"\\\"password\\\":\\\"Prl23Db#@\\\"\",\n                \"line_num\": 21,\n                \"path\": \"./tests/samples/doc_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_passwd_pair|RAW\",\n                \"variable\": \"password\",\n                \"variable_start\": 1,\n                \"variable_end\": 9,\n                \"value\": \"Prl23Db#@\",\n                \"value_start\": 12,\n                \"value_end\": 21,\n                \"entropy\": 3.16993\n            }\n        ]\n    },\n    {\n        \"rule\": \"PASSWD_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.998,\n        \"line_data_list\": [\n            {\n                \"line\": \"\\\"password\\\":\\\"Prl23Db#@\\\"\",\n                \"line_num\": 21,\n                \"path\": \"./tests/samples/doc_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_passwd_pair|RAW\",\n                \"variable\": \"password\",\n                \"variable_start\": 1,\n                \"variable_end\": 9,\n                \"value\": \"Prl23Db#@\",\n                \"value_start\": 12,\n                \"value_end\": 21,\n                \"entropy\": 3.16993\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_CREDENTIALS\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.942,\n        \"line_data_list\": [\n            {\n                \"line\": \"Passwd:Prl23Db#@ Prl23Db#@\",\n                \"line_num\": 23,\n                \"path\": \"./tests/samples/doc_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_passwd_pair|RAW\",\n                \"variable\": \"Passwd\",\n                \"variable_start\": 0,\n                \"variable_end\": 6,\n                \"value\": \"Prl23Db#@\",\n                \"value_start\": 7,\n                \"value_end\": 16,\n                \"entropy\": 3.16993\n            }\n        ]\n    },\n    {\n        \"rule\": \"PASSWD_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.942,\n        \"line_data_list\": [\n            {\n                \"line\": \"Passwd:Prl23Db#@ Prl23Db#@\",\n                \"line_num\": 23,\n                \"path\": \"./tests/samples/doc_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_passwd_pair|RAW\",\n                \"variable\": \"Passwd\",\n                \"variable_start\": 0,\n                \"variable_end\": 6,\n                \"value\": \"Prl23Db#@\",\n                \"value_start\": 7,\n                \"value_end\": 16,\n                \"entropy\": 3.16993\n            }\n        ]\n    },\n    {\n        \"rule\": \"PASSWD_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.049,\n        \"line_data_list\": [\n            {\n                \"line\": \"PW:Prl23Db#@,password:Prl23Db#@\",\n                \"line_num\": 24,\n                \"path\": \"./tests/samples/doc_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_passwd_pair|RAW\",\n                \"variable\": \"PW\",\n                \"variable_start\": 0,\n                \"variable_end\": 2,\n                \"value\": \"Prl23Db#@\",\n                \"value_start\": 3,\n                \"value_end\": 12,\n                \"entropy\": 3.16993\n            }\n        ]\n    },\n    {\n        \"rule\": \"PASSWD_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.99,\n        \"line_data_list\": [\n            {\n                \"line\": \"PW:Prl23Db#@,password:Prl23Db#@\",\n                \"line_num\": 24,\n                \"path\": \"./tests/samples/doc_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_passwd_pair|RAW\",\n                \"variable\": \"password\",\n                \"variable_start\": 13,\n                \"variable_end\": 21,\n                \"value\": \"Prl23Db#@\",\n                \"value_start\": 22,\n                \"value_end\": 31,\n                \"entropy\": 3.16993\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_CREDENTIALS\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.003,\n        \"line_data_list\": [\n            {\n                \"line\": \"PW:Prl23Db#@,password:Prl23Db#@\",\n                \"line_num\": 24,\n                \"path\": \"./tests/samples/doc_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_passwd_pair|RAW\",\n                \"variable\": \"PW\",\n                \"variable_start\": 0,\n                \"variable_end\": 2,\n                \"value\": \"Prl23Db#@,password:Prl23Db#@\",\n                \"value_start\": 3,\n                \"value_end\": 31,\n                \"entropy\": 3.99468\n            }\n        ]\n    },\n    {\n        \"rule\": \"PASSWD_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.996,\n        \"line_data_list\": [\n            {\n                \"line\": \"password:Prl23Db#@,\\ube44\\ubc88:Prl23Db#@\",\n                \"line_num\": 25,\n                \"path\": \"./tests/samples/doc_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_passwd_pair|RAW\",\n                \"variable\": \"password\",\n                \"variable_start\": 0,\n                \"variable_end\": 8,\n                \"value\": \"Prl23Db#@\",\n                \"value_start\": 9,\n                \"value_end\": 18,\n                \"entropy\": 3.16993\n            }\n        ]\n    },\n    {\n        \"rule\": \"PASSWD_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.18,\n        \"line_data_list\": [\n            {\n                \"line\": \"password:Prl23Db#@,\\ube44\\ubc88:Prl23Db#@\",\n                \"line_num\": 25,\n                \"path\": \"./tests/samples/doc_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_passwd_pair|RAW\",\n                \"variable\": \"\\ube44\\ubc88\",\n                \"variable_start\": 19,\n                \"variable_end\": 21,\n                \"value\": \"Prl23Db#@\",\n                \"value_start\": 22,\n                \"value_end\": 31,\n                \"entropy\": 3.16993\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_CREDENTIALS\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.984,\n        \"line_data_list\": [\n            {\n                \"line\": \"password:Prl23Db#@,\\ube44\\ubc88:Prl23Db#@\",\n                \"line_num\": 25,\n                \"path\": \"./tests/samples/doc_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_passwd_pair|RAW\",\n                \"variable\": \"password\",\n                \"variable_start\": 0,\n                \"variable_end\": 8,\n                \"value\": \"Prl23Db#@,\\ube44\\ubc88:Prl23Db#@\",\n                \"value_start\": 9,\n                \"value_end\": 31,\n                \"entropy\": 3.64125\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_CREDENTIALS\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.92,\n        \"line_data_list\": [\n            {\n                \"line\": \"passwd=Prl23Db#@\",\n                \"line_num\": 26,\n                \"path\": \"./tests/samples/doc_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_passwd_pair|RAW\",\n                \"variable\": \"passwd\",\n                \"variable_start\": 0,\n                \"variable_end\": 6,\n                \"value\": \"Prl23Db#@\",\n                \"value_start\": 7,\n                \"value_end\": 16,\n                \"entropy\": 3.16993\n            }\n        ]\n    },\n    {\n        \"rule\": \"PASSWD_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.92,\n        \"line_data_list\": [\n            {\n                \"line\": \"passwd=Prl23Db#@\",\n                \"line_num\": 26,\n                \"path\": \"./tests/samples/doc_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_passwd_pair|RAW\",\n                \"variable\": \"passwd\",\n                \"variable_start\": 0,\n                \"variable_end\": 6,\n                \"value\": \"Prl23Db#@\",\n                \"value_start\": 7,\n                \"value_end\": 16,\n                \"entropy\": 3.16993\n            }\n        ]\n    },\n    {\n        \"rule\": \"PASSWD_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.978,\n        \"line_data_list\": [\n            {\n                \"line\": \"paasword:Prl23Db#@\",\n                \"line_num\": 29,\n                \"path\": \"./tests/samples/doc_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_passwd_pair|RAW\",\n                \"variable\": \"paasword\",\n                \"variable_start\": 0,\n                \"variable_end\": 8,\n                \"value\": \"Prl23Db#@\",\n                \"value_start\": 9,\n                \"value_end\": 18,\n                \"entropy\": 3.16993\n            }\n        ]\n    },\n    {\n        \"rule\": \"PASSWD_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.991,\n        \"line_data_list\": [\n            {\n                \"line\": \"password:Prl23Db#@, paasword:Prl23Db#@\",\n                \"line_num\": 30,\n                \"path\": \"./tests/samples/doc_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_passwd_pair|RAW\",\n                \"variable\": \"password\",\n                \"variable_start\": 0,\n                \"variable_end\": 8,\n                \"value\": \"Prl23Db#@\",\n                \"value_start\": 9,\n                \"value_end\": 18,\n                \"entropy\": 3.16993\n            }\n        ]\n    },\n    {\n        \"rule\": \"PASSWD_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.945,\n        \"line_data_list\": [\n            {\n                \"line\": \"password:Prl23Db#@, paasword:Prl23Db#@\",\n                \"line_num\": 30,\n                \"path\": \"./tests/samples/doc_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_passwd_pair|RAW\",\n                \"variable\": \"paasword\",\n                \"variable_start\": 20,\n                \"variable_end\": 28,\n                \"value\": \"Prl23Db#@\",\n                \"value_start\": 29,\n                \"value_end\": 38,\n                \"entropy\": 3.16993\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_CREDENTIALS\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.993,\n        \"line_data_list\": [\n            {\n                \"line\": \"password:Prl23Db#@, paasword:Prl23Db#@\",\n                \"line_num\": 30,\n                \"path\": \"./tests/samples/doc_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_passwd_pair|RAW\",\n                \"variable\": \"password\",\n                \"variable_start\": 0,\n                \"variable_end\": 8,\n                \"value\": \"Prl23Db#@,\",\n                \"value_start\": 9,\n                \"value_end\": 19,\n                \"entropy\": 3.32193\n            }\n        ]\n    },\n    {\n        \"rule\": \"PASSWD_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.95,\n        \"line_data_list\": [\n            {\n                \"line\": \"password:Prl23Db#@,ANYPassword:Prl23Db#@\",\n                \"line_num\": 31,\n                \"path\": \"./tests/samples/doc_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_passwd_pair|RAW\",\n                \"variable\": \"password\",\n                \"variable_start\": 0,\n                \"variable_end\": 8,\n                \"value\": \"Prl23Db#@\",\n                \"value_start\": 9,\n                \"value_end\": 18,\n                \"entropy\": 3.16993\n            }\n        ]\n    },\n    {\n        \"rule\": \"PASSWD_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.974,\n        \"line_data_list\": [\n            {\n                \"line\": \"password:Prl23Db#@,ANYPassword:Prl23Db#@\",\n                \"line_num\": 31,\n                \"path\": \"./tests/samples/doc_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_passwd_pair|RAW\",\n                \"variable\": \"Password\",\n                \"variable_start\": 22,\n                \"variable_end\": 30,\n                \"value\": \"Prl23Db#@\",\n                \"value_start\": 31,\n                \"value_end\": 40,\n                \"entropy\": 3.16993\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_CREDENTIALS\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.057,\n        \"line_data_list\": [\n            {\n                \"line\": \"password:Prl23Db#@,ANYPassword:Prl23Db#@\",\n                \"line_num\": 31,\n                \"path\": \"./tests/samples/doc_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_passwd_pair|RAW\",\n                \"variable\": \"password\",\n                \"variable_start\": 0,\n                \"variable_end\": 8,\n                \"value\": \"Prl23Db#@,ANYPassword:Prl23Db#@\",\n                \"value_start\": 9,\n                \"value_end\": 40,\n                \"entropy\": 4.1313\n            }\n        ]\n    },\n    {\n        \"rule\": \"PASSWD_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.889,\n        \"line_data_list\": [\n            {\n                \"line\": \"Password:Prl23Db#@,pwd=Prl23Db#@\",\n                \"line_num\": 32,\n                \"path\": \"./tests/samples/doc_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_passwd_pair|RAW\",\n                \"variable\": \"Password\",\n                \"variable_start\": 0,\n                \"variable_end\": 8,\n                \"value\": \"Prl23Db#@\",\n                \"value_start\": 9,\n                \"value_end\": 18,\n                \"entropy\": 3.16993\n            }\n        ]\n    },\n    {\n        \"rule\": \"PASSWD_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.642,\n        \"line_data_list\": [\n            {\n                \"line\": \"Password:Prl23Db#@,pwd=Prl23Db#@\",\n                \"line_num\": 32,\n                \"path\": \"./tests/samples/doc_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_passwd_pair|RAW\",\n                \"variable\": \"pwd\",\n                \"variable_start\": 19,\n                \"variable_end\": 22,\n                \"value\": \"Prl23Db#@\",\n                \"value_start\": 23,\n                \"value_end\": 32,\n                \"entropy\": 3.16993\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_CREDENTIALS\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.881,\n        \"line_data_list\": [\n            {\n                \"line\": \"Password:Prl23Db#@,pwd=Prl23Db#@\",\n                \"line_num\": 32,\n                \"path\": \"./tests/samples/doc_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_passwd_pair|RAW\",\n                \"variable\": \"Password\",\n                \"variable_start\": 0,\n                \"variable_end\": 8,\n                \"value\": \"Prl23Db#@,pwd=Prl23Db#@\",\n                \"value_start\": 9,\n                \"value_end\": 32,\n                \"entropy\": 3.74095\n            }\n        ]\n    },\n    {\n        \"rule\": \"CMD Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"-password \\\"Prl23Db#@\\\"\",\n                \"line_num\": 33,\n                \"path\": \"./tests/samples/doc_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_passwd_pair|RAW\",\n                \"variable\": \"password\",\n                \"variable_start\": 1,\n                \"variable_end\": 9,\n                \"value\": \"Prl23Db#@\",\n                \"value_start\": 11,\n                \"value_end\": 20,\n                \"entropy\": 3.16993\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_CREDENTIALS\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.981,\n        \"line_data_list\": [\n            {\n                \"line\": \"ANY_password:Prl23Db#@\",\n                \"line_num\": 34,\n                \"path\": \"./tests/samples/doc_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_passwd_pair|RAW\",\n                \"variable\": \"ANY_password\",\n                \"variable_start\": 0,\n                \"variable_end\": 12,\n                \"value\": \"Prl23Db#@\",\n                \"value_start\": 13,\n                \"value_end\": 22,\n                \"entropy\": 3.16993\n            }\n        ]\n    },\n    {\n        \"rule\": \"PASSWD_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.981,\n        \"line_data_list\": [\n            {\n                \"line\": \"ANY_password:Prl23Db#@\",\n                \"line_num\": 34,\n                \"path\": \"./tests/samples/doc_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_passwd_pair|RAW\",\n                \"variable\": \"password\",\n                \"variable_start\": 4,\n                \"variable_end\": 12,\n                \"value\": \"Prl23Db#@\",\n                \"value_start\": 13,\n                \"value_end\": 22,\n                \"entropy\": 3.16993\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_CREDENTIALS\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.999,\n        \"line_data_list\": [\n            {\n                \"line\": \"new password is Prl23Db#@\",\n                \"line_num\": 36,\n                \"path\": \"./tests/samples/doc_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_passwd_pair|RAW\",\n                \"variable\": \"password\",\n                \"variable_start\": 4,\n                \"variable_end\": 12,\n                \"value\": \"Prl23Db#@\",\n                \"value_start\": 16,\n                \"value_end\": 25,\n                \"entropy\": 3.16993\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_CREDENTIALS\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.989,\n        \"line_data_list\": [\n            {\n                \"line\": \"--password=Prl23Db#@\",\n                \"line_num\": 37,\n                \"path\": \"./tests/samples/doc_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_passwd_pair|RAW\",\n                \"variable\": \"password\",\n                \"variable_start\": 2,\n                \"variable_end\": 10,\n                \"value\": \"Prl23Db#@\",\n                \"value_start\": 11,\n                \"value_end\": 20,\n                \"entropy\": 3.16993\n            }\n        ]\n    },\n    {\n        \"rule\": \"PASSWD_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.989,\n        \"line_data_list\": [\n            {\n                \"line\": \"--password=Prl23Db#@\",\n                \"line_num\": 37,\n                \"path\": \"./tests/samples/doc_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_passwd_pair|RAW\",\n                \"variable\": \"password\",\n                \"variable_start\": 2,\n                \"variable_end\": 10,\n                \"value\": \"Prl23Db#@\",\n                \"value_start\": 11,\n                \"value_end\": 20,\n                \"entropy\": 3.16993\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_CREDENTIALS\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.993,\n        \"line_data_list\": [\n            {\n                \"line\": \"root/Prl23Db#@,root password:Prl23Db#@\",\n                \"line_num\": 38,\n                \"path\": \"./tests/samples/doc_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_passwd_pair|RAW\",\n                \"variable\": \"password\",\n                \"variable_start\": 20,\n                \"variable_end\": 28,\n                \"value\": \"Prl23Db#@\",\n                \"value_start\": 29,\n                \"value_end\": 38,\n                \"entropy\": 3.16993\n            }\n        ]\n    },\n    {\n        \"rule\": \"ID_PAIR_PASSWD_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.993,\n        \"line_data_list\": [\n            {\n                \"line\": \"root/Prl23Db#@,root password:Prl23Db#@\",\n                \"line_num\": 38,\n                \"path\": \"./tests/samples/doc_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_passwd_pair|RAW\",\n                \"variable\": \"password\",\n                \"variable_start\": 20,\n                \"variable_end\": 28,\n                \"value\": \"Prl23Db#@\",\n                \"value_start\": 29,\n                \"value_end\": 38,\n                \"entropy\": 3.16993\n            },\n            {\n                \"line\": \"root/Prl23Db#@,root password:Prl23Db#@\",\n                \"line_num\": 38,\n                \"path\": \"./tests/samples/doc_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_passwd_pair|RAW\",\n                \"variable\": \"root\",\n                \"variable_start\": 15,\n                \"variable_end\": 19,\n                \"value\": \"password:Prl23Db#@\",\n                \"value_start\": 20,\n                \"value_end\": 38,\n                \"entropy\": 3.9477\n            }\n        ]\n    },\n    {\n        \"rule\": \"PASSWD_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.993,\n        \"line_data_list\": [\n            {\n                \"line\": \"root/Prl23Db#@,root password:Prl23Db#@\",\n                \"line_num\": 38,\n                \"path\": \"./tests/samples/doc_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_passwd_pair|RAW\",\n                \"variable\": \"password\",\n                \"variable_start\": 20,\n                \"variable_end\": 28,\n                \"value\": \"Prl23Db#@\",\n                \"value_start\": 29,\n                \"value_end\": 38,\n                \"entropy\": 3.16993\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_CREDENTIALS\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.999,\n        \"line_data_list\": [\n            {\n                \"line\": \"Prl23Db#@ username:Prl23Db#@,Prl23Db#@ password:Prl23Db#@\",\n                \"line_num\": 40,\n                \"path\": \"./tests/samples/doc_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_passwd_pair|RAW\",\n                \"variable\": \"password\",\n                \"variable_start\": 39,\n                \"variable_end\": 47,\n                \"value\": \"Prl23Db#@\",\n                \"value_start\": 48,\n                \"value_end\": 57,\n                \"entropy\": 3.16993\n            }\n        ]\n    },\n    {\n        \"rule\": \"ID_PAIR_PASSWD_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.999,\n        \"line_data_list\": [\n            {\n                \"line\": \"Prl23Db#@ username:Prl23Db#@,Prl23Db#@ password:Prl23Db#@\",\n                \"line_num\": 40,\n                \"path\": \"./tests/samples/doc_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_passwd_pair|RAW\",\n                \"variable\": \"password\",\n                \"variable_start\": 39,\n                \"variable_end\": 47,\n                \"value\": \"Prl23Db#@\",\n                \"value_start\": 48,\n                \"value_end\": 57,\n                \"entropy\": 3.16993\n            },\n            {\n                \"line\": \"Prl23Db#@ username:Prl23Db#@,Prl23Db#@ password:Prl23Db#@\",\n                \"line_num\": 40,\n                \"path\": \"./tests/samples/doc_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_passwd_pair|RAW\",\n                \"variable\": \"username\",\n                \"variable_start\": 10,\n                \"variable_end\": 18,\n                \"value\": \"Prl23Db#@,Prl23Db#@\",\n                \"value_start\": 19,\n                \"value_end\": 38,\n                \"entropy\": 3.30056\n            }\n        ]\n    },\n    {\n        \"rule\": \"PASSWD_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.999,\n        \"line_data_list\": [\n            {\n                \"line\": \"Prl23Db#@ username:Prl23Db#@,Prl23Db#@ password:Prl23Db#@\",\n                \"line_num\": 40,\n                \"path\": \"./tests/samples/doc_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_passwd_pair|RAW\",\n                \"variable\": \"password\",\n                \"variable_start\": 39,\n                \"variable_end\": 47,\n                \"value\": \"Prl23Db#@\",\n                \"value_start\": 48,\n                \"value_end\": 57,\n                \"entropy\": 3.16993\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_CREDENTIALS\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.989,\n        \"line_data_list\": [\n            {\n                \"line\": \"Prl23Db#@:password:Prl23Db#@\",\n                \"line_num\": 41,\n                \"path\": \"./tests/samples/doc_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_passwd_pair|RAW\",\n                \"variable\": \"password\",\n                \"variable_start\": 10,\n                \"variable_end\": 18,\n                \"value\": \"Prl23Db#@\",\n                \"value_start\": 19,\n                \"value_end\": 28,\n                \"entropy\": 3.16993\n            }\n        ]\n    },\n    {\n        \"rule\": \"PASSWD_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.989,\n        \"line_data_list\": [\n            {\n                \"line\": \"Prl23Db#@:password:Prl23Db#@\",\n                \"line_num\": 41,\n                \"path\": \"./tests/samples/doc_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_passwd_pair|RAW\",\n                \"variable\": \"password\",\n                \"variable_start\": 10,\n                \"variable_end\": 18,\n                \"value\": \"Prl23Db#@\",\n                \"value_start\": 19,\n                \"value_end\": 28,\n                \"entropy\": 3.16993\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_CREDENTIALS\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.989,\n        \"line_data_list\": [\n            {\n                \"line\": \"ANYpassword=Prl23Db#@\",\n                \"line_num\": 45,\n                \"path\": \"./tests/samples/doc_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_passwd_pair|RAW\",\n                \"variable\": \"ANYpassword\",\n                \"variable_start\": 0,\n                \"variable_end\": 11,\n                \"value\": \"Prl23Db#@\",\n                \"value_start\": 12,\n                \"value_end\": 21,\n                \"entropy\": 3.16993\n            }\n        ]\n    },\n    {\n        \"rule\": \"PASSWD_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.989,\n        \"line_data_list\": [\n            {\n                \"line\": \"ANYpassword=Prl23Db#@\",\n                \"line_num\": 45,\n                \"path\": \"./tests/samples/doc_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_passwd_pair|RAW\",\n                \"variable\": \"password\",\n                \"variable_start\": 3,\n                \"variable_end\": 11,\n                \"value\": \"Prl23Db#@\",\n                \"value_start\": 12,\n                \"value_end\": 21,\n                \"entropy\": 3.16993\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_CREDENTIALS\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.978,\n        \"line_data_list\": [\n            {\n                \"line\": \"passwords:Prl23Db#@\",\n                \"line_num\": 46,\n                \"path\": \"./tests/samples/doc_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_passwd_pair|RAW\",\n                \"variable\": \"passwords\",\n                \"variable_start\": 0,\n                \"variable_end\": 9,\n                \"value\": \"Prl23Db#@\",\n                \"value_start\": 10,\n                \"value_end\": 19,\n                \"entropy\": 3.16993\n            }\n        ]\n    },\n    {\n        \"rule\": \"PASSWD_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.978,\n        \"line_data_list\": [\n            {\n                \"line\": \"passwords:Prl23Db#@\",\n                \"line_num\": 46,\n                \"path\": \"./tests/samples/doc_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_passwd_pair|RAW\",\n                \"variable\": \"passwords\",\n                \"variable_start\": 0,\n                \"variable_end\": 9,\n                \"value\": \"Prl23Db#@\",\n                \"value_start\": 10,\n                \"value_end\": 19,\n                \"entropy\": 3.16993\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_CREDENTIALS\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.991,\n        \"line_data_list\": [\n            {\n                \"line\": \"password\\uc124\\uc815\\uc740Prl23Db#@\",\n                \"line_num\": 47,\n                \"path\": \"./tests/samples/doc_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_passwd_pair|RAW\",\n                \"variable\": \"password\",\n                \"variable_start\": 0,\n                \"variable_end\": 8,\n                \"value\": \"Prl23Db#@\",\n                \"value_start\": 11,\n                \"value_end\": 20,\n                \"entropy\": 3.16993\n            }\n        ]\n    },\n    {\n        \"rule\": \"PASSWD_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.991,\n        \"line_data_list\": [\n            {\n                \"line\": \"password\\uc124\\uc815\\uc740Prl23Db#@\",\n                \"line_num\": 47,\n                \"path\": \"./tests/samples/doc_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_passwd_pair|RAW\",\n                \"variable\": \"password\",\n                \"variable_start\": 0,\n                \"variable_end\": 8,\n                \"value\": \"Prl23Db#@\",\n                \"value_start\": 11,\n                \"value_end\": 20,\n                \"entropy\": 3.16993\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_CREDENTIALS\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.965,\n        \"line_data_list\": [\n            {\n                \"line\": \"password=>Prl23Db#@\",\n                \"line_num\": 48,\n                \"path\": \"./tests/samples/doc_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_passwd_pair|RAW\",\n                \"variable\": \"password\",\n                \"variable_start\": 0,\n                \"variable_end\": 8,\n                \"value\": \"Prl23Db#@\",\n                \"value_start\": 10,\n                \"value_end\": 19,\n                \"entropy\": 3.16993\n            }\n        ]\n    },\n    {\n        \"rule\": \"PASSWD_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.965,\n        \"line_data_list\": [\n            {\n                \"line\": \"password=>Prl23Db#@\",\n                \"line_num\": 48,\n                \"path\": \"./tests/samples/doc_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_passwd_pair|RAW\",\n                \"variable\": \"password\",\n                \"variable_start\": 0,\n                \"variable_end\": 8,\n                \"value\": \"Prl23Db#@\",\n                \"value_start\": 10,\n                \"value_end\": 19,\n                \"entropy\": 3.16993\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_CREDENTIALS\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.059,\n        \"line_data_list\": [\n            {\n                \"line\": \"P/W:Prl23Db#@\",\n                \"line_num\": 50,\n                \"path\": \"./tests/samples/doc_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_passwd_pair|RAW\",\n                \"variable\": \"P/W\",\n                \"variable_start\": 0,\n                \"variable_end\": 3,\n                \"value\": \"Prl23Db#@\",\n                \"value_start\": 4,\n                \"value_end\": 13,\n                \"entropy\": 3.16993\n            }\n        ]\n    },\n    {\n        \"rule\": \"PASSWD_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.059,\n        \"line_data_list\": [\n            {\n                \"line\": \"P/W:Prl23Db#@\",\n                \"line_num\": 50,\n                \"path\": \"./tests/samples/doc_passwd_pair\",\n                \"info\": \"FILE:./tests/samples/doc_passwd_pair|RAW\",\n                \"variable\": \"P/W\",\n                \"variable_start\": 0,\n                \"variable_end\": 3,\n                \"value\": \"Prl23Db#@\",\n                \"value_start\": 4,\n                \"value_end\": 13,\n                \"entropy\": 3.16993\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_CREDENTIALS\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"ANY-Token:AIhq5Xyb1Gga9Q0\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/doc_secret_pair\",\n                \"info\": \"FILE:./tests/samples/doc_secret_pair|RAW\",\n                \"variable\": \"Token\",\n                \"variable_start\": 4,\n                \"variable_end\": 9,\n                \"value\": \"AIhq5Xyb1Gga9Q0\",\n                \"value_start\": 10,\n                \"value_end\": 25,\n                \"entropy\": 3.90689\n            }\n        ]\n    },\n    {\n        \"rule\": \"SECRET_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"ANY-Token:AIhq5Xyb1Gga9Q0\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/doc_secret_pair\",\n                \"info\": \"FILE:./tests/samples/doc_secret_pair|RAW\",\n                \"variable\": \"Token\",\n                \"variable_start\": 4,\n                \"variable_end\": 9,\n                \"value\": \"AIhq5Xyb1Gga9Q0\",\n                \"value_start\": 10,\n                \"value_end\": 25,\n                \"entropy\": 3.90689\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_CREDENTIALS\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"token:AIhq5Xyb1Gga9Q2\",\n                \"line_num\": 3,\n                \"path\": \"./tests/samples/doc_secret_pair\",\n                \"info\": \"FILE:./tests/samples/doc_secret_pair|RAW\",\n                \"variable\": \"token\",\n                \"variable_start\": 0,\n                \"variable_end\": 5,\n                \"value\": \"AIhq5Xyb1Gga9Q2\",\n                \"value_start\": 6,\n                \"value_end\": 21,\n                \"entropy\": 3.90689\n            }\n        ]\n    },\n    {\n        \"rule\": \"SECRET_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"token:AIhq5Xyb1Gga9Q2\",\n                \"line_num\": 3,\n                \"path\": \"./tests/samples/doc_secret_pair\",\n                \"info\": \"FILE:./tests/samples/doc_secret_pair|RAW\",\n                \"variable\": \"token\",\n                \"variable_start\": 0,\n                \"variable_end\": 5,\n                \"value\": \"AIhq5Xyb1Gga9Q2\",\n                \"value_start\": 6,\n                \"value_end\": 21,\n                \"entropy\": 3.90689\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_CREDENTIALS\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"SECRET KEY:AIhq5Xyb1Gga9Q3\",\n                \"line_num\": 4,\n                \"path\": \"./tests/samples/doc_secret_pair\",\n                \"info\": \"FILE:./tests/samples/doc_secret_pair|RAW\",\n                \"variable\": \"KEY\",\n                \"variable_start\": 7,\n                \"variable_end\": 10,\n                \"value\": \"AIhq5Xyb1Gga9Q3\",\n                \"value_start\": 11,\n                \"value_end\": 26,\n                \"entropy\": 3.90689\n            }\n        ]\n    },\n    {\n        \"rule\": \"SECRET_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"SECRET KEY:AIhq5Xyb1Gga9Q3\",\n                \"line_num\": 4,\n                \"path\": \"./tests/samples/doc_secret_pair\",\n                \"info\": \"FILE:./tests/samples/doc_secret_pair|RAW\",\n                \"variable\": \"KEY\",\n                \"variable_start\": 7,\n                \"variable_end\": 10,\n                \"value\": \"AIhq5Xyb1Gga9Q3\",\n                \"value_start\": 11,\n                \"value_end\": 26,\n                \"entropy\": 3.90689\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_CREDENTIALS\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"secret=AIhq5Xyb1Gga9Q4\",\n                \"line_num\": 5,\n                \"path\": \"./tests/samples/doc_secret_pair\",\n                \"info\": \"FILE:./tests/samples/doc_secret_pair|RAW\",\n                \"variable\": \"secret\",\n                \"variable_start\": 0,\n                \"variable_end\": 6,\n                \"value\": \"AIhq5Xyb1Gga9Q4\",\n                \"value_start\": 7,\n                \"value_end\": 22,\n                \"entropy\": 3.90689\n            }\n        ]\n    },\n    {\n        \"rule\": \"SECRET_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"secret=AIhq5Xyb1Gga9Q4\",\n                \"line_num\": 5,\n                \"path\": \"./tests/samples/doc_secret_pair\",\n                \"info\": \"FILE:./tests/samples/doc_secret_pair|RAW\",\n                \"variable\": \"secret\",\n                \"variable_start\": 0,\n                \"variable_end\": 6,\n                \"value\": \"AIhq5Xyb1Gga9Q4\",\n                \"value_start\": 7,\n                \"value_end\": 22,\n                \"entropy\": 3.90689\n            }\n        ]\n    },\n    {\n        \"rule\": \"CMD Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"--token AIhq5Xyb1Gga9Q5\",\n                \"line_num\": 6,\n                \"path\": \"./tests/samples/doc_secret_pair\",\n                \"info\": \"FILE:./tests/samples/doc_secret_pair|RAW\",\n                \"variable\": \"token\",\n                \"variable_start\": 2,\n                \"variable_end\": 7,\n                \"value\": \"AIhq5Xyb1Gga9Q5\",\n                \"value_start\": 8,\n                \"value_end\": 23,\n                \"entropy\": 3.77356\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_CREDENTIALS\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"secret:AIhq5Xyb1Gga9Q6\",\n                \"line_num\": 7,\n                \"path\": \"./tests/samples/doc_secret_pair\",\n                \"info\": \"FILE:./tests/samples/doc_secret_pair|RAW\",\n                \"variable\": \"secret\",\n                \"variable_start\": 0,\n                \"variable_end\": 6,\n                \"value\": \"AIhq5Xyb1Gga9Q6\",\n                \"value_start\": 7,\n                \"value_end\": 22,\n                \"entropy\": 3.90689\n            }\n        ]\n    },\n    {\n        \"rule\": \"SECRET_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"secret:AIhq5Xyb1Gga9Q6\",\n                \"line_num\": 7,\n                \"path\": \"./tests/samples/doc_secret_pair\",\n                \"info\": \"FILE:./tests/samples/doc_secret_pair|RAW\",\n                \"variable\": \"secret\",\n                \"variable_start\": 0,\n                \"variable_end\": 6,\n                \"value\": \"AIhq5Xyb1Gga9Q6\",\n                \"value_start\": 7,\n                \"value_end\": 22,\n                \"entropy\": 3.90689\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_CREDENTIALS\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"ANY_token=AIhq5Xyb1Gga9Q7\",\n                \"line_num\": 8,\n                \"path\": \"./tests/samples/doc_secret_pair\",\n                \"info\": \"FILE:./tests/samples/doc_secret_pair|RAW\",\n                \"variable\": \"ANY_token\",\n                \"variable_start\": 0,\n                \"variable_end\": 9,\n                \"value\": \"AIhq5Xyb1Gga9Q7\",\n                \"value_start\": 10,\n                \"value_end\": 25,\n                \"entropy\": 3.90689\n            }\n        ]\n    },\n    {\n        \"rule\": \"SECRET_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"ANY_token=AIhq5Xyb1Gga9Q7\",\n                \"line_num\": 8,\n                \"path\": \"./tests/samples/doc_secret_pair\",\n                \"info\": \"FILE:./tests/samples/doc_secret_pair|RAW\",\n                \"variable\": \"token\",\n                \"variable_start\": 4,\n                \"variable_end\": 9,\n                \"value\": \"AIhq5Xyb1Gga9Q7\",\n                \"value_start\": 10,\n                \"value_end\": 25,\n                \"entropy\": 3.90689\n            }\n        ]\n    },\n    {\n        \"rule\": \"CMD Secret\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"-secret AIhq5Xyb1Gga9Q10\",\n                \"line_num\": 11,\n                \"path\": \"./tests/samples/doc_secret_pair\",\n                \"info\": \"FILE:./tests/samples/doc_secret_pair|RAW\",\n                \"variable\": \"secret\",\n                \"variable_start\": 1,\n                \"variable_end\": 7,\n                \"value\": \"AIhq5Xyb1Gga9Q10\",\n                \"value_start\": 8,\n                \"value_end\": 24,\n                \"entropy\": 3.875\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_CREDENTIALS\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"ANY.secret=AIhq5Xyb1Gga9Q19\",\n                \"line_num\": 20,\n                \"path\": \"./tests/samples/doc_secret_pair\",\n                \"info\": \"FILE:./tests/samples/doc_secret_pair|RAW\",\n                \"variable\": \"secret\",\n                \"variable_start\": 4,\n                \"variable_end\": 10,\n                \"value\": \"AIhq5Xyb1Gga9Q19\",\n                \"value_start\": 11,\n                \"value_end\": 27,\n                \"entropy\": 3.75\n            }\n        ]\n    },\n    {\n        \"rule\": \"SECRET_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"ANY.secret=AIhq5Xyb1Gga9Q19\",\n                \"line_num\": 20,\n                \"path\": \"./tests/samples/doc_secret_pair\",\n                \"info\": \"FILE:./tests/samples/doc_secret_pair|RAW\",\n                \"variable\": \"secret\",\n                \"variable_start\": 4,\n                \"variable_end\": 10,\n                \"value\": \"AIhq5Xyb1Gga9Q19\",\n                \"value_start\": 11,\n                \"value_end\": 27,\n                \"entropy\": 3.75\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_CREDENTIALS\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"--secret=AIhq5Xyb1Gga9Q21\",\n                \"line_num\": 22,\n                \"path\": \"./tests/samples/doc_secret_pair\",\n                \"info\": \"FILE:./tests/samples/doc_secret_pair|RAW\",\n                \"variable\": \"secret\",\n                \"variable_start\": 2,\n                \"variable_end\": 8,\n                \"value\": \"AIhq5Xyb1Gga9Q21\",\n                \"value_start\": 9,\n                \"value_end\": 25,\n                \"entropy\": 3.875\n            }\n        ]\n    },\n    {\n        \"rule\": \"SECRET_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"--secret=AIhq5Xyb1Gga9Q21\",\n                \"line_num\": 22,\n                \"path\": \"./tests/samples/doc_secret_pair\",\n                \"info\": \"FILE:./tests/samples/doc_secret_pair|RAW\",\n                \"variable\": \"secret\",\n                \"variable_start\": 2,\n                \"variable_end\": 8,\n                \"value\": \"AIhq5Xyb1Gga9Q21\",\n                \"value_start\": 9,\n                \"value_end\": 25,\n                \"entropy\": 3.875\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_CREDENTIALS\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"ANY_secret:AIhq5Xyb1Gga9Q22\",\n                \"line_num\": 23,\n                \"path\": \"./tests/samples/doc_secret_pair\",\n                \"info\": \"FILE:./tests/samples/doc_secret_pair|RAW\",\n                \"variable\": \"ANY_secret\",\n                \"variable_start\": 0,\n                \"variable_end\": 10,\n                \"value\": \"AIhq5Xyb1Gga9Q22\",\n                \"value_start\": 11,\n                \"value_end\": 27,\n                \"entropy\": 3.875\n            }\n        ]\n    },\n    {\n        \"rule\": \"SECRET_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"ANY_secret:AIhq5Xyb1Gga9Q22\",\n                \"line_num\": 23,\n                \"path\": \"./tests/samples/doc_secret_pair\",\n                \"info\": \"FILE:./tests/samples/doc_secret_pair|RAW\",\n                \"variable\": \"secret\",\n                \"variable_start\": 4,\n                \"variable_end\": 10,\n                \"value\": \"AIhq5Xyb1Gga9Q22\",\n                \"value_start\": 11,\n                \"value_end\": 27,\n                \"entropy\": 3.875\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_CREDENTIALS\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"-Token:AIhq5Xyb1Gga9Q23\",\n                \"line_num\": 24,\n                \"path\": \"./tests/samples/doc_secret_pair\",\n                \"info\": \"FILE:./tests/samples/doc_secret_pair|RAW\",\n                \"variable\": \"Token\",\n                \"variable_start\": 1,\n                \"variable_end\": 6,\n                \"value\": \"AIhq5Xyb1Gga9Q23\",\n                \"value_start\": 7,\n                \"value_end\": 23,\n                \"entropy\": 4.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"SECRET_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"-Token:AIhq5Xyb1Gga9Q23\",\n                \"line_num\": 24,\n                \"path\": \"./tests/samples/doc_secret_pair\",\n                \"info\": \"FILE:./tests/samples/doc_secret_pair|RAW\",\n                \"variable\": \"Token\",\n                \"variable_start\": 1,\n                \"variable_end\": 6,\n                \"value\": \"AIhq5Xyb1Gga9Q23\",\n                \"value_start\": 7,\n                \"value_end\": 23,\n                \"entropy\": 4.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_CREDENTIALS\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"API Secret:AIhq5Xyb1Gga9Q24\",\n                \"line_num\": 25,\n                \"path\": \"./tests/samples/doc_secret_pair\",\n                \"info\": \"FILE:./tests/samples/doc_secret_pair|RAW\",\n                \"variable\": \"Secret\",\n                \"variable_start\": 4,\n                \"variable_end\": 10,\n                \"value\": \"AIhq5Xyb1Gga9Q24\",\n                \"value_start\": 11,\n                \"value_end\": 27,\n                \"entropy\": 4.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"SECRET_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"API Secret:AIhq5Xyb1Gga9Q24\",\n                \"line_num\": 25,\n                \"path\": \"./tests/samples/doc_secret_pair\",\n                \"info\": \"FILE:./tests/samples/doc_secret_pair|RAW\",\n                \"variable\": \"Secret\",\n                \"variable_start\": 4,\n                \"variable_end\": 10,\n                \"value\": \"AIhq5Xyb1Gga9Q24\",\n                \"value_start\": 11,\n                \"value_end\": 27,\n                \"entropy\": 4.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_CREDENTIALS\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"access key:AIhq5Xyb1Gga9Q26\",\n                \"line_num\": 27,\n                \"path\": \"./tests/samples/doc_secret_pair\",\n                \"info\": \"FILE:./tests/samples/doc_secret_pair|RAW\",\n                \"variable\": \"key\",\n                \"variable_start\": 7,\n                \"variable_end\": 10,\n                \"value\": \"AIhq5Xyb1Gga9Q26\",\n                \"value_start\": 11,\n                \"value_end\": 27,\n                \"entropy\": 4.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"SECRET_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"access key:AIhq5Xyb1Gga9Q26\",\n                \"line_num\": 27,\n                \"path\": \"./tests/samples/doc_secret_pair\",\n                \"info\": \"FILE:./tests/samples/doc_secret_pair|RAW\",\n                \"variable\": \"key\",\n                \"variable_start\": 7,\n                \"variable_end\": 10,\n                \"value\": \"AIhq5Xyb1Gga9Q26\",\n                \"value_start\": 11,\n                \"value_end\": 27,\n                \"entropy\": 4.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_CREDENTIALS\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"Secret Key:AIhq5Xyb1Gga9Q27\",\n                \"line_num\": 28,\n                \"path\": \"./tests/samples/doc_secret_pair\",\n                \"info\": \"FILE:./tests/samples/doc_secret_pair|RAW\",\n                \"variable\": \"Key\",\n                \"variable_start\": 7,\n                \"variable_end\": 10,\n                \"value\": \"AIhq5Xyb1Gga9Q27\",\n                \"value_start\": 11,\n                \"value_end\": 27,\n                \"entropy\": 4.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"SECRET_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"Secret Key:AIhq5Xyb1Gga9Q27\",\n                \"line_num\": 28,\n                \"path\": \"./tests/samples/doc_secret_pair\",\n                \"info\": \"FILE:./tests/samples/doc_secret_pair|RAW\",\n                \"variable\": \"Key\",\n                \"variable_start\": 7,\n                \"variable_end\": 10,\n                \"value\": \"AIhq5Xyb1Gga9Q27\",\n                \"value_start\": 11,\n                \"value_end\": 27,\n                \"entropy\": 4.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_CREDENTIALS\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"ANY_key=AIhq5Xyb1Gga9Q29\",\n                \"line_num\": 30,\n                \"path\": \"./tests/samples/doc_secret_pair\",\n                \"info\": \"FILE:./tests/samples/doc_secret_pair|RAW\",\n                \"variable\": \"ANY_key\",\n                \"variable_start\": 0,\n                \"variable_end\": 7,\n                \"value\": \"AIhq5Xyb1Gga9Q29\",\n                \"value_start\": 8,\n                \"value_end\": 24,\n                \"entropy\": 3.875\n            }\n        ]\n    },\n    {\n        \"rule\": \"SECRET_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"ANY_key=AIhq5Xyb1Gga9Q29\",\n                \"line_num\": 30,\n                \"path\": \"./tests/samples/doc_secret_pair\",\n                \"info\": \"FILE:./tests/samples/doc_secret_pair|RAW\",\n                \"variable\": \"key\",\n                \"variable_start\": 4,\n                \"variable_end\": 7,\n                \"value\": \"AIhq5Xyb1Gga9Q29\",\n                \"value_start\": 8,\n                \"value_end\": 24,\n                \"entropy\": 3.875\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_CREDENTIALS\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"secret-ANYkey:AIhq5Xyb1Gga9Q30\",\n                \"line_num\": 31,\n                \"path\": \"./tests/samples/doc_secret_pair\",\n                \"info\": \"FILE:./tests/samples/doc_secret_pair|RAW\",\n                \"variable\": \"ANYkey\",\n                \"variable_start\": 7,\n                \"variable_end\": 13,\n                \"value\": \"AIhq5Xyb1Gga9Q30\",\n                \"value_start\": 14,\n                \"value_end\": 30,\n                \"entropy\": 4.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"SECRET_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"secret-ANYkey:AIhq5Xyb1Gga9Q30\",\n                \"line_num\": 31,\n                \"path\": \"./tests/samples/doc_secret_pair\",\n                \"info\": \"FILE:./tests/samples/doc_secret_pair|RAW\",\n                \"variable\": \"key\",\n                \"variable_start\": 10,\n                \"variable_end\": 13,\n                \"value\": \"AIhq5Xyb1Gga9Q30\",\n                \"value_start\": 14,\n                \"value_end\": 30,\n                \"entropy\": 4.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_CREDENTIALS\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"ANY_id=AIhq5Xyb1Gga9Q31 ANY_token=AIhq5Xyb1Gga9Q31\",\n                \"line_num\": 32,\n                \"path\": \"./tests/samples/doc_secret_pair\",\n                \"info\": \"FILE:./tests/samples/doc_secret_pair|RAW\",\n                \"variable\": \"ANY_token\",\n                \"variable_start\": 24,\n                \"variable_end\": 33,\n                \"value\": \"AIhq5Xyb1Gga9Q31\",\n                \"value_start\": 34,\n                \"value_end\": 50,\n                \"entropy\": 3.875\n            }\n        ]\n    },\n    {\n        \"rule\": \"SECRET_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"ANY_id=AIhq5Xyb1Gga9Q31 ANY_token=AIhq5Xyb1Gga9Q31\",\n                \"line_num\": 32,\n                \"path\": \"./tests/samples/doc_secret_pair\",\n                \"info\": \"FILE:./tests/samples/doc_secret_pair|RAW\",\n                \"variable\": \"token\",\n                \"variable_start\": 28,\n                \"variable_end\": 33,\n                \"value\": \"AIhq5Xyb1Gga9Q31\",\n                \"value_start\": 34,\n                \"value_end\": 50,\n                \"entropy\": 3.875\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_CREDENTIALS\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"access_token:AIhq5Xyb1Gga9Q33\",\n                \"line_num\": 34,\n                \"path\": \"./tests/samples/doc_secret_pair\",\n                \"info\": \"FILE:./tests/samples/doc_secret_pair|RAW\",\n                \"variable\": \"access_token\",\n                \"variable_start\": 0,\n                \"variable_end\": 12,\n                \"value\": \"AIhq5Xyb1Gga9Q33\",\n                \"value_start\": 13,\n                \"value_end\": 29,\n                \"entropy\": 3.875\n            }\n        ]\n    },\n    {\n        \"rule\": \"SECRET_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"access_token:AIhq5Xyb1Gga9Q33\",\n                \"line_num\": 34,\n                \"path\": \"./tests/samples/doc_secret_pair\",\n                \"info\": \"FILE:./tests/samples/doc_secret_pair|RAW\",\n                \"variable\": \"token\",\n                \"variable_start\": 7,\n                \"variable_end\": 12,\n                \"value\": \"AIhq5Xyb1Gga9Q33\",\n                \"value_start\": 13,\n                \"value_end\": 29,\n                \"entropy\": 3.875\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_CREDENTIALS\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"Authentication key:AIhq5Xyb1Gga9Q35\",\n                \"line_num\": 36,\n                \"path\": \"./tests/samples/doc_secret_pair\",\n                \"info\": \"FILE:./tests/samples/doc_secret_pair|RAW\",\n                \"variable\": \"key\",\n                \"variable_start\": 15,\n                \"variable_end\": 18,\n                \"value\": \"AIhq5Xyb1Gga9Q35\",\n                \"value_start\": 19,\n                \"value_end\": 35,\n                \"entropy\": 3.875\n            }\n        ]\n    },\n    {\n        \"rule\": \"SECRET_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"Authentication key:AIhq5Xyb1Gga9Q35\",\n                \"line_num\": 36,\n                \"path\": \"./tests/samples/doc_secret_pair\",\n                \"info\": \"FILE:./tests/samples/doc_secret_pair|RAW\",\n                \"variable\": \"key\",\n                \"variable_start\": 15,\n                \"variable_end\": 18,\n                \"value\": \"AIhq5Xyb1Gga9Q35\",\n                \"value_start\": 19,\n                \"value_end\": 35,\n                \"entropy\": 3.875\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_CREDENTIALS\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.004,\n        \"line_data_list\": [\n            {\n                \"line\": \"page.action?spaceKey=LOGIC&title=QUANTUM\\\",\",\n                \"line_num\": 39,\n                \"path\": \"./tests/samples/doc_secret_pair\",\n                \"info\": \"FILE:./tests/samples/doc_secret_pair|RAW\",\n                \"variable\": \"spaceKey\",\n                \"variable_start\": 12,\n                \"variable_end\": 20,\n                \"value\": \"LOGIC\",\n                \"value_start\": 21,\n                \"value_end\": 26,\n                \"entropy\": 2.32193\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_CREDENTIALS\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"\\\"key\\\":\\\"attached_file_0\\\"\",\n                \"line_num\": 41,\n                \"path\": \"./tests/samples/doc_secret_pair\",\n                \"info\": \"FILE:./tests/samples/doc_secret_pair|RAW\",\n                \"variable\": \"key\",\n                \"variable_start\": 1,\n                \"variable_end\": 4,\n                \"value\": \"attached_file_0\",\n                \"value_start\": 7,\n                \"value_end\": 22,\n                \"entropy\": 3.37356\n            }\n        ]\n    },\n    {\n        \"rule\": \"IP_ID_PASSWORD_TRIPLE\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.939,\n        \"line_data_list\": [\n            {\n                \"line\": \"98.76.54.32 (master/IhqSb1Gg)\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"FILE:./tests/samples/doc_various|RAW\",\n                \"variable\": null,\n                \"variable_start\": -1,\n                \"variable_end\": -1,\n                \"value\": \"IhqSb1Gg)\",\n                \"value_start\": 20,\n                \"value_end\": 29,\n                \"entropy\": 3.16993\n            }\n        ]\n    },\n    {\n        \"rule\": \"IP_ID_PASSWORD_TRIPLE\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.932,\n        \"line_data_list\": [\n            {\n                \"line\": \"98.76.54.32(master/IhqSb1Gg)\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"FILE:./tests/samples/doc_various|RAW\",\n                \"variable\": null,\n                \"variable_start\": -1,\n                \"variable_end\": -1,\n                \"value\": \"IhqSb1Gg)\",\n                \"value_start\": 19,\n                \"value_end\": 28,\n                \"entropy\": 3.16993\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_CREDENTIALS\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.993,\n        \"line_data_list\": [\n            {\n                \"line\": \"master@98.76.54.32(pw:IhqSb1Gg)\",\n                \"line_num\": 3,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"FILE:./tests/samples/doc_various|RAW\",\n                \"variable\": \"pw\",\n                \"variable_start\": 19,\n                \"variable_end\": 21,\n                \"value\": \"IhqSb1Gg\",\n                \"value_start\": 22,\n                \"value_end\": 30,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"PASSWD_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.993,\n        \"line_data_list\": [\n            {\n                \"line\": \"master@98.76.54.32(pw:IhqSb1Gg)\",\n                \"line_num\": 3,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"FILE:./tests/samples/doc_various|RAW\",\n                \"variable\": \"pw\",\n                \"variable_start\": 19,\n                \"variable_end\": 21,\n                \"value\": \"IhqSb1Gg\",\n                \"value_start\": 22,\n                \"value_end\": 30,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_CREDENTIALS\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.647,\n        \"line_data_list\": [\n            {\n                \"line\": \"ID:gildong.hong@example.com mailto:{1} PW:IhqSb1Gg\",\n                \"line_num\": 4,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"FILE:./tests/samples/doc_various|RAW\",\n                \"variable\": \"PW\",\n                \"variable_start\": 39,\n                \"variable_end\": 41,\n                \"value\": \"IhqSb1Gg\",\n                \"value_start\": 42,\n                \"value_end\": 50,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"ID_PAIR_PASSWD_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.647,\n        \"line_data_list\": [\n            {\n                \"line\": \"ID:gildong.hong@example.com mailto:{1} PW:IhqSb1Gg\",\n                \"line_num\": 4,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"FILE:./tests/samples/doc_various|RAW\",\n                \"variable\": \"PW\",\n                \"variable_start\": 39,\n                \"variable_end\": 41,\n                \"value\": \"IhqSb1Gg\",\n                \"value_start\": 42,\n                \"value_end\": 50,\n                \"entropy\": 3.0\n            },\n            {\n                \"line\": \"ID:gildong.hong@example.com mailto:{1} PW:IhqSb1Gg\",\n                \"line_num\": 4,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"FILE:./tests/samples/doc_various|RAW\",\n                \"variable\": \"ID\",\n                \"variable_start\": 0,\n                \"variable_end\": 2,\n                \"value\": \"gildong.hong@example.com\",\n                \"value_start\": 3,\n                \"value_end\": 27,\n                \"entropy\": 3.77206\n            }\n        ]\n    },\n    {\n        \"rule\": \"PASSWD_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.647,\n        \"line_data_list\": [\n            {\n                \"line\": \"ID:gildong.hong@example.com mailto:{1} PW:IhqSb1Gg\",\n                \"line_num\": 4,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"FILE:./tests/samples/doc_various|RAW\",\n                \"variable\": \"PW\",\n                \"variable_start\": 39,\n                \"variable_end\": 41,\n                \"value\": \"IhqSb1Gg\",\n                \"value_start\": 42,\n                \"value_end\": 50,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_CREDENTIALS\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.108,\n        \"line_data_list\": [\n            {\n                \"line\": \"Password:master/IhqSb1Gg\",\n                \"line_num\": 5,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"FILE:./tests/samples/doc_various|RAW\",\n                \"variable\": \"Password\",\n                \"variable_start\": 0,\n                \"variable_end\": 8,\n                \"value\": \"master/IhqSb1Gg\",\n                \"value_start\": 9,\n                \"value_end\": 24,\n                \"entropy\": 3.90689\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_CREDENTIALS\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.978,\n        \"line_data_list\": [\n            {\n                \"line\": \"ssh gildong.hong@98.76.54.32 mailto:{1} (PW:IhqSb1Gg)\",\n                \"line_num\": 6,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"FILE:./tests/samples/doc_various|RAW\",\n                \"variable\": \"PW\",\n                \"variable_start\": 41,\n                \"variable_end\": 43,\n                \"value\": \"IhqSb1Gg\",\n                \"value_start\": 44,\n                \"value_end\": 52,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"PASSWD_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.978,\n        \"line_data_list\": [\n            {\n                \"line\": \"ssh gildong.hong@98.76.54.32 mailto:{1} (PW:IhqSb1Gg)\",\n                \"line_num\": 6,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"FILE:./tests/samples/doc_various|RAW\",\n                \"variable\": \"PW\",\n                \"variable_start\": 41,\n                \"variable_end\": 43,\n                \"value\": \"IhqSb1Gg\",\n                \"value_start\": 44,\n                \"value_end\": 52,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_CREDENTIALS\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"ssh gildong.hong@98.76.54.32 mailto:{1} password:IhqSb1Gg\",\n                \"line_num\": 7,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"FILE:./tests/samples/doc_various|RAW\",\n                \"variable\": \"password\",\n                \"variable_start\": 40,\n                \"variable_end\": 48,\n                \"value\": \"IhqSb1Gg\",\n                \"value_start\": 49,\n                \"value_end\": 57,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"PASSWD_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"ssh gildong.hong@98.76.54.32 mailto:{1} password:IhqSb1Gg\",\n                \"line_num\": 7,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"FILE:./tests/samples/doc_various|RAW\",\n                \"variable\": \"password\",\n                \"variable_start\": 40,\n                \"variable_end\": 48,\n                \"value\": \"IhqSb1Gg\",\n                \"value_start\": 49,\n                \"value_end\": 57,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_CREDENTIALS\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"ssh -P IhqSb1Gg gildong.hong@98.76.54.32 mailto:{1} (password:IhqSb1Gg)\",\n                \"line_num\": 11,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"FILE:./tests/samples/doc_various|RAW\",\n                \"variable\": \"password\",\n                \"variable_start\": 53,\n                \"variable_end\": 61,\n                \"value\": \"IhqSb1Gg\",\n                \"value_start\": 62,\n                \"value_end\": 70,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"PASSWD_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"ssh -P IhqSb1Gg gildong.hong@98.76.54.32 mailto:{1} (password:IhqSb1Gg)\",\n                \"line_num\": 11,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"FILE:./tests/samples/doc_various|RAW\",\n                \"variable\": \"password\",\n                \"variable_start\": 53,\n                \"variable_end\": 61,\n                \"value\": \"IhqSb1Gg\",\n                \"value_start\": 62,\n                \"value_end\": 70,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_CREDENTIALS\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.136,\n        \"line_data_list\": [\n            {\n                \"line\": \"ID/Pass:xxxx:master/IhqSb1Gg,xxxx:master/IhqSb1Gg\",\n                \"line_num\": 13,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"FILE:./tests/samples/doc_various|RAW\",\n                \"variable\": \"Pass\",\n                \"variable_start\": 3,\n                \"variable_end\": 7,\n                \"value\": \"xxxx:master/IhqSb1Gg,xxxx:master/IhqSb1Gg\",\n                \"value_start\": 8,\n                \"value_end\": 49,\n                \"entropy\": 3.9917\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_CREDENTIALS\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.999,\n        \"line_data_list\": [\n            {\n                \"line\": \"gildong.hong@98.76.54.32 pwd:IhqSb1Gg\",\n                \"line_num\": 15,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"FILE:./tests/samples/doc_various|RAW\",\n                \"variable\": \"pwd\",\n                \"variable_start\": 25,\n                \"variable_end\": 28,\n                \"value\": \"IhqSb1Gg\",\n                \"value_start\": 29,\n                \"value_end\": 37,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"PASSWD_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.999,\n        \"line_data_list\": [\n            {\n                \"line\": \"gildong.hong@98.76.54.32 pwd:IhqSb1Gg\",\n                \"line_num\": 15,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"FILE:./tests/samples/doc_various|RAW\",\n                \"variable\": \"pwd\",\n                \"variable_start\": 25,\n                \"variable_end\": 28,\n                \"value\": \"IhqSb1Gg\",\n                \"value_start\": 29,\n                \"value_end\": 37,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_CREDENTIALS\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.054,\n        \"line_data_list\": [\n            {\n                \"line\": \"\\uacc4\\uc815:master(PW:IhqSb1Gg)\",\n                \"line_num\": 16,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"FILE:./tests/samples/doc_various|RAW\",\n                \"variable\": \"PW\",\n                \"variable_start\": 10,\n                \"variable_end\": 12,\n                \"value\": \"IhqSb1Gg\",\n                \"value_start\": 13,\n                \"value_end\": 21,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"ID_PAIR_PASSWD_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.054,\n        \"line_data_list\": [\n            {\n                \"line\": \"\\uacc4\\uc815:master(PW:IhqSb1Gg)\",\n                \"line_num\": 16,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"FILE:./tests/samples/doc_various|RAW\",\n                \"variable\": \"PW\",\n                \"variable_start\": 10,\n                \"variable_end\": 12,\n                \"value\": \"IhqSb1Gg\",\n                \"value_start\": 13,\n                \"value_end\": 21,\n                \"entropy\": 3.0\n            },\n            {\n                \"line\": \"\\uacc4\\uc815:master(PW:IhqSb1Gg)\",\n                \"line_num\": 16,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"FILE:./tests/samples/doc_various|RAW\",\n                \"variable\": \"\\uacc4\\uc815\",\n                \"variable_start\": 0,\n                \"variable_end\": 2,\n                \"value\": \"master(PW:IhqSb1Gg)\",\n                \"value_start\": 3,\n                \"value_end\": 22,\n                \"entropy\": 4.24793\n            }\n        ]\n    },\n    {\n        \"rule\": \"PASSWD_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.054,\n        \"line_data_list\": [\n            {\n                \"line\": \"\\uacc4\\uc815:master(PW:IhqSb1Gg)\",\n                \"line_num\": 16,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"FILE:./tests/samples/doc_various|RAW\",\n                \"variable\": \"PW\",\n                \"variable_start\": 10,\n                \"variable_end\": 12,\n                \"value\": \"IhqSb1Gg\",\n                \"value_start\": 13,\n                \"value_end\": 21,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_CREDENTIALS\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.987,\n        \"line_data_list\": [\n            {\n                \"line\": \"98.76.54.32(pw:IhqSb1Gg)\",\n                \"line_num\": 17,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"FILE:./tests/samples/doc_various|RAW\",\n                \"variable\": \"pw\",\n                \"variable_start\": 12,\n                \"variable_end\": 14,\n                \"value\": \"IhqSb1Gg\",\n                \"value_start\": 15,\n                \"value_end\": 23,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"PASSWD_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.987,\n        \"line_data_list\": [\n            {\n                \"line\": \"98.76.54.32(pw:IhqSb1Gg)\",\n                \"line_num\": 17,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"FILE:./tests/samples/doc_various|RAW\",\n                \"variable\": \"pw\",\n                \"variable_start\": 12,\n                \"variable_end\": 14,\n                \"value\": \"IhqSb1Gg\",\n                \"value_start\": 15,\n                \"value_end\": 23,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_CREDENTIALS\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.995,\n        \"line_data_list\": [\n            {\n                \"line\": \"98.76.54.32/pw:IhqSb1Gg\",\n                \"line_num\": 19,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"FILE:./tests/samples/doc_various|RAW\",\n                \"variable\": \"pw\",\n                \"variable_start\": 12,\n                \"variable_end\": 14,\n                \"value\": \"IhqSb1Gg\",\n                \"value_start\": 15,\n                \"value_end\": 23,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"PASSWD_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.995,\n        \"line_data_list\": [\n            {\n                \"line\": \"98.76.54.32/pw:IhqSb1Gg\",\n                \"line_num\": 19,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"FILE:./tests/samples/doc_various|RAW\",\n                \"variable\": \"pw\",\n                \"variable_start\": 12,\n                \"variable_end\": 14,\n                \"value\": \"IhqSb1Gg\",\n                \"value_start\": 15,\n                \"value_end\": 23,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_CREDENTIALS\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.975,\n        \"line_data_list\": [\n            {\n                \"line\": \"ID:gildong.hong@example.com mailto:{1}/pw:IhqSb1Gg\",\n                \"line_num\": 20,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"FILE:./tests/samples/doc_various|RAW\",\n                \"variable\": \"pw\",\n                \"variable_start\": 39,\n                \"variable_end\": 41,\n                \"value\": \"IhqSb1Gg\",\n                \"value_start\": 42,\n                \"value_end\": 50,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"ID_PAIR_PASSWD_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.975,\n        \"line_data_list\": [\n            {\n                \"line\": \"ID:gildong.hong@example.com mailto:{1}/pw:IhqSb1Gg\",\n                \"line_num\": 20,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"FILE:./tests/samples/doc_various|RAW\",\n                \"variable\": \"pw\",\n                \"variable_start\": 39,\n                \"variable_end\": 41,\n                \"value\": \"IhqSb1Gg\",\n                \"value_start\": 42,\n                \"value_end\": 50,\n                \"entropy\": 3.0\n            },\n            {\n                \"line\": \"ID:gildong.hong@example.com mailto:{1}/pw:IhqSb1Gg\",\n                \"line_num\": 20,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"FILE:./tests/samples/doc_various|RAW\",\n                \"variable\": \"ID\",\n                \"variable_start\": 0,\n                \"variable_end\": 2,\n                \"value\": \"gildong.hong@example.com\",\n                \"value_start\": 3,\n                \"value_end\": 27,\n                \"entropy\": 3.77206\n            }\n        ]\n    },\n    {\n        \"rule\": \"PASSWD_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.975,\n        \"line_data_list\": [\n            {\n                \"line\": \"ID:gildong.hong@example.com mailto:{1}/pw:IhqSb1Gg\",\n                \"line_num\": 20,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"FILE:./tests/samples/doc_various|RAW\",\n                \"variable\": \"pw\",\n                \"variable_start\": 39,\n                \"variable_end\": 41,\n                \"value\": \"IhqSb1Gg\",\n                \"value_start\": 42,\n                \"value_end\": 50,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_CREDENTIALS\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.689,\n        \"line_data_list\": [\n            {\n                \"line\": \"ID:gildong.hong@any.example.com mailto:{1} PWD:IhqSb1Gg\",\n                \"line_num\": 21,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"FILE:./tests/samples/doc_various|RAW\",\n                \"variable\": \"PWD\",\n                \"variable_start\": 43,\n                \"variable_end\": 46,\n                \"value\": \"IhqSb1Gg\",\n                \"value_start\": 47,\n                \"value_end\": 55,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"ID_PAIR_PASSWD_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.689,\n        \"line_data_list\": [\n            {\n                \"line\": \"ID:gildong.hong@any.example.com mailto:{1} PWD:IhqSb1Gg\",\n                \"line_num\": 21,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"FILE:./tests/samples/doc_various|RAW\",\n                \"variable\": \"PWD\",\n                \"variable_start\": 43,\n                \"variable_end\": 46,\n                \"value\": \"IhqSb1Gg\",\n                \"value_start\": 47,\n                \"value_end\": 55,\n                \"entropy\": 3.0\n            },\n            {\n                \"line\": \"ID:gildong.hong@any.example.com mailto:{1} PWD:IhqSb1Gg\",\n                \"line_num\": 21,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"FILE:./tests/samples/doc_various|RAW\",\n                \"variable\": \"ID\",\n                \"variable_start\": 0,\n                \"variable_end\": 2,\n                \"value\": \"gildong.hong@any.example.com\",\n                \"value_start\": 3,\n                \"value_end\": 31,\n                \"entropy\": 3.84237\n            }\n        ]\n    },\n    {\n        \"rule\": \"PASSWD_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.689,\n        \"line_data_list\": [\n            {\n                \"line\": \"ID:gildong.hong@any.example.com mailto:{1} PWD:IhqSb1Gg\",\n                \"line_num\": 21,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"FILE:./tests/samples/doc_various|RAW\",\n                \"variable\": \"PWD\",\n                \"variable_start\": 43,\n                \"variable_end\": 46,\n                \"value\": \"IhqSb1Gg\",\n                \"value_start\": 47,\n                \"value_end\": 55,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_CREDENTIALS\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.999,\n        \"line_data_list\": [\n            {\n                \"line\": \"sftp gildong.hong@98.76.54.32 mailto:{1} (pw:IhqSb1Gg)\",\n                \"line_num\": 22,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"FILE:./tests/samples/doc_various|RAW\",\n                \"variable\": \"pw\",\n                \"variable_start\": 42,\n                \"variable_end\": 44,\n                \"value\": \"IhqSb1Gg\",\n                \"value_start\": 45,\n                \"value_end\": 53,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"PASSWD_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.999,\n        \"line_data_list\": [\n            {\n                \"line\": \"sftp gildong.hong@98.76.54.32 mailto:{1} (pw:IhqSb1Gg)\",\n                \"line_num\": 22,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"FILE:./tests/samples/doc_various|RAW\",\n                \"variable\": \"pw\",\n                \"variable_start\": 42,\n                \"variable_end\": 44,\n                \"value\": \"IhqSb1Gg\",\n                \"value_start\": 45,\n                \"value_end\": 53,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_CREDENTIALS\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.994,\n        \"line_data_list\": [\n            {\n                \"line\": \"gildong.hong@98.76.54.32 mailto:{1} (pw:IhqSb1Gg)\",\n                \"line_num\": 23,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"FILE:./tests/samples/doc_various|RAW\",\n                \"variable\": \"pw\",\n                \"variable_start\": 37,\n                \"variable_end\": 39,\n                \"value\": \"IhqSb1Gg\",\n                \"value_start\": 40,\n                \"value_end\": 48,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"PASSWD_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.994,\n        \"line_data_list\": [\n            {\n                \"line\": \"gildong.hong@98.76.54.32 mailto:{1} (pw:IhqSb1Gg)\",\n                \"line_num\": 23,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"FILE:./tests/samples/doc_various|RAW\",\n                \"variable\": \"pw\",\n                \"variable_start\": 37,\n                \"variable_end\": 39,\n                \"value\": \"IhqSb1Gg\",\n                \"value_start\": 40,\n                \"value_end\": 48,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_CREDENTIALS\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.958,\n        \"line_data_list\": [\n            {\n                \"line\": \"-id:gildong.hong@example.com mailto:{1} -pwd:IhqSb1Gg\",\n                \"line_num\": 24,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"FILE:./tests/samples/doc_various|RAW\",\n                \"variable\": \"pwd\",\n                \"variable_start\": 41,\n                \"variable_end\": 44,\n                \"value\": \"IhqSb1Gg\",\n                \"value_start\": 45,\n                \"value_end\": 53,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"ID_PAIR_PASSWD_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.958,\n        \"line_data_list\": [\n            {\n                \"line\": \"-id:gildong.hong@example.com mailto:{1} -pwd:IhqSb1Gg\",\n                \"line_num\": 24,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"FILE:./tests/samples/doc_various|RAW\",\n                \"variable\": \"pwd\",\n                \"variable_start\": 41,\n                \"variable_end\": 44,\n                \"value\": \"IhqSb1Gg\",\n                \"value_start\": 45,\n                \"value_end\": 53,\n                \"entropy\": 3.0\n            },\n            {\n                \"line\": \"-id:gildong.hong@example.com mailto:{1} -pwd:IhqSb1Gg\",\n                \"line_num\": 24,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"FILE:./tests/samples/doc_various|RAW\",\n                \"variable\": \"id\",\n                \"variable_start\": 1,\n                \"variable_end\": 3,\n                \"value\": \"gildong.hong@example.com\",\n                \"value_start\": 4,\n                \"value_end\": 28,\n                \"entropy\": 3.77206\n            }\n        ]\n    },\n    {\n        \"rule\": \"PASSWD_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.958,\n        \"line_data_list\": [\n            {\n                \"line\": \"-id:gildong.hong@example.com mailto:{1} -pwd:IhqSb1Gg\",\n                \"line_num\": 24,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"FILE:./tests/samples/doc_various|RAW\",\n                \"variable\": \"pwd\",\n                \"variable_start\": 41,\n                \"variable_end\": 44,\n                \"value\": \"IhqSb1Gg\",\n                \"value_start\": 45,\n                \"value_end\": 53,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_CREDENTIALS\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"ssh gildong.hong@98.76.54.32 mailto:{1} (password:IhqSb1Gg)\",\n                \"line_num\": 25,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"FILE:./tests/samples/doc_various|RAW\",\n                \"variable\": \"password\",\n                \"variable_start\": 41,\n                \"variable_end\": 49,\n                \"value\": \"IhqSb1Gg\",\n                \"value_start\": 50,\n                \"value_end\": 58,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"PASSWD_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"ssh gildong.hong@98.76.54.32 mailto:{1} (password:IhqSb1Gg)\",\n                \"line_num\": 25,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"FILE:./tests/samples/doc_various|RAW\",\n                \"variable\": \"password\",\n                \"variable_start\": 41,\n                \"variable_end\": 49,\n                \"value\": \"IhqSb1Gg\",\n                \"value_start\": 50,\n                \"value_end\": 58,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_CREDENTIALS\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.999,\n        \"line_data_list\": [\n            {\n                \"line\": \"id:gildong.hong@example.com mailto:{1} password:IhqSb1Gg\",\n                \"line_num\": 28,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"FILE:./tests/samples/doc_various|RAW\",\n                \"variable\": \"password\",\n                \"variable_start\": 39,\n                \"variable_end\": 47,\n                \"value\": \"IhqSb1Gg\",\n                \"value_start\": 48,\n                \"value_end\": 56,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"ID_PAIR_PASSWD_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.999,\n        \"line_data_list\": [\n            {\n                \"line\": \"id:gildong.hong@example.com mailto:{1} password:IhqSb1Gg\",\n                \"line_num\": 28,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"FILE:./tests/samples/doc_various|RAW\",\n                \"variable\": \"password\",\n                \"variable_start\": 39,\n                \"variable_end\": 47,\n                \"value\": \"IhqSb1Gg\",\n                \"value_start\": 48,\n                \"value_end\": 56,\n                \"entropy\": 3.0\n            },\n            {\n                \"line\": \"id:gildong.hong@example.com mailto:{1} password:IhqSb1Gg\",\n                \"line_num\": 28,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"FILE:./tests/samples/doc_various|RAW\",\n                \"variable\": \"id\",\n                \"variable_start\": 0,\n                \"variable_end\": 2,\n                \"value\": \"gildong.hong@example.com\",\n                \"value_start\": 3,\n                \"value_end\": 27,\n                \"entropy\": 3.77206\n            }\n        ]\n    },\n    {\n        \"rule\": \"PASSWD_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.999,\n        \"line_data_list\": [\n            {\n                \"line\": \"id:gildong.hong@example.com mailto:{1} password:IhqSb1Gg\",\n                \"line_num\": 28,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"FILE:./tests/samples/doc_various|RAW\",\n                \"variable\": \"password\",\n                \"variable_start\": 39,\n                \"variable_end\": 47,\n                \"value\": \"IhqSb1Gg\",\n                \"value_start\": 48,\n                \"value_end\": 56,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_CREDENTIALS\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.993,\n        \"line_data_list\": [\n            {\n                \"line\": \"98.76.54.32 ANY_PW:IhqSb1Gg\",\n                \"line_num\": 34,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"FILE:./tests/samples/doc_various|RAW\",\n                \"variable\": \"ANY_PW\",\n                \"variable_start\": 12,\n                \"variable_end\": 18,\n                \"value\": \"IhqSb1Gg\",\n                \"value_start\": 19,\n                \"value_end\": 27,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"PASSWD_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.993,\n        \"line_data_list\": [\n            {\n                \"line\": \"98.76.54.32 ANY_PW:IhqSb1Gg\",\n                \"line_num\": 34,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"FILE:./tests/samples/doc_various|RAW\",\n                \"variable\": \"PW\",\n                \"variable_start\": 16,\n                \"variable_end\": 18,\n                \"value\": \"IhqSb1Gg\",\n                \"value_start\": 19,\n                \"value_end\": 27,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_CREDENTIALS\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.943,\n        \"line_data_list\": [\n            {\n                \"line\": \"98.76.54.32(ID/PW:IhqSb1Gg)\",\n                \"line_num\": 36,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"FILE:./tests/samples/doc_various|RAW\",\n                \"variable\": \"PW\",\n                \"variable_start\": 15,\n                \"variable_end\": 17,\n                \"value\": \"IhqSb1Gg\",\n                \"value_start\": 18,\n                \"value_end\": 26,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"PASSWD_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.943,\n        \"line_data_list\": [\n            {\n                \"line\": \"98.76.54.32(ID/PW:IhqSb1Gg)\",\n                \"line_num\": 36,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"FILE:./tests/samples/doc_various|RAW\",\n                \"variable\": \"PW\",\n                \"variable_start\": 15,\n                \"variable_end\": 17,\n                \"value\": \"IhqSb1Gg\",\n                \"value_start\": 18,\n                \"value_end\": 26,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_CREDENTIALS\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.996,\n        \"line_data_list\": [\n            {\n                \"line\": \"gildong.hong@98.76.54.32 (pwd:IhqSb1Gg)\",\n                \"line_num\": 38,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"FILE:./tests/samples/doc_various|RAW\",\n                \"variable\": \"pwd\",\n                \"variable_start\": 26,\n                \"variable_end\": 29,\n                \"value\": \"IhqSb1Gg\",\n                \"value_start\": 30,\n                \"value_end\": 38,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"PASSWD_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.996,\n        \"line_data_list\": [\n            {\n                \"line\": \"gildong.hong@98.76.54.32 (pwd:IhqSb1Gg)\",\n                \"line_num\": 38,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"FILE:./tests/samples/doc_various|RAW\",\n                \"variable\": \"pwd\",\n                \"variable_start\": 26,\n                \"variable_end\": 29,\n                \"value\": \"IhqSb1Gg\",\n                \"value_start\": 30,\n                \"value_end\": 38,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_CREDENTIALS\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.035,\n        \"line_data_list\": [\n            {\n                \"line\": \"ID/Pass:xxxx:master/IhqSb1Gg xxxx:master/IhqSb1Gg\",\n                \"line_num\": 45,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"FILE:./tests/samples/doc_various|RAW\",\n                \"variable\": \"Pass\",\n                \"variable_start\": 3,\n                \"variable_end\": 7,\n                \"value\": \"xxxx:master/IhqSb1Gg\",\n                \"value_start\": 8,\n                \"value_end\": 28,\n                \"entropy\": 3.92193\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_CREDENTIALS\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.864,\n        \"line_data_list\": [\n            {\n                \"line\": \"id:xxxx(ANYpw:IhqSb1Ga)\",\n                \"line_num\": 46,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"FILE:./tests/samples/doc_various|RAW\",\n                \"variable\": \"ANYpw\",\n                \"variable_start\": 8,\n                \"variable_end\": 13,\n                \"value\": \"IhqSb1Ga\",\n                \"value_start\": 14,\n                \"value_end\": 22,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"PASSWD_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.864,\n        \"line_data_list\": [\n            {\n                \"line\": \"id:xxxx(ANYpw:IhqSb1Ga)\",\n                \"line_num\": 46,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"FILE:./tests/samples/doc_various|RAW\",\n                \"variable\": \"pw\",\n                \"variable_start\": 11,\n                \"variable_end\": 13,\n                \"value\": \"IhqSb1Ga\",\n                \"value_start\": 14,\n                \"value_end\": 22,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_CREDENTIALS\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.998,\n        \"line_data_list\": [\n            {\n                \"line\": \"gildong.hong@98.76.54.32,pw:IhqSb1Gg\",\n                \"line_num\": 47,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"FILE:./tests/samples/doc_various|RAW\",\n                \"variable\": \"pw\",\n                \"variable_start\": 25,\n                \"variable_end\": 27,\n                \"value\": \"IhqSb1Gg\",\n                \"value_start\": 28,\n                \"value_end\": 36,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"PASSWD_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.998,\n        \"line_data_list\": [\n            {\n                \"line\": \"gildong.hong@98.76.54.32,pw:IhqSb1Gg\",\n                \"line_num\": 47,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"FILE:./tests/samples/doc_various|RAW\",\n                \"variable\": \"pw\",\n                \"variable_start\": 25,\n                \"variable_end\": 27,\n                \"value\": \"IhqSb1Gg\",\n                \"value_start\": 28,\n                \"value_end\": 36,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"IP_ID_PASSWORD_TRIPLE\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.943,\n        \"line_data_list\": [\n            {\n                \"line\": \"98.76.54.32(master/IhqSb1Gg,master/IhqSb1Gg)\",\n                \"line_num\": 48,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"FILE:./tests/samples/doc_various|RAW\",\n                \"variable\": null,\n                \"variable_start\": -1,\n                \"variable_end\": -1,\n                \"value\": \"IhqSb1Gg,\",\n                \"value_start\": 19,\n                \"value_end\": 28,\n                \"entropy\": 3.16993\n            }\n        ]\n    },\n    {\n        \"rule\": \"IP_ID_PASSWORD_TRIPLE\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.989,\n        \"line_data_list\": [\n            {\n                \"line\": \"98.76.54.32(master/IhqSb1Gg master/IhqSb1Gg)\",\n                \"line_num\": 49,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"FILE:./tests/samples/doc_various|RAW\",\n                \"variable\": null,\n                \"variable_start\": -1,\n                \"variable_end\": -1,\n                \"value\": \"IhqSb1Gg\",\n                \"value_start\": 19,\n                \"value_end\": 27,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_CREDENTIALS\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.982,\n        \"line_data_list\": [\n            {\n                \"line\": \"98.76.54.32:xxxx(PW:IhqSb1Gg)\",\n                \"line_num\": 51,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"FILE:./tests/samples/doc_various|RAW\",\n                \"variable\": \"PW\",\n                \"variable_start\": 17,\n                \"variable_end\": 19,\n                \"value\": \"IhqSb1Gg\",\n                \"value_start\": 20,\n                \"value_end\": 28,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"PASSWD_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.982,\n        \"line_data_list\": [\n            {\n                \"line\": \"98.76.54.32:xxxx(PW:IhqSb1Gg)\",\n                \"line_num\": 51,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"FILE:./tests/samples/doc_various|RAW\",\n                \"variable\": \"PW\",\n                \"variable_start\": 17,\n                \"variable_end\": 19,\n                \"value\": \"IhqSb1Gg\",\n                \"value_start\": 20,\n                \"value_end\": 28,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_CREDENTIALS\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.989,\n        \"line_data_list\": [\n            {\n                \"line\": \"gildong.hong@98.76.54.32 PW:IhqSb1Gg\",\n                \"line_num\": 56,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"FILE:./tests/samples/doc_various|RAW\",\n                \"variable\": \"PW\",\n                \"variable_start\": 25,\n                \"variable_end\": 27,\n                \"value\": \"IhqSb1Gg\",\n                \"value_start\": 28,\n                \"value_end\": 36,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"PASSWD_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.989,\n        \"line_data_list\": [\n            {\n                \"line\": \"gildong.hong@98.76.54.32 PW:IhqSb1Gg\",\n                \"line_num\": 56,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"FILE:./tests/samples/doc_various|RAW\",\n                \"variable\": \"PW\",\n                \"variable_start\": 25,\n                \"variable_end\": 27,\n                \"value\": \"IhqSb1Gg\",\n                \"value_start\": 28,\n                \"value_end\": 36,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_CREDENTIALS\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.995,\n        \"line_data_list\": [\n            {\n                \"line\": \"ANY_user:xxxx ANY_pwd:IhqSb1Gg\",\n                \"line_num\": 61,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"FILE:./tests/samples/doc_various|RAW\",\n                \"variable\": \"ANY_pwd\",\n                \"variable_start\": 14,\n                \"variable_end\": 21,\n                \"value\": \"IhqSb1Gg\",\n                \"value_start\": 22,\n                \"value_end\": 30,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"PASSWD_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.995,\n        \"line_data_list\": [\n            {\n                \"line\": \"ANY_user:xxxx ANY_pwd:IhqSb1Gg\",\n                \"line_num\": 61,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"FILE:./tests/samples/doc_various|RAW\",\n                \"variable\": \"pwd\",\n                \"variable_start\": 18,\n                \"variable_end\": 21,\n                \"value\": \"IhqSb1Gg\",\n                \"value_start\": 22,\n                \"value_end\": 30,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_CREDENTIALS\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"Acount name:xxxx Initial Password:IhqSb1Gg\",\n                \"line_num\": 62,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"FILE:./tests/samples/doc_various|RAW\",\n                \"variable\": \"Password\",\n                \"variable_start\": 25,\n                \"variable_end\": 33,\n                \"value\": \"IhqSb1Gg\",\n                \"value_start\": 34,\n                \"value_end\": 42,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"PASSWD_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"Acount name:xxxx Initial Password:IhqSb1Gg\",\n                \"line_num\": 62,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"FILE:./tests/samples/doc_various|RAW\",\n                \"variable\": \"Password\",\n                \"variable_start\": 25,\n                \"variable_end\": 33,\n                \"value\": \"IhqSb1Gg\",\n                \"value_start\": 34,\n                \"value_end\": 42,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_CREDENTIALS\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.951,\n        \"line_data_list\": [\n            {\n                \"line\": \"Access wifi:xxxx(PW:IhqSb1Gg)\",\n                \"line_num\": 63,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"FILE:./tests/samples/doc_various|RAW\",\n                \"variable\": \"PW\",\n                \"variable_start\": 17,\n                \"variable_end\": 19,\n                \"value\": \"IhqSb1Gg\",\n                \"value_start\": 20,\n                \"value_end\": 28,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"PASSWD_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.951,\n        \"line_data_list\": [\n            {\n                \"line\": \"Access wifi:xxxx(PW:IhqSb1Gg)\",\n                \"line_num\": 63,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"FILE:./tests/samples/doc_various|RAW\",\n                \"variable\": \"PW\",\n                \"variable_start\": 17,\n                \"variable_end\": 19,\n                \"value\": \"IhqSb1Gg\",\n                \"value_start\": 20,\n                \"value_end\": 28,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_CREDENTIALS\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.993,\n        \"line_data_list\": [\n            {\n                \"line\": \"-User:master -PasswordANY:IhqSb1Gg\",\n                \"line_num\": 66,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"FILE:./tests/samples/doc_various|RAW\",\n                \"variable\": \"PasswordANY\",\n                \"variable_start\": 14,\n                \"variable_end\": 25,\n                \"value\": \"IhqSb1Gg\",\n                \"value_start\": 26,\n                \"value_end\": 34,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"ID_PASSWD_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.979,\n        \"line_data_list\": [\n            {\n                \"line\": \"98.76.54.32(ID/PW:master/IhqSb1Gg)\",\n                \"line_num\": 70,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"FILE:./tests/samples/doc_various|RAW\",\n                \"variable\": \"ID/PW\",\n                \"variable_start\": 12,\n                \"variable_end\": 17,\n                \"value\": \"IhqSb1Gg\",\n                \"value_start\": 25,\n                \"value_end\": 33,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_CREDENTIALS\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.013,\n        \"line_data_list\": [\n            {\n                \"line\": \"98.76.54.32(ID/PW:master/IhqSb1Gg)\",\n                \"line_num\": 70,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"FILE:./tests/samples/doc_various|RAW\",\n                \"variable\": \"PW\",\n                \"variable_start\": 15,\n                \"variable_end\": 17,\n                \"value\": \"master/IhqSb1Gg\",\n                \"value_start\": 18,\n                \"value_end\": 33,\n                \"entropy\": 3.90689\n            }\n        ]\n    },\n    {\n        \"rule\": \"ID_PASSWD_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.43,\n        \"line_data_list\": [\n            {\n                \"line\": \"ID/PW master(IhqSb1Gg)\",\n                \"line_num\": 72,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"FILE:./tests/samples/doc_various|RAW\",\n                \"variable\": \"ID/PW\",\n                \"variable_start\": 0,\n                \"variable_end\": 5,\n                \"value\": \"IhqSb1Gg\",\n                \"value_start\": 13,\n                \"value_end\": 21,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_CREDENTIALS\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.993,\n        \"line_data_list\": [\n            {\n                \"line\": \"master@98.76.54.32(pw:IhqSb1Gg)\",\n                \"line_num\": 73,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"FILE:./tests/samples/doc_various|RAW\",\n                \"variable\": \"pw\",\n                \"variable_start\": 19,\n                \"variable_end\": 21,\n                \"value\": \"IhqSb1Gg\",\n                \"value_start\": 22,\n                \"value_end\": 30,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"PASSWD_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.993,\n        \"line_data_list\": [\n            {\n                \"line\": \"master@98.76.54.32(pw:IhqSb1Gg)\",\n                \"line_num\": 73,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"FILE:./tests/samples/doc_various|RAW\",\n                \"variable\": \"pw\",\n                \"variable_start\": 19,\n                \"variable_end\": 21,\n                \"value\": \"IhqSb1Gg\",\n                \"value_start\": 22,\n                \"value_end\": 30,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_CREDENTIALS\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.989,\n        \"line_data_list\": [\n            {\n                \"line\": \"master@98.76.54.32,PW:IhqSb1Gg\",\n                \"line_num\": 74,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"FILE:./tests/samples/doc_various|RAW\",\n                \"variable\": \"PW\",\n                \"variable_start\": 19,\n                \"variable_end\": 21,\n                \"value\": \"IhqSb1Gg\",\n                \"value_start\": 22,\n                \"value_end\": 30,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"PASSWD_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.989,\n        \"line_data_list\": [\n            {\n                \"line\": \"master@98.76.54.32,PW:IhqSb1Gg\",\n                \"line_num\": 74,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"FILE:./tests/samples/doc_various|RAW\",\n                \"variable\": \"PW\",\n                \"variable_start\": 19,\n                \"variable_end\": 21,\n                \"value\": \"IhqSb1Gg\",\n                \"value_start\": 22,\n                \"value_end\": 30,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_CREDENTIALS\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.997,\n        \"line_data_list\": [\n            {\n                \"line\": \"98.76.54.32 pw:IhqSb1Gg\",\n                \"line_num\": 75,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"FILE:./tests/samples/doc_various|RAW\",\n                \"variable\": \"pw\",\n                \"variable_start\": 12,\n                \"variable_end\": 14,\n                \"value\": \"IhqSb1Gg\",\n                \"value_start\": 15,\n                \"value_end\": 23,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"PASSWD_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.997,\n        \"line_data_list\": [\n            {\n                \"line\": \"98.76.54.32 pw:IhqSb1Gg\",\n                \"line_num\": 75,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"FILE:./tests/samples/doc_various|RAW\",\n                \"variable\": \"pw\",\n                \"variable_start\": 12,\n                \"variable_end\": 14,\n                \"value\": \"IhqSb1Gg\",\n                \"value_start\": 15,\n                \"value_end\": 23,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_CREDENTIALS\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.938,\n        \"line_data_list\": [\n            {\n                \"line\": \"config:xxxx,PW:IhqSb1Gg\",\n                \"line_num\": 78,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"FILE:./tests/samples/doc_various|RAW\",\n                \"variable\": \"PW\",\n                \"variable_start\": 12,\n                \"variable_end\": 14,\n                \"value\": \"IhqSb1Gg\",\n                \"value_start\": 15,\n                \"value_end\": 23,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"PASSWD_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.938,\n        \"line_data_list\": [\n            {\n                \"line\": \"config:xxxx,PW:IhqSb1Gg\",\n                \"line_num\": 78,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"FILE:./tests/samples/doc_various|RAW\",\n                \"variable\": \"PW\",\n                \"variable_start\": 12,\n                \"variable_end\": 14,\n                \"value\": \"IhqSb1Gg\",\n                \"value_start\": 15,\n                \"value_end\": 23,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_CREDENTIALS\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.999,\n        \"line_data_list\": [\n            {\n                \"line\": \"scp gildong.hong@98.76.54.32 mailto:{1} pw:IhqSb1Gg\",\n                \"line_num\": 82,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"FILE:./tests/samples/doc_various|RAW\",\n                \"variable\": \"pw\",\n                \"variable_start\": 40,\n                \"variable_end\": 42,\n                \"value\": \"IhqSb1Gg\",\n                \"value_start\": 43,\n                \"value_end\": 51,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"PASSWD_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.999,\n        \"line_data_list\": [\n            {\n                \"line\": \"scp gildong.hong@98.76.54.32 mailto:{1} pw:IhqSb1Gg\",\n                \"line_num\": 82,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"FILE:./tests/samples/doc_various|RAW\",\n                \"variable\": \"pw\",\n                \"variable_start\": 40,\n                \"variable_end\": 42,\n                \"value\": \"IhqSb1Gg\",\n                \"value_start\": 43,\n                \"value_end\": 51,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_CREDENTIALS\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.998,\n        \"line_data_list\": [\n            {\n                \"line\": \"id:gildong.hong@xxx.com mailto:{1} pw:IhqSb1Gg\",\n                \"line_num\": 83,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"FILE:./tests/samples/doc_various|RAW\",\n                \"variable\": \"pw\",\n                \"variable_start\": 35,\n                \"variable_end\": 37,\n                \"value\": \"IhqSb1Gg\",\n                \"value_start\": 38,\n                \"value_end\": 46,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"ID_PAIR_PASSWD_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.998,\n        \"line_data_list\": [\n            {\n                \"line\": \"id:gildong.hong@xxx.com mailto:{1} pw:IhqSb1Gg\",\n                \"line_num\": 83,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"FILE:./tests/samples/doc_various|RAW\",\n                \"variable\": \"pw\",\n                \"variable_start\": 35,\n                \"variable_end\": 37,\n                \"value\": \"IhqSb1Gg\",\n                \"value_start\": 38,\n                \"value_end\": 46,\n                \"entropy\": 3.0\n            },\n            {\n                \"line\": \"id:gildong.hong@xxx.com mailto:{1} pw:IhqSb1Gg\",\n                \"line_num\": 83,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"FILE:./tests/samples/doc_various|RAW\",\n                \"variable\": \"id\",\n                \"variable_start\": 0,\n                \"variable_end\": 2,\n                \"value\": \"gildong.hong@xxx.com\",\n                \"value_start\": 3,\n                \"value_end\": 23,\n                \"entropy\": 3.40869\n            }\n        ]\n    },\n    {\n        \"rule\": \"PASSWD_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.998,\n        \"line_data_list\": [\n            {\n                \"line\": \"id:gildong.hong@xxx.com mailto:{1} pw:IhqSb1Gg\",\n                \"line_num\": 83,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"FILE:./tests/samples/doc_various|RAW\",\n                \"variable\": \"pw\",\n                \"variable_start\": 35,\n                \"variable_end\": 37,\n                \"value\": \"IhqSb1Gg\",\n                \"value_start\": 38,\n                \"value_end\": 46,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_CREDENTIALS\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.998,\n        \"line_data_list\": [\n            {\n                \"line\": \"gildong.hong@98.76.54.32 mailto:{1} pw:IhqSb1Gg\",\n                \"line_num\": 84,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"FILE:./tests/samples/doc_various|RAW\",\n                \"variable\": \"pw\",\n                \"variable_start\": 36,\n                \"variable_end\": 38,\n                \"value\": \"IhqSb1Gg\",\n                \"value_start\": 39,\n                \"value_end\": 47,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"PASSWD_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.998,\n        \"line_data_list\": [\n            {\n                \"line\": \"gildong.hong@98.76.54.32 mailto:{1} pw:IhqSb1Gg\",\n                \"line_num\": 84,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"FILE:./tests/samples/doc_various|RAW\",\n                \"variable\": \"pw\",\n                \"variable_start\": 36,\n                \"variable_end\": 38,\n                \"value\": \"IhqSb1Gg\",\n                \"value_start\": 39,\n                \"value_end\": 47,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_CREDENTIALS\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.999,\n        \"line_data_list\": [\n            {\n                \"line\": \"ssh gildong.hong@98.76.54.32 mailto:{1},pw:IhqSb1Gg\",\n                \"line_num\": 85,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"FILE:./tests/samples/doc_various|RAW\",\n                \"variable\": \"pw\",\n                \"variable_start\": 40,\n                \"variable_end\": 42,\n                \"value\": \"IhqSb1Gg\",\n                \"value_start\": 43,\n                \"value_end\": 51,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"PASSWD_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.999,\n        \"line_data_list\": [\n            {\n                \"line\": \"ssh gildong.hong@98.76.54.32 mailto:{1},pw:IhqSb1Gg\",\n                \"line_num\": 85,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"FILE:./tests/samples/doc_various|RAW\",\n                \"variable\": \"pw\",\n                \"variable_start\": 40,\n                \"variable_end\": 42,\n                \"value\": \"IhqSb1Gg\",\n                \"value_start\": 43,\n                \"value_end\": 51,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_CREDENTIALS\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.998,\n        \"line_data_list\": [\n            {\n                \"line\": \"(ssh gildong.hong@98.76.54.32 mailto{1}) pwd:IhqSb1Gg\",\n                \"line_num\": 87,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"FILE:./tests/samples/doc_various|RAW\",\n                \"variable\": \"pwd\",\n                \"variable_start\": 41,\n                \"variable_end\": 44,\n                \"value\": \"IhqSb1Gg\",\n                \"value_start\": 45,\n                \"value_end\": 53,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"PASSWD_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.998,\n        \"line_data_list\": [\n            {\n                \"line\": \"(ssh gildong.hong@98.76.54.32 mailto{1}) pwd:IhqSb1Gg\",\n                \"line_num\": 87,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"FILE:./tests/samples/doc_various|RAW\",\n                \"variable\": \"pwd\",\n                \"variable_start\": 41,\n                \"variable_end\": 44,\n                \"value\": \"IhqSb1Gg\",\n                \"value_start\": 45,\n                \"value_end\": 53,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_CREDENTIALS\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.999,\n        \"line_data_list\": [\n            {\n                \"line\": \"ssh gildong.hong@98.76.54.32 mailto:{1}, pw:IhqSb1Gg\",\n                \"line_num\": 90,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"FILE:./tests/samples/doc_various|RAW\",\n                \"variable\": \"pw\",\n                \"variable_start\": 41,\n                \"variable_end\": 43,\n                \"value\": \"IhqSb1Gg\",\n                \"value_start\": 44,\n                \"value_end\": 52,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"PASSWD_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.999,\n        \"line_data_list\": [\n            {\n                \"line\": \"ssh gildong.hong@98.76.54.32 mailto:{1}, pw:IhqSb1Gg\",\n                \"line_num\": 90,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"FILE:./tests/samples/doc_various|RAW\",\n                \"variable\": \"pw\",\n                \"variable_start\": 41,\n                \"variable_end\": 43,\n                \"value\": \"IhqSb1Gg\",\n                \"value_start\": 44,\n                \"value_end\": 52,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_CREDENTIALS\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.998,\n        \"line_data_list\": [\n            {\n                \"line\": \"ssh gildong.hong@98.76.54.32 mailto:{1} (pwd:IhqSb1Gg)\",\n                \"line_num\": 93,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"FILE:./tests/samples/doc_various|RAW\",\n                \"variable\": \"pwd\",\n                \"variable_start\": 41,\n                \"variable_end\": 44,\n                \"value\": \"IhqSb1Gg\",\n                \"value_start\": 45,\n                \"value_end\": 53,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"PASSWD_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.998,\n        \"line_data_list\": [\n            {\n                \"line\": \"ssh gildong.hong@98.76.54.32 mailto:{1} (pwd:IhqSb1Gg)\",\n                \"line_num\": 93,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"FILE:./tests/samples/doc_various|RAW\",\n                \"variable\": \"pwd\",\n                \"variable_start\": 41,\n                \"variable_end\": 44,\n                \"value\": \"IhqSb1Gg\",\n                \"value_start\": 45,\n                \"value_end\": 53,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_CREDENTIALS\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"gildong.hong@98.76.54.32 mailto:{1} (password:IhqSb1Gg)\",\n                \"line_num\": 94,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"FILE:./tests/samples/doc_various|RAW\",\n                \"variable\": \"password\",\n                \"variable_start\": 37,\n                \"variable_end\": 45,\n                \"value\": \"IhqSb1Gg\",\n                \"value_start\": 46,\n                \"value_end\": 54,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"PASSWD_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"gildong.hong@98.76.54.32 mailto:{1} (password:IhqSb1Gg)\",\n                \"line_num\": 94,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"FILE:./tests/samples/doc_various|RAW\",\n                \"variable\": \"password\",\n                \"variable_start\": 37,\n                \"variable_end\": 45,\n                \"value\": \"IhqSb1Gg\",\n                \"value_start\": 46,\n                \"value_end\": 54,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_CREDENTIALS\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"gildong.hong@98.76.54.32 mailto:{1} Password:IhqSb1Gg\",\n                \"line_num\": 96,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"FILE:./tests/samples/doc_various|RAW\",\n                \"variable\": \"Password\",\n                \"variable_start\": 36,\n                \"variable_end\": 44,\n                \"value\": \"IhqSb1Gg\",\n                \"value_start\": 45,\n                \"value_end\": 53,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"PASSWD_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"gildong.hong@98.76.54.32 mailto:{1} Password:IhqSb1Gg\",\n                \"line_num\": 96,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"FILE:./tests/samples/doc_various|RAW\",\n                \"variable\": \"Password\",\n                \"variable_start\": 36,\n                \"variable_end\": 44,\n                \"value\": \"IhqSb1Gg\",\n                \"value_start\": 45,\n                \"value_end\": 53,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_CREDENTIALS\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.997,\n        \"line_data_list\": [\n            {\n                \"line\": \"gildong.hong@98.76.54.32 mailto:{1} (pass:IhqSb1Gg)\",\n                \"line_num\": 97,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"FILE:./tests/samples/doc_various|RAW\",\n                \"variable\": \"pass\",\n                \"variable_start\": 37,\n                \"variable_end\": 41,\n                \"value\": \"IhqSb1Gg\",\n                \"value_start\": 42,\n                \"value_end\": 50,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_CREDENTIALS\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.999,\n        \"line_data_list\": [\n            {\n                \"line\": \"ssh gildong.hong@98.76.54.32 mailto:{1} pw:IhqSb1Gg\",\n                \"line_num\": 100,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"FILE:./tests/samples/doc_various|RAW\",\n                \"variable\": \"pw\",\n                \"variable_start\": 40,\n                \"variable_end\": 42,\n                \"value\": \"IhqSb1Gg\",\n                \"value_start\": 43,\n                \"value_end\": 51,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"PASSWD_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.999,\n        \"line_data_list\": [\n            {\n                \"line\": \"ssh gildong.hong@98.76.54.32 mailto:{1} pw:IhqSb1Gg\",\n                \"line_num\": 100,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"FILE:./tests/samples/doc_various|RAW\",\n                \"variable\": \"pw\",\n                \"variable_start\": 40,\n                \"variable_end\": 42,\n                \"value\": \"IhqSb1Gg\",\n                \"value_start\": 43,\n                \"value_end\": 51,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_CREDENTIALS\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.999,\n        \"line_data_list\": [\n            {\n                \"line\": \"ssh gildong.hong@98.76.54.32 mailto:{1} pass:IhqSb1Gg\",\n                \"line_num\": 101,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"FILE:./tests/samples/doc_various|RAW\",\n                \"variable\": \"pass\",\n                \"variable_start\": 40,\n                \"variable_end\": 44,\n                \"value\": \"IhqSb1Gg\",\n                \"value_start\": 45,\n                \"value_end\": 53,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_CREDENTIALS\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"id:gildong.hong@xxx.com mailto:{1}/password:IhqSb1Gg\",\n                \"line_num\": 102,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"FILE:./tests/samples/doc_various|RAW\",\n                \"variable\": \"password\",\n                \"variable_start\": 35,\n                \"variable_end\": 43,\n                \"value\": \"IhqSb1Gg\",\n                \"value_start\": 44,\n                \"value_end\": 52,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"ID_PAIR_PASSWD_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"id:gildong.hong@xxx.com mailto:{1}/password:IhqSb1Gg\",\n                \"line_num\": 102,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"FILE:./tests/samples/doc_various|RAW\",\n                \"variable\": \"password\",\n                \"variable_start\": 35,\n                \"variable_end\": 43,\n                \"value\": \"IhqSb1Gg\",\n                \"value_start\": 44,\n                \"value_end\": 52,\n                \"entropy\": 3.0\n            },\n            {\n                \"line\": \"id:gildong.hong@xxx.com mailto:{1}/password:IhqSb1Gg\",\n                \"line_num\": 102,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"FILE:./tests/samples/doc_various|RAW\",\n                \"variable\": \"id\",\n                \"variable_start\": 0,\n                \"variable_end\": 2,\n                \"value\": \"gildong.hong@xxx.com\",\n                \"value_start\": 3,\n                \"value_end\": 23,\n                \"entropy\": 3.40869\n            }\n        ]\n    },\n    {\n        \"rule\": \"PASSWD_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"id:gildong.hong@xxx.com mailto:{1}/password:IhqSb1Gg\",\n                \"line_num\": 102,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"FILE:./tests/samples/doc_various|RAW\",\n                \"variable\": \"password\",\n                \"variable_start\": 35,\n                \"variable_end\": 43,\n                \"value\": \"IhqSb1Gg\",\n                \"value_start\": 44,\n                \"value_end\": 52,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_CREDENTIALS\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"ssh gildong.hong@98.76.54.32 mailto:{1}/password:IhqSb1Gg\",\n                \"line_num\": 104,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"FILE:./tests/samples/doc_various|RAW\",\n                \"variable\": \"password\",\n                \"variable_start\": 40,\n                \"variable_end\": 48,\n                \"value\": \"IhqSb1Gg\",\n                \"value_start\": 49,\n                \"value_end\": 57,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"PASSWD_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"ssh gildong.hong@98.76.54.32 mailto:{1}/password:IhqSb1Gg\",\n                \"line_num\": 104,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"FILE:./tests/samples/doc_various|RAW\",\n                \"variable\": \"password\",\n                \"variable_start\": 40,\n                \"variable_end\": 48,\n                \"value\": \"IhqSb1Gg\",\n                \"value_start\": 49,\n                \"value_end\": 57,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_CREDENTIALS\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.98,\n        \"line_data_list\": [\n            {\n                \"line\": \"-ANYID:gildong.hong@example.com mailto:{1} -pw:IhqSb1Gg\",\n                \"line_num\": 105,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"FILE:./tests/samples/doc_various|RAW\",\n                \"variable\": \"pw\",\n                \"variable_start\": 44,\n                \"variable_end\": 46,\n                \"value\": \"IhqSb1Gg\",\n                \"value_start\": 47,\n                \"value_end\": 55,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"ID_PAIR_PASSWD_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.98,\n        \"line_data_list\": [\n            {\n                \"line\": \"-ANYID:gildong.hong@example.com mailto:{1} -pw:IhqSb1Gg\",\n                \"line_num\": 105,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"FILE:./tests/samples/doc_various|RAW\",\n                \"variable\": \"pw\",\n                \"variable_start\": 44,\n                \"variable_end\": 46,\n                \"value\": \"IhqSb1Gg\",\n                \"value_start\": 47,\n                \"value_end\": 55,\n                \"entropy\": 3.0\n            },\n            {\n                \"line\": \"-ANYID:gildong.hong@example.com mailto:{1} -pw:IhqSb1Gg\",\n                \"line_num\": 105,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"FILE:./tests/samples/doc_various|RAW\",\n                \"variable\": \"ID\",\n                \"variable_start\": 4,\n                \"variable_end\": 6,\n                \"value\": \"gildong.hong@example.com\",\n                \"value_start\": 7,\n                \"value_end\": 31,\n                \"entropy\": 3.77206\n            }\n        ]\n    },\n    {\n        \"rule\": \"PASSWD_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.98,\n        \"line_data_list\": [\n            {\n                \"line\": \"-ANYID:gildong.hong@example.com mailto:{1} -pw:IhqSb1Gg\",\n                \"line_num\": 105,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"FILE:./tests/samples/doc_various|RAW\",\n                \"variable\": \"pw\",\n                \"variable_start\": 44,\n                \"variable_end\": 46,\n                \"value\": \"IhqSb1Gg\",\n                \"value_start\": 47,\n                \"value_end\": 55,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_CREDENTIALS\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.999,\n        \"line_data_list\": [\n            {\n                \"line\": \"ID:gildong.hong@xxxx.net mailto:{1} pw:IhqSb1Gg\",\n                \"line_num\": 106,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"FILE:./tests/samples/doc_various|RAW\",\n                \"variable\": \"pw\",\n                \"variable_start\": 36,\n                \"variable_end\": 38,\n                \"value\": \"IhqSb1Gg\",\n                \"value_start\": 39,\n                \"value_end\": 47,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"PASSWD_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.999,\n        \"line_data_list\": [\n            {\n                \"line\": \"ID:gildong.hong@xxxx.net mailto:{1} pw:IhqSb1Gg\",\n                \"line_num\": 106,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"FILE:./tests/samples/doc_various|RAW\",\n                \"variable\": \"pw\",\n                \"variable_start\": 36,\n                \"variable_end\": 38,\n                \"value\": \"IhqSb1Gg\",\n                \"value_start\": 39,\n                \"value_end\": 47,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_CREDENTIALS\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.989,\n        \"line_data_list\": [\n            {\n                \"line\": \"http://98.76.54.32:xxx(pw:IhqSb1Gg)\",\n                \"line_num\": 108,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"FILE:./tests/samples/doc_various|RAW\",\n                \"variable\": \"pw\",\n                \"variable_start\": 23,\n                \"variable_end\": 25,\n                \"value\": \"IhqSb1Gg\",\n                \"value_start\": 26,\n                \"value_end\": 34,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"PASSWD_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.989,\n        \"line_data_list\": [\n            {\n                \"line\": \"http://98.76.54.32:xxx(pw:IhqSb1Gg)\",\n                \"line_num\": 108,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"FILE:./tests/samples/doc_various|RAW\",\n                \"variable\": \"pw\",\n                \"variable_start\": 23,\n                \"variable_end\": 25,\n                \"value\": \"IhqSb1Gg\",\n                \"value_start\": 26,\n                \"value_end\": 34,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"Docker Access Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"POSITIVE: dckr_pat_mcF-hLK_JoBxXUNJy1kU7-WSbk0\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/docker\",\n                \"info\": \"FILE:./tests/samples/docker|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"dckr_pat_mcF-hLK_JoBxXUNJy1kU7-WSbk0\",\n                \"value_start\": 10,\n                \"value_end\": 46,\n                \"entropy\": 4.68354\n            }\n        ]\n    },\n    {\n        \"rule\": \"Docker Access Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"NEGATIVE: dckr_pat_EXAMPLE-EXAMPLE-EXAMPLE-123\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/docker\",\n                \"info\": \"FILE:./tests/samples/docker|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"dckr_pat_EXAMPLE-EXAMPLE-EXAMPLE-123\",\n                \"value_start\": 10,\n                \"value_end\": 46,\n                \"entropy\": 3.89106\n            }\n        ]\n    },\n    {\n        \"rule\": \"Docker Access Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"POSITIVE: dckr_oat_fXUgJy1nU2WSbk_0vH2S-mcF-hLKJoB-\",\n                \"line_num\": 3,\n                \"path\": \"./tests/samples/docker\",\n                \"info\": \"FILE:./tests/samples/docker|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"dckr_oat_fXUgJy1nU2WSbk_0vH2S-mcF-hLKJoB-\",\n                \"value_start\": 10,\n                \"value_end\": 51,\n                \"entropy\": 4.78414\n            }\n        ]\n    },\n    {\n        \"rule\": \"Docker Swarm Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"POSITIVE: SWMTKN-1-edmua5ub12inlget8wkvz35kckxkeyznuvc49brsy84wgfssrw-otjll8wdy3yikfrksskvqzqh1\",\n                \"line_num\": 4,\n                \"path\": \"./tests/samples/docker\",\n                \"info\": \"FILE:./tests/samples/docker|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"SWMTKN-1-edmua5ub12inlget8wkvz35kckxkeyznuvc49brsy84wgfssrw-otjll8wdy3yikfrksskvqzqh1\",\n                \"value_start\": 10,\n                \"value_end\": 95,\n                \"entropy\": 5.06757\n            }\n        ]\n    },\n    {\n        \"rule\": \"Docker Swarm Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"POSITIVE: SWMKEY-1-fySn8TY4w5lKcWcJPIpKufejh9hxx5KYwx6XZigx3Q4\",\n                \"line_num\": 6,\n                \"path\": \"./tests/samples/docker\",\n                \"info\": \"FILE:./tests/samples/docker|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"SWMKEY-1-fySn8TY4w5lKcWcJPIpKufejh9hxx5KYwx6XZigx3Q4\",\n                \"value_start\": 10,\n                \"value_end\": 62,\n                \"entropy\": 4.95515\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_CREDENTIALS\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.999,\n        \"line_data_list\": [\n            {\n                \"line\": \"password is NsIdksKJdj\\ttoken is bace4d19-fa7e-b2e4-1afe-9129474bcd81\\tPassword: \\\"Dw7^&nd<dj\\\"\",\n                \"line_num\": 13,\n                \"path\": \"./tests/samples/drawio\",\n                \"info\": \"FILE:./tests/samples/drawio|MXFILE\",\n                \"variable\": \"Password\",\n                \"variable_start\": 69,\n                \"variable_end\": 77,\n                \"value\": \"Dw7^&nd<dj\",\n                \"value_start\": 80,\n                \"value_end\": 90,\n                \"entropy\": 3.12193\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_CREDENTIALS\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"password is NsIdksKJdj\\ttoken is bace4d19-fa7e-b2e4-1afe-9129474bcd81\\tPassword: \\\"Dw7^&nd<dj\\\"\",\n                \"line_num\": 13,\n                \"path\": \"./tests/samples/drawio\",\n                \"info\": \"FILE:./tests/samples/drawio|MXFILE\",\n                \"variable\": \"password\",\n                \"variable_start\": 0,\n                \"variable_end\": 8,\n                \"value\": \"NsIdksKJdj\",\n                \"value_start\": 12,\n                \"value_end\": 22,\n                \"entropy\": 2.92193\n            }\n        ]\n    },\n    {\n        \"rule\": \"UUID\",\n        \"severity\": \"info\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"password is NsIdksKJdj\\ttoken is bace4d19-fa7e-b2e4-1afe-9129474bcd81\\tPassword: \\\"Dw7^&nd<dj\\\"\",\n                \"line_num\": 13,\n                \"path\": \"./tests/samples/drawio\",\n                \"info\": \"FILE:./tests/samples/drawio|MXFILE\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"bace4d19-fa7e-b2e4-1afe-9129474bcd81\",\n                \"value_start\": 32,\n                \"value_end\": 68,\n                \"entropy\": 3.60702\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_CREDENTIALS\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.994,\n        \"line_data_list\": [\n            {\n                \"line\": \"password is NsIdksKJdj\\ttoken is bace4d19-fa7e-b2e4-1afe-9129474bcd81\\tPassword: \\\"Dw7^&nd<dj\\\"\",\n                \"line_num\": 13,\n                \"path\": \"./tests/samples/drawio\",\n                \"info\": \"FILE:./tests/samples/drawio|MXFILE\",\n                \"variable\": \"token\",\n                \"variable_start\": 23,\n                \"variable_end\": 28,\n                \"value\": \"bace4d19-fa7e-b2e4-1afe-9129474bcd81\",\n                \"value_start\": 32,\n                \"value_end\": 68,\n                \"entropy\": 3.60702\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_CREDENTIALS\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.996,\n        \"line_data_list\": [\n            {\n                \"line\": \"textpassword: Df34D<345&>gf\",\n                \"line_num\": 16,\n                \"path\": \"./tests/samples/drawio\",\n                \"info\": \"FILE:./tests/samples/drawio|MXFILE\",\n                \"variable\": \"textpassword\",\n                \"variable_start\": 0,\n                \"variable_end\": 12,\n                \"value\": \"Df34D<345&>gf\",\n                \"value_start\": 14,\n                \"value_end\": 27,\n                \"entropy\": 3.08506\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_CREDENTIALS\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.038,\n        \"line_data_list\": [\n            {\n                \"line\": \"mypass is Mkd<.dI34s&3\",\n                \"line_num\": 19,\n                \"path\": \"./tests/samples/drawio\",\n                \"info\": \"FILE:./tests/samples/drawio|MXFILE\",\n                \"variable\": \"mypass\",\n                \"variable_start\": 0,\n                \"variable_end\": 6,\n                \"value\": \"Mkd<.dI34s&3\",\n                \"value_start\": 10,\n                \"value_end\": 22,\n                \"entropy\": 3.25163\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_CREDENTIALS\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.035,\n        \"line_data_list\": [\n            {\n                \"line\": \"Heading\\tLorem ipsum dolor sit amet, secret is \\\"Nner,<dm(4<3.45\\\"\",\n                \"line_num\": 22,\n                \"path\": \"./tests/samples/drawio\",\n                \"info\": \"FILE:./tests/samples/drawio|MXFILE\",\n                \"variable\": \"secret\",\n                \"variable_start\": 36,\n                \"variable_end\": 42,\n                \"value\": \"Nner,<dm(4<3.45\",\n                \"value_start\": 47,\n                \"value_end\": 62,\n                \"entropy\": 3.64022\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_CREDENTIALS\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.997,\n        \"line_data_list\": [\n            {\n                \"line\": \"secret: >4<563^%$&5w\",\n                \"line_num\": 31,\n                \"path\": \"./tests/samples/drawio\",\n                \"info\": \"FILE:./tests/samples/drawio|MXFILE\",\n                \"variable\": \"secret\",\n                \"variable_start\": 0,\n                \"variable_end\": 6,\n                \"value\": \">4<563^%$&5w\",\n                \"value_start\": 8,\n                \"value_end\": 20,\n                \"entropy\": 3.4183\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_CREDENTIALS\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.993,\n        \"line_data_list\": [\n            {\n                \"line\": \"pass: Dsfgh%$d<>s&\",\n                \"line_num\": 34,\n                \"path\": \"./tests/samples/drawio\",\n                \"info\": \"FILE:./tests/samples/drawio|MXFILE\",\n                \"variable\": \"pass\",\n                \"variable_start\": 0,\n                \"variable_end\": 4,\n                \"value\": \"Dsfgh%$d<>s&\",\n                \"value_start\": 6,\n                \"value_end\": 18,\n                \"entropy\": 3.4183\n            }\n        ]\n    },\n    {\n        \"rule\": \"UUID\",\n        \"severity\": \"info\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"page2 secret is ce49dba1-e4fe-b2a7-4ffa-132bcd819474\",\n                \"line_num\": 45,\n                \"path\": \"./tests/samples/drawio\",\n                \"info\": \"FILE:./tests/samples/drawio|MXFILE\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"ce49dba1-e4fe-b2a7-4ffa-132bcd819474\",\n                \"value_start\": 16,\n                \"value_end\": 52,\n                \"entropy\": 3.68703\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_CREDENTIALS\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"page2 secret is ce49dba1-e4fe-b2a7-4ffa-132bcd819474\",\n                \"line_num\": 45,\n                \"path\": \"./tests/samples/drawio\",\n                \"info\": \"FILE:./tests/samples/drawio|MXFILE\",\n                \"variable\": \"secret\",\n                \"variable_start\": 6,\n                \"variable_end\": 12,\n                \"value\": \"ce49dba1-e4fe-b2a7-4ffa-132bcd819474\",\n                \"value_start\": 16,\n                \"value_end\": 52,\n                \"entropy\": 3.68703\n            }\n        ]\n    },\n    {\n        \"rule\": \"Dropbox API secret (long term)\",\n        \"severity\": \"high\",\n        \"confidence\": \"weak\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"var g = '7rBynGo0b1cAAAAAAAAAAc72L3T6rQK51mB5a06ijnwRG91deTxvSqdZNAlxq8pZ'\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/dropbox_api_secret_long_term\",\n                \"info\": \"FILE:./tests/samples/dropbox_api_secret_long_term|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"7rBynGo0b1cAAAAAAAAAAc72L3T6rQK51mB5a06ijnwRG91deTxvSqdZNAlxq8pZ\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 4.89362\n            }\n        ]\n    },\n    {\n        \"rule\": \"Dropbox App secret\",\n        \"severity\": \"info\",\n        \"confidence\": \"weak\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"var app_unique_val_s = 'wpv1jq9xwanbn3n';\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/dropbox_app_secret\",\n                \"info\": \"FILE:./tests/samples/dropbox_app_secret|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"wpv1jq9xwanbn3n\",\n                \"value_start\": 24,\n                \"value_end\": 39,\n                \"entropy\": 3.45656\n            }\n        ]\n    },\n    {\n        \"rule\": \"Dropbox OAuth2 API Access Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"sl.BdmpmC82mhhySscKk2oQGyE5l--8LdAQftLTXVGQhP39Z8FtAK1BhePhyevurA-Elt7ToIr6OpwzKAYE7RBqpu6VVyQU5WlCTL_Q7N4gElXahaWou6aPpOIwgGCIOq9aeC3YFoc\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/dropbox_oauth_token\",\n                \"info\": \"FILE:./tests/samples/dropbox_oauth_token|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"sl.BdmpmC82mhhySscKk2oQGyE5l--8LdAQftLTXVGQhP39Z8FtAK1BhePhyevurA-Elt7ToIr6OpwzKAYE7RBqpu6VVyQU5WlCTL_Q7N4gElXahaWou6aPpOIwgGCIOq9aeC3YFoc\",\n                \"value_start\": 15,\n                \"value_end\": 153,\n                \"entropy\": 5.61894\n            }\n        ]\n    },\n    {\n        \"rule\": \"Dynatrace API Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"dt0c01.ST2EY72KQINMH574WMNVI7YN.G3DFPBEJYMOD1DAEX454M7YWBUVEFOWKPRVMWFASS64NFH52PX6BNDVFFM572RZM\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/dynatrace_api.hs\",\n                \"info\": \"FILE:./tests/samples/dynatrace_api.hs|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"dt0c01.ST2EY72KQINMH574WMNVI7YN.G3DFPBEJYMOD1DAEX454M7YWBUVEFOWKPRVMWFASS64NFH52PX6BNDVFFM572RZM\",\n                \"value_start\": 0,\n                \"value_end\": 96,\n                \"entropy\": 4.93241\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_CREDENTIALS\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.965,\n        \"line_data_list\": [\n            {\n                \"line\": \"# this is encrypted key that should be not found {\\\"secretKey\\\": \\\"ENC(2dfRFqV/cS6TzRd+JyO=)\\\"}\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/encrypted_credential\",\n                \"info\": \"FILE:./tests/samples/encrypted_credential|RAW\",\n                \"variable\": \"secretKey\",\n                \"variable_start\": 51,\n                \"variable_end\": 60,\n                \"value\": \"ENC(2dfRFqV/cS6TzRd+JyO=\",\n                \"value_start\": 64,\n                \"value_end\": 88,\n                \"entropy\": 4.4183\n            }\n        ]\n    },\n    {\n        \"rule\": \"Facebook Access Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"GI_REO_GI_FACEBOOK_TOKEN = \\\"EAACEb00Kse0BAlGy7KeQ5YnaCEd09Eose0cBAlGy7KeQ5Yna9CoDsup39tiYdoQ4jH9Coup39tiYdWoQ4jHFZD\\\"\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/facebook_key\",\n                \"info\": \"FILE:./tests/samples/facebook_key|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"EAACEb00Kse0BAlGy7KeQ5YnaCEd09Eose0cBAlGy7KeQ5Yna9CoDsup39tiYdoQ4jH9Coup39tiYdWoQ4jHFZD\",\n                \"value_start\": 28,\n                \"value_end\": 115,\n                \"entropy\": 4.93612\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_CREDENTIALS\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.975,\n        \"line_data_list\": [\n            {\n                \"line\": \"GI_REO_GI_FACEBOOK_TOKEN = \\\"EAACEb00Kse0BAlGy7KeQ5YnaCEd09Eose0cBAlGy7KeQ5Yna9CoDsup39tiYdoQ4jH9Coup39tiYdWoQ4jHFZD\\\"\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/facebook_key\",\n                \"info\": \"FILE:./tests/samples/facebook_key|RAW\",\n                \"variable\": \"GI_REO_GI_FACEBOOK_TOKEN\",\n                \"variable_start\": 0,\n                \"variable_end\": 24,\n                \"value\": \"EAACEb00Kse0BAlGy7KeQ5YnaCEd09Eose0cBAlGy7KeQ5Yna9CoDsup39tiYdoQ4jH9Coup39tiYdWoQ4jHFZD\",\n                \"value_start\": 28,\n                \"value_end\": 115,\n                \"entropy\": 4.93612\n            }\n        ]\n    },\n    {\n        \"rule\": \"Facebook App Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"1527194624358273|qbBf2-fdB9zZpqLA0_2nNzZDw2M\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/facebook_key\",\n                \"info\": \"FILE:./tests/samples/facebook_key|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"1527194624358273|qbBf2-fdB9zZpqLA0_2nNzZDw2M\",\n                \"value_start\": 0,\n                \"value_end\": 44,\n                \"entropy\": 4.60694\n            }\n        ]\n    },\n    {\n        \"rule\": \"Figma Personal Access Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"figd__fU7rxH-KUAmCv5vI78kKlnEF6bne_yvSvPLz3JO\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/figma\",\n                \"info\": \"FILE:./tests/samples/figma|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"figd__fU7rxH-KUAmCv5vI78kKlnEF6bne_yvSvPLz3JO\",\n                \"value_start\": 0,\n                \"value_end\": 45,\n                \"entropy\": 4.98619\n            }\n        ]\n    },\n    {\n        \"rule\": \"Figma Personal Access Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"figd_h65Ugiu76WD3xf233a6KAmo9ZmbWNnNrny9Q6IHl\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/figma\",\n                \"info\": \"FILE:./tests/samples/figma|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"figd_h65Ugiu76WD3xf233a6KAmo9ZmbWNnNrny9Q6IHl\",\n                \"value_start\": 0,\n                \"value_end\": 45,\n                \"entropy\": 4.85286\n            }\n        ]\n    },\n    {\n        \"rule\": \"Firebase Domain\",\n        \"severity\": \"info\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"test-app-domain-42.firebaseapp.com\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/firebase_domain\",\n                \"info\": \"FILE:./tests/samples/firebase_domain|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"test-app-domain-42.firebaseapp.com\",\n                \"value_start\": 0,\n                \"value_end\": 34,\n                \"entropy\": 3.98423\n            }\n        ]\n    },\n    {\n        \"rule\": \"Firebase Domain\",\n        \"severity\": \"info\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"test2.io.firebaseio.com\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/firebase_domain\",\n                \"info\": \"FILE:./tests/samples/firebase_domain|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"test2.io.firebaseio.com\",\n                \"value_start\": 0,\n                \"value_end\": 23,\n                \"entropy\": 3.52271\n            }\n        ]\n    },\n    {\n        \"rule\": \"Github Classic Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"ghp_00000000000000000000000000000004WZ4EQ # classic\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/github_classic_token\",\n                \"info\": \"FILE:./tests/samples/github_classic_token|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"ghp_00000000000000000000000000000004WZ4EQ\",\n                \"value_start\": 0,\n                \"value_end\": 41,\n                \"entropy\": 1.56292\n            }\n        ]\n    },\n    {\n        \"rule\": \"Github Fine-granted Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"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\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/github_fine_granted_token\",\n                \"info\": \"FILE:./tests/samples/github_fine_granted_token|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"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\",\n                \"value_start\": 0,\n                \"value_end\": 93,\n                \"entropy\": 5.41519\n            }\n        ]\n    },\n    {\n        \"rule\": \"Gitlab Prefix Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"glpat-8d5ri2n9g85LAnC9YW85.01.cgpAsnEmP # Personal access token, Impersonation token, Project access token, Group access token\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/gitlab_prefix_token\",\n                \"info\": \"FILE:./tests/samples/gitlab_prefix_token|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"glpat-8d5ri2n9g85LAnC9YW85.01.cgpAsnEmP\",\n                \"value_start\": 0,\n                \"value_end\": 39,\n                \"entropy\": 4.59259\n            }\n        ]\n    },\n    {\n        \"rule\": \"Gitlab Prefix Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"gloas-7fc1974b38580e6ceca8c077863cd5e88745895dfcbe1ae3c36eab9c498103dc # OAuth Application Secret\",\n                \"line_num\": 3,\n                \"path\": \"./tests/samples/gitlab_prefix_token\",\n                \"info\": \"FILE:./tests/samples/gitlab_prefix_token|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"gloas-7fc1974b38580e6ceca8c077863cd5e88745895dfcbe1ae3c36eab9c498103dc\",\n                \"value_start\": 0,\n                \"value_end\": 70,\n                \"entropy\": 4.0466\n            }\n        ]\n    },\n    {\n        \"rule\": \"Gitlab Prefix Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"gldt-9BeUoeWu2V9uUS3uLoMy # Deploy token\",\n                \"line_num\": 4,\n                \"path\": \"./tests/samples/gitlab_prefix_token\",\n                \"info\": \"FILE:./tests/samples/gitlab_prefix_token|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"gldt-9BeUoeWu2V9uUS3uLoMy\",\n                \"value_start\": 0,\n                \"value_end\": 25,\n                \"entropy\": 4.13366\n            }\n        ]\n    },\n    {\n        \"rule\": \"Gitlab Prefix Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"glrt-2CR8_eVxiio-1QmzPZwa # Runner authentication token\",\n                \"line_num\": 5,\n                \"path\": \"./tests/samples/gitlab_prefix_token\",\n                \"info\": \"FILE:./tests/samples/gitlab_prefix_token|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"glrt-2CR8_eVxiio-1QmzPZwa\",\n                \"value_start\": 0,\n                \"value_end\": 25,\n                \"entropy\": 4.48386\n            }\n        ]\n    },\n    {\n        \"rule\": \"Gitlab Prefix Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"glcbt-1375_cgpAsnEmP-79kcfRLyK_\",\n                \"line_num\": 6,\n                \"path\": \"./tests/samples/gitlab_prefix_token\",\n                \"info\": \"FILE:./tests/samples/gitlab_prefix_token|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"glcbt-1375_cgpAsnEmP-79kcfRLyK_\",\n                \"value_start\": 0,\n                \"value_end\": 31,\n                \"entropy\": 4.54275\n            }\n        ]\n    },\n    {\n        \"rule\": \"Gitlab Prefix Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"glcbt-0_c1k_AsgyRp4mP-Kcn8fL # CI/CD Job token\",\n                \"line_num\": 7,\n                \"path\": \"./tests/samples/gitlab_prefix_token\",\n                \"info\": \"FILE:./tests/samples/gitlab_prefix_token|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"glcbt-0_c1k_AsgyRp4mP-Kcn8fL\",\n                \"value_start\": 0,\n                \"value_end\": 28,\n                \"entropy\": 4.42325\n            }\n        ]\n    },\n    {\n        \"rule\": \"Gitlab Prefix Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"glptt-33276248c9748113e978392e5c074b7f974f8683 # Trigger token\",\n                \"line_num\": 8,\n                \"path\": \"./tests/samples/gitlab_prefix_token\",\n                \"info\": \"FILE:./tests/samples/gitlab_prefix_token|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"glptt-33276248c9748113e978392e5c074b7f974f8683\",\n                \"value_start\": 0,\n                \"value_end\": 46,\n                \"entropy\": 3.96956\n            }\n        ]\n    },\n    {\n        \"rule\": \"Gitlab Prefix Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"glft-Aafqn5A31G-2VipZMh28 # Feed token\",\n                \"line_num\": 9,\n                \"path\": \"./tests/samples/gitlab_prefix_token\",\n                \"info\": \"FILE:./tests/samples/gitlab_prefix_token|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"glft-Aafqn5A31G-2VipZMh28\",\n                \"value_start\": 0,\n                \"value_end\": 25,\n                \"entropy\": 4.32386\n            }\n        ]\n    },\n    {\n        \"rule\": \"Gitlab Prefix Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"glimt-1jpqzsnw2n71om0r9kgt06os3 # Incoming mail token\",\n                \"line_num\": 10,\n                \"path\": \"./tests/samples/gitlab_prefix_token\",\n                \"info\": \"FILE:./tests/samples/gitlab_prefix_token|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"glimt-1jpqzsnw2n71om0r9kgt06os3\",\n                \"value_start\": 0,\n                \"value_end\": 31,\n                \"entropy\": 4.43807\n            }\n        ]\n    },\n    {\n        \"rule\": \"Gitlab Prefix Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"glagent-ZQmgbRr-Ydu5YehnXCGiiSLxjd53EkFnYapS7A4TwyNE8Y2XVg # GitLab agent for Kubernetes token\",\n                \"line_num\": 11,\n                \"path\": \"./tests/samples/gitlab_prefix_token\",\n                \"info\": \"FILE:./tests/samples/gitlab_prefix_token|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"glagent-ZQmgbRr-Ydu5YehnXCGiiSLxjd53EkFnYapS7A4TwyNE8Y2XVg\",\n                \"value_start\": 0,\n                \"value_end\": 58,\n                \"entropy\": 5.18979\n            }\n        ]\n    },\n    {\n        \"rule\": \"Gitlab Prefix Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"_gitlab_session=8d2a78c080a3af1e6a4677be474432f2 # GitLab session cookies\",\n                \"line_num\": 12,\n                \"path\": \"./tests/samples/gitlab_prefix_token\",\n                \"info\": \"FILE:./tests/samples/gitlab_prefix_token|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"_gitlab_session=8d2a78c080a3af1e6a4677be474432f2\",\n                \"value_start\": 0,\n                \"value_end\": 48,\n                \"entropy\": 4.32185\n            }\n        ]\n    },\n    {\n        \"rule\": \"Gitlab Prefix Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"glsoat-971om0ecn5A386r9k481 # SCIM Tokens\",\n                \"line_num\": 13,\n                \"path\": \"./tests/samples/gitlab_prefix_token\",\n                \"info\": \"FILE:./tests/samples/gitlab_prefix_token|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"glsoat-971om0ecn5A386r9k481\",\n                \"value_start\": 0,\n                \"value_end\": 27,\n                \"entropy\": 4.45859\n            }\n        ]\n    },\n    {\n        \"rule\": \"Gitlab Prefix Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"glffct-AnRWYdo3Si_Xm2Q6n7zu # Feature Flags Client token\",\n                \"line_num\": 14,\n                \"path\": \"./tests/samples/gitlab_prefix_token\",\n                \"info\": \"FILE:./tests/samples/gitlab_prefix_token|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"glffct-AnRWYdo3Si_Xm2Q6n7zu\",\n                \"value_start\": 0,\n                \"value_end\": 27,\n                \"entropy\": 4.60674\n            }\n        ]\n    },\n    {\n        \"rule\": \"Gitlab Prefix Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"glrtr-KZX7Mizo7RYFKh2JScz6aeqZ3WG8nxujE21QpZVIr # Registration runner token\",\n                \"line_num\": 15,\n                \"path\": \"./tests/samples/gitlab_prefix_token\",\n                \"info\": \"FILE:./tests/samples/gitlab_prefix_token|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"glrtr-KZX7Mizo7RYFKh2JScz6aeqZ3WG8nxujE21QpZVIr\",\n                \"value_start\": 0,\n                \"value_end\": 47,\n                \"entropy\": 5.18204\n            }\n        ]\n    },\n    {\n        \"rule\": \"Gitlab Prefix Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"glwt-G9dr9LJjGiSfBdxzDVyHi7vSdDcAftOmJ # Workspace token\",\n                \"line_num\": 16,\n                \"path\": \"./tests/samples/gitlab_prefix_token\",\n                \"info\": \"FILE:./tests/samples/gitlab_prefix_token|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"glwt-G9dr9LJjGiSfBdxzDVyHi7vSdDcAftOmJ\",\n                \"value_start\": 0,\n                \"value_end\": 38,\n                \"entropy\": 4.70175\n            }\n        ]\n    },\n    {\n        \"rule\": \"Gitlab Prefix Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"GR1348941jG6xeSsmN8DFVKoyBYu2 # Runner registration token\",\n                \"line_num\": 18,\n                \"path\": \"./tests/samples/gitlab_prefix_token\",\n                \"info\": \"FILE:./tests/samples/gitlab_prefix_token|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"GR1348941jG6xeSsmN8DFVKoyBYu2\",\n                \"value_start\": 0,\n                \"value_end\": 29,\n                \"entropy\": 4.58212\n            }\n        ]\n    },\n    {\n        \"rule\": \"Google API Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"AIzaGiReoG-Cr0ckleCr0ckle12315618_12315 # Google API Key\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/google_creds\",\n                \"info\": \"FILE:./tests/samples/google_creds|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"AIzaGiReoG-Cr0ckleCr0ckle12315618_12315\",\n                \"value_start\": 0,\n                \"value_end\": 39,\n                \"entropy\": 4.35298\n            }\n        ]\n    },\n    {\n        \"rule\": \"Google OAuth Secret\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"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 # Google OAuth Secret\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/google_creds\",\n                \"info\": \"FILE:./tests/samples/google_creds|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"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\",\n                \"value_start\": 0,\n                \"value_end\": 35,\n                \"entropy\": 4.67214\n            }\n        ]\n    },\n    {\n        \"rule\": \"Google OAuth Access Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"ya29.zmZDrADaFxE_IS6fl4sbDxCpH-ltO2BoHEwXOglsXbgd_S # Google OAuth Access Token\",\n                \"line_num\": 3,\n                \"path\": \"./tests/samples/google_creds\",\n                \"info\": \"FILE:./tests/samples/google_creds|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"ya29.zmZDrADaFxE_IS6fl4sbDxCpH-ltO2BoHEwXOglsXbgd_S\",\n                \"value_start\": 0,\n                \"value_end\": 51,\n                \"entropy\": 5.01537\n            }\n        ]\n    },\n    {\n        \"rule\": \"Google OAuth Refresh Token\",\n        \"severity\": \"medium\",\n        \"confidence\": \"weak\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"1//0T4eRe15N0tT4Et0kEHY0U4Rel0Ok1ng4-hPyg7SWC7tZ1WE5vZvtCwqrJF9rLsyiKFeDGT_0ZHafDhc4-Y2qij02mClU1InwQ_ # Google OAuth Refresh To\",\n                \"line_num\": 4,\n                \"path\": \"./tests/samples/google_creds\",\n                \"info\": \"FILE:./tests/samples/google_creds|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"1//0T4eRe15N0tT4Et0kEHY0U4Rel0Ok1ng4-hPyg7SWC7tZ1WE5vZvtCwqrJF9rLsyiKFeDGT_0ZHafDhc4-Y2qij02mClU1InwQ_\",\n                \"value_start\": 0,\n                \"value_end\": 102,\n                \"entropy\": 5.43821\n            }\n        ]\n    },\n    {\n        \"rule\": \"Google Multi\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"194206074328-qp89pdv6fi35vsi71258g1eh31q6h7c3.apps.googleusercontent.com\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/google_multi\",\n                \"info\": \"FILE:./tests/samples/google_multi|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"194206074328-qp89pdv6fi35vsi71258g1eh31q6h7c3.apps.googleusercontent.com\",\n                \"value_start\": 0,\n                \"value_end\": 72,\n                \"entropy\": 4.80827\n            },\n            {\n                \"line\": \"4L2QMyTm6Rr0o46ytGiReoG1\",\n                \"line_num\": 4,\n                \"path\": \"./tests/samples/google_multi\",\n                \"info\": \"FILE:./tests/samples/google_multi|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"4L2QMyTm6Rr0o46ytGiReoG1\",\n                \"value_start\": 0,\n                \"value_end\": 24,\n                \"entropy\": 4.08496\n            }\n        ]\n    },\n    {\n        \"rule\": \"Google Multi\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"\\\"id\\\":\\\"194206074328-qdv6fi3eh31q6h7c35vsi7p89p1258g1.apps.googleusercontent.com\\\",\\\"CEKPET\\\":\\\"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\\\",\",\n                \"line_num\": 18,\n                \"path\": \"./tests/samples/google_multi\",\n                \"info\": \"FILE:./tests/samples/google_multi|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"194206074328-qdv6fi3eh31q6h7c35vsi7p89p1258g1.apps.googleusercontent.com\",\n                \"value_start\": 6,\n                \"value_end\": 78,\n                \"entropy\": 4.80827\n            },\n            {\n                \"line\": \"\\\"id\\\":\\\"194206074328-qdv6fi3eh31q6h7c35vsi7p89p1258g1.apps.googleusercontent.com\\\",\\\"CEKPET\\\":\\\"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\\\",\",\n                \"line_num\": 18,\n                \"path\": \"./tests/samples/google_multi\",\n                \"info\": \"FILE:./tests/samples/google_multi|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"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\",\n                \"value_start\": 90,\n                \"value_end\": 125,\n                \"entropy\": 4.67214\n            }\n        ]\n    },\n    {\n        \"rule\": \"Google OAuth Secret\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"\\\"id\\\":\\\"194206074328-qdv6fi3eh31q6h7c35vsi7p89p1258g1.apps.googleusercontent.com\\\",\\\"CEKPET\\\":\\\"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\\\",\",\n                \"line_num\": 18,\n                \"path\": \"./tests/samples/google_multi\",\n                \"info\": \"FILE:./tests/samples/google_multi|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"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\",\n                \"value_start\": 90,\n                \"value_end\": 125,\n                \"entropy\": 4.67214\n            }\n        ]\n    },\n    {\n        \"rule\": \"Grafana Access Policy Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"fana_policy = 'glc_eyJvIjoiMjA0NjMwIiwibiI6InRlc3QtdG9rZW4iLCJrIjoidklnbjJ2WHc5MTVXOWtNOWxsNHcyZHEyIiwibSI6eyJyIjoicHJvZC0wIn19'\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/grafana_access_policy_token\",\n                \"info\": \"FILE:./tests/samples/grafana_access_policy_token|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"glc_eyJvIjoiMjA0NjMwIiwibiI6InRlc3QtdG9rZW4iLCJrIjoidklnbjJ2WHc5MTVXOWtNOWxsNHcyZHEyIiwibSI6eyJyIjoicHJvZC0wIn19\",\n                \"value_start\": 18,\n                \"value_end\": 130,\n                \"entropy\": 5.15841\n            }\n        ]\n    },\n    {\n        \"rule\": \"Grafana Provisioned API Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"grafana = 'eyJrIjoiMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCIsIm4iOiJ4eHh4IiwiaWQiOjIwNDM2MH0='\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/grafana_provisioned_api_key\",\n                \"info\": \"FILE:./tests/samples/grafana_provisioned_api_key|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"eyJrIjoiMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCIsIm4iOiJ4eHh4IiwiaWQiOjIwNDM2MH0=\",\n                \"value_start\": 11,\n                \"value_end\": 107,\n                \"entropy\": 3.81531\n            }\n        ]\n    },\n    {\n        \"rule\": \"Grafana Service Account Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"glsa_ThisI5NtTheTok3nYou8reLo0k1ngF0r_0a2a3df7\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/grafana_service_accounts\",\n                \"info\": \"FILE:./tests/samples/grafana_service_accounts|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"glsa_ThisI5NtTheTok3nYou8reLo0k1ngF0r_0a2a3df7\",\n                \"value_start\": 0,\n                \"value_end\": 46,\n                \"entropy\": 4.71879\n            }\n        ]\n    },\n    {\n        \"rule\": \"Groq API Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"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\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/groq_api_key\",\n                \"info\": \"FILE:./tests/samples/groq_api_key|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"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\",\n                \"value_start\": 0,\n                \"value_end\": 56,\n                \"entropy\": 5.01691\n            }\n        ]\n    },\n    {\n        \"rule\": \"Groq API Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"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\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/groq_api_key\",\n                \"info\": \"FILE:./tests/samples/groq_api_key|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"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\",\n                \"value_start\": 0,\n                \"value_end\": 56,\n                \"entropy\": 5.02567\n            }\n        ]\n    },\n    {\n        \"rule\": \"Groq API Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"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\",\n                \"line_num\": 3,\n                \"path\": \"./tests/samples/groq_api_key\",\n                \"info\": \"FILE:./tests/samples/groq_api_key|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"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\",\n                \"value_start\": 0,\n                \"value_end\": 56,\n                \"entropy\": 5.02567\n            }\n        ]\n    },\n    {\n        \"rule\": \"Hashicorp Terraform Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"Z28P3STmkBQi1Y.atlasv1.YE7RBqu6VVyQIOq9a1eC3YFU5Elt7ToIr6OwzKAWlCTQ7N4gElXaWou6aPpOIwGCoc0\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/hashicorp\",\n                \"info\": \"FILE:./tests/samples/hashicorp|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"Z28P3STmkBQi1Y.atlasv1.YE7RBqu6VVyQIOq9a1eC3YFU5Elt7ToIr6OwzKAWlCTQ7N4gElXaWou6aPpOIwGCoc0\",\n                \"value_start\": 0,\n                \"value_end\": 90,\n                \"entropy\": 5.47059\n            }\n        ]\n    },\n    {\n        \"rule\": \"Hashicorp Vault Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"hvs.atlasv1-Z28P3STmkBQi1Y-YE7RBqu6VVyQIOq9a1eC3YFU5Elt7ToIr6OwzKAWlCTQ7N4gElXaWou6aPpOIwGCoc0\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/hashicorp\",\n                \"info\": \"FILE:./tests/samples/hashicorp|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"hvs.atlasv1-Z28P3STmkBQi1Y-YE7RBqu6VVyQIOq9a1eC3YFU5Elt7ToIr6OwzKAWlCTQ7N4gElXaWou6aPpOIwGCoc0\",\n                \"value_start\": 0,\n                \"value_end\": 94,\n                \"entropy\": 5.53423\n            }\n        ]\n    },\n    {\n        \"rule\": \"Heroku Credentials\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"HRKU-RAjCYR7Mai1JAIhHASD6ITENvdVydAPCnNcAlrMrTLozPkj9_BGqh1J5P4Wf\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/heroku\",\n                \"info\": \"FILE:./tests/samples/heroku|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"HRKU-RAjCYR7Mai1JAIhHASD6ITENvdVydAPCnNcAlrMrTLozPkj9_BGqh1J5P4Wf\",\n                \"value_start\": 0,\n                \"value_end\": 65,\n                \"entropy\": 5.32822\n            }\n        ]\n    },\n    {\n        \"rule\": \"Heroku Credentials\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"HRKU-f1274537-88fb-deaf-beda-453bd9a496ef\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/heroku\",\n                \"info\": \"FILE:./tests/samples/heroku|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"HRKU-f1274537-88fb-deaf-beda-453bd9a496ef\",\n                \"value_start\": 0,\n                \"value_end\": 41,\n                \"entropy\": 4.0555\n            }\n        ]\n    },\n    {\n        \"rule\": \"Hugging Face User Access Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"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\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/huggingface\",\n                \"info\": \"FILE:./tests/samples/huggingface|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"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\",\n                \"value_start\": 0,\n                \"value_end\": 37,\n                \"entropy\": 4.70256\n            }\n        ]\n    },\n    {\n        \"rule\": \"Hugging Face User Access Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"url/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/part\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/huggingface\",\n                \"info\": \"FILE:./tests/samples/huggingface|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"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\",\n                \"value_start\": 4,\n                \"value_end\": 41,\n                \"entropy\": 4.77702\n            }\n        ]\n    },\n    {\n        \"rule\": \"Hugging Face User Access Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"hf_UdYjVqYvybBLEhIrwwEUYjOgkeyexample\",\n                \"line_num\": 6,\n                \"path\": \"./tests/samples/huggingface\",\n                \"info\": \"FILE:./tests/samples/huggingface|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"hf_UdYjVqYvybBLEhIrwwEUYjOgkeyexample\",\n                \"value_start\": 0,\n                \"value_end\": 37,\n                \"entropy\": 4.62811\n            }\n        ]\n    },\n    {\n        \"rule\": \"Instagram Access Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"IGQVJWS3pUNmZA2MUJDVlRwLW9ac1lrU05nZAmpzWHQtWHFJSEFRMF9tWVpRdEd70HQ5Wk8wSnY0R0VEQnVQdUU0MnpxNWxocUYyNmZAXSTUtVVNrMmh1ZAHZAQQno2ZA0VHR0lLWkk1N1R5RDFvM0dmVEpIYQZGZX\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/instagram_access_token\",\n                \"info\": \"FILE:./tests/samples/instagram_access_token|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"IGQVJWS3pUNmZA2MUJDVlRwLW9ac1lrU05nZAmpzWHQtWHFJSEFRMF9tWVpRdEd70HQ5Wk8wSnY0R0VEQnVQdUU0MnpxNWxocUYyNmZAXSTUtVVNrMmh1ZAHZAQQno2ZA0VHR0lLWkk1N1R5RDFvM0dmVEpIYQZGZX\",\n                \"value_start\": 0,\n                \"value_end\": 162,\n                \"entropy\": 5.23164\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_CREDENTIALS\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.962,\n        \"line_data_list\": [\n            {\n                \"line\": \"+  \\\"password\\\": \\\"dkajco1\\\"\",\n                \"line_num\": 10,\n                \"path\": \"./tests/samples/iso_ir_111.patch\",\n                \"info\": \"FILE:./tests/samples/iso_ir_111.patch|RAW\",\n                \"variable\": \"password\",\n                \"variable_start\": 4,\n                \"variable_end\": 12,\n                \"value\": \"dkajco1\",\n                \"value_start\": 16,\n                \"value_end\": 23,\n                \"entropy\": 2.80735\n            }\n        ]\n    },\n    {\n        \"rule\": \"Jfrog Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"cmVmdGtuOjAxOjAxMjM0NTY3ODk6QWJjZGVmR2hpamtsbW5vUHFyc3R1dnd4eXow\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/jfrog_p\",\n                \"info\": \"FILE:./tests/samples/jfrog_p|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"cmVmdGtuOjAxOjAxMjM0NTY3ODk6QWJjZGVmR2hpamtsbW5vUHFyc3R1dnd4eXow\",\n                \"value_start\": 0,\n                \"value_end\": 64,\n                \"entropy\": 5.28891\n            }\n        ]\n    },\n    {\n        \"rule\": \"Jfrog Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"AKCp2UNCd8uK7hQoxZnFE4PGtRHnAcBHr43HgLcj7nJmWb4JhVUqBwa2iwXszftnogpo2EVFa\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/jfrog_p\",\n                \"info\": \"FILE:./tests/samples/jfrog_p|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"AKCp2UNCd8uK7hQoxZnFE4PGtRHnAcBHr43HgLcj7nJmWb4JhVUqBwa2iwXszftnogpo2EVFa\",\n                \"value_start\": 0,\n                \"value_end\": 73,\n                \"entropy\": 5.35394\n            }\n        ]\n    },\n    {\n        \"rule\": \"Jira / Confluence PAT token\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"TP: https://www.example.com/api/verification/version2322/token/OTI2NjA3NjU1NTI2Oh2DOnASdOHoIhEGyqIuYrdkYaQZ\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/jira_confluence_pat\",\n                \"info\": \"FILE:./tests/samples/jira_confluence_pat|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"OTI2NjA3NjU1NTI2Oh2DOnASdOHoIhEGyqIuYrdkYaQZ\",\n                \"value_start\": 63,\n                \"value_end\": 107,\n                \"entropy\": 4.60694\n            }\n        ]\n    },\n    {\n        \"rule\": \"Jira / Confluence PAT token\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"9VIskhxhCe7sh03R1dnENPiB66xQSIZjEYN13vafX/OTI2NjA3NjU1NTI2Oh2DOnASdOHoIhEGyqIuYrdkYaQZ/hZwUteHsmN+z+aoEAAAAvL+Q5FSQGyqIuYrdkYaQZ\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/jira_confluence_pat\",\n                \"info\": \"FILE:./tests/samples/jira_confluence_pat|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"OTI2NjA3NjU1NTI2Oh2DOnASdOHoIhEGyqIuYrdkYaQZ\",\n                \"value_start\": 67,\n                \"value_end\": 111,\n                \"entropy\": 4.60694\n            }\n        ]\n    },\n    {\n        \"rule\": \"JSON Web Key\",\n        \"severity\": \"medium\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"WwogICAgewogICAgICAgICJrdHkiOiAiRUMiLAogICAgICAgICJkIjogInNsYVFxeUhRUHVkT3BxMm1iRHNrdW04ck91OUlNa0xHaklOQUZXd2Zxci0iCiAgICB9LAogICAgewogICAgICAgICJrdHkiOiAiUlNBIiwKICAgICAgICAiZCI6ICItcGhaOE40R3V3WmNoeTdGQ01CMTRJQTM1ZEJVM3NXeTJPUnh3V044UGJLcUtPa1piOG1oNHZfZ1Fnd2c3ajE2dVNkOTFDT0JOUEdIMGhOemFIMmpPWSIKICAgIH0sCiAgICB7CiAgICAgICAgImt0eSI6ICJvY3QiLAogICAgICAgICJrIjogIldyTXdRZm9OYUhUZ1hVNWZadlJHQUQiCiAgICB9Cl0\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/json_web_key\",\n                \"info\": \"FILE:./tests/samples/json_web_key|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"WwogICAgewogICAgICAgICJrdHkiOiAiRUMiLAogICAgICAgICJkIjogInNsYVFxeUhRUHVkT3BxMm1iRHNrdW04ck91OUlNa0xHaklOQUZXd2Zxci0iCiAgICB9LAogICAgewogICAgICAgICJrdHkiOiAiUlNBIiwKICAgICAgICAiZCI6ICItcGhaOE40R3V3WmNoeTdGQ01CMTRJQTM1ZEJVM3NXeTJPUnh3V044UGJLcUtPa1piOG1oNHZfZ1Fnd2c3ajE2dVNkOTFDT0JOUEdIMGhOemFIMmpPWSIKICAgIH0sCiAgICB7CiAgICAgICAgImt0eSI6ICJvY3QiLAogICAgICAgICJrIjogIldyTXdRZm9OYUhUZ1hVNWZadlJHQUQiCiAgICB9Cl0\",\n                \"value_start\": 0,\n                \"value_end\": 407,\n                \"entropy\": 5.27189\n            }\n        ]\n    },\n    {\n        \"rule\": \"JSON Web Token\",\n        \"severity\": \"medium\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"detected: eyJhbGciOiJSUzI1NiJ9Cg.eyJleHAiOjY1NTM2fQo.Ce7sh0ENPiBlE_dose0cBA\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/json_web_token\",\n                \"info\": \"FILE:./tests/samples/json_web_token|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"eyJhbGciOiJSUzI1NiJ9Cg.eyJleHAiOjY1NTM2fQo.Ce7sh0ENPiBlE_dose0cBA\",\n                \"value_start\": 10,\n                \"value_end\": 75,\n                \"entropy\": 5.03815\n            }\n        ]\n    },\n    {\n        \"rule\": \"JWK\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"\\\"kty\\\": \\\"[EC]\\\",\",\n                \"line_num\": 3,\n                \"path\": \"./tests/samples/jwk.json\",\n                \"info\": \"FILE:./tests/samples/jwk.json|RAW\",\n                \"variable\": \"kty\",\n                \"variable_start\": 9,\n                \"variable_end\": 12,\n                \"value\": \"\\\"kty\\\": \\\"[EC\",\n                \"value_start\": 8,\n                \"value_end\": 19,\n                \"entropy\": 3.02717\n            },\n            {\n                \"line\": \"\\\"d\\\": \\\"slaQqyHQPudOpq2mbDskum8rOu9IMkLGjINAFWwfqr-\\\"\",\n                \"line_num\": 4,\n                \"path\": \"./tests/samples/jwk.json\",\n                \"info\": \"FILE:./tests/samples/jwk.json|RAW\",\n                \"variable\": \"d\",\n                \"variable_start\": 9,\n                \"variable_end\": 10,\n                \"value\": \"slaQqyHQPudOpq2mbDskum8rOu9IMkLGjINAFWwfqr-\",\n                \"value_start\": 14,\n                \"value_end\": 57,\n                \"entropy\": 4.87953\n            }\n        ]\n    },\n    {\n        \"rule\": \"JWK\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"\\\"kty\\\": \\\"RSA\\\",\",\n                \"line_num\": 7,\n                \"path\": \"./tests/samples/jwk.json\",\n                \"info\": \"FILE:./tests/samples/jwk.json|RAW\",\n                \"variable\": \"kty\",\n                \"variable_start\": 9,\n                \"variable_end\": 12,\n                \"value\": \"\\\"kty\\\": \\\"RSA\\\"\",\n                \"value_start\": 8,\n                \"value_end\": 20,\n                \"entropy\": 2.9183\n            },\n            {\n                \"line\": \"\\\"d\\\": \\\"-phZ8N4GuwZchy7FCMB14IA35dBU3sWy2ORxwWN8PbKqKOkZb8mh4v_gQgwg7j16uSd91COBNPGH0hNzaH2jOY\\\"\",\n                \"line_num\": 10,\n                \"path\": \"./tests/samples/jwk.json\",\n                \"info\": \"FILE:./tests/samples/jwk.json|RAW\",\n                \"variable\": \"d\",\n                \"variable_start\": 9,\n                \"variable_end\": 10,\n                \"value\": \"-phZ8N4GuwZchy7FCMB14IA35dBU3sWy2ORxwWN8PbKqKOkZb8mh4v_gQgwg7j16uSd91COBNPGH0hNzaH2jOY\",\n                \"value_start\": 14,\n                \"value_end\": 100,\n                \"entropy\": 5.43459\n            }\n        ]\n    },\n    {\n        \"rule\": \"JWK\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"\\\"kty\\\": \\\"oct\\\",\",\n                \"line_num\": 13,\n                \"path\": \"./tests/samples/jwk.json\",\n                \"info\": \"FILE:./tests/samples/jwk.json|RAW\",\n                \"variable\": \"kty\",\n                \"variable_start\": 9,\n                \"variable_end\": 12,\n                \"value\": \"\\\"kty\\\": \\\"oct\\\"\",\n                \"value_start\": 8,\n                \"value_end\": 20,\n                \"entropy\": 2.75163\n            },\n            {\n                \"line\": \"\\\"k\\\": \\\"WrMwQfoNaHTgXU5fZvRGAD\\\"\",\n                \"line_num\": 16,\n                \"path\": \"./tests/samples/jwk.json\",\n                \"info\": \"FILE:./tests/samples/jwk.json|RAW\",\n                \"variable\": \"k\",\n                \"variable_start\": 9,\n                \"variable_end\": 10,\n                \"value\": \"WrMwQfoNaHTgXU5fZvRGAD\",\n                \"value_start\": 14,\n                \"value_end\": 36,\n                \"entropy\": 4.36852\n            }\n        ]\n    },\n    {\n        \"rule\": \"PEM Private Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"var PKEY = `-----BEGIN OPENSSH PRIVATE KEY-----\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/key.go\",\n                \"info\": \"FILE:./tests/samples/key.go|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"-----BEGIN OPENSSH PRIVATE KEY-----\",\n                \"value_start\": 12,\n                \"value_end\": 47,\n                \"entropy\": 3.58716\n            },\n            {\n                \"line\": \"b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAAAMwAAAAtzc2gtZWQyNTUx\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/key.go\",\n                \"info\": \"FILE:./tests/samples/key.go|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAAAMwAAAAtzc2gtZWQyNTUx\",\n                \"value_start\": 0,\n                \"value_end\": 76,\n                \"entropy\": 4.18903\n            },\n            {\n                \"line\": \"OQAAABWHkoN5N0V0OCSXOHWSOHAxRYMJSGc4clgVA0gJgFlIBAAAAJimRM7VpkTO1QAAAAtzc2gt\",\n                \"line_num\": 3,\n                \"path\": \"./tests/samples/key.go\",\n                \"info\": \"FILE:./tests/samples/key.go|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"OQAAABWHkoN5N0V0OCSXOHWSOHAxRYMJSGc4clgVA0gJgFlIBAAAAJimRM7VpkTO1QAAAAtzc2gt\",\n                \"value_start\": 0,\n                \"value_end\": 76,\n                \"entropy\": 4.74471\n            },\n            {\n                \"line\": \"ZWQyNTUxOQAAACBqIPMG94HL7zedFzsvi45mHS8ZuyLQXqvHpHobcdNCJAAAAFRoZXJlXzE1LU4w\",\n                \"line_num\": 4,\n                \"path\": \"./tests/samples/key.go\",\n                \"info\": \"FILE:./tests/samples/key.go|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"ZWQyNTUxOQAAACBqIPMG94HL7zedFzsvi45mHS8ZuyLQXqvHpHobcdNCJAAAAFRoZXJlXzE1LU4w\",\n                \"value_start\": 0,\n                \"value_end\": 76,\n                \"entropy\": 5.24555\n            },\n            {\n                \"line\": \"dF9UaGVLZXlZb3VBcmVMb29raW5nRm9S8wb3Mj0tZT1hc3A7ZHprejsuZm5tbmRmbmVuZm5pAAAA\",\n                \"line_num\": 5,\n                \"path\": \"./tests/samples/key.go\",\n                \"info\": \"FILE:./tests/samples/key.go|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"dF9UaGVLZXlZb3VBcmVMb29raW5nRm9S8wb3Mj0tZT1hc3A7ZHprejsuZm5tbmRmbmVuZm5pAAAA\",\n                \"value_start\": 0,\n                \"value_end\": 76,\n                \"entropy\": 4.94996\n            },\n            {\n                \"line\": \"EXRpemVuQGNyZWRzd2VlcGVyAQIDBA==\",\n                \"line_num\": 6,\n                \"path\": \"./tests/samples/key.go\",\n                \"info\": \"FILE:./tests/samples/key.go|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"EXRpemVuQGNyZWRzd2VlcGVyAQIDBA==\",\n                \"value_start\": 0,\n                \"value_end\": 32,\n                \"entropy\": 4.47641\n            },\n            {\n                \"line\": \"-----END OPENSSH PRIVATE KEY-----\",\n                \"line_num\": 7,\n                \"path\": \"./tests/samples/key.go\",\n                \"info\": \"FILE:./tests/samples/key.go|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"-----END OPENSSH PRIVATE KEY-----\",\n                \"value_start\": 0,\n                \"value_end\": 33,\n                \"entropy\": 3.46942\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_CREDENTIALS\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"$key = 'gmUGWxhQW9KQWdhd0lCQVFRZ0ViVnpwrLzZYdDJPNG1PQjYxMXNPaFJ1\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/key.php\",\n                \"info\": \"FILE:./tests/samples/key.php|RAW\",\n                \"variable\": \"key\",\n                \"variable_start\": 1,\n                \"variable_end\": 4,\n                \"value\": \"gmUGWxhQW9KQWdhd0lCQVFRZ0ViVnpwrLzZYdDJPNG1PQjYxMXNPaFJ1\",\n                \"value_start\": 8,\n                \"value_end\": 64,\n                \"entropy\": 4.96772\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_CREDENTIALS\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.776,\n        \"line_data_list\": [\n            {\n                \"line\": \"pkey = (\\\"LS0tLS1CRUdJTiBQUklWQVRFIENDcUdTTTQ5QXdFSEJHMHdhd0lCQVFRZ0ViVn\\\"\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/key.py\",\n                \"info\": \"FILE:./tests/samples/key.py|RAW\",\n                \"variable\": \"pkey\",\n                \"variable_start\": 0,\n                \"variable_end\": 4,\n                \"value\": \"(\\\"LS0tLS1CRUdJTiBQUklWQVRFIENDcUdTTTQ5QXdFSEJHMHdhd0lCQVFRZ0ViVn\\\"\",\n                \"value_start\": 7,\n                \"value_end\": 72,\n                \"entropy\": 4.80708\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_CREDENTIALS\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"print(\\\"https://example.com/api/js?key=dhd0lCQVFRZ0ViVnpmUGWxhQW9KQWwrLzZYdDJPNG1PQjYxMXNPaFJB&bug=true\\\")\",\n                \"line_num\": 7,\n                \"path\": \"./tests/samples/key.py\",\n                \"info\": \"FILE:./tests/samples/key.py|RAW\",\n                \"variable\": \"key\",\n                \"variable_start\": 34,\n                \"variable_end\": 37,\n                \"value\": \"dhd0lCQVFRZ0ViVnpmUGWxhQW9KQWwrLzZYdDJPNG1PQjYxMXNPaFJB\",\n                \"value_start\": 38,\n                \"value_end\": 93,\n                \"entropy\": 4.96282\n            }\n        ]\n    },\n    {\n        \"rule\": \"SECRET_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"print(\\\"https://example.com/api/js?key=dhd0lCQVFRZ0ViVnpmUGWxhQW9KQWwrLzZYdDJPNG1PQjYxMXNPaFJB&bug=true\\\")\",\n                \"line_num\": 7,\n                \"path\": \"./tests/samples/key.py\",\n                \"info\": \"FILE:./tests/samples/key.py|RAW\",\n                \"variable\": \"key\",\n                \"variable_start\": 34,\n                \"variable_end\": 37,\n                \"value\": \"dhd0lCQVFRZ0ViVnpmUGWxhQW9KQWwrLzZYdDJPNG1PQjYxMXNPaFJB\",\n                \"value_start\": 38,\n                \"value_end\": 93,\n                \"entropy\": 4.96282\n            }\n        ]\n    },\n    {\n        \"rule\": \"PEM Private Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"PKEY = \\\"\\\"\\\"-----BEGIN OPENSSH PRIVATE KEY-----\",\n                \"line_num\": 9,\n                \"path\": \"./tests/samples/key.py\",\n                \"info\": \"FILE:./tests/samples/key.py|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"-----BEGIN OPENSSH PRIVATE KEY-----\",\n                \"value_start\": 10,\n                \"value_end\": 45,\n                \"entropy\": 3.58716\n            },\n            {\n                \"line\": \"b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAAAMwAAAAtzc2gtZWQyNTUx\",\n                \"line_num\": 10,\n                \"path\": \"./tests/samples/key.py\",\n                \"info\": \"FILE:./tests/samples/key.py|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAAAMwAAAAtzc2gtZWQyNTUx\",\n                \"value_start\": 0,\n                \"value_end\": 76,\n                \"entropy\": 4.18903\n            },\n            {\n                \"line\": \"OQAAABWHkoN5N0V0OCSXOHWSOHAxRYMJSGc4clgVA0gJgFlIBAAAAJimRM7VpkTO1QAAAAtzc2gt\",\n                \"line_num\": 11,\n                \"path\": \"./tests/samples/key.py\",\n                \"info\": \"FILE:./tests/samples/key.py|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"OQAAABWHkoN5N0V0OCSXOHWSOHAxRYMJSGc4clgVA0gJgFlIBAAAAJimRM7VpkTO1QAAAAtzc2gt\",\n                \"value_start\": 0,\n                \"value_end\": 76,\n                \"entropy\": 4.74471\n            },\n            {\n                \"line\": \"ZWQyNTUxOQAAACBqIPMG94HL7zedFzsvi45mHS8ZuyLQXqvHpHobcdNCJAAAAFRoZXJlXzE1LU4w\",\n                \"line_num\": 12,\n                \"path\": \"./tests/samples/key.py\",\n                \"info\": \"FILE:./tests/samples/key.py|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"ZWQyNTUxOQAAACBqIPMG94HL7zedFzsvi45mHS8ZuyLQXqvHpHobcdNCJAAAAFRoZXJlXzE1LU4w\",\n                \"value_start\": 0,\n                \"value_end\": 76,\n                \"entropy\": 5.24555\n            },\n            {\n                \"line\": \"dF9UaGVLZXlZb3VBcmVMb29raW5nRm9S8wb3Mj0tZT1hc3A7ZHprejsuZm5tbmRmbmVuZm5pAAAA\",\n                \"line_num\": 13,\n                \"path\": \"./tests/samples/key.py\",\n                \"info\": \"FILE:./tests/samples/key.py|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"dF9UaGVLZXlZb3VBcmVMb29raW5nRm9S8wb3Mj0tZT1hc3A7ZHprejsuZm5tbmRmbmVuZm5pAAAA\",\n                \"value_start\": 0,\n                \"value_end\": 76,\n                \"entropy\": 4.94996\n            },\n            {\n                \"line\": \"EXRpemVuQGNyZWRzd2VlcGVyAQIDBA==\",\n                \"line_num\": 14,\n                \"path\": \"./tests/samples/key.py\",\n                \"info\": \"FILE:./tests/samples/key.py|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"EXRpemVuQGNyZWRzd2VlcGVyAQIDBA==\",\n                \"value_start\": 0,\n                \"value_end\": 32,\n                \"entropy\": 4.47641\n            },\n            {\n                \"line\": \"-----END OPENSSH PRIVATE KEY-----\\\"\\\"\\\"\",\n                \"line_num\": 15,\n                \"path\": \"./tests/samples/key.py\",\n                \"info\": \"FILE:./tests/samples/key.py|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"-----END OPENSSH PRIVATE KEY-----\",\n                \"value_start\": 0,\n                \"value_end\": 33,\n                \"entropy\": 3.46942\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_CREDENTIALS\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"\\\"key\\\": \\\"api_key\\\",\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/key_value.json\",\n                \"info\": \"FILE:./tests/samples/key_value.json|RAW\",\n                \"variable\": \"key\",\n                \"variable_start\": 5,\n                \"variable_end\": 8,\n                \"value\": \"api_key\",\n                \"value_start\": 12,\n                \"value_end\": 19,\n                \"entropy\": 2.80735\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_CREDENTIALS\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.433,\n        \"line_data_list\": [\n            {\n                \"line\": \"\\\"pass_mask32\\\": \\\"0x31c45018\\\",\",\n                \"line_num\": 7,\n                \"path\": \"./tests/samples/key_value.json\",\n                \"info\": \"FILE:./tests/samples/key_value.json|RAW\",\n                \"variable\": \"pass_mask32\",\n                \"variable_start\": 9,\n                \"variable_end\": 20,\n                \"value\": \"0x31c45018\",\n                \"value_start\": 24,\n                \"value_end\": 34,\n                \"entropy\": 2.92193\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_CREDENTIALS\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.529,\n        \"line_data_list\": [\n            {\n                \"line\": \"\\\"pass_mask64\\\": \\\"0x81103c1452dd61cd\\\",\",\n                \"line_num\": 8,\n                \"path\": \"./tests/samples/key_value.json\",\n                \"info\": \"FILE:./tests/samples/key_value.json|RAW\",\n                \"variable\": \"pass_mask64\",\n                \"variable_start\": 9,\n                \"variable_end\": 20,\n                \"value\": \"0x81103c1452dd61cd\",\n                \"value_start\": 24,\n                \"value_end\": 42,\n                \"entropy\": 3.2391\n            }\n        ]\n    },\n    {\n        \"rule\": \"LLAMA API Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"llx-gOpoyW2vlgfBcYEYlSu8x3Tk3lrtW1AWJU8nXQ6XOCZah4h1\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/llama\",\n                \"info\": \"FILE:./tests/samples/llama|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"llx-gOpoyW2vlgfBcYEYlSu8x3Tk3lrtW1AWJU8nXQ6XOCZah4h1\",\n                \"value_start\": 0,\n                \"value_end\": 52,\n                \"entropy\": 5.03958\n            }\n        ]\n    },\n    {\n        \"rule\": \"LLAMA API Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"llx-vYx_tfO1AgW73_hwAET-u7p7YVDTBERNn4ij4a8wrDrGM6RT\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/llama\",\n                \"info\": \"FILE:./tests/samples/llama|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"llx-vYx_tfO1AgW73_hwAET-u7p7YVDTBERNn4ij4a8wrDrGM6RT\",\n                \"value_start\": 0,\n                \"value_end\": 52,\n                \"entropy\": 5.05602\n            }\n        ]\n    },\n    {\n        \"rule\": \"MailChimp API Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"mailchimp = \\\"LRINSm5Vdi9BMCzCWSJ8M3TMysUHwDzB-us36\\\"\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/mailchimp_key\",\n                \"info\": \"FILE:./tests/samples/mailchimp_key|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"LRINSm5Vdi9BMCzCWSJ8M3TMysUHwDzB-us36\",\n                \"value_start\": 13,\n                \"value_end\": 50,\n                \"entropy\": 4.75662\n            }\n        ]\n    },\n    {\n        \"rule\": \"MailGun API Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"key-a25a4ac62a074cd52c668c6b9937cf40\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/mailgun\",\n                \"info\": \"FILE:./tests/samples/mailgun|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"key-a25a4ac62a074cd52c668c6b9937cf40\",\n                \"value_start\": 0,\n                \"value_end\": 36,\n                \"entropy\": 3.91661\n            }\n        ]\n    },\n    {\n        \"rule\": \"MailGun API Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"a25a4ac62a074cd52c668c6b9937cf40-432f2836-db15b420\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/mailgun\",\n                \"info\": \"FILE:./tests/samples/mailgun|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"a25a4ac62a074cd52c668c6b9937cf40-432f2836-db15b420\",\n                \"value_start\": 0,\n                \"value_end\": 50,\n                \"entropy\": 3.85669\n            }\n        ]\n    },\n    {\n        \"rule\": \"AWS Client ID\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"+  clid = \\\"AKIAQWADE5R42RDZ4JEM\\\"\",\n                \"line_num\": 45,\n                \"path\": \"./tests/samples/multifile.patch\",\n                \"info\": \"FILE:./tests/samples/multifile.patch|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"AKIAQWADE5R42RDZ4JEM\",\n                \"value_start\": 11,\n                \"value_end\": 31,\n                \"entropy\": 3.68418\n            }\n        ]\n    },\n    {\n        \"rule\": \"AWS Multi\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"+  clid = \\\"AKIAQWADE5R42RDZ4JEM\\\"\",\n                \"line_num\": 45,\n                \"path\": \"./tests/samples/multifile.patch\",\n                \"info\": \"FILE:./tests/samples/multifile.patch|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"AKIAQWADE5R42RDZ4JEM\",\n                \"value_start\": 11,\n                \"value_end\": 31,\n                \"entropy\": 3.68418\n            },\n            {\n                \"line\": \"+  token = \\\"V84C7sDU001tFFodKU95USNy97TkqXymnvsFmYhQ\\\"\",\n                \"line_num\": 46,\n                \"path\": \"./tests/samples/multifile.patch\",\n                \"info\": \"FILE:./tests/samples/multifile.patch|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"V84C7sDU001tFFodKU95USNy97TkqXymnvsFmYhQ\",\n                \"value_start\": 12,\n                \"value_end\": 52,\n                \"entropy\": 4.78418\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_CREDENTIALS\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"+  token = \\\"V84C7sDU001tFFodKU95USNy97TkqXymnvsFmYhQ\\\"\",\n                \"line_num\": 46,\n                \"path\": \"./tests/samples/multifile.patch\",\n                \"info\": \"FILE:./tests/samples/multifile.patch|RAW\",\n                \"variable\": \"token\",\n                \"variable_start\": 3,\n                \"variable_end\": 8,\n                \"value\": \"V84C7sDU001tFFodKU95USNy97TkqXymnvsFmYhQ\",\n                \"value_start\": 12,\n                \"value_end\": 52,\n                \"entropy\": 4.78418\n            }\n        ]\n    },\n    {\n        \"rule\": \"SECRET_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"+  token = \\\"V84C7sDU001tFFodKU95USNy97TkqXymnvsFmYhQ\\\"\",\n                \"line_num\": 46,\n                \"path\": \"./tests/samples/multifile.patch\",\n                \"info\": \"FILE:./tests/samples/multifile.patch|RAW\",\n                \"variable\": \"token\",\n                \"variable_start\": 3,\n                \"variable_end\": 8,\n                \"value\": \"V84C7sDU001tFFodKU95USNy97TkqXymnvsFmYhQ\",\n                \"value_start\": 12,\n                \"value_end\": 52,\n                \"entropy\": 4.78418\n            }\n        ]\n    },\n    {\n        \"rule\": \"AWS Client ID\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"+  clid = \\\"AKIAQWADE5R42RDZ4JEM\\\"\",\n                \"line_num\": 8,\n                \"path\": \"./tests/samples/multiline.patch\",\n                \"info\": \"FILE:./tests/samples/multiline.patch|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"AKIAQWADE5R42RDZ4JEM\",\n                \"value_start\": 11,\n                \"value_end\": 31,\n                \"entropy\": 3.68418\n            }\n        ]\n    },\n    {\n        \"rule\": \"AWS Multi\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"+  clid = \\\"AKIAQWADE5R42RDZ4JEM\\\"\",\n                \"line_num\": 8,\n                \"path\": \"./tests/samples/multiline.patch\",\n                \"info\": \"FILE:./tests/samples/multiline.patch|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"AKIAQWADE5R42RDZ4JEM\",\n                \"value_start\": 11,\n                \"value_end\": 31,\n                \"entropy\": 3.68418\n            },\n            {\n                \"line\": \"+  token = \\\"V84C7sDU001tFFodKU95USNy97TkqXymnvsFmYhQ\\\"\",\n                \"line_num\": 9,\n                \"path\": \"./tests/samples/multiline.patch\",\n                \"info\": \"FILE:./tests/samples/multiline.patch|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"V84C7sDU001tFFodKU95USNy97TkqXymnvsFmYhQ\",\n                \"value_start\": 12,\n                \"value_end\": 52,\n                \"entropy\": 4.78418\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_CREDENTIALS\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"+  token = \\\"V84C7sDU001tFFodKU95USNy97TkqXymnvsFmYhQ\\\"\",\n                \"line_num\": 9,\n                \"path\": \"./tests/samples/multiline.patch\",\n                \"info\": \"FILE:./tests/samples/multiline.patch|RAW\",\n                \"variable\": \"token\",\n                \"variable_start\": 3,\n                \"variable_end\": 8,\n                \"value\": \"V84C7sDU001tFFodKU95USNy97TkqXymnvsFmYhQ\",\n                \"value_start\": 12,\n                \"value_end\": 52,\n                \"entropy\": 4.78418\n            }\n        ]\n    },\n    {\n        \"rule\": \"SECRET_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"+  token = \\\"V84C7sDU001tFFodKU95USNy97TkqXymnvsFmYhQ\\\"\",\n                \"line_num\": 9,\n                \"path\": \"./tests/samples/multiline.patch\",\n                \"info\": \"FILE:./tests/samples/multiline.patch|RAW\",\n                \"variable\": \"token\",\n                \"variable_start\": 3,\n                \"variable_end\": 8,\n                \"value\": \"V84C7sDU001tFFodKU95USNy97TkqXymnvsFmYhQ\",\n                \"value_start\": 12,\n                \"value_end\": 52,\n                \"entropy\": 4.78418\n            }\n        ]\n    },\n    {\n        \"rule\": \"Netlify Token\",\n        \"severity\": \"medium\",\n        \"confidence\": \"weak\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"nfp_0i5OM4MV7L02wV3E6rrwiTwhvEkkkPJ9C3EP\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/netlify\",\n                \"info\": \"FILE:./tests/samples/netlify|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"nfp_0i5OM4MV7L02wV3E6rrwiTwhvEkkkPJ9C3EP\",\n                \"value_start\": 0,\n                \"value_end\": 40,\n                \"entropy\": 4.61531\n            }\n        ]\n    },\n    {\n        \"rule\": \"NKEY Seed\",\n        \"severity\": \"high\",\n        \"confidence\": \"weak\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"// SUAML2GCZ7IK7E7UD4VZ7ELPZW7DK2ZNL35WSMW3IORHC3BWBSDQXUQRBU\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/nkey_seed\",\n                \"info\": \"FILE:./tests/samples/nkey_seed|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"SUAML2GCZ7IK7E7UD4VZ7ELPZW7DK2ZNL35WSMW3IORHC3BWBSDQXUQRBU\",\n                \"value_start\": 3,\n                \"value_end\": 61,\n                \"entropy\": 4.55826\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_CREDENTIALS\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"password: F1lT3ReDw17hQoT3s\",\n                \"line_num\": 3,\n                \"path\": \"./tests/samples/nonce.py\",\n                \"info\": \"FILE:./tests/samples/nonce.py|RAW\",\n                \"variable\": \"password\",\n                \"variable_start\": 0,\n                \"variable_end\": 8,\n                \"value\": \"F1lT3ReDw17hQoT3s\",\n                \"value_start\": 10,\n                \"value_end\": 27,\n                \"entropy\": 3.73452\n            }\n        ]\n    },\n    {\n        \"rule\": \"PASSWD_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"password: F1lT3ReDw17hQoT3s\",\n                \"line_num\": 3,\n                \"path\": \"./tests/samples/nonce.py\",\n                \"info\": \"FILE:./tests/samples/nonce.py|RAW\",\n                \"variable\": \"password\",\n                \"variable_start\": 0,\n                \"variable_end\": 8,\n                \"value\": \"F1lT3ReDw17hQoT3s\",\n                \"value_start\": 10,\n                \"value_end\": 27,\n                \"entropy\": 3.73452\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_CREDENTIALS\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"key_wrap = 'KJHhJKhKU7yguyuyfrtsdESffhjgkhYT\\\\\",\n                \"line_num\": 7,\n                \"path\": \"./tests/samples/nonce.py\",\n                \"info\": \"FILE:./tests/samples/nonce.py|RAW\",\n                \"variable\": \"key_wrap\",\n                \"variable_start\": 0,\n                \"variable_end\": 8,\n                \"value\": \"KJHhJKhKU7yguyuyfrtsdESffhjgkhYT\\\\\",\n                \"value_start\": 12,\n                \"value_end\": 45,\n                \"entropy\": 4.18789\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_CREDENTIALS\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"key_multi = '''KJHfdjs8767gr54534wsFHGf5hJKhK\",\n                \"line_num\": 11,\n                \"path\": \"./tests/samples/nonce.py\",\n                \"info\": \"FILE:./tests/samples/nonce.py|RAW\",\n                \"variable\": \"key_multi\",\n                \"variable_start\": 0,\n                \"variable_end\": 9,\n                \"value\": \"KJHfdjs8767gr54534wsFHGf5hJKhK\",\n                \"value_start\": 15,\n                \"value_end\": 45,\n                \"entropy\": 4.12323\n            }\n        ]\n    },\n    {\n        \"rule\": \"Notion Integration Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"ntn_123465789l62YMNJKXLKpjiCVEXbx4CBxkfprOA96Y15wZ\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/notion\",\n                \"info\": \"FILE:./tests/samples/notion|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"ntn_123465789l62YMNJKXLKpjiCVEXbx4CBxkfprOA96Y15wZ\",\n                \"value_start\": 0,\n                \"value_end\": 50,\n                \"entropy\": 5.06876\n            }\n        ]\n    },\n    {\n        \"rule\": \"NPM Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"positive: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\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/npm\",\n                \"info\": \"FILE:./tests/samples/npm|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"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\",\n                \"value_start\": 9,\n                \"value_end\": 49,\n                \"entropy\": 4.80306\n            }\n        ]\n    },\n    {\n        \"rule\": \"NTLM Token\",\n        \"severity\": \"medium\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"TlRMTVNTUAADAAAAGAAYAFYAAAAYABgAbgAAAAAAAABIAAAADgAOAEgAAAAAAAAAVgAAAAAAAACGAAAARmFLZURhVGEAAAAPQwByAGUAZABTAHcAZQBlAHCgZQBy3wAAAAAAAAAAAAAAAAAAAAAph0MQmDQmCVaJEmhiOGSYIXNJMoc2KLo=\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/ntlm\",\n                \"info\": \"FILE:./tests/samples/ntlm|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"TlRMTVNTUAADAAAAGAAYAFYAAAAYABgAbgAAAAAAAABIAAAADgAOAEgAAAAAAAAAVgAAAAAAAACGAAAARmFLZURhVGEAAAAPQwByAGUAZABTAHcAZQBlAHCgZQBy3wAAAAAAAAAAAAAAAAAAAAAph0MQmDQmCVaJEmhiOGSYIXNJMoc2KLo=\",\n                \"value_start\": 10,\n                \"value_end\": 190,\n                \"entropy\": 3.79713\n            }\n        ]\n    },\n    {\n        \"rule\": \"NuGet API key\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"k = 'oy2mlf2v7jl2firuegfqwzc4zxyebz3ethzd14g4hw4iam'\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/nuget_api_key\",\n                \"info\": \"FILE:./tests/samples/nuget_api_key|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"oy2mlf2v7jl2firuegfqwzc4zxyebz3ethzd14g4hw4iam\",\n                \"value_start\": 5,\n                \"value_end\": 51,\n                \"entropy\": 4.56129\n            }\n        ]\n    },\n    {\n        \"rule\": \"OpenAI Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"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\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/open_ai_token\",\n                \"info\": \"FILE:./tests/samples/open_ai_token|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"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\",\n                \"value_start\": 0,\n                \"value_end\": 51,\n                \"entropy\": 5.22625\n            }\n        ]\n    },\n    {\n        \"rule\": \"OpenAI Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"sk-proj-qa25MV9c7Qu0EjDIEWdcT3BlbkFJ83uCF0K4yw7RzpY39bio\",\n                \"line_num\": 3,\n                \"path\": \"./tests/samples/open_ai_token\",\n                \"info\": \"FILE:./tests/samples/open_ai_token|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"sk-proj-qa25MV9c7Qu0EjDIEWdcT3BlbkFJ83uCF0K4yw7RzpY39bio\",\n                \"value_start\": 0,\n                \"value_end\": 56,\n                \"entropy\": 5.25816\n            }\n        ]\n    },\n    {\n        \"rule\": \"OpenAI Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"sk-proj-asdfgasdfasdfdcQbzdcT3BlbkFJ83uCasdfgasdfgasdfjk\",\n                \"line_num\": 7,\n                \"path\": \"./tests/samples/open_ai_token\",\n                \"info\": \"FILE:./tests/samples/open_ai_token|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"sk-proj-asdfgasdfasdfdcQbzdcT3BlbkFJ83uCasdfgasdfgasdfjk\",\n                \"value_start\": 0,\n                \"value_end\": 56,\n                \"entropy\": 4.12555\n            }\n        ]\n    },\n    {\n        \"rule\": \"OTP / 2FA Secret\",\n        \"severity\": \"info\",\n        \"confidence\": \"weak\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"WXFES7QNTET5DQYC\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/otp_2fa\",\n                \"info\": \"FILE:./tests/samples/otp_2fa|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"WXFES7QNTET5DQYC\",\n                \"value_start\": 0,\n                \"value_end\": 16,\n                \"entropy\": 3.625\n            }\n        ]\n    },\n    {\n        \"rule\": \"OTP / 2FA Secret\",\n        \"severity\": \"info\",\n        \"confidence\": \"weak\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"JERZOR2XLQYTUQG7YBZYHLK3KSLRYTWB\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/otp_2fa\",\n                \"info\": \"FILE:./tests/samples/otp_2fa|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"JERZOR2XLQYTUQG7YBZYHLK3KSLRYTWB\",\n                \"value_start\": 0,\n                \"value_end\": 32,\n                \"entropy\": 4.14032\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_CREDENTIALS\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"uth.myapp.com/v3/access_token?app_id=my-client-id&app_secret=my-client-password&code=q4C1a20qS&redirect_uri=http%3A%2F%2Flocalho\",\n                \"line_num\": 3,\n                \"path\": \"./tests/samples/pass_filtered\",\n                \"info\": \"FILE:./tests/samples/pass_filtered|RAW\",\n                \"variable\": \"app_secret\",\n                \"variable_start\": 60,\n                \"variable_end\": 70,\n                \"value\": \"my-client-password\",\n                \"value_start\": 71,\n                \"value_end\": 89,\n                \"entropy\": 3.9477\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_CREDENTIALS\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"password = \\\"0xAb19D82E7f546cC3\\\"\",\n                \"line_num\": 4,\n                \"path\": \"./tests/samples/pass_filtered\",\n                \"info\": \"FILE:./tests/samples/pass_filtered|RAW\",\n                \"variable\": \"password\",\n                \"variable_start\": 0,\n                \"variable_end\": 8,\n                \"value\": \"0xAb19D82E7f546cC3\",\n                \"value_start\": 12,\n                \"value_end\": 30,\n                \"entropy\": 4.16993\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_CREDENTIALS\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"password_id = 2938479\",\n                \"line_num\": 5,\n                \"path\": \"./tests/samples/pass_filtered\",\n                \"info\": \"FILE:./tests/samples/pass_filtered|RAW\",\n                \"variable\": \"password_id\",\n                \"variable_start\": 0,\n                \"variable_end\": 11,\n                \"value\": \"2938479\",\n                \"value_start\": 14,\n                \"value_end\": 21,\n                \"entropy\": 2.52164\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_CREDENTIALS\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.844,\n        \"line_data_list\": [\n            {\n                \"line\": \"gi_reo_gi_passwd = \\\"cAc48k1Zd7\\\"; password_confirmation = \\\"cAc48k1Zd7\\\";\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/passwd.groovy\",\n                \"info\": \"FILE:./tests/samples/passwd.groovy|RAW\",\n                \"variable\": \"gi_reo_gi_passwd\",\n                \"variable_start\": 0,\n                \"variable_end\": 16,\n                \"value\": \"cAc48k1Zd7\",\n                \"value_start\": 20,\n                \"value_end\": 30,\n                \"entropy\": 3.12193\n            }\n        ]\n    },\n    {\n        \"rule\": \"PASSWD_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.844,\n        \"line_data_list\": [\n            {\n                \"line\": \"gi_reo_gi_passwd = \\\"cAc48k1Zd7\\\"; password_confirmation = \\\"cAc48k1Zd7\\\";\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/passwd.groovy\",\n                \"info\": \"FILE:./tests/samples/passwd.groovy|RAW\",\n                \"variable\": \"passwd\",\n                \"variable_start\": 10,\n                \"variable_end\": 16,\n                \"value\": \"cAc48k1Zd7\",\n                \"value_start\": 20,\n                \"value_end\": 30,\n                \"entropy\": 3.12193\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_CREDENTIALS\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.998,\n        \"line_data_list\": [\n            {\n                \"line\": \"gi_reo_gi_passwd = \\\"cAc48k1Zd7\\\"; password_confirmation = \\\"cAc48k1Zd7\\\";\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/passwd.groovy\",\n                \"info\": \"FILE:./tests/samples/passwd.groovy|RAW\",\n                \"variable\": \"password_confirmation\",\n                \"variable_start\": 33,\n                \"variable_end\": 54,\n                \"value\": \"cAc48k1Zd7\",\n                \"value_start\": 58,\n                \"value_end\": 68,\n                \"entropy\": 3.12193\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_CREDENTIALS\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.652,\n        \"line_data_list\": [\n            {\n                \"line\": \"password = \\\"cackle!\\\"\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/password.gradle\",\n                \"info\": \"FILE:./tests/samples/password.gradle|RAW\",\n                \"variable\": \"password\",\n                \"variable_start\": 0,\n                \"variable_end\": 8,\n                \"value\": \"cackle!\",\n                \"value_start\": 12,\n                \"value_end\": 19,\n                \"entropy\": 2.52164\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_CREDENTIALS\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.962,\n        \"line_data_list\": [\n            {\n                \"line\": \"+  \\\"password\\\": \\\"dkajco1\\\"\",\n                \"line_num\": 9,\n                \"path\": \"./tests/samples/password.patch\",\n                \"info\": \"FILE:./tests/samples/password.patch|RAW\",\n                \"variable\": \"password\",\n                \"variable_start\": 4,\n                \"variable_end\": 12,\n                \"value\": \"dkajco1\",\n                \"value_start\": 16,\n                \"value_end\": 23,\n                \"entropy\": 2.80735\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_CREDENTIALS\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"password = \\\"MYPSWRD!@#$%^&*\\\"\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/password.tfvars\",\n                \"info\": \"FILE:./tests/samples/password.tfvars|RAW\",\n                \"variable\": \"password\",\n                \"variable_start\": 0,\n                \"variable_end\": 8,\n                \"value\": \"MYPSWRD!@#$%^&*\",\n                \"value_start\": 12,\n                \"value_end\": 27,\n                \"entropy\": 3.90689\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_CREDENTIALS\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"password = \\\"abc\\\"\",\n                \"line_num\": 3,\n                \"path\": \"./tests/samples/password_FALSE\",\n                \"info\": \"FILE:./tests/samples/password_FALSE|RAW\",\n                \"variable\": \"password\",\n                \"variable_start\": 0,\n                \"variable_end\": 8,\n                \"value\": \"\\\"abc\\\"\",\n                \"value_start\": 11,\n                \"value_end\": 16,\n                \"entropy\": 1.92193\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_CREDENTIALS\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.964,\n        \"line_data_list\": [\n            {\n                \"line\": \"MYSQLPASS: Ce7shE0ENPiBlE_EdEose0cBAA\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/password_TRUE\",\n                \"info\": \"FILE:./tests/samples/password_TRUE|RAW\",\n                \"variable\": \"MYSQLPASS\",\n                \"variable_start\": 0,\n                \"variable_end\": 9,\n                \"value\": \"Ce7shE0ENPiBlE_EdEose0cBAA\",\n                \"value_start\": 11,\n                \"value_end\": 37,\n                \"entropy\": 3.8693\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_CREDENTIALS\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.973,\n        \"line_data_list\": [\n            {\n                \"line\": \"my_pw: nCzx8A8#!\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/password_TRUE\",\n                \"info\": \"FILE:./tests/samples/password_TRUE|RAW\",\n                \"variable\": \"my_pw\",\n                \"variable_start\": 0,\n                \"variable_end\": 5,\n                \"value\": \"nCzx8A8#!\",\n                \"value_start\": 7,\n                \"value_end\": 16,\n                \"entropy\": 2.9477\n            }\n        ]\n    },\n    {\n        \"rule\": \"PASSWD_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.973,\n        \"line_data_list\": [\n            {\n                \"line\": \"my_pw: nCzx8A8#!\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/password_TRUE\",\n                \"info\": \"FILE:./tests/samples/password_TRUE|RAW\",\n                \"variable\": \"pw\",\n                \"variable_start\": 3,\n                \"variable_end\": 5,\n                \"value\": \"nCzx8A8#!\",\n                \"value_start\": 7,\n                \"value_end\": 16,\n                \"entropy\": 2.9477\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_CREDENTIALS\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"def connect(passwd: str = \\\"cq2tPr1a2\\\"): # python default arg\",\n                \"line_num\": 4,\n                \"path\": \"./tests/samples/password_TRUE\",\n                \"info\": \"FILE:./tests/samples/password_TRUE|RAW\",\n                \"variable\": \"passwd\",\n                \"variable_start\": 12,\n                \"variable_end\": 18,\n                \"value\": \"str = \",\n                \"value_start\": 20,\n                \"value_end\": 26,\n                \"entropy\": 2.25163\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_CREDENTIALS\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.989,\n        \"line_data_list\": [\n            {\n                \"line\": \"if passworsd == \\\"q4c1a2oPd\\\": # __eq__ separator\",\n                \"line_num\": 5,\n                \"path\": \"./tests/samples/password_TRUE\",\n                \"info\": \"FILE:./tests/samples/password_TRUE|RAW\",\n                \"variable\": \"passworsd\",\n                \"variable_start\": 3,\n                \"variable_end\": 12,\n                \"value\": \"q4c1a2oPd\",\n                \"value_start\": 17,\n                \"value_end\": 26,\n                \"entropy\": 3.16993\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_CREDENTIALS\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"if passworsd != \\\"x6s7djtEa\\\": # __ne__ separator\",\n                \"line_num\": 6,\n                \"path\": \"./tests/samples/password_TRUE\",\n                \"info\": \"FILE:./tests/samples/password_TRUE|RAW\",\n                \"variable\": \"passworsd\",\n                \"variable_start\": 3,\n                \"variable_end\": 12,\n                \"value\": \"x6s7djtEa\",\n                \"value_start\": 17,\n                \"value_end\": 26,\n                \"entropy\": 3.16993\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_CREDENTIALS\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"password=2bkJgtJDiLcq1t\",\n                \"line_num\": 7,\n                \"path\": \"./tests/samples/password_TRUE\",\n                \"info\": \"FILE:./tests/samples/password_TRUE|RAW\",\n                \"variable\": \"password\",\n                \"variable_start\": 0,\n                \"variable_end\": 8,\n                \"value\": \"2bkJgtJDiLcq1t\",\n                \"value_start\": 9,\n                \"value_end\": 23,\n                \"entropy\": 3.52164\n            }\n        ]\n    },\n    {\n        \"rule\": \"PASSWD_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"password=2bkJgtJDiLcq1t\",\n                \"line_num\": 7,\n                \"path\": \"./tests/samples/password_TRUE\",\n                \"info\": \"FILE:./tests/samples/password_TRUE|RAW\",\n                \"variable\": \"password\",\n                \"variable_start\": 0,\n                \"variable_end\": 8,\n                \"value\": \"2bkJgtJDiLcq1t\",\n                \"value_start\": 9,\n                \"value_end\": 23,\n                \"entropy\": 3.52164\n            }\n        ]\n    },\n    {\n        \"rule\": \"CMD Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"RUN openssl x509 -req -days 365 -passin \\\"pass:nCzx8A8#!\\\" -sha256 -in server.csr -CA ca.pem -CAkey ca-key\",\n                \"line_num\": 8,\n                \"path\": \"./tests/samples/password_TRUE\",\n                \"info\": \"FILE:./tests/samples/password_TRUE|RAW\",\n                \"variable\": \"passin\",\n                \"variable_start\": 33,\n                \"variable_end\": 39,\n                \"value\": \"nCzx8A8#!\",\n                \"value_start\": 46,\n                \"value_end\": 55,\n                \"entropy\": 2.9477\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_CREDENTIALS\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"RUN openssl x509 -req -days 365 -passin \\\"pass:nCzx8A8#!\\\" -sha256 -in server.csr -CA ca.pem -CAkey ca-key\",\n                \"line_num\": 8,\n                \"path\": \"./tests/samples/password_TRUE\",\n                \"info\": \"FILE:./tests/samples/password_TRUE|RAW\",\n                \"variable\": \"pass\",\n                \"variable_start\": 41,\n                \"variable_end\": 45,\n                \"value\": \"nCzx8A8#!\",\n                \"value_start\": 46,\n                \"value_end\": 55,\n                \"entropy\": 2.9477\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_CREDENTIALS\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.967,\n        \"line_data_list\": [\n            {\n                \"line\": \"MYSQL_DATABASE_USER=CRED;MYSQL_DATABASE_PASSWORD=2IWJD88FH4Y;\",\n                \"line_num\": 12,\n                \"path\": \"./tests/samples/password_TRUE\",\n                \"info\": \"FILE:./tests/samples/password_TRUE|RAW\",\n                \"variable\": \"MYSQL_DATABASE_PASSWORD\",\n                \"variable_start\": 25,\n                \"variable_end\": 48,\n                \"value\": \"2IWJD88FH4Y;\",\n                \"value_start\": 49,\n                \"value_end\": 61,\n                \"entropy\": 3.4183\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_CREDENTIALS\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.978,\n        \"line_data_list\": [\n            {\n                \"line\": \"WPA2_PASSWORD: e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\",\n                \"line_num\": 25,\n                \"path\": \"./tests/samples/password_TRUE\",\n                \"info\": \"FILE:./tests/samples/password_TRUE|RAW\",\n                \"variable\": \"WPA2_PASSWORD\",\n                \"variable_start\": 0,\n                \"variable_end\": 13,\n                \"value\": \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\",\n                \"value_start\": 15,\n                \"value_end\": 79,\n                \"entropy\": 3.67082\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_CREDENTIALS\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.962,\n        \"line_data_list\": [\n            {\n                \"line\": \"+  \\\"password\\\": \\\"dkajco1\\\"\",\n                \"line_num\": 10,\n                \"path\": \"./tests/samples/password_utf16.patch\",\n                \"info\": \"FILE:./tests/samples/password_utf16.patch|RAW\",\n                \"variable\": \"password\",\n                \"variable_start\": 4,\n                \"variable_end\": 12,\n                \"value\": \"dkajco1\",\n                \"value_start\": 16,\n                \"value_end\": 23,\n                \"entropy\": 2.80735\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_CREDENTIALS\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.237,\n        \"line_data_list\": [\n            {\n                \"line\": \"+  \\\"password\\\": \\\"dkajc\\u00f61\\\"\",\n                \"line_num\": 9,\n                \"path\": \"./tests/samples/password_western.patch\",\n                \"info\": \"FILE:./tests/samples/password_western.patch|RAW\",\n                \"variable\": \"password\",\n                \"variable_start\": 4,\n                \"variable_end\": 12,\n                \"value\": \"dkajc\\u00f61\",\n                \"value_start\": 16,\n                \"value_end\": 23,\n                \"entropy\": 2.80735\n            }\n        ]\n    },\n    {\n        \"rule\": \"PayPal Braintree Access Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"access_token$production$gireogi121451781$abcaeaabadef01134517891121451781\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/paypal_key\",\n                \"info\": \"FILE:./tests/samples/paypal_key|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"access_token$production$gireogi121451781$abcaeaabadef01134517891121451781\",\n                \"value_start\": 0,\n                \"value_end\": 73,\n                \"entropy\": 4.39985\n            }\n        ]\n    },\n    {\n        \"rule\": \"PEM Private Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"str value = \\\"-----BEGIN RSA PRIVATE KEY-----\\\\n\\\" +\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/pem_key\",\n                \"info\": \"FILE:./tests/samples/pem_key|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"-----BEGIN RSA PRIVATE KEY-----\",\n                \"value_start\": 13,\n                \"value_end\": 44,\n                \"entropy\": 3.38229\n            },\n            {\n                \"line\": \"\\\"MIICXQIBAAKBgQDwcEN7vZygGg6DvPpsw17hRD6S5N8+huaqs1JGXQfPhbvLTUsHdzGLVNQ/Z0wQVGdPiaJDflqhcT1IH8BLD4SHn+  \\\\n\\\"\",\n                \"line_num\": 3,\n                \"path\": \"./tests/samples/pem_key\",\n                \"info\": \"FILE:./tests/samples/pem_key|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"\\\"MIICXQIBAAKBgQDwcEN7vZygGg6DvPpsw17hRD6S5N8+huaqs1JGXQfPhbvLTUsHdzGLVNQ/Z0wQVGdPiaJDflqhcT1IH8BLD4SHn+  \\\\n\\\"\",\n                \"value_start\": 0,\n                \"value_end\": 108,\n                \"entropy\": 5.52555\n            },\n            {\n                \"line\": \"+ \\\"WuRIzX77P7oVKM2CoTA6VzT6s/bvr7HxFLl4NhohfyDsV0YCDc4I6EHGWMCUHZb0IWxzEGRWD3jbG8KAZUsQIDAQABAoGAOD7a2o\\\\r \\\\n\\\"\",\n                \"line_num\": 4,\n                \"path\": \"./tests/samples/pem_key\",\n                \"info\": \"FILE:./tests/samples/pem_key|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"\\t+ \\\"WuRIzX77P7oVKM2CoTA6VzT6s/bvr7HxFLl4NhohfyDsV0YCDc4I6EHGWMCUHZb0IWxzEGRWD3jbG8KAZUsQIDAQABAoGAOD7a2o\\\\r \\\\n\\\"\",\n                \"value_start\": 0,\n                \"value_end\": 110,\n                \"entropy\": 5.49388\n            },\n            {\n                \"line\": \"\\\"  CRujY+PP0hS/4sHOBdDvnxa2wdW8NVNNagdCBhvP5Y1edBNMnkWOyuM4e7HzUgO0+8ndWis1OSJTz9EFTyHJm6GOn+/JR62NWNr   \\\"\",\n                \"line_num\": 5,\n                \"path\": \"./tests/samples/pem_key\",\n                \"info\": \"FILE:./tests/samples/pem_key|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"\\\"  CRujY+PP0hS/4sHOBdDvnxa2wdW8NVNNagdCBhvP5Y1edBNMnkWOyuM4e7HzUgO0+8ndWis1OSJTz9EFTyHJm6GOn+/JR62NWNr   \\\"\",\n                \"value_start\": 0,\n                \"value_end\": 106,\n                \"entropy\": 5.44383\n            },\n            {\n                \"line\": \"\\\"9lfCb8cWq0eoOk3UUO9P+1nZNHjE/iDhuTi3x/5naW4SzdkZfxHo/NMI6i5w1ZnQ60CQQD9d0G9gBy6lPhC  \\\\\\\\\",\n                \"line_num\": 6,\n                \"path\": \"./tests/samples/pem_key\",\n                \"info\": \"FILE:./tests/samples/pem_key|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"\\t\\t\\\"9lfCb8cWq0eoOk3UUO9P+1nZNHjE/iDhuTi3x/5naW4SzdkZfxHo/NMI6i5w1ZnQ60CQQD9d0G9gBy6lPhC  \\\\\\\\\",\n                \"value_start\": 0,\n                \"value_end\": 90,\n                \"entropy\": 5.53586\n            },\n            {\n                \"line\": \"\\\"\\\"\\\" mbHzYovVjSnyfzUtyWPNSrXNiUCR5vu2f6eCgSVzFZ0oHAv8nLaYnXrhyT25lwzNK5OhR/oPAkEA8tep3NmfxV \\\"\\\"\\\" +\",\n                \"line_num\": 7,\n                \"path\": \"./tests/samples/pem_key\",\n                \"info\": \"FILE:./tests/samples/pem_key|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"\\\"\\\"\\\" mbHzYovVjSnyfzUtyWPNSrXNiUCR5vu2f6eCgSVzFZ0oHAv8nLaYnXrhyT25lwzNK5OhR/oPAkEA8tep3NmfxV \\\"\\\"\\\" +\",\n                \"value_start\": 0,\n                \"value_end\": 96,\n                \"entropy\": 5.46977\n            },\n            {\n                \"line\": \"QSBfKGfotblIG709xxfd6vHfDS0eZuTFUxkZDcayZDhMDjTMZxP8rokSbMaOSqUseUeYhx5TqFPwJAAhC0smyWz1ZjZ3eFIayN4yGRU+6B\\\\r\\\\n\",\n                \"line_num\": 8,\n                \"path\": \"./tests/samples/pem_key\",\n                \"info\": \"FILE:./tests/samples/pem_key|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"QSBfKGfotblIG709xxfd6vHfDS0eZuTFUxkZDcayZDhMDjTMZxP8rokSbMaOSqUseUeYhx5TqFPwJAAhC0smyWz1ZjZ3eFIayN4yGRU+6B\\\\r\\\\n\",\n                \"value_start\": 0,\n                \"value_end\": 110,\n                \"entropy\": 5.55951\n            },\n            {\n                \"line\": \"\\\"amwXqhaPwKr7obS2HFiR7thKi9ODQk5oMpi8TCYMWEahgB+g9RMD0u6ZNQJBAMla\\\\\\\\\\\\\\\\nUJmySGuRnbAYu7PJURH90AOG0QOQ1Jp6yBMKgYIB\\\\\\\\\",\n                \"line_num\": 9,\n                \"path\": \"./tests/samples/pem_key\",\n                \"info\": \"FILE:./tests/samples/pem_key|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"\\\"amwXqhaPwKr7obS2HFiR7thKi9ODQk5oMpi8TCYMWEahgB+g9RMD0u6ZNQJBAMla\\\\\\\\\\\\\\\\nUJmySGuRnbAYu7PJURH90AOG0QOQ1Jp6yBMKgYIB\\\\\\\\\",\n                \"value_start\": 0,\n                \"value_end\": 112,\n                \"entropy\": 5.49108\n            },\n            {\n                \"line\": \"Uaxk9J5Th8BXPyC1mclPMS7J\\\\\\\\\\\\\\\\ngMuobiFdIpryq51pvHkCQQDInvDaKI24Ho+cj6SCKnEO4kbjh/yx1XGwNmY0ld1i\\\\\\\\r5micHFiMI7/IcVZ4\\\\n\",\n                \"line_num\": 10,\n                \"path\": \"./tests/samples/pem_key\",\n                \"info\": \"FILE:./tests/samples/pem_key|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"Uaxk9J5Th8BXPyC1mclPMS7J\\\\\\\\\\\\\\\\ngMuobiFdIpryq51pvHkCQQDInvDaKI24Ho+cj6SCKnEO4kbjh/yx1XGwNmY0ld1i\\\\\\\\r5micHFiMI7/IcVZ4\\\\n\",\n                \"value_start\": 0,\n                \"value_end\": 114,\n                \"entropy\": 5.57587\n            },\n            {\n                \"line\": \"2cl1OwdGjRdmO1LT6P1cl8UYIj/S\\\\n-----END RSA PRIVATE KEY-----\\\"\\\"\\\";\",\n                \"line_num\": 11,\n                \"path\": \"./tests/samples/pem_key\",\n                \"info\": \"FILE:./tests/samples/pem_key|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"2cl1OwdGjRdmO1LT6P1cl8UYIj/S\\\\n-----END RSA PRIVATE KEY-----\\\"\\\"\\\";\",\n                \"value_start\": 0,\n                \"value_end\": 63,\n                \"entropy\": 4.72341\n            }\n        ]\n    },\n    {\n        \"rule\": \"PEM Private Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"-----BEGIN EC PRIVATE KEY-----\\\\nMHcCAQEEID4VC4s0b2n3yvypHb2GO9prFUctYt\\\\r\\\\r\\\\n\\\\nHmGCMvpxkpexbHoAoGCCqGSM49\\\\\\\\\\\\\\\\\\\\nAwEHoUQDQgAE2GwUUuO9/dKl51bOryWzHF8wTSezSqdRIucGhDRsmDITLcNEZw3V\\\\\\\\\\\\\\\\rIaQP59Ufkz8NIkLeIAa1HZGZxCVMQ907FA==\\\\\\\\n-----END EC PRIVATE KEY-----\",\n                \"line_num\": 14,\n                \"path\": \"./tests/samples/pem_key\",\n                \"info\": \"FILE:./tests/samples/pem_key|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"-----BEGIN EC PRIVATE KEY-----\\\\nMHcCAQEEID4VC4s0b2n3yvypHb2GO9prFUctYt\\\\r\\\\r\\\\n\\\\nHmGCMvpxkpexbHoAoGCCqGSM49\\\\\\\\\\\\\\\\\\\\nAwEHoUQDQgAE2GwUUuO9/dKl51bOryWzHF8wTSezSqdRIucGhDRsmDITLcNEZw3V\\\\\\\\\\\\\\\\rIaQP59Ufkz8NIkLeIAa1HZGZxCVMQ907FA==\\\\\\\\n-----END EC PRIVATE KEY-----\",\n                \"value_start\": 16,\n                \"value_end\": 262,\n                \"entropy\": 5.56558\n            }\n        ]\n    },\n    {\n        \"rule\": \"PEM Private Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"-----BEGIN OPENSSH LOW ENTROPY PRIVATE KEY-----\",\n                \"line_num\": 27,\n                \"path\": \"./tests/samples/pem_key\",\n                \"info\": \"FILE:./tests/samples/pem_key|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"-----BEGIN OPENSSH LOW ENTROPY PRIVATE KEY-----\",\n                \"value_start\": 0,\n                \"value_end\": 47,\n                \"entropy\": 3.8375\n            },\n            {\n                \"line\": \"12345678901231278634987284736283548102438723941563428762374129402103402394932746672734543664375t7323341253845186253784==\",\n                \"line_num\": 28,\n                \"path\": \"./tests/samples/pem_key\",\n                \"info\": \"FILE:./tests/samples/pem_key|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"12345678901231278634987284736283548102438723941563428762374129402103402394932746672734543664375t7323341253845186253784==\",\n                \"value_start\": 0,\n                \"value_end\": 120,\n                \"entropy\": 3.30679\n            },\n            {\n                \"line\": \"-----END LOW ENTROPY PRIVATE KEY-----\",\n                \"line_num\": 29,\n                \"path\": \"./tests/samples/pem_key\",\n                \"info\": \"FILE:./tests/samples/pem_key|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"-----END LOW ENTROPY PRIVATE KEY-----\",\n                \"value_start\": 0,\n                \"value_end\": 37,\n                \"entropy\": 3.55488\n            }\n        ]\n    },\n    {\n        \"rule\": \"PEM Private Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"*  -----BEGIN PGP PRIVATE KEY BLOCK-----\",\n                \"line_num\": 35,\n                \"path\": \"./tests/samples/pem_key\",\n                \"info\": \"FILE:./tests/samples/pem_key|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"-----BEGIN PGP PRIVATE KEY BLOCK-----\",\n                \"value_start\": 5,\n                \"value_end\": 42,\n                \"entropy\": 3.62218\n            },\n            {\n                \"line\": \"*  Version: GnuPG v1.4.12 (GNU/Linux)\",\n                \"line_num\": 36,\n                \"path\": \"./tests/samples/pem_key\",\n                \"info\": \"FILE:./tests/samples/pem_key|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"  *  Version: GnuPG v1.4.12 (GNU/Linux)\",\n                \"value_start\": 0,\n                \"value_end\": 39,\n                \"entropy\": 4.33255\n            },\n            {\n                \"line\": \"\",\n                \"line_num\": 37,\n                \"path\": \"./tests/samples/pem_key\",\n                \"info\": \"FILE:./tests/samples/pem_key|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"\",\n                \"value_start\": 0,\n                \"value_end\": 0,\n                \"entropy\": 0.0\n            },\n            {\n                \"line\": \"*  KzUsCyhuzSRrWk74aarzJ6i3z4wB01Y6wUn5rkbB8ig3eRjZtke1iX8c5cLtx3Mj\",\n                \"line_num\": 38,\n                \"path\": \"./tests/samples/pem_key\",\n                \"info\": \"FILE:./tests/samples/pem_key|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"KzUsCyhuzSRrWk74aarzJ6i3z4wB01Y6wUn5rkbB8ig3eRjZtke1iX8c5cLtx3Mj\",\n                \"value_start\": 5,\n                \"value_end\": 69,\n                \"entropy\": 5.14032\n            },\n            {\n                \"line\": \"*  SkMlXtGJEXbSEcN4wyPJkLZ6YxI76+WKuWlHZWdMXTrDYJLhvN6X7xUx4LgsGtb8\",\n                \"line_num\": 39,\n                \"path\": \"./tests/samples/pem_key\",\n                \"info\": \"FILE:./tests/samples/pem_key|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"SkMlXtGJEXbSEcN4wyPJkLZ6YxI76+WKuWlHZWdMXTrDYJLhvN6X7xUx4LgsGtb8\",\n                \"value_start\": 5,\n                \"value_end\": 69,\n                \"entropy\": 5.09727\n            },\n            {\n                \"line\": \"//\\tGuVDoS4h4fZPyksjPyNpjUklFOZT6vTT2/QvOYxRTt/NLBleEpQEIHu6lHiwqsqB\",\n                \"line_num\": 40,\n                \"path\": \"./tests/samples/pem_key\",\n                \"info\": \"FILE:./tests/samples/pem_key|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"GuVDoS4h4fZPyksjPyNpjUklFOZT6vTT2/QvOYxRTt/NLBleEpQEIHu6lHiwqsqB\",\n                \"value_start\": 4,\n                \"value_end\": 68,\n                \"entropy\": 5.20695\n            },\n            {\n                \"line\": \"///\\t57KDXUMrZH/hk9Rr8mgdCT/evvhuKLBljh6ShBqn+jrMy101jHBlhxRefDjq9pmI\",\n                \"line_num\": 41,\n                \"path\": \"./tests/samples/pem_key\",\n                \"info\": \"FILE:./tests/samples/pem_key|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"57KDXUMrZH/hk9Rr8mgdCT/evvhuKLBljh6ShBqn+jrMy101jHBlhxRefDjq9pmI\",\n                \"value_start\": 5,\n                \"value_end\": 69,\n                \"entropy\": 5.13876\n            },\n            {\n                \"line\": \"//  UhZRwnRxgNb86LEEcgcK35SZCFnQu+POJWwWwWpkzpPiYHS+G66c3k0ApdIJjn2k\",\n                \"line_num\": 42,\n                \"path\": \"./tests/samples/pem_key\",\n                \"info\": \"FILE:./tests/samples/pem_key|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"UhZRwnRxgNb86LEEcgcK35SZCFnQu+POJWwWwWpkzpPiYHS+G66c3k0ApdIJjn2k\",\n                \"value_start\": 6,\n                \"value_end\": 70,\n                \"entropy\": 5.19868\n            },\n            {\n                \"line\": \"///  q1yJq3TyI0Uc/snUIboAFHI5HIJHXQX/lwmeY/pDtuT6S+tf7XFMHXWWDtzb2xkI\",\n                \"line_num\": 43,\n                \"path\": \"./tests/samples/pem_key\",\n                \"info\": \"FILE:./tests/samples/pem_key|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"q1yJq3TyI0Uc/snUIboAFHI5HIJHXQX/lwmeY/pDtuT6S+tf7XFMHXWWDtzb2xkI\",\n                \"value_start\": 7,\n                \"value_end\": 71,\n                \"entropy\": 5.13876\n            },\n            {\n                \"line\": \"// # /*iO/qjWpQtL6R1C03xMpECkmQaMOY/k9Hwg4JJa9YTe3DrehBz/NDw9iKaBHHKxf1*/\",\n                \"line_num\": 44,\n                \"path\": \"./tests/samples/pem_key\",\n                \"info\": \"FILE:./tests/samples/pem_key|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"iO/qjWpQtL6R1C03xMpECkmQaMOY/k9Hwg4JJa9YTe3DrehBz/NDw9iKaBHHKxf1\",\n                \"value_start\": 7,\n                \"value_end\": 71,\n                \"entropy\": 5.17157\n            },\n            {\n                \"line\": \"# # # *  874RZktKcNFG9Yx0CZH7mRhAxiQG1iTbzLzM/rN+rb8DZnt8ijlp5/YzZeAVXUi9\",\n                \"line_num\": 45,\n                \"path\": \"./tests/samples/pem_key\",\n                \"info\": \"FILE:./tests/samples/pem_key|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"874RZktKcNFG9Yx0CZH7mRhAxiQG1iTbzLzM/rN+rb8DZnt8ijlp5/YzZeAVXUi9\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.22641\n            },\n            {\n                \"line\": \"#+#+#+# *  IunznTXS1QmfDC6dVyRGfaJwzf6hk8RlM24JuZ3ATLaZ9sY5uZuXVa8syNwAGqVb\",\n                \"line_num\": 46,\n                \"path\": \"./tests/samples/pem_key\",\n                \"info\": \"FILE:./tests/samples/pem_key|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"IunznTXS1QmfDC6dVyRGfaJwzf6hk8RlM24JuZ3ATLaZ9sY5uZuXVa8syNwAGqVb\",\n                \"value_start\": 11,\n                \"value_end\": 75,\n                \"entropy\": 5.17157\n            },\n            {\n                \"line\": \"+  'yGeBfo8L8SigTUdhFrLc1AlgAGPh99fYyscpE+U+Tqm3Jl3vDLJ/VGGOLRlqLKgi' +\",\n                \"line_num\": 47,\n                \"path\": \"./tests/samples/pem_key\",\n                \"info\": \"FILE:./tests/samples/pem_key|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"yGeBfo8L8SigTUdhFrLc1AlgAGPh99fYyscpE+U+Tqm3Jl3vDLJ/VGGOLRlqLKgi\",\n                \"value_start\": 6,\n                \"value_end\": 70,\n                \"entropy\": 5.10751\n            },\n            {\n                \"line\": \"+\\\"\\\" +\\\" 1DDOZJIuWH1Yo5/FUyH7x7McRO7ckDnCwknuXUlaCCzjomFZkoAUSym59+u0LlAh\\\"+\",\n                \"line_num\": 48,\n                \"path\": \"./tests/samples/pem_key\",\n                \"info\": \"FILE:./tests/samples/pem_key|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"1DDOZJIuWH1Yo5/FUyH7x7McRO7ckDnCwknuXUlaCCzjomFZkoAUSym59+u0LlAh\",\n                \"value_start\": 8,\n                \"value_end\": 72,\n                \"entropy\": 5.10493\n            },\n            {\n                \"line\": \"*  pBUvFiIZFQb3auylOTyOvXI4ZG8lPQfHKdpK3x2U4nUdCD9z7/awEpODLPWkdzjf\",\n                \"line_num\": 49,\n                \"path\": \"./tests/samples/pem_key\",\n                \"info\": \"FILE:./tests/samples/pem_key|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"pBUvFiIZFQb3auylOTyOvXI4ZG8lPQfHKdpK3x2U4nUdCD9z7/awEpODLPWkdzjf\",\n                \"value_start\": 5,\n                \"value_end\": 69,\n                \"entropy\": 5.23407\n            },\n            {\n                \"line\": \"*  gUjuP7eJrK/5p2iJ9PSz6+fytneqnUdwVbKOdlcj7UFnVUAIxlBiA2xdwVKqNo70\",\n                \"line_num\": 50,\n                \"path\": \"./tests/samples/pem_key\",\n                \"info\": \"FILE:./tests/samples/pem_key|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"gUjuP7eJrK/5p2iJ9PSz6+fytneqnUdwVbKOdlcj7UFnVUAIxlBiA2xdwVKqNo70\",\n                \"value_start\": 5,\n                \"value_end\": 69,\n                \"entropy\": 5.15977\n            },\n            {\n                \"line\": \"*  QMnczlCtGqUmeAwimQ+IyMkyV0KJYwV/PFCXjfQ2G/mnN88OtWcz793omSsWmwGc\",\n                \"line_num\": 51,\n                \"path\": \"./tests/samples/pem_key\",\n                \"info\": \"FILE:./tests/samples/pem_key|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"QMnczlCtGqUmeAwimQ+IyMkyV0KJYwV/PFCXjfQ2G/mnN88OtWcz793omSsWmwGc\",\n                \"value_start\": 5,\n                \"value_end\": 69,\n                \"entropy\": 5.20892\n            },\n            {\n                \"line\": \"*  iAViSZ0A0JWpTZHnZs8DDpmuDcydnyLMJDXHyOqtVe0lmWxpSTmfESFlSKeveYeY\",\n                \"line_num\": 52,\n                \"path\": \"./tests/samples/pem_key\",\n                \"info\": \"FILE:./tests/samples/pem_key|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"iAViSZ0A0JWpTZHnZs8DDpmuDcydnyLMJDXHyOqtVe0lmWxpSTmfESFlSKeveYeY\",\n                \"value_start\": 5,\n                \"value_end\": 69,\n                \"entropy\": 4.94102\n            },\n            {\n                \"line\": \"*  5Wq3vumtleWydYNgxgwwaPEApnr+uCk2J0Ye0+BjFRJHfPT4oBHzfrvWZq3lTnMJ\",\n                \"line_num\": 53,\n                \"path\": \"./tests/samples/pem_key\",\n                \"info\": \"FILE:./tests/samples/pem_key|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"5Wq3vumtleWydYNgxgwwaPEApnr+uCk2J0Ye0+BjFRJHfPT4oBHzfrvWZq3lTnMJ\",\n                \"value_start\": 5,\n                \"value_end\": 69,\n                \"entropy\": 5.28891\n            },\n            {\n                \"line\": \"*  HFNAoTz9q//Ty/CsKdla5HOsOgFJx42T12tb+N0eK9Bc5/Fj3FBLKtXUgI7gqOcw\",\n                \"line_num\": 54,\n                \"path\": \"./tests/samples/pem_key\",\n                \"info\": \"FILE:./tests/samples/pem_key|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"HFNAoTz9q//Ty/CsKdla5HOsOgFJx42T12tb+N0eK9Bc5/Fj3FBLKtXUgI7gqOcw\",\n                \"value_start\": 5,\n                \"value_end\": 69,\n                \"entropy\": 5.14032\n            },\n            {\n                \"line\": \"*  pFZSbyaPPMRZ/4kPx0+KaDZcZ7r2roCJFKxpeIeyeMXvLr0C2dAmB/oBWBuHuAsw\",\n                \"line_num\": 55,\n                \"path\": \"./tests/samples/pem_key\",\n                \"info\": \"FILE:./tests/samples/pem_key|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"pFZSbyaPPMRZ/4kPx0+KaDZcZ7r2roCJFKxpeIeyeMXvLr0C2dAmB/oBWBuHuAsw\",\n                \"value_start\": 5,\n                \"value_end\": 69,\n                \"entropy\": 5.14032\n            },\n            {\n                \"line\": \"*  ESn0CmT7gTwJ33lQHYBFAUeNMXPERcAFAWUXPxWGfgmOBBADCwDFcKVwnhM9UGTy\",\n                \"line_num\": 56,\n                \"path\": \"./tests/samples/pem_key\",\n                \"info\": \"FILE:./tests/samples/pem_key|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"ESn0CmT7gTwJ33lQHYBFAUeNMXPERcAFAWUXPxWGfgmOBBADCwDFcKVwnhM9UGTy\",\n                \"value_start\": 5,\n                \"value_end\": 69,\n                \"entropy\": 5.09727\n            },\n            {\n                \"line\": \"*  OBDjurirbyR6QM4cbq2qAzR0CRO6yyI9aXGkzy4P6y0LKQ0hJ9je2rp/4Ud2CdY4\",\n                \"line_num\": 57,\n                \"path\": \"./tests/samples/pem_key\",\n                \"info\": \"FILE:./tests/samples/pem_key|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"OBDjurirbyR6QM4cbq2qAzR0CRO6yyI9aXGkzy4P6y0LKQ0hJ9je2rp/4Ud2CdY4\",\n                \"value_start\": 5,\n                \"value_end\": 69,\n                \"entropy\": 5.04087\n            },\n            {\n                \"line\": \"*  idZTtlIeiFfpHqjCQLjH+zaEG2pqRGuBHxqeGTuJKcpTzDeJkUr278hNDUSFtCQI\",\n                \"line_num\": 58,\n                \"path\": \"./tests/samples/pem_key\",\n                \"info\": \"FILE:./tests/samples/pem_key|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"idZTtlIeiFfpHqjCQLjH+zaEG2pqRGuBHxqeGTuJKcpTzDeJkUr278hNDUSFtCQI\",\n                \"value_start\": 5,\n                \"value_end\": 69,\n                \"entropy\": 5.14798\n            },\n            {\n                \"line\": \"*  TGnx4JlcYHYLAvcjg0a2YhQyOcaS8iJhxaF+4yoMIh0DB5FA0V3ifF364h/o5wN7\",\n                \"line_num\": 59,\n                \"path\": \"./tests/samples/pem_key\",\n                \"info\": \"FILE:./tests/samples/pem_key|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"TGnx4JlcYHYLAvcjg0a2YhQyOcaS8iJhxaF+4yoMIh0DB5FA0V3ifF364h/o5wN7\",\n                \"value_start\": 5,\n                \"value_end\": 69,\n                \"entropy\": 5.17923\n            },\n            {\n                \"line\": \"*  /XOifXctwWKfR91qGtltlCWeVdFuumSOPG2hxLPW4HOlOWkhdOCRFtkqQuYd+bRz\",\n                \"line_num\": 60,\n                \"path\": \"./tests/samples/pem_key\",\n                \"info\": \"FILE:./tests/samples/pem_key|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"/XOifXctwWKfR91qGtltlCWeVdFuumSOPG2hxLPW4HOlOWkhdOCRFtkqQuYd+bRz\",\n                \"value_start\": 5,\n                \"value_end\": 69,\n                \"entropy\": 4.99017\n            },\n            {\n                \"line\": \"*  OoMgCLuFYDUvd7bso+IjrhPLTPHhr8V1CYz9jsKDXLvoz5XHvobkyijxOt+332SB\",\n                \"line_num\": 61,\n                \"path\": \"./tests/samples/pem_key\",\n                \"info\": \"FILE:./tests/samples/pem_key|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"OoMgCLuFYDUvd7bso+IjrhPLTPHhr8V1CYz9jsKDXLvoz5XHvobkyijxOt+332SB\",\n                \"value_start\": 5,\n                \"value_end\": 69,\n                \"entropy\": 5.21461\n            },\n            {\n                \"line\": \"*  4Rez5/vpHftx6pHbCa+LfdUZDYPeTUHgtTvqmbDMvwHMMwgMJP6gF6jyQINYXTIN\",\n                \"line_num\": 62,\n                \"path\": \"./tests/samples/pem_key\",\n                \"info\": \"FILE:./tests/samples/pem_key|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"4Rez5/vpHftx6pHbCa+LfdUZDYPeTUHgtTvqmbDMvwHMMwgMJP6gF6jyQINYXTIN\",\n                \"value_start\": 5,\n                \"value_end\": 69,\n                \"entropy\": 5.07782\n            },\n            {\n                \"line\": \"*  sTFVBS2exAu1uy/2onjE1ROZJqsKF6At24LzlZJZvKJRVh8n0Jrchs+8EluojWyv\",\n                \"line_num\": 63,\n                \"path\": \"./tests/samples/pem_key\",\n                \"info\": \"FILE:./tests/samples/pem_key|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"sTFVBS2exAu1uy/2onjE1ROZJqsKF6At24LzlZJZvKJRVh8n0Jrchs+8EluojWyv\",\n                \"value_start\": 5,\n                \"value_end\": 69,\n                \"entropy\": 5.10907\n            },\n            {\n                \"line\": \"*  ZIgdqdWv+SLPoZX7+2X/3DptmnL4PWZgjoW5n9fEkmr9LgblEpKp5z6vyN2kGdvk\",\n                \"line_num\": 64,\n                \"path\": \"./tests/samples/pem_key\",\n                \"info\": \"FILE:./tests/samples/pem_key|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"ZIgdqdWv+SLPoZX7+2X/3DptmnL4PWZgjoW5n9fEkmr9LgblEpKp5z6vyN2kGdvk\",\n                \"value_start\": 5,\n                \"value_end\": 69,\n                \"entropy\": 5.09314\n            },\n            {\n                \"line\": \"*  n57vMlC96VDbJkJ4ZwLx+XCdbSArsmOJ9QIKaxXSH2lV\",\n                \"line_num\": 65,\n                \"path\": \"./tests/samples/pem_key\",\n                \"info\": \"FILE:./tests/samples/pem_key|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"n57vMlC96VDbJkJ4ZwLx+XCdbSArsmOJ9QIKaxXSH2lV\",\n                \"value_start\": 5,\n                \"value_end\": 49,\n                \"entropy\": 4.98773\n            },\n            {\n                \"line\": \"*  =JG+I\",\n                \"line_num\": 66,\n                \"path\": \"./tests/samples/pem_key\",\n                \"info\": \"FILE:./tests/samples/pem_key|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"=JG+I\",\n                \"value_start\": 5,\n                \"value_end\": 10,\n                \"entropy\": 2.32193\n            },\n            {\n                \"line\": \"*  -----END PGP PRIVATE KEY BLOCK-----\",\n                \"line_num\": 67,\n                \"path\": \"./tests/samples/pem_key\",\n                \"info\": \"FILE:./tests/samples/pem_key|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"-----END PGP PRIVATE KEY BLOCK-----\",\n                \"value_start\": 5,\n                \"value_end\": 40,\n                \"entropy\": 3.62274\n            }\n        ]\n    },\n    {\n        \"rule\": \"PEM Private Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"k = \\\"\\\\\\\"-----BEGIN PRIVATE KEY-----\\\\\\\\n\\\"\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/pem_key.p.code\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.code|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"-----BEGIN PRIVATE KEY-----\",\n                \"value_start\": 7,\n                \"value_end\": 34,\n                \"entropy\": 3.20029\n            },\n            {\n                \"line\": \"+   \\\"MIIBVAIBADANBgkqhkiG9w0BAQEFAASCAT4wggE6AgEAAkEAxAIxg6QtxmnJ0Bsj\\\\\\\\n\\\"\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/pem_key.p.code\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.code|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"MIIBVAIBADANBgkqhkiG9w0BAQEFAASCAT4wggE6AgEAAkEAxAIxg6QtxmnJ0Bsj\",\n                \"value_start\": 6,\n                \"value_end\": 70,\n                \"entropy\": 4.44143\n            },\n            {\n                \"line\": \"+   \\\"VRsEhjLB9lSY9CaFvvEbXK9eBezqR6x6epxm4w/bx1xAK1O9m4iyEN72+jhpZHZs\\\\\\\\n\\\"\",\n                \"line_num\": 3,\n                \"path\": \"./tests/samples/pem_key.p.code\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.code|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"VRsEhjLB9lSY9CaFvvEbXK9eBezqR6x6epxm4w/bx1xAK1O9m4iyEN72+jhpZHZs\",\n                \"value_start\": 6,\n                \"value_end\": 70,\n                \"entropy\": 5.16391\n            },\n            {\n                \"line\": \"+   \\\"6RZsxQIDAQABAkBbzksyxWtLS7Fi79MUwZrU4GFI50bc1E5AqN2QA/OeAg+tdgRC\\\\\\\\n\\\"\",\n                \"line_num\": 4,\n                \"path\": \"./tests/samples/pem_key.p.code\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.code|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"6RZsxQIDAQABAkBbzksyxWtLS7Fi79MUwZrU4GFI50bc1E5AqN2QA/OeAg+tdgRC\",\n                \"value_start\": 6,\n                \"value_end\": 70,\n                \"entropy\": 5.24586\n            },\n            {\n                \"line\": \"+   \\\"eTVV2eZEM750xZUCoqDwLsLeYrGFR7zy0VkBAiEA5ljPCFu3UIVOgZXhSr342mTX\\\\\\\\n\\\"\",\n                \"line_num\": 5,\n                \"path\": \"./tests/samples/pem_key.p.code\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.code|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"eTVV2eZEM750xZUCoqDwLsLeYrGFR7zy0VkBAiEA5ljPCFu3UIVOgZXhSr342mTX\",\n                \"value_start\": 6,\n                \"value_end\": 70,\n                \"entropy\": 5.28891\n            },\n            {\n                \"line\": \"+   \\\"vC9/t9XrGuHCQU8oOW0CIQDZ1mYBOniJmPD0h5j1wadmLkmmZRPUNyMTEHiBUEmB\\\\\\\\n\\\"\",\n                \"line_num\": 6,\n                \"path\": \"./tests/samples/pem_key.p.code\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.code|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"vC9/t9XrGuHCQU8oOW0CIQDZ1mYBOniJmPD0h5j1wadmLkmmZRPUNyMTEHiBUEmB\",\n                \"value_start\": 6,\n                \"value_end\": 70,\n                \"entropy\": 5.19102\n            },\n            {\n                \"line\": \"+   \\\"uQIgSpG1dB882PRO1eSPaoLVbN34eRNnZTv7QFiVak8V1oECIGk3tKdtPaGAnQoP\\\\\\\\n\\\"\",\n                \"line_num\": 7,\n                \"path\": \"./tests/samples/pem_key.p.code\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.code|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"uQIgSpG1dB882PRO1eSPaoLVbN34eRNnZTv7QFiVak8V1oECIGk3tKdtPaGAnQoP\",\n                \"value_start\": 6,\n                \"value_end\": 70,\n                \"entropy\": 5.04243\n            },\n            {\n                \"line\": \"+   \\\"oOM7eYbSXsKfWdeMFkX0E7CqPgcJAiEAlydP8ln92gy4LefZuIJn1/M5PEeRFKrq\\\\\\\\n\\\"\",\n                \"line_num\": 8,\n                \"path\": \"./tests/samples/pem_key.p.code\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.code|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"oOM7eYbSXsKfWdeMFkX0E7CqPgcJAiEAlydP8ln92gy4LefZuIJn1/M5PEeRFKrq\",\n                \"value_start\": 6,\n                \"value_end\": 70,\n                \"entropy\": 5.24586\n            },\n            {\n                \"line\": \"+   \\\"aAjRMKT7uCM=\\\\\\\\n\\\"\",\n                \"line_num\": 9,\n                \"path\": \"./tests/samples/pem_key.p.code\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.code|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"aAjRMKT7uCM=\",\n                \"value_start\": 6,\n                \"value_end\": 18,\n                \"entropy\": 3.4183\n            },\n            {\n                \"line\": \"+   \\\"-----END RSA PRIVATE KEY-----\\\\\\\"\\\";\",\n                \"line_num\": 10,\n                \"path\": \"./tests/samples/pem_key.p.code\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.code|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"-----END RSA PRIVATE KEY-----\",\n                \"value_start\": 6,\n                \"value_end\": 35,\n                \"entropy\": 3.24663\n            }\n        ]\n    },\n    {\n        \"rule\": \"PEM Private Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"#6 0.245 -----BEGIN PRIVATE KEY-----\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.docker.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"-----BEGIN PRIVATE KEY-----\",\n                \"value_start\": 9,\n                \"value_end\": 36,\n                \"entropy\": 3.20029\n            },\n            {\n                \"line\": \"#6 0.245 MIITXgIBADALBglghkgBZQMEAxMEghNKMIITRgQgD1HmdulwXADuIR7CZpjn+kQ0\",\n                \"line_num\": 3,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.docker.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"MIITXgIBADALBglghkgBZQMEAxMEghNKMIITRgQgD1HmdulwXADuIR7CZpjn+kQ0\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 4.69647\n            },\n            {\n                \"line\": \"#6 0.245 YQQLBsEKL+QJ4mm5BhsEghMg0QKJZBJu8a93tNmECcVyVI3601WKlimBrior84u+\",\n                \"line_num\": 4,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.docker.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"YQQLBsEKL+QJ4mm5BhsEghMg0QKJZBJu8a93tNmECcVyVI3601WKlimBrior84u+\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 4.99586\n            },\n            {\n                \"line\": \"#6 0.245 9hLuy5J9PtjU05AGBBMW2LmlLopK1mROkYdqKofmVjQ625mx0+VmcrlcPBwO2Ows\",\n                \"line_num\": 5,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.docker.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"9hLuy5J9PtjU05AGBBMW2LmlLopK1mROkYdqKofmVjQ625mx0+VmcrlcPBwO2Ows\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.13462\n            },\n            {\n                \"line\": \"#6 0.245 P0F354UFIsuK8u9gKDv1QUuJBcub6W/4aPBBmCSlKK6t4X6ODXmTZm0q4krMQsAk\",\n                \"line_num\": 6,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.docker.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"P0F354UFIsuK8u9gKDv1QUuJBcub6W/4aPBBmCSlKK6t4X6ODXmTZm0q4krMQsAk\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.12086\n            },\n            {\n                \"line\": \"#6 0.245 doxhFgUQJS6SAAGTwoDjEIAckTAao1AQsQkUBA3SOEzQwDGTyJCQFI0IkRARl4kS\",\n                \"line_num\": 7,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.docker.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"doxhFgUQJS6SAAGTwoDjEIAckTAao1AQsQkUBA3SOEzQwDGTyJCQFI0IkRARl4kS\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 4.78866\n            },\n            {\n                \"line\": \"#6 0.245 BInUAmzcgGHjBE3MmEXTQAFjiCnIFgAApYSToJAMFYASoBHaIHEUJy2KGIbSAhIB\",\n                \"line_num\": 8,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.docker.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"BInUAmzcgGHjBE3MmEXTQAFjiCnIFgAApYSToJAMFYASoBHaIHEUJy2KGIbSAhIB\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 4.74561\n            },\n            {\n                \"line\": \"#6 0.245 QRKCGIUgkWkhMI4JIZHRhGWBllELxIxhkCRJwinIFGIMqTHJRm6jEoBJAI0SBQVD\",\n                \"line_num\": 9,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.docker.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"QRKCGIUgkWkhMI4JIZHRhGWBllELxIxhkCRJwinIFGIMqTHJRm6jEoBJAI0SBQVD\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 4.89577\n            },\n            {\n                \"line\": \"#6 0.245 qBAgEQERJoVIgE0Ct42IMEJIMoxJAggSQwYhsiXjmEkMR3HZNAXRFiqjFgAkwUgE\",\n                \"line_num\": 10,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.docker.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"qBAgEQERJoVIgE0Ct42IMEJIMoxJAggSQwYhsiXjmEkMR3HZNAXRFiqjFgAkwUgE\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 4.81189\n            },\n            {\n                \"line\": \"#6 0.245 A4YTFQ1aFgrYNo7TGApJBkTggC0kR0wDAJKUGDBBNoqjAAkTKWEBto0AAIYERWxE\",\n                \"line_num\": 11,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.docker.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"A4YTFQ1aFgrYNo7TGApJBkTggC0kR0wDAJKUGDBBNoqjAAkTKWEBto0AAIYERWxE\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 4.74717\n            },\n            {\n                \"line\": \"#6 0.245 xEwiqYgUxxGAKICTkEQIwRDDFmgQhEGbEgySGDASuUhbIkWJtCAKgGGhBoXDImGY\",\n                \"line_num\": 12,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.docker.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"xEwiqYgUxxGAKICTkEQIwRDDFmgQhEGbEgySGDASuUhbIkWJtCAKgGGhBoXDImGY\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 4.72227\n            },\n            {\n                \"line\": \"#6 0.245 JEULtzEQMCIhKY0jwGThQIwBQY6QhpDDGAwUQCHUJpDhAiwiIZJTME6kFipBGA3R\",\n                \"line_num\": 13,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.docker.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"JEULtzEQMCIhKY0jwGThQIwBQY6QhpDDGAwUQCHUJpDhAiwiIZJTME6kFipBGA3R\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 4.71244\n            },\n            {\n                \"line\": \"#6 0.245 qCzDQDKiAiUDBDEZuGXhAnASMDCMNpAEsWChJBATpUFUMilgyIlgyEwYJoUZGVGY\",\n                \"line_num\": 14,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.docker.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"qCzDQDKiAiUDBDEZuGXhAnASMDCMNpAEsWChJBATpUFUMilgyIlgyEwYJoUZGVGY\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 4.85947\n            },\n            {\n                \"line\": \"#6 0.245 ogjZhJHTECwUFgUjQCkBRgbMEI4blUSEyAHklAXklgUYw0xaSDIJIkGDFiJRkkiK\",\n                \"line_num\": 15,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.docker.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"ogjZhJHTECwUFgUjQCkBRgbMEI4blUSEyAHklAXklgUYw0xaSDIJIkGDFiJRkkiK\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 4.86673\n            },\n            {\n                \"line\": \"#6 0.245 gCDTQITBBBGRsmGcBJIYBXIQp4yDtA3QmE3UJI0QgCVawCwLBRCKNDAcMoIDAxII\",\n                \"line_num\": 16,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.docker.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"gCDTQITBBBGRsmGcBJIYBXIQp4yDtA3QmE3UJI0QgCVawCwLBRCKNDAcMoIDAxII\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 4.72006\n            },\n            {\n                \"line\": \"#6 0.245 RmJCsmCaAojIQg0MtQzDmEQZgYESQSQZpY0kqUDgOEoQgoRCREyMJE0YJkojyCgg\",\n                \"line_num\": 17,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.docker.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"RmJCsmCaAojIQg0MtQzDmEQZgYESQSQZpY0kqUDgOEoQgoRCREyMJE0YJkojyCgg\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 4.49369\n            },\n            {\n                \"line\": \"#6 0.245 EQ5cGA4hNI0TBoKbIkiQOCyMAjIhl1DgKAlbwnCYKAzKQECCGHDiBJBJNBEiE4Ia\",\n                \"line_num\": 18,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.docker.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"EQ5cGA4hNI0TBoKbIkiQOCyMAjIhl1DgKAlbwnCYKAzKQECCGHDiBJBJNBEiE4Ia\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 4.85141\n            },\n            {\n                \"line\": \"#6 0.245 xo0CIoRcNiUapW1UmGHLREVihg0ZRiYUxwzEwEHToCQDMIiSAFGaQAhSNIpaIo3g\",\n                \"line_num\": 19,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.docker.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"xo0CIoRcNiUapW1UmGHLREVihg0ZRiYUxwzEwEHToCQDMIiSAFGaQAhSNIpaIo3g\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 4.92157\n            },\n            {\n                \"line\": \"#6 0.245 kgCjgoDAEEXKOGYYmGhaNArJGEQiCASkliCaIoohtAlRQhJIBE6EICFREm4DAnEK\",\n                \"line_num\": 20,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.docker.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"kgCjgoDAEEXKOGYYmGhaNArJGEQiCASkliCaIoohtAlRQhJIBE6EICFREm4DAnEK\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 4.71436\n            },\n            {\n                \"line\": \"#6 0.245 pihYGGLKmIxiRC4DOEwaEwICwQxbEgAiBwILEWKKCE1aiAzYOI0joyGCxoAEBG3h\",\n                \"line_num\": 21,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.docker.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"pihYGGLKmIxiRC4DOEwaEwICwQxbEgAiBwILEWKKCE1aiAzYOI0joyGCxoAEBG3h\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 4.69102\n            },\n            {\n                \"line\": \"#6 0.245 towIwBDkRFJaKI4CQEEKQ3ASuEEKQ24JOI4DIQYckyjJQDGRQIQKISUMImyQoGkA\",\n                \"line_num\": 22,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.docker.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"towIwBDkRFJaKI4CQEEKQ3ASuEEKQ24JOI4DIQYckyjJQDGRQIQKISUMImyQoGkA\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 4.55202\n            },\n            {\n                \"line\": \"#6 0.245 NjEgRFLgFIKRQHEEJpAcCAIIhISbxgwLQU3koAxBIgoTFomElASihhBhME4jhiQA\",\n                \"line_num\": 23,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.docker.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"NjEgRFLgFIKRQHEEJpAcCAIIhISbxgwLQU3koAxBIgoTFomElASihhBhME4jhiQA\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 4.70776\n            },\n            {\n                \"line\": \"#6 0.245 BgCSAkUioBHhKE2IkGUCkhBDEALcQJEYowwbF2lKCIETEUqSBFEKQGnBtpCYQoBU\",\n                \"line_num\": 24,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.docker.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"BgCSAkUioBHhKE2IkGUCkhBDEALcQJEYowwbF2lKCIETEUqSBFEKQGnBtpCYQoBU\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 4.68689\n            },\n            {\n                \"line\": \"#6 0.245 tHFbJHEaiYxKAmEaB21buAgKNiFBpkUbMjIJsYCEhEVBIBHZMiAaRg0hCVAjMxDE\",\n                \"line_num\": 25,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.docker.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"tHFbJHEaiYxKAmEaB21buAgKNiFBpkUbMjIJsYCEhEVBIBHZMiAaRg0hCVAjMxDE\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 4.85337\n            },\n            {\n                \"line\": \"#6 0.245 mADZMHAIEw4QoFFgKFIgMikiMmUJgZGLwmEBsQUihmBbJhIEMGYSN4iSRkDbECba\",\n                \"line_num\": 26,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.docker.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"mADZMHAIEw4QoFFgKFIgMikiMmUJgZGLwmEBsQUihmBbJhIEMGYSN4iSRkDbECba\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 4.79657\n            },\n            {\n                \"line\": \"#6 0.245 BmghyVBJiGTjwClJRJIMyWUAQgWAIAmDEHCKwoiBEEJKEBFiMiXcRIGZwCCLwA1U\",\n                \"line_num\": 27,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.docker.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"BmghyVBJiGTjwClJRJIMyWUAQgWAIAmDEHCKwoiBEEJKEBFiMiXcRIGZwCCLwA1U\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 4.76945\n            },\n            {\n                \"line\": \"#6 0.245 EDACECUiEDLQCEyLImIghxAZSEgks4SUOAULowVbOCCTtETJRHJjhkFEAmoQIEIY\",\n                \"line_num\": 28,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.docker.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"EDACECUiEDLQCEyLImIghxAZSEgks4SUOAULowVbOCCTtETJRHJjhkFEAmoQIEIY\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 4.70126\n            },\n            {\n                \"line\": \"#6 0.245 GQWUhkEcBioKqJDQhAkjJwYYkw3MoAwZCCEDRGphtnEDkAnSyGSRxkUBQkojJGSI\",\n                \"line_num\": 29,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.docker.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"GQWUhkEcBioKqJDQhAkjJwYYkw3MoAwZCCEDRGphtnEDkAnSyGSRxkUBQkojJGSI\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 4.74525\n            },\n            {\n                \"line\": \"#6 0.245 sAkYGBDRMmQJIg0bhIhcuCXgiGABCI1RNG4bw4zUKImRMAxSAi0MskRCEG0aA2Qi\",\n                \"line_num\": 30,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.docker.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"sAkYGBDRMmQJIg0bhIhcuCXgiGABCI1RNG4bw4zUKImRMAxSAi0MskRCEG0aA2Qi\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 4.86517\n            },\n            {\n                \"line\": \"#6 0.245 AoDYpAwUoGgSpYgCQUVbFgGahIkMRBDUBASCoARauIWZKEyYmFHIyEGhRFCYiAzc\",\n                \"line_num\": 31,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.docker.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"AoDYpAwUoGgSpYgCQUVbFgGahIkMRBDUBASCoARauIWZKEyYmFHIyEGhRFCYiAzc\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 4.84924\n            },\n            {\n                \"line\": \"#6 0.245 EojbGBGTtIwiRWhUsBBABlLCxgkMNooBIzAkEnICGGqLpkjkNFAKmGghCUTgEIJU\",\n                \"line_num\": 32,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.docker.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"EojbGBGTtIwiRWhUsBBABlLCxgkMNooBIzAkEnICGGqLpkjkNFAKmGghCUTgEIJU\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 4.78518\n            },\n            {\n                \"line\": \"#6 0.245 lEhEgoESMREbkEXYtGELMxASxyQLoJHEiHEImBAEyGHZkiWTJjKgokWhuIghlRAa\",\n                \"line_num\": 33,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.docker.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"lEhEgoESMREbkEXYtGELMxASxyQLoJHEiHEImBAEyGHZkiWTJjKgokWhuIghlRAa\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 4.73346\n            },\n            {\n                \"line\": \"#6 0.245 xSwckCRCRHARNooERYIiBU1TCAYMBopcNAaIJhHRgA0jgVFiBoaTIjBYBgXkooxZ\",\n                \"line_num\": 34,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.docker.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"xSwckCRCRHARNooERYIiBU1TCAYMBopcNAaIJhHRgA0jgVFiBoaTIjBYBgXkooxZ\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 4.69143\n            },\n            {\n                \"line\": \"#6 0.245 GJASFABhsEWQGIWkkIHbIAhCwAmUopFjEoTMwECREi3YSBIgKGWcNnABJCCjMo4U\",\n                \"line_num\": 35,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.docker.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"GJASFABhsEWQGIWkkIHbIAhCwAmUopFjEoTMwECREi3YSBIgKGWcNnABJCCjMo4U\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 4.86517\n            },\n            {\n                \"line\": \"#6 0.245 FyHgloRKOGSUFC0UBmYBSW3SooTSslEjKAHISIbMpDAcJWWLIi2MoHEMB2yQkklI\",\n                \"line_num\": 36,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.docker.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"FyHgloRKOGSUFC0UBmYBSW3SooTSslEjKAHISIbMpDAcJWWLIi2MoHEMB2yQkklI\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 4.94712\n            },\n            {\n                \"line\": \"#6 0.245 BChIpAeQQHOr3D0Iep/D+4IgaEAVpnwPXeexBdx0o3BUailbyZ/noQlEd13bgvWN\",\n                \"line_num\": 37,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.docker.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"BChIpAeQQHOr3D0Iep/D+4IgaEAVpnwPXeexBdx0o3BUailbyZ/noQlEd13bgvWN\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.09727\n            },\n            {\n                \"line\": \"#6 0.245 NSFX9xz99vb3aSIaargvQ4Hq4bUvZ/y/qgXCAgs2PcNXqDAHd1EPWV5TIs4l3Qug\",\n                \"line_num\": 38,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.docker.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"NSFX9xz99vb3aSIaargvQ4Hq4bUvZ/y/qgXCAgs2PcNXqDAHd1EPWV5TIs4l3Qug\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.08548\n            },\n            {\n                \"line\": \"#6 0.245 TTdPyoEV7/+hokQ6ucVaSk7qiV0r/7DI2Kth2TlKbmiXRl9Lx/EshuhoiqWCxCjh\",\n                \"line_num\": 39,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.docker.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"TTdPyoEV7/+hokQ6ucVaSk7qiV0r/7DI2Kth2TlKbmiXRl9Lx/EshuhoiqWCxCjh\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.09158\n            },\n            {\n                \"line\": \"#6 0.245 na22XUltZ62l2/8f+Bi3vIrEz7jrNWRdeVbVykqeHxwsTsc9oWnFpY7F+GATH0RO\",\n                \"line_num\": 40,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.docker.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"na22XUltZ62l2/8f+Bi3vIrEz7jrNWRdeVbVykqeHxwsTsc9oWnFpY7F+GATH0RO\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.46875\n            },\n            {\n                \"line\": \"#6 0.245 1rD2oX9QyI6wcv4bePHzjtJuTz3V0w/bh4n+xmleu4chQwL2aLwlLa62jcKXgun8\",\n                \"line_num\": 41,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.docker.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"1rD2oX9QyI6wcv4bePHzjtJuTz3V0w/bh4n+xmleu4chQwL2aLwlLa62jcKXgun8\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.15977\n            },\n            {\n                \"line\": \"#6 0.245 tXVVGteOYcsQVmS/YOMLveYAT8GmwWOd+4h4dCjWZB/6xI6DUv9pCYGbzNdZ5qt/\",\n                \"line_num\": 42,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.docker.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"tXVVGteOYcsQVmS/YOMLveYAT8GmwWOd+4h4dCjWZB/6xI6DUv9pCYGbzNdZ5qt/\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.17923\n            },\n            {\n                \"line\": \"#6 0.245 x3r5LF4b4teVUFwqvPcGn2+h/MLZ8VcilPb7bfR0pcHaWqynggr6EtnMACOsQrp6\",\n                \"line_num\": 43,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.docker.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"x3r5LF4b4teVUFwqvPcGn2+h/MLZ8VcilPb7bfR0pcHaWqynggr6EtnMACOsQrp6\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.35907\n            },\n            {\n                \"line\": \"#6 0.245 20lFJR/EHrv7uuXCyEaUVzi3pzq/J1u9EKXsuqtNFZWI0RA7Pdk7Sk/EV9tzeOJu\",\n                \"line_num\": 44,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.docker.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"20lFJR/EHrv7uuXCyEaUVzi3pzq/J1u9EKXsuqtNFZWI0RA7Pdk7Sk/EV9tzeOJu\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.11517\n            },\n            {\n                \"line\": \"#6 0.245 ES62pC7vlJ1Wo8vpXx1wzEL3pKdnKxNCWfKaTO25qoo4t0+8WkM2w1oKWEAKVFBb\",\n                \"line_num\": 45,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.docker.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"ES62pC7vlJ1Wo8vpXx1wzEL3pKdnKxNCWfKaTO25qoo4t0+8WkM2w1oKWEAKVFBb\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.11517\n            },\n            {\n                \"line\": \"#6 0.245 5Zus63oUSjTaLGPXdoE/wk5P6mW3BmwmFfKeHZuUNnBwlhIcrlnyFc7UklmNsUm9\",\n                \"line_num\": 46,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.docker.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"5Zus63oUSjTaLGPXdoE/wk5P6mW3BmwmFfKeHZuUNnBwlhIcrlnyFc7UklmNsUm9\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.10751\n            },\n            {\n                \"line\": \"#6 0.245 WPDIyiFjey7GcRbVAXnl5JftLLPun9/Sl6WPoP9bsDpdTkKZFD3Jy0MAnA6gwi6G\",\n                \"line_num\": 47,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.docker.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"WPDIyiFjey7GcRbVAXnl5JftLLPun9/Sl6WPoP9bsDpdTkKZFD3Jy0MAnA6gwi6G\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.22227\n            },\n            {\n                \"line\": \"#6 0.245 A1Un/skxl2PDwdSYu/Yqk2F7BSz5x/D9QUTnkXm/W0uG3wmFVMI08OYwtCB1xXW8\",\n                \"line_num\": 48,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.docker.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"A1Un/skxl2PDwdSYu/Yqk2F7BSz5x/D9QUTnkXm/W0uG3wmFVMI08OYwtCB1xXW8\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.14032\n            },\n            {\n                \"line\": \"#6 0.245 kQbalUGvAscvoaXkkD2JjjZrxAOnkZxJqwzP84Sa33HEYMVPEtvucp2gd6du2weG\",\n                \"line_num\": 49,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.docker.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"kQbalUGvAscvoaXkkD2JjjZrxAOnkZxJqwzP84Sa33HEYMVPEtvucp2gd6du2weG\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.24586\n            },\n            {\n                \"line\": \"#6 0.245 v8X1Qy6SePZ/L2pIQHHG0t5aO5fBmUc1UJh9BmG15oE0rzqEiopaCDbFkEguFjhs\",\n                \"line_num\": 50,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.docker.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"v8X1Qy6SePZ/L2pIQHHG0t5aO5fBmUc1UJh9BmG15oE0rzqEiopaCDbFkEguFjhs\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.40211\n            },\n            {\n                \"line\": \"#6 0.245 2BI6NiY798TaKwkaWFy8irSLb3CvU8IrAm3VM9Lcp1vhwsnyGvMq78fC+SjxKcWQ\",\n                \"line_num\": 51,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.docker.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"2BI6NiY798TaKwkaWFy8irSLb3CvU8IrAm3VM9Lcp1vhwsnyGvMq78fC+SjxKcWQ\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.3007\n            },\n            {\n                \"line\": \"#6 0.245 QwCdrsgLZerfct0uWaaA/1yVRH0g8ceBIuoj2Kkv9E6xTKeAwsMi9vhwqgkjsSG/\",\n                \"line_num\": 52,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.docker.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"QwCdrsgLZerfct0uWaaA/1yVRH0g8ceBIuoj2Kkv9E6xTKeAwsMi9vhwqgkjsSG/\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.32782\n            },\n            {\n                \"line\": \"#6 0.245 Ts54V2KurNiPKb5WSwteBOD7TvkdwMfmK7jYMWH1oc98V70YxPgnkURW2IXs8H23\",\n                \"line_num\": 53,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.docker.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"Ts54V2KurNiPKb5WSwteBOD7TvkdwMfmK7jYMWH1oc98V70YxPgnkURW2IXs8H23\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.35907\n            },\n            {\n                \"line\": \"#6 0.245 5EQsx7aiwzXBB5F5xIy3yNJIpFUGQGU1oy2L8FQhuKdyMjXEAEiuJtzdyTtgnoJR\",\n                \"line_num\": 54,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.docker.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"5EQsx7aiwzXBB5F5xIy3yNJIpFUGQGU1oy2L8FQhuKdyMjXEAEiuJtzdyTtgnoJR\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.07212\n            },\n            {\n                \"line\": \"#6 0.245 7N0evDEzqUuUVvtXb32GoTuLzlPM32+cBbDr80mIphfmyr/RQLlZIxgv6LsV4pgU\",\n                \"line_num\": 55,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.docker.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"7N0evDEzqUuUVvtXb32GoTuLzlPM32+cBbDr80mIphfmyr/RQLlZIxgv6LsV4pgU\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.33961\n            },\n            {\n                \"line\": \"#6 0.245 VTS/P3VLXRX6oclTn7UZ1+5L4dosP2pjoAmSEeQe9DiDDKb9DRcYRP09ePylma2i\",\n                \"line_num\": 56,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.docker.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"VTS/P3VLXRX6oclTn7UZ1+5L4dosP2pjoAmSEeQe9DiDDKb9DRcYRP09ePylma2i\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.14032\n            },\n            {\n                \"line\": \"#6 0.245 2BD0oJ81P4A/tl9ojqyz4dSJuIo2deDaQs8cme0lNxAR0uO8FbiHnnkXFalberVl\",\n                \"line_num\": 57,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.docker.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"2BD0oJ81P4A/tl9ojqyz4dSJuIo2deDaQs8cme0lNxAR0uO8FbiHnnkXFalberVl\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.23407\n            },\n            {\n                \"line\": \"#6 0.245 V1ZSX4aPC9DBvrxYL1hh51umejg5GoIOWVLZtAVThRVyhUEg1krkM0zNGGjT0o4E\",\n                \"line_num\": 58,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.docker.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"V1ZSX4aPC9DBvrxYL1hh51umejg5GoIOWVLZtAVThRVyhUEg1krkM0zNGGjT0o4E\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.1757\n            },\n            {\n                \"line\": \"#6 0.245 R42sWTjNMxSB99ZQbpuySMtisaB2WPcdTdIWwnBytzy/XGezCicBJHMMCA36m4K/\",\n                \"line_num\": 59,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.docker.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"R42sWTjNMxSB99ZQbpuySMtisaB2WPcdTdIWwnBytzy/XGezCicBJHMMCA36m4K/\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.19516\n            },\n            {\n                \"line\": \"#6 0.245 rkFyjWHI73ahgE3nsfg3zQui9bZMCThlRV07cFbsh4Vrz8V84kWceTIBTB/NMGIH\",\n                \"line_num\": 60,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.docker.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"rkFyjWHI73ahgE3nsfg3zQui9bZMCThlRV07cFbsh4Vrz8V84kWceTIBTB/NMGIH\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.15977\n            },\n            {\n                \"line\": \"#6 0.245 N7gW2wDhlzJFmM1DI6fc/Yv1/zFEqW+GwAEmlCdBYd0KK2Uw+DjvuTpoUAj0N5EA\",\n                \"line_num\": 61,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.docker.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"N7gW2wDhlzJFmM1DI6fc/Yv1/zFEqW+GwAEmlCdBYd0KK2Uw+DjvuTpoUAj0N5EA\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.17157\n            },\n            {\n                \"line\": \"#6 0.245 eKwQvUVLxerWkelYq7XTtuj+cf/ni9cwUUCaO8CZ3qfO6qlESAASZ3Zs8dLj2ScI\",\n                \"line_num\": 62,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.docker.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"eKwQvUVLxerWkelYq7XTtuj+cf/ni9cwUUCaO8CZ3qfO6qlESAASZ3Zs8dLj2ScI\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.24173\n            },\n            {\n                \"line\": \"#6 0.245 7F4zmeFxp+adjBRR2vj0iTdckA5tSmEOANrJ7Ncq0JGZBuwKyAkUneJ+VPxGavrX\",\n                \"line_num\": 63,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.docker.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"7F4zmeFxp+adjBRR2vj0iTdckA5tSmEOANrJ7Ncq0JGZBuwKyAkUneJ+VPxGavrX\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.28891\n            },\n            {\n                \"line\": \"#6 0.245 WvV5rQ7BNgz7+ZAKGjvq78AyQZVS9MEpxe6qKy7OMclg75op8zCJ54IzpGkfcPWa\",\n                \"line_num\": 64,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.docker.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"WvV5rQ7BNgz7+ZAKGjvq78AyQZVS9MEpxe6qKy7OMclg75op8zCJ54IzpGkfcPWa\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.15821\n            },\n            {\n                \"line\": \"#6 0.245 NhOa5n1kEdNm2a5u6tzdxJVvpFEQDkta6OpfSX76YeNLpy7bSdBdBWmNzWkuDMFK\",\n                \"line_num\": 65,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.docker.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"NhOa5n1kEdNm2a5u6tzdxJVvpFEQDkta6OpfSX76YeNLpy7bSdBdBWmNzWkuDMFK\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.04657\n            },\n            {\n                \"line\": \"#6 0.245 z2ZRcjbQFJ657Y7MWy7/4kzBPBG/OcNAi/9h1y+Sm84LZhLkH59okLFuklK5F/e4\",\n                \"line_num\": 66,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.docker.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"z2ZRcjbQFJ657Y7MWy7/4kzBPBG/OcNAi/9h1y+Sm84LZhLkH59okLFuklK5F/e4\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.15977\n            },\n            {\n                \"line\": \"#6 0.245 QmGx1sx+wlPtQ3q1f9tFYFMAwpIWsCGFd3DDKyA5QTBSc2wfcyBgIcZotBV0Ic2H\",\n                \"line_num\": 67,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.docker.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"QmGx1sx+wlPtQ3q1f9tFYFMAwpIWsCGFd3DDKyA5QTBSc2wfcyBgIcZotBV0Ic2H\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.11673\n            },\n            {\n                \"line\": \"#6 0.245 /Xa/US2QGYlpDtm/RDaq/kqlbMPZhBLE+M2W/dGYSuyPoL0GPC0bML0LLlavP5xB\",\n                \"line_num\": 68,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.docker.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"/Xa/US2QGYlpDtm/RDaq/kqlbMPZhBLE+M2W/dGYSuyPoL0GPC0bML0LLlavP5xB\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 4.92197\n            },\n            {\n                \"line\": \"#6 0.245 4EuYIB54jmYwLcO7ZK8wpQhR6kk/gAwLnIDApOH5iiv+1sb0IJpjZmFmZUdUllpb\",\n                \"line_num\": 69,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.docker.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"4EuYIB54jmYwLcO7ZK8wpQhR6kk/gAwLnIDApOH5iiv+1sb0IJpjZmFmZUdUllpb\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.20282\n            },\n            {\n                \"line\": \"#6 0.245 PppwUoy0NzBPjq/PksCd6fVWkmDpIuI+SLJyNhRNKEOTMTrVYuPSUvnFf9NaHkUi\",\n                \"line_num\": 70,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.docker.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"PppwUoy0NzBPjq/PksCd6fVWkmDpIuI+SLJyNhRNKEOTMTrVYuPSUvnFf9NaHkUi\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.30836\n            },\n            {\n                \"line\": \"#6 0.245 ifzK2eAEfx2UBE7o+YQR+QC6/pJQIMX7FXQjx78cVTKlybuJkpDggsUJ25SszaMk\",\n                \"line_num\": 71,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.docker.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"ifzK2eAEfx2UBE7o+YQR+QC6/pJQIMX7FXQjx78cVTKlybuJkpDggsUJ25SszaMk\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.24586\n            },\n            {\n                \"line\": \"#6 0.245 KA0xTnsP5gx8lUGmyWMuJ5JgDWUP1jOHdadTmX/xtEy5Wqw/DQKn2bG2NnpQrbIJ\",\n                \"line_num\": 72,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.docker.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"KA0xTnsP5gx8lUGmyWMuJ5JgDWUP1jOHdadTmX/xtEy5Wqw/DQKn2bG2NnpQrbIJ\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.19102\n            },\n            {\n                \"line\": \"#6 0.245 EcXsCgMeziOzNqqJk9QrnAAu/eB1XdnhbC3UJ/caEI7gofJxMYiO20/OHtnkLhgf\",\n                \"line_num\": 73,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.docker.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"EcXsCgMeziOzNqqJk9QrnAAu/eB1XdnhbC3UJ/caEI7gofJxMYiO20/OHtnkLhgf\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.22227\n            },\n            {\n                \"line\": \"#6 0.245 82N3qrG5oZP8oQVmgO4Ww58rWn2U5f9F+tFjrSjj8OR1NkY39x/kgRXg538T0TEL\",\n                \"line_num\": 74,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.docker.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"82N3qrG5oZP8oQVmgO4Ww58rWn2U5f9F+tFjrSjj8OR1NkY39x/kgRXg538T0TEL\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.08392\n            },\n            {\n                \"line\": \"#6 0.245 JmFGqBYBW5YkhS4E6cQ+s8Me76ZYMcIEyrb7vGpQ6sATjVuendOfq/nG/E1vVoQ8\",\n                \"line_num\": 75,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.docker.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"JmFGqBYBW5YkhS4E6cQ+s8Me76ZYMcIEyrb7vGpQ6sATjVuendOfq/nG/E1vVoQ8\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.25352\n            },\n            {\n                \"line\": \"#6 0.245 xSd1FGfwoVOhRp3I2ygdcz4l1RQzqunVff1A8ejjoMJ4+N/JUaL3rDF6KDPLuG1n\",\n                \"line_num\": 76,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.docker.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"xSd1FGfwoVOhRp3I2ygdcz4l1RQzqunVff1A8ejjoMJ4+N/JUaL3rDF6KDPLuG1n\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.33195\n            },\n            {\n                \"line\": \"#6 0.245 aHkGr75LFfgMPc1oAqtMk5qdEfNqYBsbaPhu7GV9ewft3R8E5VJdTVu6ksE7+1HZ\",\n                \"line_num\": 77,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.docker.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"aHkGr75LFfgMPc1oAqtMk5qdEfNqYBsbaPhu7GV9ewft3R8E5VJdTVu6ksE7+1HZ\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.16743\n            },\n            {\n                \"line\": \"#6 0.245 XnH5jM4u1p9NF4iQmQhQI8fOX6wqBDWcekGs+baJcxA+5zkYgffkUX+MRjMAHUAW\",\n                \"line_num\": 78,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.docker.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"XnH5jM4u1p9NF4iQmQhQI8fOX6wqBDWcekGs+baJcxA+5zkYgffkUX+MRjMAHUAW\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.26118\n            },\n            {\n                \"line\": \"#6 0.245 hL1S3jeUuoh8YWqWkyCS/NDmEV0oFNey0hU/36YktwDByEMa6zAxDnQoRpq6dikI\",\n                \"line_num\": 79,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.docker.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"hL1S3jeUuoh8YWqWkyCS/NDmEV0oFNey0hU/36YktwDByEMa6zAxDnQoRpq6dikI\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.21048\n            },\n            {\n                \"line\": \"#6 0.245 S//brXmHlWb++g5HLAPTV94FLiWnEEW7Ozn0HD6R5psyW0Csx2vt95FF3cmFziHd\",\n                \"line_num\": 80,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.docker.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"S//brXmHlWb++g5HLAPTV94FLiWnEEW7Ozn0HD6R5psyW0Csx2vt95FF3cmFziHd\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.1757\n            },\n            {\n                \"line\": \"#6 0.245 M7nqiDw5byw8wT/6cZmU5TJqSz3fKFOt13VXuG80yEtaDr68gDjxas2Tb/wTE0ZN\",\n                \"line_num\": 81,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.docker.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"M7nqiDw5byw8wT/6cZmU5TJqSz3fKFOt13VXuG80yEtaDr68gDjxas2Tb/wTE0ZN\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.22641\n            },\n            {\n                \"line\": \"#6 0.245 Y+4MmRj78Ffh74q87fX6FMQO1/HEKh7ltXGGNF5WlzEG8vVKHqbn487lBELkl00n\",\n                \"line_num\": 82,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.docker.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"Y+4MmRj78Ffh74q87fX6FMQO1/HEKh7ltXGGNF5WlzEG8vVKHqbn487lBELkl00n\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 4.99017\n            },\n            {\n                \"line\": \"#6 0.245 uP16MZvPDTHzhQ4l/fKuBW7MpuczsUpdHgSwLIeJS5354WhLYONRRz8yXqo/mfNd\",\n                \"line_num\": 83,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.docker.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"uP16MZvPDTHzhQ4l/fKuBW7MpuczsUpdHgSwLIeJS5354WhLYONRRz8yXqo/mfNd\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.38266\n            },\n            {\n                \"line\": \"#6 0.245 stWBI1ChlRmYkLyTri6kvajsDMPuGtDp/30UEi0zjVhwvJ9IcxrxArDOvlomTPsi\",\n                \"line_num\": 84,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.docker.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"stWBI1ChlRmYkLyTri6kvajsDMPuGtDp/30UEi0zjVhwvJ9IcxrxArDOvlomTPsi\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.28477\n            },\n            {\n                \"line\": \"#6 0.245 YBJrUWXblmmC9bR14vf3CWR+PK7q8BIjL1D6P//IAtU+ub3UvbCS8EbNyJAbVuns\",\n                \"line_num\": 85,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.docker.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"YBJrUWXblmmC9bR14vf3CWR+PK7q8BIjL1D6P//IAtU+ub3UvbCS8EbNyJAbVuns\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.14032\n            },\n            {\n                \"line\": \"#6 0.245 H8uWrQFtodTx7wQi5zaP97sP33deMtlEP1j0EQdwbrK1y/u1Fjk5V9lZmlWyDjMr\",\n                \"line_num\": 86,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.docker.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"H8uWrQFtodTx7wQi5zaP97sP33deMtlEP1j0EQdwbrK1y/u1Fjk5V9lZmlWyDjMr\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.10493\n            },\n            {\n                \"line\": \"#6 0.245 zIr286q6AWWttxwb3p5SY7A14GLh0rCsiCwP+almEouRr8UzdczrotBq4vh9NtWb\",\n                \"line_num\": 87,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.docker.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"zIr286q6AWWttxwb3p5SY7A14GLh0rCsiCwP+almEouRr8UzdczrotBq4vh9NtWb\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.28891\n            },\n            {\n                \"line\": \"#6 0.245 Dmu72duyz/6gP6tuwdDV7SnOS6ep1m/CnkxfB0eggCvHrIqwletSbpUAl2ddk578\",\n                \"line_num\": 88,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.docker.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"Dmu72duyz/6gP6tuwdDV7SnOS6ep1m/CnkxfB0eggCvHrIqwletSbpUAl2ddk578\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.08548\n            },\n            {\n                \"line\": \"#6 0.245 YdwaNjMhKHGNHJetGZqIn2sJVxcbN2rBIBzgRoHGe+NTq82HD/AKv7OKUxOVBZ/T\",\n                \"line_num\": 89,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.docker.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"YdwaNjMhKHGNHJetGZqIn2sJVxcbN2rBIBzgRoHGe+NTq82HD/AKv7OKUxOVBZ/T\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.14032\n            },\n            {\n                \"line\": \"#6 0.245 j8lwHWTgMP25Qt/7e2L916+HUfLVKj9YpOeEb1P81rRC7l9zRimlv1RYy4MsGdLj\",\n                \"line_num\": 90,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.docker.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"j8lwHWTgMP25Qt/7e2L916+HUfLVKj9YpOeEb1P81rRC7l9zRimlv1RYy4MsGdLj\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.25352\n            },\n            {\n                \"line\": \"#6 0.245 S3hXz3e4hRXAb23bT06aoU3RhubgZo7trwHy5mzbzAdOGPEXviXw9+ihjY4kWAJU\",\n                \"line_num\": 91,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.docker.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"S3hXz3e4hRXAb23bT06aoU3RhubgZo7trwHy5mzbzAdOGPEXviXw9+ihjY4kWAJU\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.16391\n            },\n            {\n                \"line\": \"#6 0.245 ADio3z2NMbz5ZYexpy5XyPmgOv0UECTdIjV+MYMFncdpZaO9YP4BG3c8k8z2R5OB\",\n                \"line_num\": 92,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.docker.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"ADio3z2NMbz5ZYexpy5XyPmgOv0UECTdIjV+MYMFncdpZaO9YP4BG3c8k8z2R5OB\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.31602\n            },\n            {\n                \"line\": \"#6 0.245 YjYDCT0R2kez6mfVL2kp1T5FGuZIIaSSYRz+zxzGTFWHFsJFPutSrGF3oILueAMO\",\n                \"line_num\": 93,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.docker.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"YjYDCT0R2kez6mfVL2kp1T5FGuZIIaSSYRz+zxzGTFWHFsJFPutSrGF3oILueAMO\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.09158\n            },\n            {\n                \"line\": \"#6 0.245 55mb2P24b44wCoVGNfFVDQOFE2DOOHvkgyvarxraYLmXVHfsZUSFDKLoEajb4bbd\",\n                \"line_num\": 94,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.docker.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"55mb2P24b44wCoVGNfFVDQOFE2DOOHvkgyvarxraYLmXVHfsZUSFDKLoEajb4bbd\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 4.96658\n            },\n            {\n                \"line\": \"#6 0.245 UcSqmGsFbKmJA7mxRw3uAzgFwN5uneHaAOVcloDrvmfyrEsbtCYe0QbHJanETdPA\",\n                \"line_num\": 95,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.docker.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"UcSqmGsFbKmJA7mxRw3uAzgFwN5uneHaAOVcloDrvmfyrEsbtCYe0QbHJanETdPA\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.3007\n            },\n            {\n                \"line\": \"#6 0.245 9webIXysF5t9KQRKAH+tKRpTM2XpxkLo5cZVfbnGCIGztuYYtr36I5wFCQBYprMY\",\n                \"line_num\": 96,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.docker.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"9webIXysF5t9KQRKAH+tKRpTM2XpxkLo5cZVfbnGCIGztuYYtr36I5wFCQBYprMY\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.10907\n            },\n            {\n                \"line\": \"#6 0.245 VCvAGX7LtBkfK+UKp+IN1MIwp3FqXCyY569gWA/lNXkqOxLR2Q2C1zs0G5y9uym4\",\n                \"line_num\": 97,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.docker.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"VCvAGX7LtBkfK+UKp+IN1MIwp3FqXCyY569gWA/lNXkqOxLR2Q2C1zs0G5y9uym4\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.33961\n            },\n            {\n                \"line\": \"#6 0.245 9EB0jFhFeH9pr2MWlFh+09iy+I2Gx2vqGT5huaPCi3g1sGUEsgXO+0K0FnkltKWL\",\n                \"line_num\": 98,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.docker.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"9EB0jFhFeH9pr2MWlFh+09iy+I2Gx2vqGT5huaPCi3g1sGUEsgXO+0K0FnkltKWL\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.15977\n            },\n            {\n                \"line\": \"#6 0.245 2/fkKb37wmkLxOm1AGfK8+jzJgROpQp5LweN6c2gBDnJfHIWhk5mE+YhvyxgU6ks\",\n                \"line_num\": 99,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.docker.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"2/fkKb37wmkLxOm1AGfK8+jzJgROpQp5LweN6c2gBDnJfHIWhk5mE+YhvyxgU6ks\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.27711\n            },\n            {\n                \"line\": \"#6 0.245 RUGiT43/IngQBwjH2IzE1BvaFhaLVnF5dAkjSVJX0NyVLdBLdEyotg8GHO2G0Y/c\",\n                \"line_num\": 100,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.docker.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"RUGiT43/IngQBwjH2IzE1BvaFhaLVnF5dAkjSVJX0NyVLdBLdEyotg8GHO2G0Y/c\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.25352\n            },\n            {\n                \"line\": \"#6 0.245 JHhz9tMGqN1/18UhsBdrfahJIqeNrIBuxbNk2sXi3/26XXDHe8HzYz9IGzwttclP\",\n                \"line_num\": 101,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.docker.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"JHhz9tMGqN1/18UhsBdrfahJIqeNrIBuxbNk2sXi3/26XXDHe8HzYz9IGzwttclP\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.05423\n            },\n            {\n                \"line\": \"#6 0.245 l9bwNLKlK6G6ey6CuGc+pk+ab+FTKYzDOYzUNuk9KVjks9abhojhKp+umdcg1ads\",\n                \"line_num\": 102,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.docker.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"l9bwNLKlK6G6ey6CuGc+pk+ab+FTKYzDOYzUNuk9KVjks9abhojhKp+umdcg1ads\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 4.90408\n            },\n            {\n                \"line\": \"#6 0.245 sFq7BZk0ud5rvSuHXFGaxdhZRkcTgWCfO3RnIb1nnU2s9baNjE6EiQlgXxtsDbco\",\n                \"line_num\": 103,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.docker.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"sFq7BZk0ud5rvSuHXFGaxdhZRkcTgWCfO3RnIb1nnU2s9baNjE6EiQlgXxtsDbco\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.40211\n            },\n            {\n                \"line\": \"#6 0.245 0sfTmAos3DRhn17vYxvBuIHQdsk9Lg2nRwJhKBhnQccl8k3fYTW8WZbBu9Ism+nS\",\n                \"line_num\": 104,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.docker.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"0sfTmAos3DRhn17vYxvBuIHQdsk9Lg2nRwJhKBhnQccl8k3fYTW8WZbBu9Ism+nS\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.13266\n            },\n            {\n                \"line\": \"#6 0.245 Bvz56M5Z+5wf6DGFitWOPDcrgXAy/H1G4byIXU06YwWEcGj/Dyte3EOWEeU+68kQ\",\n                \"line_num\": 105,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.docker.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"Bvz56M5Z+5wf6DGFitWOPDcrgXAy/H1G4byIXU06YwWEcGj/Dyte3EOWEeU+68kQ\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.14798\n            },\n            {\n                \"line\": \"#6 0.245 aANEEoU1dXIzisq6pQ0J8AKS\",\n                \"line_num\": 106,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.docker.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"aANEEoU1dXIzisq6pQ0J8AKS\",\n                \"value_start\": 9,\n                \"value_end\": 33,\n                \"entropy\": 4.4183\n            },\n            {\n                \"line\": \"#6 0.245 -----END PRIVATE KEY-----\",\n                \"line_num\": 107,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.docker.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"-----END PRIVATE KEY-----\",\n                \"value_start\": 9,\n                \"value_end\": 34,\n                \"entropy\": 3.04489\n            }\n        ]\n    },\n    {\n        \"rule\": \"PEM Private Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"-----BEGIN PRIVATE KEY-----\\\\\\\\r\\\\\\\\n#5 0.228 MIIBVQIBADANBgkqhkiG9w0BAQEFAASCAT8wggE7AgEAAkEAvKMMVSiEmVawE4EQ\\\\\\\\r\\\\\\\\n#5 0.228 GqXBumHAZco0bRhfhZjmeZ64SmmAM0NpM3j8hwhTyWHRXpW21gv8cumYJqb/ilf7\\\\\\\\r\\\\\\\\n#5 0.228 62oRDQIDAQABAkBYiY64SZQzBGUQQnt0hmgvOsI7BHUm31G2OtWyL7T/90UhnksH\\\\\\\\r\\\\\\\\n#5 0.228 w2YF31p/TJULL44SV3HpxiY+T1vOPl138ulhAiEA9LcC28UMotvF0z/CVofas5Fh\\\\\\\\r\\\\\\\\n#5 0.228 eKZSGLykNZ7FkKd0t+cCIQDFVgG6lreao/UzHcVk75fZG3lG3k0xvqdsZTIMAOjA\\\\\\\\r\\\\\\\\n#5 0.228 6wIgV033ehqJ0IxhvmUP2zkqoEeso5OK1IJwfyS+zUXA0V8CIQCvKySHvAgpRkd/\\\\\\\\r\\\\\\\\n#5 0.228 Y3r4mVICj8e859JASQwXRVECpL/3lwIhANcg6iGD9S4zdbvVxYjJogRVbi7U6YUU\\\\\\\\r\\\\\\\\n#5 0.228 ivYSmyJQhq+V\\\\\\\\r\\\\\\\\n#5 0.228 -----END PRIVATE KEY-----\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/pem_key.p.docker.log.json\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.docker.log.json|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"-----BEGIN PRIVATE KEY-----\\\\\\\\r\\\\\\\\n#5 0.228 MIIBVQIBADANBgkqhkiG9w0BAQEFAASCAT8wggE7AgEAAkEAvKMMVSiEmVawE4EQ\\\\\\\\r\\\\\\\\n#5 0.228 GqXBumHAZco0bRhfhZjmeZ64SmmAM0NpM3j8hwhTyWHRXpW21gv8cumYJqb/ilf7\\\\\\\\r\\\\\\\\n#5 0.228 62oRDQIDAQABAkBYiY64SZQzBGUQQnt0hmgvOsI7BHUm31G2OtWyL7T/90UhnksH\\\\\\\\r\\\\\\\\n#5 0.228 w2YF31p/TJULL44SV3HpxiY+T1vOPl138ulhAiEA9LcC28UMotvF0z/CVofas5Fh\\\\\\\\r\\\\\\\\n#5 0.228 eKZSGLykNZ7FkKd0t+cCIQDFVgG6lreao/UzHcVk75fZG3lG3k0xvqdsZTIMAOjA\\\\\\\\r\\\\\\\\n#5 0.228 6wIgV033ehqJ0IxhvmUP2zkqoEeso5OK1IJwfyS+zUXA0V8CIQCvKySHvAgpRkd/\\\\\\\\r\\\\\\\\n#5 0.228 Y3r4mVICj8e859JASQwXRVECpL/3lwIhANcg6iGD9S4zdbvVxYjJogRVbi7U6YUU\\\\\\\\r\\\\\\\\n#5 0.228 ivYSmyJQhq+V\\\\\\\\r\\\\\\\\n#5 0.228 -----END PRIVATE KEY-----\",\n                \"value_start\": 102,\n                \"value_end\": 749,\n                \"entropy\": 5.8742\n            }\n        ]\n    },\n    {\n        \"rule\": \"PEM Private Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"-----BEGIN PRIVATE KEY-----\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/pem_key.p.ec\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.ec|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"-----BEGIN PRIVATE KEY-----\",\n                \"value_start\": 0,\n                \"value_end\": 27,\n                \"entropy\": 3.20029\n            },\n            {\n                \"line\": \"MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgyK82YrlPyJb7FLsk\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/pem_key.p.ec\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.ec|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgyK82YrlPyJb7FLsk\",\n                \"value_start\": 0,\n                \"value_end\": 64,\n                \"entropy\": 4.72268\n            },\n            {\n                \"line\": \"1hg6SN+UI2R/QIVPPomtVY0yeH6hRANCAAStXqONgR32XCE3nfIkmYjk28Kn0wsK\",\n                \"line_num\": 3,\n                \"path\": \"./tests/samples/pem_key.p.ec\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.ec|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"1hg6SN+UI2R/QIVPPomtVY0yeH6hRANCAAStXqONgR32XCE3nfIkmYjk28Kn0wsK\",\n                \"value_start\": 0,\n                \"value_end\": 64,\n                \"entropy\": 5.12852\n            },\n            {\n                \"line\": \"+7OCsLnRoqJfWJAf8MV5nbMDiox7WFgRSOtt+l3u3zjpOznhmQyeN62Y\",\n                \"line_num\": 4,\n                \"path\": \"./tests/samples/pem_key.p.ec\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.ec|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"+7OCsLnRoqJfWJAf8MV5nbMDiox7WFgRSOtt+l3u3zjpOznhmQyeN62Y\",\n                \"value_start\": 0,\n                \"value_end\": 56,\n                \"entropy\": 5.24468\n            },\n            {\n                \"line\": \"-----END PRIVATE KEY-----\",\n                \"line_num\": 5,\n                \"path\": \"./tests/samples/pem_key.p.ec\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.ec|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"-----END PRIVATE KEY-----\",\n                \"value_start\": 0,\n                \"value_end\": 25,\n                \"entropy\": 3.04489\n            }\n        ]\n    },\n    {\n        \"rule\": \"PEM Private Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"const ecdsaPrivateKey = `-----BEGIN EC PRIVATE KEY-----\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/pem_key.p.go\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.go|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"-----BEGIN EC PRIVATE KEY-----\",\n                \"value_start\": 25,\n                \"value_end\": 55,\n                \"entropy\": 3.30775\n            },\n            {\n                \"line\": \"MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgv4Dj4ashv/uKUltV\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/pem_key.p.go\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.go|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgv4Dj4ashv/uKUltV\",\n                \"value_start\": 0,\n                \"value_end\": 64,\n                \"entropy\": 4.64072\n            },\n            {\n                \"line\": \"20VTUPnqXBPMDmPH43RG9WtK7cyhRANCAAQJameDIEe6M7PIpw6CPPAdHfN9+vxX\",\n                \"line_num\": 3,\n                \"path\": \"./tests/samples/pem_key.p.go\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.go|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"20VTUPnqXBPMDmPH43RG9WtK7cyhRANCAAQJameDIEe6M7PIpw6CPPAdHfN9+vxX\",\n                \"value_start\": 0,\n                \"value_end\": 64,\n                \"entropy\": 5.22641\n            },\n            {\n                \"line\": \"iptqkkBN/uRj9dkG5gDGhFzSqtSk8+d/b7VloKSdnH/nn4RxfMo6p1aC\",\n                \"line_num\": 4,\n                \"path\": \"./tests/samples/pem_key.p.go\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.go|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"iptqkkBN/uRj9dkG5gDGhFzSqtSk8+d/b7VloKSdnH/nn4RxfMo6p1aC\",\n                \"value_start\": 0,\n                \"value_end\": 56,\n                \"entropy\": 5.11058\n            },\n            {\n                \"line\": \"-----END EC PRIVATE KEY-----`\",\n                \"line_num\": 5,\n                \"path\": \"./tests/samples/pem_key.p.go\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.go|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"-----END EC PRIVATE KEY-----\",\n                \"value_start\": 0,\n                \"value_end\": 28,\n                \"entropy\": 3.16542\n            }\n        ]\n    },\n    {\n        \"rule\": \"PEM Private Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"PRIVATE_KEY = \\\"-----BEGIN RSA PRIVATE KEY-----\\\\n\\\"\",\n                \"line_num\": 3,\n                \"path\": \"./tests/samples/pem_key.p.java\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.java|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"-----BEGIN RSA PRIVATE KEY-----\",\n                \"value_start\": 19,\n                \"value_end\": 50,\n                \"entropy\": 3.38229\n            },\n            {\n                \"line\": \"+   \\\"MIIBVgIBADANBgkqhkiG9w0BAQEFAASCAUAwggE8AgEAAkEAplaRRGItayIi59+n\\\\n\\\"\",\n                \"line_num\": 4,\n                \"path\": \"./tests/samples/pem_key.p.java\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.java|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"MIIBVgIBADANBgkqhkiG9w0BAQEFAASCAUAwggE8AgEAAkEAplaRRGItayIi59+n\",\n                \"value_start\": 10,\n                \"value_end\": 74,\n                \"entropy\": 4.53081\n            },\n            {\n                \"line\": \"+   \\\"FlVJfmQshKZo3MNry20h1xvoqks6Wndb0XLJ3s1A6Z2Qg+9xKHNT7QZTTGVatxrp\\\\n\\\"\",\n                \"line_num\": 5,\n                \"path\": \"./tests/samples/pem_key.p.java\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.java|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"FlVJfmQshKZo3MNry20h1xvoqks6Wndb0XLJ3s1A6Z2Qg+9xKHNT7QZTTGVatxrp\",\n                \"value_start\": 11,\n                \"value_end\": 75,\n                \"entropy\": 5.25352\n            },\n            {\n                \"line\": \"+   \\\"CY1LcQIDAQABAkEAlXPKaercbBnryvLEqehPdGSFK1ppdZGQVOLlOOU2k2o5VpRP\\\\n\\\"\",\n                \"line_num\": 6,\n                \"path\": \"./tests/samples/pem_key.p.java\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.java|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"CY1LcQIDAQABAkEAlXPKaercbBnryvLEqehPdGSFK1ppdZGQVOLlOOU2k2o5VpRP\",\n                \"value_start\": 13,\n                \"value_end\": 77,\n                \"entropy\": 5.09727\n            },\n            {\n                \"line\": \"+   \\\"AvHzS6VZsimd5XPxEIKPkJhWDLhRckpwOX6LkQIhAND0WUcohqwBHxvUvAexRxbI\\\\n\\\"\",\n                \"line_num\": 7,\n                \"path\": \"./tests/samples/pem_key.p.java\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.java|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"AvHzS6VZsimd5XPxEIKPkJhWDLhRckpwOX6LkQIhAND0WUcohqwBHxvUvAexRxbI\",\n                \"value_start\": 11,\n                \"value_end\": 75,\n                \"entropy\": 5.10907\n            },\n            {\n                \"line\": \"+   \\\"FIizfZJfI9fC2dDepWvfAiEAy8npickbddF4NlWt+PVcPi9iSfe2h8LHZ/QLzNV5\\\\n\\\"\",\n                \"line_num\": 8,\n                \"path\": \"./tests/samples/pem_key.p.java\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.java|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"FIizfZJfI9fC2dDepWvfAiEAy8npickbddF4NlWt+PVcPi9iSfe2h8LHZ/QLzNV5\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.0629\n            },\n            {\n                \"line\": \"+   \\\"Mq8CIQDMdXvyS+5S2hoVgnimUkoMOaUWCgOiOOP6mFfHsERPIwIhAMovKCnQwhLR\\\\n\\\"\",\n                \"line_num\": 9,\n                \"path\": \"./tests/samples/pem_key.p.java\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.java|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"Mq8CIQDMdXvyS+5S2hoVgnimUkoMOaUWCgOiOOP6mFfHsERPIwIhAMovKCnQwhLR\",\n                \"value_start\": 10,\n                \"value_end\": 74,\n                \"entropy\": 5.10907\n            },\n            {\n                \"line\": \"+   \\\"YQAfX3yaCguUPWL/hjQJdodXZIGz5gv3AiBQ5WKTpyu8osL4CCi4aS6G/fSlCdu0\\\\n\\\"\",\n                \"line_num\": 10,\n                \"path\": \"./tests/samples/pem_key.p.java\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.java|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"YQAfX3yaCguUPWL/hjQJdodXZIGz5gv3AiBQ5WKTpyu8osL4CCi4aS6G/fSlCdu0\",\n                \"value_start\": 11,\n                \"value_end\": 75,\n                \"entropy\": 5.15211\n            },\n            {\n                \"line\": \"+   \\\"GeGaqMojMT7//g==\\\\n\\\"\",\n                \"line_num\": 11,\n                \"path\": \"./tests/samples/pem_key.p.java\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.java|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"GeGaqMojMT7//g==\",\n                \"value_start\": 10,\n                \"value_end\": 26,\n                \"entropy\": 3.5\n            },\n            {\n                \"line\": \"+ \\\"-----END RSA PRIVATE KEY-----\\\\n\\\";\",\n                \"line_num\": 12,\n                \"path\": \"./tests/samples/pem_key.p.java\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.java|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"-----END RSA PRIVATE KEY-----\",\n                \"value_start\": 9,\n                \"value_end\": 38,\n                \"entropy\": 3.24663\n            }\n        ]\n    },\n    {\n        \"rule\": \"PEM Private Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"= \\\"\\\\\\\"-----BEGIN PRIVATE KEY-----\\\\\\\\n\\\"\",\n                \"line_num\": 16,\n                \"path\": \"./tests/samples/pem_key.p.java\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.java|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"-----BEGIN PRIVATE KEY-----\",\n                \"value_start\": 6,\n                \"value_end\": 33,\n                \"entropy\": 3.20029\n            },\n            {\n                \"line\": \"+   \\\"MIIBVAIBADANBgkqhkiG9w0BAQEFAASCAT4wggE6AgEAAkEAxAIxg6QtxmnJ0Bsj\\\\\\\\n\\\"\",\n                \"line_num\": 17,\n                \"path\": \"./tests/samples/pem_key.p.java\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.java|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"MIIBVAIBADANBgkqhkiG9w0BAQEFAASCAT4wggE6AgEAAkEAxAIxg6QtxmnJ0Bsj\",\n                \"value_start\": 6,\n                \"value_end\": 70,\n                \"entropy\": 4.44143\n            },\n            {\n                \"line\": \"+   \\\"VRsEhjLB9lSY9CaFvvEbXK9eBezqR6x6epxm4w/bx1xAK1O9m4iyEN72+jhpZHZs\\\\\\\\n\\\"\",\n                \"line_num\": 18,\n                \"path\": \"./tests/samples/pem_key.p.java\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.java|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"VRsEhjLB9lSY9CaFvvEbXK9eBezqR6x6epxm4w/bx1xAK1O9m4iyEN72+jhpZHZs\",\n                \"value_start\": 6,\n                \"value_end\": 70,\n                \"entropy\": 5.16391\n            },\n            {\n                \"line\": \"+   \\\"6RZsxQIDAQABAkBbzksyxWtLS7Fi79MUwZrU4GFI50bc1E5AqN2QA/OeAg+tdgRC\\\\\\\\n\\\"\",\n                \"line_num\": 19,\n                \"path\": \"./tests/samples/pem_key.p.java\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.java|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"6RZsxQIDAQABAkBbzksyxWtLS7Fi79MUwZrU4GFI50bc1E5AqN2QA/OeAg+tdgRC\",\n                \"value_start\": 6,\n                \"value_end\": 70,\n                \"entropy\": 5.24586\n            },\n            {\n                \"line\": \"+   \\\"eTVV2eZEM750xZUCoqDwLsLeYrGFR7zy0VkBAiEA5ljPCFu3UIVOgZXhSr342mTX\\\\\\\\n\\\"\",\n                \"line_num\": 20,\n                \"path\": \"./tests/samples/pem_key.p.java\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.java|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"eTVV2eZEM750xZUCoqDwLsLeYrGFR7zy0VkBAiEA5ljPCFu3UIVOgZXhSr342mTX\",\n                \"value_start\": 6,\n                \"value_end\": 70,\n                \"entropy\": 5.28891\n            },\n            {\n                \"line\": \"+   \\\"vC9/t9XrGuHCQU8oOW0CIQDZ1mYBOniJmPD0h5j1wadmLkmmZRPUNyMTEHiBUEmB\\\\\\\\n\\\"\",\n                \"line_num\": 21,\n                \"path\": \"./tests/samples/pem_key.p.java\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.java|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"vC9/t9XrGuHCQU8oOW0CIQDZ1mYBOniJmPD0h5j1wadmLkmmZRPUNyMTEHiBUEmB\",\n                \"value_start\": 6,\n                \"value_end\": 70,\n                \"entropy\": 5.19102\n            },\n            {\n                \"line\": \"+   \\\"uQIgSpG1dB882PRO1eSPaoLVbN34eRNnZTv7QFiVak8V1oECIGk3tKdtPaGAnQoP\\\\\\\\n\\\"\",\n                \"line_num\": 22,\n                \"path\": \"./tests/samples/pem_key.p.java\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.java|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"uQIgSpG1dB882PRO1eSPaoLVbN34eRNnZTv7QFiVak8V1oECIGk3tKdtPaGAnQoP\",\n                \"value_start\": 6,\n                \"value_end\": 70,\n                \"entropy\": 5.04243\n            },\n            {\n                \"line\": \"+   \\\"oOM7eYbSXsKfWdeMFkX0E7CqPgcJAiEAlydP8ln92gy4LefZuIJn1/M5PEeRFKrq\\\\\\\\n\\\"\",\n                \"line_num\": 23,\n                \"path\": \"./tests/samples/pem_key.p.java\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.java|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"oOM7eYbSXsKfWdeMFkX0E7CqPgcJAiEAlydP8ln92gy4LefZuIJn1/M5PEeRFKrq\",\n                \"value_start\": 6,\n                \"value_end\": 70,\n                \"entropy\": 5.24586\n            },\n            {\n                \"line\": \"+   \\\"aAjRMKT7uCM=\\\\\\\\n\\\"\",\n                \"line_num\": 24,\n                \"path\": \"./tests/samples/pem_key.p.java\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.java|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"aAjRMKT7uCM=\",\n                \"value_start\": 6,\n                \"value_end\": 18,\n                \"entropy\": 3.4183\n            },\n            {\n                \"line\": \"+   \\\"-----END RSA PRIVATE KEY-----\\\\\\\"\\\";\",\n                \"line_num\": 25,\n                \"path\": \"./tests/samples/pem_key.p.java\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.java|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"-----END RSA PRIVATE KEY-----\",\n                \"value_start\": 6,\n                \"value_end\": 35,\n                \"entropy\": 3.24663\n            }\n        ]\n    },\n    {\n        \"rule\": \"PEM Private Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"2026-04-26 12:36:01 -----BEGIN PRIVATE KEY-----\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"-----BEGIN PRIVATE KEY-----\",\n                \"value_start\": 20,\n                \"value_end\": 47,\n                \"entropy\": 3.20029\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 MIIMvgIBADALBglghkgBZQMEBAMEggyqMIIMpgRATqJGETTwhb2gxXF41z3G5ztP\",\n                \"line_num\": 3,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"MIIMvgIBADALBglghkgBZQMEBAMEggyqMIIMpgRATqJGETTwhb2gxXF41z3G5ztP\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 4.67767\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 I+dcZ5zCOnpcALAIw+OAqVHjisQypIBH6K/pqnrVYzZkwV6M4bLhesOMuserAgSC\",\n                \"line_num\": 4,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"I+dcZ5zCOnpcALAIw+OAqVHjisQypIBH6K/pqnrVYzZkwV6M4bLhesOMuserAgSC\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.06602\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 DGAygxLkWHaG9AEmQJsg1MeFxsNyehNphDUdaKHxVmXPYUNVm3J4c5+xBZigd8pa\",\n                \"line_num\": 5,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"DGAygxLkWHaG9AEmQJsg1MeFxsNyehNphDUdaKHxVmXPYUNVm3J4c5+xBZigd8pa\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.17157\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 LEIX4H6JKVWAwKs5UkCLw3uB434w+6mWMJlUjDwWZSGgEiRjS21nx6eKyLqlLE16\",\n                \"line_num\": 6,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"LEIX4H6JKVWAwKs5UkCLw3uB434w+6mWMJlUjDwWZSGgEiRjS21nx6eKyLqlLE16\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.10907\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 XAZ5Rg2oJAL5CVj8uAe7pUdweySS4EBgdMPJ9o0cEZDP5aD9yTSIeXzi1bgGJQ/s\",\n                \"line_num\": 7,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"XAZ5Rg2oJAL5CVj8uAe7pUdweySS4EBgdMPJ9o0cEZDP5aD9yTSIeXzi1bgGJQ/s\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.27298\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 aJ5DxXUVXDWTZgA05CHuojS/R1WlO2o30rxV4azc+Yr7IcR89i4wNGHUNQFmhhBF\",\n                \"line_num\": 8,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"aJ5DxXUVXDWTZgA05CHuojS/R1WlO2o30rxV4azc+Yr7IcR89i4wNGHUNQFmhhBF\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.4375\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 OYyA41Ls/ESNS1UGWwfCuZ89CBzjjBQZhxp4ELW+ZLa+1w3iUhJZEYoc9GQm7E+v\",\n                \"line_num\": 9,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"OYyA41Ls/ESNS1UGWwfCuZ89CBzjjBQZhxp4ELW+ZLa+1w3iUhJZEYoc9GQm7E+v\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.12086\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 VIQvl4RxKF8WZAc4uTaisTwcNAhYK5m5gpX5ZHLgBndWRjE32kOvask2BLdgjJig\",\n                \"line_num\": 10,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"VIQvl4RxKF8WZAc4uTaisTwcNAhYK5m5gpX5ZHLgBndWRjE32kOvask2BLdgjJig\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.2382\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 Fs9mKlRU+ZqIQxukBDO6xkHjSr1JxIP2HJNyiiZxgCUKSi/I5h4UObW1yjNv0Ymw\",\n                \"line_num\": 11,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"Fs9mKlRU+ZqIQxukBDO6xkHjSr1JxIP2HJNyiiZxgCUKSi/I5h4UObW1yjNv0Ymw\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.27711\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 FE/csKq4gcWvPD/QuFeW4XFQcZaoqkQVILnjVG10NqOTlDJaywMhcgjQq2QQlVXH\",\n                \"line_num\": 12,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"FE/csKq4gcWvPD/QuFeW4XFQcZaoqkQVILnjVG10NqOTlDJaywMhcgjQq2QQlVXH\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.07782\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 zMBgJI3W9qLDYFY69rN/xnL68wg5B1xv62ChNo4eTLlppGmNlLfX6YleXLYK2pTj\",\n                \"line_num\": 13,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"zMBgJI3W9qLDYFY69rN/xnL68wg5B1xv62ChNo4eTLlppGmNlLfX6YleXLYK2pTj\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.09571\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 cmIbK3nvQ7BGLAXVMMYFOkkht0mHVC4sS3mwdUtS2l5KECOq1R+g4mrrAUyGpI1B\",\n                \"line_num\": 14,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"cmIbK3nvQ7BGLAXVMMYFOkkht0mHVC4sS3mwdUtS2l5KECOq1R+g4mrrAUyGpI1B\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.34375\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 68+Eg5DkM86BUYI9N86V4cUtNGDbsmaJgCurGJHHupeJQhWj+Q2CNlXmSaP+mCau\",\n                \"line_num\": 15,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"68+Eg5DkM86BUYI9N86V4cUtNGDbsmaJgCurGJHHupeJQhWj+Q2CNlXmSaP+mCau\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.14384\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 GUEMVn/PVmqhSJIj+yEsojeZykecYXo7LMxiJkuX8HZ9R3ynOHdedcfV4DdAJc1E\",\n                \"line_num\": 16,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"GUEMVn/PVmqhSJIj+yEsojeZykecYXo7LMxiJkuX8HZ9R3ynOHdedcfV4DdAJc1E\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.22993\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 t51bOzjJlLIlUEQicJcXMCrBJ8pL1bHJGkT7t7gxnC72Qz7D2Czh20oJIgFTs1yJ\",\n                \"line_num\": 17,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"t51bOzjJlLIlUEQicJcXMCrBJ8pL1bHJGkT7t7gxnC72Qz7D2Czh20oJIgFTs1yJ\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.05423\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 kQSTxDFcMsakyRRZAAcDyGMGUnrMxIVSyrQDhIQrORaeiTDHcaS6pDuz5kkJsT+Y\",\n                \"line_num\": 18,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"kQSTxDFcMsakyRRZAAcDyGMGUnrMxIVSyrQDhIQrORaeiTDHcaS6pDuz5kkJsT+Y\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 4.86869\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 ki/ZkkAldBpX4sDD1zvC6LyWU1IlZcx9F5V7I0P/BrpSwrvjNQEIeW4tNR1+fEYW\",\n                \"line_num\": 19,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"ki/ZkkAldBpX4sDD1zvC6LyWU1IlZcx9F5V7I0P/BrpSwrvjNQEIeW4tNR1+fEYW\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.35907\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 fE7gewlJZbTCVqTcQ7wQ+kA7JEQkU6I8YaIXuiwiG55EuSsO2MzpApgFtmAcWlT4\",\n                \"line_num\": 20,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"fE7gewlJZbTCVqTcQ7wQ+kA7JEQkU6I8YaIXuiwiG55EuSsO2MzpApgFtmAcWlT4\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.24173\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 ybWzhp7kqwRFolOi6hb9y8y4aDRkRltYcTPswcjh40k1spoCRlwCcgahgTnuWJ8O\",\n                \"line_num\": 21,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"ybWzhp7kqwRFolOi6hb9y8y4aDRkRltYcTPswcjh40k1spoCRlwCcgahgTnuWJ8O\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.00352\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 qq4uxkY8xkFvJ4VqZjcl7AbhdJg3R5gqlbhPZmEXBn3teYbihzMCBRI3RTI5/Hy2\",\n                \"line_num\": 22,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"qq4uxkY8xkFvJ4VqZjcl7AbhdJg3R5gqlbhPZmEXBn3teYbihzMCBRI3RTI5/Hy2\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.23407\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 Yh4VhW+MqaukgRTPk50aKFjEs0vj6D1RpLRUmq/EI2GKZbtZc4MDR8kZWXsP5yqO\",\n                \"line_num\": 23,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"Yh4VhW+MqaukgRTPk50aKFjEs0vj6D1RpLRUmq/EI2GKZbtZc4MDR8kZWXsP5yqO\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.24586\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 o2OcG66cSXR5KrzmNRNdci1GNafm5qHiqj5NsnDax1B8t1hkpV+VMkZKGxGXt2YP\",\n                \"line_num\": 24,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"o2OcG66cSXR5KrzmNRNdci1GNafm5qHiqj5NsnDax1B8t1hkpV+VMkZKGxGXt2YP\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.12086\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 gx1/q1EgS5w2ciAuC8u5gitd1ie43B5lsysO0MY31Qy1eGO1Sj0g4pxM2szbpwso\",\n                \"line_num\": 25,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"gx1/q1EgS5w2ciAuC8u5gitd1ie43B5lsysO0MY31Qy1eGO1Sj0g4pxM2szbpwso\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 4.95282\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 0RZL8aKk645hElitcXDx8wUVc0Zm/Av4FsSiZkhFeKaHSAXJtTtlAkLMMTZaNwBA\",\n                \"line_num\": 26,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"0RZL8aKk645hElitcXDx8wUVc0Zm/Av4FsSiZkhFeKaHSAXJtTtlAkLMMTZaNwBA\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.05836\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 hqmHqqtalptZmwGz2F0dmXF9cy+gOxzaBhQbVcH8SDdchpgTl14B93qh2iY2RjxY\",\n                \"line_num\": 27,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"hqmHqqtalptZmwGz2F0dmXF9cy+gOxzaBhQbVcH8SDdchpgTl14B93qh2iY2RjxY\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.12086\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 Eb3kpsPG0cdLTAAahEALuMu26YFpglJXAkwSwSLPYsGRPHjJFiXfWBR05x5y5wdB\",\n                \"line_num\": 28,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"Eb3kpsPG0cdLTAAahEALuMu26YFpglJXAkwSwSLPYsGRPHjJFiXfWBR05x5y5wdB\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.10907\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 1jhhqlV6ZHO/osEJKb6tSHH0mYf0uMNu2speu2DgsjCjHHJwtSJMayfO1WZcSF+G\",\n                \"line_num\": 29,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"1jhhqlV6ZHO/osEJKb6tSHH0mYf0uMNu2speu2DgsjCjHHJwtSJMayfO1WZcSF+G\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.13462\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 wFXOY77MgB3VwMRcCoTMNwoBswcJeZRyNL+cHLZZcK0kpEJbBY60W5pHUceKrDDJ\",\n                \"line_num\": 30,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"wFXOY77MgB3VwMRcCoTMNwoBswcJeZRyNL+cHLZZcK0kpEJbBY60W5pHUceKrDDJ\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.02142\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 sr63qzPaUVNj0Vu2zFG8sEEMES55/JIKCoj6O66j821/qJ97RLPP5pKUpp2gCS7F\",\n                \"line_num\": 31,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"sr63qzPaUVNj0Vu2zFG8sEEMES55/JIKCoj6O66j821/qJ97RLPP5pKUpp2gCS7F\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.02298\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 GyCzMBiTsF4zNCr+FA1rQUCZqa50S3Gu90KANsv7VX1krJXXaSXQFaiDAyB+zL0f\",\n                \"line_num\": 32,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"GyCzMBiTsF4zNCr+FA1rQUCZqa50S3Gu90KANsv7VX1krJXXaSXQFaiDAyB+zL0f\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.04243\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 SQR7WrimYwMQaGX8c75+8L7NK2zdxMQH0chtdqv79WmoOn+fWGupCq7NlA32s7rb\",\n                \"line_num\": 33,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"SQR7WrimYwMQaGX8c75+8L7NK2zdxMQH0chtdqv79WmoOn+fWGupCq7NlA32s7rb\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.26532\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 Cq4auSoIF5ovQqw2F2wgi2nBpHwfF5ka6qSaQA4wiACrxkC255lCaAzy9jky4Ldt\",\n                \"line_num\": 34,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"Cq4auSoIF5ovQqw2F2wgi2nBpHwfF5ka6qSaQA4wiACrxkC255lCaAzy9jky4Ldt\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 4.84727\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 1iSmA7q2JSu8HEN8NG9AQqP+l44HRXFzJsF3cXTaOzKZKYlhlx5btb8F+M9aCgXi\",\n                \"line_num\": 35,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"1iSmA7q2JSu8HEN8NG9AQqP+l44HRXFzJsF3cXTaOzKZKYlhlx5btb8F+M9aCgXi\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.26532\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 pICqo0FqkQ03ULwswnF8yXsjpYkx63lc0pLStKn7dxI+cSOYYCu0cbxcBoZyqmH1\",\n                \"line_num\": 36,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"pICqo0FqkQ03ULwswnF8yXsjpYkx63lc0pLStKn7dxI+cSOYYCu0cbxcBoZyqmH1\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.07782\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 Kqmr2XMicIWCxQoiW4YT5UYfNsfwmRUWkJwmCahUFSzo5swUpBbeCo6bsEdkyxMM\",\n                \"line_num\": 37,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"Kqmr2XMicIWCxQoiW4YT5UYfNsfwmRUWkJwmCahUFSzo5swUpBbeCo6bsEdkyxMM\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.13618\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 I5bNV1cjSII5liHOyxnvZ77+giZAKglsiI3ZmmVh+l8fvDBDaLVmmMRfcwRHOxu1\",\n                \"line_num\": 38,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"I5bNV1cjSII5liHOyxnvZ77+giZAKglsiI3ZmmVh+l8fvDBDaLVmmMRfcwRHOxu1\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.04657\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 UMRr047T8ggKgEnyhQLK/FJh+Yp8ubo6wsTUwyyVcRULUVWeJbka6EDkMbPucHHb\",\n                \"line_num\": 39,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"UMRr047T8ggKgEnyhQLK/FJh+Yp8ubo6wsTUwyyVcRULUVWeJbka6EDkMbPucHHb\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.10141\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 vDdO61eP2yB+uQlwbBr1UquiQD1XrBHXFVwDw6rJoJxTkGQggaofpsUPa3F561LV\",\n                \"line_num\": 40,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"vDdO61eP2yB+uQlwbBr1UquiQD1XrBHXFVwDw6rJoJxTkGQggaofpsUPa3F561LV\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.11673\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 aQAFxU9BAgmdYb4uJxtlt46DCbx2tFW2OnoqQrpFW7nWlwmLJ2dUhIRkySTyhJpq\",\n                \"line_num\": 41,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"aQAFxU9BAgmdYb4uJxtlt46DCbx2tFW2OnoqQrpFW7nWlwmLJ2dUhIRkySTyhJpq\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.14798\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 K0hnrLThhA1tu8q3dTXOCDs+8csKnI9vVSqAFm6ax3lI6ilBFVIgyZi7dBI1TCKp\",\n                \"line_num\": 42,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"K0hnrLThhA1tu8q3dTXOCDs+8csKnI9vVSqAFm6ax3lI6ilBFVIgyZi7dBI1TCKp\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.18336\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 rDbvCzcWY6dxEUzHqTELG5sd955LQgoei2/86QDquRIgB2PGqblBYylUOA9tBTAv\",\n                \"line_num\": 43,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"rDbvCzcWY6dxEUzHqTELG5sd955LQgoei2/86QDquRIgB2PGqblBYylUOA9tBTAv\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.21461\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 wSVKoZuonI4ijDZz5yec2C9DiCZva6MbxASOLBl05qfeeDbzkhOWsas2ZpMRmaS8\",\n                \"line_num\": 44,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"wSVKoZuonI4ijDZz5yec2C9DiCZva6MbxASOLBl05qfeeDbzkhOWsas2ZpMRmaS8\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.26532\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 dI0Tmp732GkddM2R879ULHp0x4CI4Vh42mN/m22OInwW4mlPaUAy4MQUOWvuWb6/\",\n                \"line_num\": 45,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"dI0Tmp732GkddM2R879ULHp0x4CI4Vh42mN/m22OInwW4mlPaUAy4MQUOWvuWb6/\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.02752\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 o2/HcXJCoj9JsULCKXchFrawJHTgCTpi9BicMpmnPHpnpxlYRw77p4qWcmGqs2Yi\",\n                \"line_num\": 46,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"o2/HcXJCoj9JsULCKXchFrawJHTgCTpi9BicMpmnPHpnpxlYRw77p4qWcmGqs2Yi\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.02142\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 gQLAAQhZxzpT8MPgsomgC2nySQthEHsvF4XVbL60ImBv9Qig2hd7Jh4cI0D/+TdC\",\n                \"line_num\": 47,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"gQLAAQhZxzpT8MPgsomgC2nySQthEHsvF4XVbL60ImBv9Qig2hd7Jh4cI0D/+TdC\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.25\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 tky6B1MyPAxYCTN2QXXCo6CbdzMoVBhXuAI7prv2DA5zUwNCpxBKs2BgSIZ9677J\",\n                \"line_num\": 48,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"tky6B1MyPAxYCTN2QXXCo6CbdzMoVBhXuAI7prv2DA5zUwNCpxBKs2BgSIZ9677J\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.12852\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 RlxpsqbbVLVJl6BdbJcMRjIWEW0flKwbSb/PdEuEGheu5UuRZ4/MxrzrciW35CxX\",\n                \"line_num\": 49,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"RlxpsqbbVLVJl6BdbJcMRjIWEW0flKwbSb/PdEuEGheu5UuRZ4/MxrzrciW35CxX\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.12283\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 +XYlHBLCOQ6MCCSYtAy9olSBxQ1iMkiP0V20Crzm6JapZWxTC1EEFgMXAJERMXin\",\n                \"line_num\": 50,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"+XYlHBLCOQ6MCCSYtAy9olSBxQ1iMkiP0V20Crzm6JapZWxTC1EEFgMXAJERMXin\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.12696\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 NiY0wK8f8JFABRBxMZeHyBtT6EobR2Q1Ozcjmhb98rK6wUVhorCGV0mbZ4jzVFtH\",\n                \"line_num\": 51,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"NiY0wK8f8JFABRBxMZeHyBtT6EobR2Q1Ozcjmhb98rK6wUVhorCGV0mbZ4jzVFtH\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.23407\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 YD9UoTAQrI22NGLy+BupkM7OmaQ82SWZlZ8eiSqv5z7aBI8AAWOORHCYW07i9kCy\",\n                \"line_num\": 52,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"YD9UoTAQrI22NGLy+BupkM7OmaQ82SWZlZ8eiSqv5z7aBI8AAWOORHCYW07i9kCy\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.17923\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 OJ4nB3/Ko4OTiUeGYamtlj9/k7alhM5BE2fkEoygYFvL1cfFXMHH+wOEonSMi5qo\",\n                \"line_num\": 53,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"OJ4nB3/Ko4OTiUeGYamtlj9/k7alhM5BE2fkEoygYFvL1cfFXMHH+wOEonSMi5qo\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.24586\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 smQrWalr8aPEPGkXWYDjMsBZ4rHQ00z+cE3YiXJXMj2Y8JMY9LJrR1asaEY3IoBx\",\n                \"line_num\": 54,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"smQrWalr8aPEPGkXWYDjMsBZ4rHQ00z+cE3YiXJXMj2Y8JMY9LJrR1asaEY3IoBx\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 4.94712\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 ose+UxmIsZr1OD/Jy1euBJo0IQX3gnrvdGl9u8zQeCes+g5xl68gAU8n1J/Z4DoB\",\n                \"line_num\": 55,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"ose+UxmIsZr1OD/Jy1euBJo0IQX3gnrvdGl9u8zQeCes+g5xl68gAU8n1J/Z4DoB\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.02298\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 Y0mUMEgOuMu6aAvmQc/lqqP7lwrCKCfVe6SS6w2w3I9GrL2/3GkQkXJSc4rmZb7u\",\n                \"line_num\": 56,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"Y0mUMEgOuMu6aAvmQc/lqqP7lwrCKCfVe6SS6w2w3I9GrL2/3GkQkXJSc4rmZb7u\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.17923\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 JoAFyHleVFAnDFXlhLKFl0h3x7TD26LK2LApnLI344MvE6ZG9RFA6w2Q6JtRIEWU\",\n                \"line_num\": 57,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"JoAFyHleVFAnDFXlhLKFl0h3x7TD26LK2LApnLI344MvE6ZG9RFA6w2Q6JtRIEWU\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 4.98251\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 lheqsm3z9sfcOiHW/GWw0nTkC8btOFZ0uBTThDnHg0BvuXzmBDcle1GpXJdyzLyl\",\n                \"line_num\": 58,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"lheqsm3z9sfcOiHW/GWw0nTkC8btOFZ0uBTThDnHg0BvuXzmBDcle1GpXJdyzLyl\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.19102\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 cW4qlLb15J1zMb/hVBNGagquATVVclvcVKYGYkNsxGpWBC8/8iJTEUKEMwqti7PR\",\n                \"line_num\": 59,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"cW4qlLb15J1zMb/hVBNGagquATVVclvcVKYGYkNsxGpWBC8/8iJTEUKEMwqti7PR\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.18336\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 yh+r058rdhlVML+0F5aDJwjslkCppGpJF5nGQn4pwBzViz752YFUgRRz2jrhFYHE\",\n                \"line_num\": 60,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"yh+r058rdhlVML+0F5aDJwjslkCppGpJF5nGQn4pwBzViz752YFUgRRz2jrhFYHE\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.02711\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 KaVCtcczpnZhtqNMY49aRMaTphHu4YpgglMjbDuZ5wiK27Fq5RM+lF6sIG6SGycb\",\n                \"line_num\": 61,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"KaVCtcczpnZhtqNMY49aRMaTphHu4YpgglMjbDuZ5wiK27Fq5RM+lF6sIG6SGycb\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.15211\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 4whptwXeepJbATEQ55FWWckLVJ5lVWuZ0pCOMguparXRwXECzGnIHLxehCexiZqA\",\n                \"line_num\": 62,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"4whptwXeepJbATEQ55FWWckLVJ5lVWuZ0pCOMguparXRwXECzGnIHLxehCexiZqA\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.09727\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 QLJZNAFOyB3IhHZo5TrJY5sNIMXU94yraZLmQQ3cRMntNiW8kp6Pqj3I40bqlL3F\",\n                \"line_num\": 63,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"QLJZNAFOyB3IhHZo5TrJY5sNIMXU94yraZLmQQ3cRMntNiW8kp6Pqj3I40bqlL3F\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.25352\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 ahwNl8qwsjl44hMmWMfQk1c5OpCtkGJcIpIF08ILxDknAyBTQ35BJXMJ9XtI0nt2\",\n                \"line_num\": 64,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"ahwNl8qwsjl44hMmWMfQk1c5OpCtkGJcIpIF08ILxDknAyBTQ35BJXMJ9XtI0nt2\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.17157\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 OiGGA6YUqbb68bmXbEhzKQhulHs8GWh/sgXiN3NoI5ns6nU0a3e6Oz2BkXY708iM\",\n                \"line_num\": 65,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"OiGGA6YUqbb68bmXbEhzKQhulHs8GWh/sgXiN3NoI5ns6nU0a3e6Oz2BkXY708iM\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.05423\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 oxrQxsZ4uoM/pjlHG5xeOM62B3tpeghU5iFfOgr+hH9mGcOx4cSoNjn3a5gvMJqc\",\n                \"line_num\": 66,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"oxrQxsZ4uoM/pjlHG5xeOM62B3tpeghU5iFfOgr+hH9mGcOx4cSoNjn3a5gvMJqc\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.14798\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 Ycc60cOGalwlpLruUy4rdDwhInvsGAmaapDq8IxRpS/AIpij4Y/SmMl9uisvqBr9\",\n                \"line_num\": 67,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"Ycc60cOGalwlpLruUy4rdDwhInvsGAmaapDq8IxRpS/AIpij4Y/SmMl9uisvqBr9\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.03477\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 ypg1olTOJ8rk08AXY0Kl2D9lS5GK11g2VWtCgKiMdS/RvAXJnJGkdStVTGYiCnHJ\",\n                \"line_num\": 68,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"ypg1olTOJ8rk08AXY0Kl2D9lS5GK11g2VWtCgKiMdS/RvAXJnJGkdStVTGYiCnHJ\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 4.99173\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 OjgyHTrR2a+N2ZiYTldYtmF6H9pm/lfv6FNtw2cNQzqGoSSsrAHEugO0d94keir2\",\n                \"line_num\": 69,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"OjgyHTrR2a+N2ZiYTldYtmF6H9pm/lfv6FNtw2cNQzqGoSSsrAHEugO0d94keir2\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.24586\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 62w9ymkZWDurfZDVT8OIVWXhgKlR44rEMqSAR+iv6ap61WM2ZMFejOGy4XrDjLrH\",\n                \"line_num\": 70,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"62w9ymkZWDurfZDVT8OIVWXhgKlR44rEMqSAR+iv6ap61WM2ZMFejOGy4XrDjLrH\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.21048\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 qwI=\",\n                \"line_num\": 71,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"qwI=\",\n                \"value_start\": 20,\n                \"value_end\": 24,\n                \"entropy\": 2.0\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 -----END PRIVATE KEY-----\",\n                \"line_num\": 72,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.log|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"-----END PRIVATE KEY-----\",\n                \"value_start\": 20,\n                \"value_end\": 45,\n                \"entropy\": 3.04489\n            }\n        ]\n    },\n    {\n        \"rule\": \"PEM Private Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"-----BEGIN PRIVATE KEY-----\\\\r\\\\n2026-04-26 12:36:01 MIIMvgIBADALBglghkgBZQMEBAMEggyqMIIMpgRATqJGETTwhb2gxXF41z3G5ztP\\\\r\\\\n2026-04-26 12:36:01 I+dcZ5zCOnpcALAIw+OAqVHjisQypIBH6K/pqnrVYzZkwV6M4bLhesOMuserAgSC\\\\r\\\\n2026-04-26 12:36:01 DGAygxLkWHaG9AEmQJsg1MeFxsNyehNphDUdaKHxVmXPYUNVm3J4c5+xBZigd8pa\\\\r\\\\n2026-04-26 12:36:01 LEIX4H6JKVWAwKs5UkCLw3uB434w+6mWMJlUjDwWZSGgEiRjS21nx6eKyLqlLE16\\\\r\\\\n2026-04-26 12:36:01 XAZ5Rg2oJAL5CVj8uAe7pUdweySS4EBgdMPJ9o0cEZDP5aD9yTSIeXzi1bgGJQ/s\\\\r\\\\n2026-04-26 12:36:01 aJ5DxXUVXDWTZgA05CHuojS/R1WlO2o30rxV4azc+Yr7IcR89i4wNGHUNQFmhhBF\\\\r\\\\n2026-04-26 12:36:01 OYyA41Ls/ESNS1UGWwfCuZ89CBzjjBQZhxp4ELW+ZLa+1w3iUhJZEYoc9GQm7E+v\\\\r\\\\n2026-04-26 12:36:01 VIQvl4RxKF8WZAc4uTaisTwcNAhYK5m5gpX5ZHLgBndWRjE32kOvask2BLdgjJig\\\\r\\\\n2026-04-26 12:36:01 Fs9mKlRU+ZqIQxukBDO6xkHjSr1JxIP2HJNyiiZxgCUKSi/I5h4UObW1yjNv0Ymw\\\\r\\\\n2026-04-26 12:36:01 FE/csKq4gcWvPD/QuFeW4XFQcZaoqkQVILnjVG10NqOTlDJaywMhcgjQq2QQlVXH\\\\r\\\\n2026-04-26 12:36:01 zMBgJI3W9qLDYFY69rN/xnL68wg5B1xv62ChNo4eTLlppGmNlLfX6YleXLYK2pTj\\\\r\\\\n2026-04-26 12:36:01 cmIbK3nvQ7BGLAXVMMYFOkkht0mHVC4sS3mwdUtS2l5KECOq1R+g4mrrAUyGpI1B\\\\r\\\\n2026-04-26 12:36:01 68+Eg5DkM86BUYI9N86V4cUtNGDbsmaJgCurGJHHupeJQhWj+Q2CNlXmSaP+mCau\\\\r\\\\n2026-04-26 12:36:01 GUEMVn/PVmqhSJIj+yEsojeZykecYXo7LMxiJkuX8HZ9R3ynOHdedcfV4DdAJc1E\\\\r\\\\n2026-04-26 12:36:01 t51bOzjJlLIlUEQicJcXMCrBJ8pL1bHJGkT7t7gxnC72Qz7D2Czh20oJIgFTs1yJ\\\\r\\\\n2026-04-26 12:36:01 kQSTxDFcMsakyRRZAAcDyGMGUnrMxIVSyrQDhIQrORaeiTDHcaS6pDuz5kkJsT+Y\\\\r\\\\n2026-04-26 12:36:01 ki/ZkkAldBpX4sDD1zvC6LyWU1IlZcx9F5V7I0P/BrpSwrvjNQEIeW4tNR1+fEYW\\\\r\\\\n2026-04-26 12:36:01 fE7gewlJZbTCVqTcQ7wQ+kA7JEQkU6I8YaIXuiwiG55EuSsO2MzpApgFtmAcWlT4\\\\r\\\\n2026-04-26 12:36:01 ybWzhp7kqwRFolOi6hb9y8y4aDRkRltYcTPswcjh40k1spoCRlwCcgahgTnuWJ8O\\\\r\\\\n2026-04-26 12:36:01 qq4uxkY8xkFvJ4VqZjcl7AbhdJg3R5gqlbhPZmEXBn3teYbihzMCBRI3RTI5/Hy2\\\\r\\\\n2026-04-26 12:36:01 Yh4VhW+MqaukgRTPk50aKFjEs0vj6D1RpLRUmq/EI2GKZbtZc4MDR8kZWXsP5yqO\\\\r\\\\n2026-04-26 12:36:01 o2OcG66cSXR5KrzmNRNdci1GNafm5qHiqj5NsnDax1B8t1hkpV+VMkZKGxGXt2YP\\\\r\\\\n2026-04-26 12:36:01 gx1/q1EgS5w2ciAuC8u5gitd1ie43B5lsysO0MY31Qy1eGO1Sj0g4pxM2szbpwso\\\\r\\\\n2026-04-26 12:36:01 0RZL8aKk645hElitcXDx8wUVc0Zm/Av4FsSiZkhFeKaHSAXJtTtlAkLMMTZaNwBA\\\\r\\\\n2026-04-26 12:36:01 hqmHqqtalptZmwGz2F0dmXF9cy+gOxzaBhQbVcH8SDdchpgTl14B93qh2iY2RjxY\\\\r\\\\n2026-04-26 12:36:01 Eb3kpsPG0cdLTAAahEALuMu26YFpglJXAkwSwSLPYsGRPHjJFiXfWBR05x5y5wdB\\\\r\\\\n2026-04-26 12:36:01 1jhhqlV6ZHO/osEJKb6tSHH0mYf0uMNu2speu2DgsjCjHHJwtSJMayfO1WZcSF+G\\\\r\\\\n2026-04-26 12:36:01 wFXOY77MgB3VwMRcCoTMNwoBswcJeZRyNL+cHLZZcK0kpEJbBY60W5pHUceKrDDJ\\\\r\\\\n2026-04-26 12:36:01 sr63qzPaUVNj0Vu2zFG8sEEMES55/JIKCoj6O66j821/qJ97RLPP5pKUpp2gCS7F\\\\r\\\\n2026-04-26 12:36:01 GyCzMBiTsF4zNCr+FA1rQUCZqa50S3Gu90KANsv7VX1krJXXaSXQFaiDAyB+zL0f\\\\r\\\\n2026-04-26 12:36:01 SQR7WrimYwMQaGX8c75+8L7NK2zdxMQH0chtdqv79WmoOn+fWGupCq7NlA32s7rb\\\\r\\\\n2026-04-26 12:36:01 Cq4auSoIF5ovQqw2F2wgi2nBpHwfF5ka6qSaQA4wiACrxkC255lCaAzy9jky4Ldt\\\\r\\\\n2026-04-26 12:36:01 1iSmA7q2JSu8HEN8NG9AQqP+l44HRXFzJsF3cXTaOzKZKYlhlx5btb8F+M9aCgXi\\\\r\\\\n2026-04-26 12:36:01 pICqo0FqkQ03ULwswnF8yXsjpYkx63lc0pLStKn7dxI+cSOYYCu0cbxcBoZyqmH1\\\\r\\\\n2026-04-26 12:36:01 Kqmr2XMicIWCxQoiW4YT5UYfNsfwmRUWkJwmCahUFSzo5swUpBbeCo6bsEdkyxMM\\\\r\\\\n2026-04-26 12:36:01 I5bNV1cjSII5liHOyxnvZ77+giZAKglsiI3ZmmVh+l8fvDBDaLVmmMRfcwRHOxu1\\\\r\\\\n2026-04-26 12:36:01 UMRr047T8ggKgEnyhQLK/FJh+Yp8ubo6wsTUwyyVcRULUVWeJbka6EDkMbPucHHb\\\\r\\\\n2026-04-26 12:36:01 vDdO61eP2yB+uQlwbBr1UquiQD1XrBHXFVwDw6rJoJxTkGQggaofpsUPa3F561LV\\\\r\\\\n2026-04-26 12:36:01 aQAFxU9BAgmdYb4uJxtlt46DCbx2tFW2OnoqQrpFW7nWlwmLJ2dUhIRkySTyhJpq\\\\r\\\\n2026-04-26 12:36:01 K0hnrLThhA1tu8q3dTXOCDs+8csKnI9vVSqAFm6ax3lI6ilBFVIgyZi7dBI1TCKp\\\\r\\\\n2026-04-26 12:36:01 rDbvCzcWY6dxEUzHqTELG5sd955LQgoei2/86QDquRIgB2PGqblBYylUOA9tBTAv\\\\r\\\\n2026-04-26 12:36:01 wSVKoZuonI4ijDZz5yec2C9DiCZva6MbxASOLBl05qfeeDbzkhOWsas2ZpMRmaS8\\\\r\\\\n2026-04-26 12:36:01 dI0Tmp732GkddM2R879ULHp0x4CI4Vh42mN/m22OInwW4mlPaUAy4MQUOWvuWb6/\\\\r\\\\n2026-04-26 12:36:01 o2/HcXJCoj9JsULCKXchFrawJHTgCTpi9BicMpmnPHpnpxlYRw77p4qWcmGqs2Yi\\\\r\\\\n2026-04-26 12:36:01 gQLAAQhZxzpT8MPgsomgC2nySQthEHsvF4XVbL60ImBv9Qig2hd7Jh4cI0D/+TdC\\\\r\\\\n2026-04-26 12:36:01 tky6B1MyPAxYCTN2QXXCo6CbdzMoVBhXuAI7prv2DA5zUwNCpxBKs2BgSIZ9677J\\\\r\\\\n2026-04-26 12:36:01 RlxpsqbbVLVJl6BdbJcMRjIWEW0flKwbSb/PdEuEGheu5UuRZ4/MxrzrciW35CxX\\\\r\\\\n2026-04-26 12:36:01 +XYlHBLCOQ6MCCSYtAy9olSBxQ1iMkiP0V20Crzm6JapZWxTC1EEFgMXAJERMXin\\\\r\\\\n2026-04-26 12:36:01 NiY0wK8f8JFABRBxMZeHyBtT6EobR2Q1Ozcjmhb98rK6wUVhorCGV0mbZ4jzVFtH\\\\r\\\\n2026-04-26 12:36:01 YD9UoTAQrI22NGLy+BupkM7OmaQ82SWZlZ8eiSqv5z7aBI8AAWOORHCYW07i9kCy\\\\r\\\\n2026-04-26 12:36:01 OJ4nB3/Ko4OTiUeGYamtlj9/k7alhM5BE2fkEoygYFvL1cfFXMHH+wOEonSMi5qo\\\\r\\\\n2026-04-26 12:36:01 smQrWalr8aPEPGkXWYDjMsBZ4rHQ00z+cE3YiXJXMj2Y8JMY9LJrR1asaEY3IoBx\\\\r\\\\n2026-04-26 12:36:01 ose+UxmIsZr1OD/Jy1euBJo0IQX3gnrvdGl9u8zQeCes+g5xl68gAU8n1J/Z4DoB\\\\r\\\\n2026-04-26 12:36:01 Y0mUMEgOuMu6aAvmQc/lqqP7lwrCKCfVe6SS6w2w3I9GrL2/3GkQkXJSc4rmZb7u\\\\r\\\\n2026-04-26 12:36:01 JoAFyHleVFAnDFXlhLKFl0h3x7TD26LK2LApnLI344MvE6ZG9RFA6w2Q6JtRIEWU\\\\r\\\\n2026-04-26 12:36:01 lheqsm3z9sfcOiHW/GWw0nTkC8btOFZ0uBTThDnHg0BvuXzmBDcle1GpXJdyzLyl\\\\r\\\\n2026-04-26 12:36:01 cW4qlLb15J1zMb/hVBNGagquATVVclvcVKYGYkNsxGpWBC8/8iJTEUKEMwqti7PR\\\\r\\\\n2026-04-26 12:36:01 yh+r058rdhlVML+0F5aDJwjslkCppGpJF5nGQn4pwBzViz752YFUgRRz2jrhFYHE\\\\r\\\\n2026-04-26 12:36:01 KaVCtcczpnZhtqNMY49aRMaTphHu4YpgglMjbDuZ5wiK27Fq5RM+lF6sIG6SGycb\\\\r\\\\n2026-04-26 12:36:01 4whptwXeepJbATEQ55FWWckLVJ5lVWuZ0pCOMguparXRwXECzGnIHLxehCexiZqA\\\\r\\\\n2026-04-26 12:36:01 QLJZNAFOyB3IhHZo5TrJY5sNIMXU94yraZLmQQ3cRMntNiW8kp6Pqj3I40bqlL3F\\\\r\\\\n2026-04-26 12:36:01 ahwNl8qwsjl44hMmWMfQk1c5OpCtkGJcIpIF08ILxDknAyBTQ35BJXMJ9XtI0nt2\\\\r\\\\n2026-04-26 12:36:01 OiGGA6YUqbb68bmXbEhzKQhulHs8GWh/sgXiN3NoI5ns6nU0a3e6Oz2BkXY708iM\\\\r\\\\n2026-04-26 12:36:01 oxrQxsZ4uoM/pjlHG5xeOM62B3tpeghU5iFfOgr+hH9mGcOx4cSoNjn3a5gvMJqc\\\\r\\\\n2026-04-26 12:36:01 Ycc60cOGalwlpLruUy4rdDwhInvsGAmaapDq8IxRpS/AIpij4Y/SmMl9uisvqBr9\\\\r\\\\n2026-04-26 12:36:01 ypg1olTOJ8rk08AXY0Kl2D9lS5GK11g2VWtCgKiMdS/RvAXJnJGkdStVTGYiCnHJ\\\\r\\\\n2026-04-26 12:36:01 OjgyHTrR2a+N2ZiYTldYtmF6H9pm/lfv6FNtw2cNQzqGoSSsrAHEugO0d94keir2\\\\r\\\\n2026-04-26 12:36:01 62w9ymkZWDurfZDVT8OIVWXhgKlR44rEMqSAR+iv6ap61WM2ZMFejOGy4XrDjLrH\\\\r\\\\n2026-04-26 12:36:01 qwI=\\\\r\\\\n2026-04-26 12:36:01 -----END PRIVATE KEY-----\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/pem_key.p.log.json\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.log.json|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"-----BEGIN PRIVATE KEY-----\\\\r\\\\n2026-04-26 12:36:01 MIIMvgIBADALBglghkgBZQMEBAMEggyqMIIMpgRATqJGETTwhb2gxXF41z3G5ztP\\\\r\\\\n2026-04-26 12:36:01 I+dcZ5zCOnpcALAIw+OAqVHjisQypIBH6K/pqnrVYzZkwV6M4bLhesOMuserAgSC\\\\r\\\\n2026-04-26 12:36:01 DGAygxLkWHaG9AEmQJsg1MeFxsNyehNphDUdaKHxVmXPYUNVm3J4c5+xBZigd8pa\\\\r\\\\n2026-04-26 12:36:01 LEIX4H6JKVWAwKs5UkCLw3uB434w+6mWMJlUjDwWZSGgEiRjS21nx6eKyLqlLE16\\\\r\\\\n2026-04-26 12:36:01 XAZ5Rg2oJAL5CVj8uAe7pUdweySS4EBgdMPJ9o0cEZDP5aD9yTSIeXzi1bgGJQ/s\\\\r\\\\n2026-04-26 12:36:01 aJ5DxXUVXDWTZgA05CHuojS/R1WlO2o30rxV4azc+Yr7IcR89i4wNGHUNQFmhhBF\\\\r\\\\n2026-04-26 12:36:01 OYyA41Ls/ESNS1UGWwfCuZ89CBzjjBQZhxp4ELW+ZLa+1w3iUhJZEYoc9GQm7E+v\\\\r\\\\n2026-04-26 12:36:01 VIQvl4RxKF8WZAc4uTaisTwcNAhYK5m5gpX5ZHLgBndWRjE32kOvask2BLdgjJig\\\\r\\\\n2026-04-26 12:36:01 Fs9mKlRU+ZqIQxukBDO6xkHjSr1JxIP2HJNyiiZxgCUKSi/I5h4UObW1yjNv0Ymw\\\\r\\\\n2026-04-26 12:36:01 FE/csKq4gcWvPD/QuFeW4XFQcZaoqkQVILnjVG10NqOTlDJaywMhcgjQq2QQlVXH\\\\r\\\\n2026-04-26 12:36:01 zMBgJI3W9qLDYFY69rN/xnL68wg5B1xv62ChNo4eTLlppGmNlLfX6YleXLYK2pTj\\\\r\\\\n2026-04-26 12:36:01 cmIbK3nvQ7BGLAXVMMYFOkkht0mHVC4sS3mwdUtS2l5KECOq1R+g4mrrAUyGpI1B\\\\r\\\\n2026-04-26 12:36:01 68+Eg5DkM86BUYI9N86V4cUtNGDbsmaJgCurGJHHupeJQhWj+Q2CNlXmSaP+mCau\\\\r\\\\n2026-04-26 12:36:01 GUEMVn/PVmqhSJIj+yEsojeZykecYXo7LMxiJkuX8HZ9R3ynOHdedcfV4DdAJc1E\\\\r\\\\n2026-04-26 12:36:01 t51bOzjJlLIlUEQicJcXMCrBJ8pL1bHJGkT7t7gxnC72Qz7D2Czh20oJIgFTs1yJ\\\\r\\\\n2026-04-26 12:36:01 kQSTxDFcMsakyRRZAAcDyGMGUnrMxIVSyrQDhIQrORaeiTDHcaS6pDuz5kkJsT+Y\\\\r\\\\n2026-04-26 12:36:01 ki/ZkkAldBpX4sDD1zvC6LyWU1IlZcx9F5V7I0P/BrpSwrvjNQEIeW4tNR1+fEYW\\\\r\\\\n2026-04-26 12:36:01 fE7gewlJZbTCVqTcQ7wQ+kA7JEQkU6I8YaIXuiwiG55EuSsO2MzpApgFtmAcWlT4\\\\r\\\\n2026-04-26 12:36:01 ybWzhp7kqwRFolOi6hb9y8y4aDRkRltYcTPswcjh40k1spoCRlwCcgahgTnuWJ8O\\\\r\\\\n2026-04-26 12:36:01 qq4uxkY8xkFvJ4VqZjcl7AbhdJg3R5gqlbhPZmEXBn3teYbihzMCBRI3RTI5/Hy2\\\\r\\\\n2026-04-26 12:36:01 Yh4VhW+MqaukgRTPk50aKFjEs0vj6D1RpLRUmq/EI2GKZbtZc4MDR8kZWXsP5yqO\\\\r\\\\n2026-04-26 12:36:01 o2OcG66cSXR5KrzmNRNdci1GNafm5qHiqj5NsnDax1B8t1hkpV+VMkZKGxGXt2YP\\\\r\\\\n2026-04-26 12:36:01 gx1/q1EgS5w2ciAuC8u5gitd1ie43B5lsysO0MY31Qy1eGO1Sj0g4pxM2szbpwso\\\\r\\\\n2026-04-26 12:36:01 0RZL8aKk645hElitcXDx8wUVc0Zm/Av4FsSiZkhFeKaHSAXJtTtlAkLMMTZaNwBA\\\\r\\\\n2026-04-26 12:36:01 hqmHqqtalptZmwGz2F0dmXF9cy+gOxzaBhQbVcH8SDdchpgTl14B93qh2iY2RjxY\\\\r\\\\n2026-04-26 12:36:01 Eb3kpsPG0cdLTAAahEALuMu26YFpglJXAkwSwSLPYsGRPHjJFiXfWBR05x5y5wdB\\\\r\\\\n2026-04-26 12:36:01 1jhhqlV6ZHO/osEJKb6tSHH0mYf0uMNu2speu2DgsjCjHHJwtSJMayfO1WZcSF+G\\\\r\\\\n2026-04-26 12:36:01 wFXOY77MgB3VwMRcCoTMNwoBswcJeZRyNL+cHLZZcK0kpEJbBY60W5pHUceKrDDJ\\\\r\\\\n2026-04-26 12:36:01 sr63qzPaUVNj0Vu2zFG8sEEMES55/JIKCoj6O66j821/qJ97RLPP5pKUpp2gCS7F\\\\r\\\\n2026-04-26 12:36:01 GyCzMBiTsF4zNCr+FA1rQUCZqa50S3Gu90KANsv7VX1krJXXaSXQFaiDAyB+zL0f\\\\r\\\\n2026-04-26 12:36:01 SQR7WrimYwMQaGX8c75+8L7NK2zdxMQH0chtdqv79WmoOn+fWGupCq7NlA32s7rb\\\\r\\\\n2026-04-26 12:36:01 Cq4auSoIF5ovQqw2F2wgi2nBpHwfF5ka6qSaQA4wiACrxkC255lCaAzy9jky4Ldt\\\\r\\\\n2026-04-26 12:36:01 1iSmA7q2JSu8HEN8NG9AQqP+l44HRXFzJsF3cXTaOzKZKYlhlx5btb8F+M9aCgXi\\\\r\\\\n2026-04-26 12:36:01 pICqo0FqkQ03ULwswnF8yXsjpYkx63lc0pLStKn7dxI+cSOYYCu0cbxcBoZyqmH1\\\\r\\\\n2026-04-26 12:36:01 Kqmr2XMicIWCxQoiW4YT5UYfNsfwmRUWkJwmCahUFSzo5swUpBbeCo6bsEdkyxMM\\\\r\\\\n2026-04-26 12:36:01 I5bNV1cjSII5liHOyxnvZ77+giZAKglsiI3ZmmVh+l8fvDBDaLVmmMRfcwRHOxu1\\\\r\\\\n2026-04-26 12:36:01 UMRr047T8ggKgEnyhQLK/FJh+Yp8ubo6wsTUwyyVcRULUVWeJbka6EDkMbPucHHb\\\\r\\\\n2026-04-26 12:36:01 vDdO61eP2yB+uQlwbBr1UquiQD1XrBHXFVwDw6rJoJxTkGQggaofpsUPa3F561LV\\\\r\\\\n2026-04-26 12:36:01 aQAFxU9BAgmdYb4uJxtlt46DCbx2tFW2OnoqQrpFW7nWlwmLJ2dUhIRkySTyhJpq\\\\r\\\\n2026-04-26 12:36:01 K0hnrLThhA1tu8q3dTXOCDs+8csKnI9vVSqAFm6ax3lI6ilBFVIgyZi7dBI1TCKp\\\\r\\\\n2026-04-26 12:36:01 rDbvCzcWY6dxEUzHqTELG5sd955LQgoei2/86QDquRIgB2PGqblBYylUOA9tBTAv\\\\r\\\\n2026-04-26 12:36:01 wSVKoZuonI4ijDZz5yec2C9DiCZva6MbxASOLBl05qfeeDbzkhOWsas2ZpMRmaS8\\\\r\\\\n2026-04-26 12:36:01 dI0Tmp732GkddM2R879ULHp0x4CI4Vh42mN/m22OInwW4mlPaUAy4MQUOWvuWb6/\\\\r\\\\n2026-04-26 12:36:01 o2/HcXJCoj9JsULCKXchFrawJHTgCTpi9BicMpmnPHpnpxlYRw77p4qWcmGqs2Yi\\\\r\\\\n2026-04-26 12:36:01 gQLAAQhZxzpT8MPgsomgC2nySQthEHsvF4XVbL60ImBv9Qig2hd7Jh4cI0D/+TdC\\\\r\\\\n2026-04-26 12:36:01 tky6B1MyPAxYCTN2QXXCo6CbdzMoVBhXuAI7prv2DA5zUwNCpxBKs2BgSIZ9677J\\\\r\\\\n2026-04-26 12:36:01 RlxpsqbbVLVJl6BdbJcMRjIWEW0flKwbSb/PdEuEGheu5UuRZ4/MxrzrciW35CxX\\\\r\\\\n2026-04-26 12:36:01 +XYlHBLCOQ6MCCSYtAy9olSBxQ1iMkiP0V20Crzm6JapZWxTC1EEFgMXAJERMXin\\\\r\\\\n2026-04-26 12:36:01 NiY0wK8f8JFABRBxMZeHyBtT6EobR2Q1Ozcjmhb98rK6wUVhorCGV0mbZ4jzVFtH\\\\r\\\\n2026-04-26 12:36:01 YD9UoTAQrI22NGLy+BupkM7OmaQ82SWZlZ8eiSqv5z7aBI8AAWOORHCYW07i9kCy\\\\r\\\\n2026-04-26 12:36:01 OJ4nB3/Ko4OTiUeGYamtlj9/k7alhM5BE2fkEoygYFvL1cfFXMHH+wOEonSMi5qo\\\\r\\\\n2026-04-26 12:36:01 smQrWalr8aPEPGkXWYDjMsBZ4rHQ00z+cE3YiXJXMj2Y8JMY9LJrR1asaEY3IoBx\\\\r\\\\n2026-04-26 12:36:01 ose+UxmIsZr1OD/Jy1euBJo0IQX3gnrvdGl9u8zQeCes+g5xl68gAU8n1J/Z4DoB\\\\r\\\\n2026-04-26 12:36:01 Y0mUMEgOuMu6aAvmQc/lqqP7lwrCKCfVe6SS6w2w3I9GrL2/3GkQkXJSc4rmZb7u\\\\r\\\\n2026-04-26 12:36:01 JoAFyHleVFAnDFXlhLKFl0h3x7TD26LK2LApnLI344MvE6ZG9RFA6w2Q6JtRIEWU\\\\r\\\\n2026-04-26 12:36:01 lheqsm3z9sfcOiHW/GWw0nTkC8btOFZ0uBTThDnHg0BvuXzmBDcle1GpXJdyzLyl\\\\r\\\\n2026-04-26 12:36:01 cW4qlLb15J1zMb/hVBNGagquATVVclvcVKYGYkNsxGpWBC8/8iJTEUKEMwqti7PR\\\\r\\\\n2026-04-26 12:36:01 yh+r058rdhlVML+0F5aDJwjslkCppGpJF5nGQn4pwBzViz752YFUgRRz2jrhFYHE\\\\r\\\\n2026-04-26 12:36:01 KaVCtcczpnZhtqNMY49aRMaTphHu4YpgglMjbDuZ5wiK27Fq5RM+lF6sIG6SGycb\\\\r\\\\n2026-04-26 12:36:01 4whptwXeepJbATEQ55FWWckLVJ5lVWuZ0pCOMguparXRwXECzGnIHLxehCexiZqA\\\\r\\\\n2026-04-26 12:36:01 QLJZNAFOyB3IhHZo5TrJY5sNIMXU94yraZLmQQ3cRMntNiW8kp6Pqj3I40bqlL3F\\\\r\\\\n2026-04-26 12:36:01 ahwNl8qwsjl44hMmWMfQk1c5OpCtkGJcIpIF08ILxDknAyBTQ35BJXMJ9XtI0nt2\\\\r\\\\n2026-04-26 12:36:01 OiGGA6YUqbb68bmXbEhzKQhulHs8GWh/sgXiN3NoI5ns6nU0a3e6Oz2BkXY708iM\\\\r\\\\n2026-04-26 12:36:01 oxrQxsZ4uoM/pjlHG5xeOM62B3tpeghU5iFfOgr+hH9mGcOx4cSoNjn3a5gvMJqc\\\\r\\\\n2026-04-26 12:36:01 Ycc60cOGalwlpLruUy4rdDwhInvsGAmaapDq8IxRpS/AIpij4Y/SmMl9uisvqBr9\\\\r\\\\n2026-04-26 12:36:01 ypg1olTOJ8rk08AXY0Kl2D9lS5GK11g2VWtCgKiMdS/RvAXJnJGkdStVTGYiCnHJ\\\\r\\\\n2026-04-26 12:36:01 OjgyHTrR2a+N2ZiYTldYtmF6H9pm/lfv6FNtw2cNQzqGoSSsrAHEugO0d94keir2\\\\r\\\\n2026-04-26 12:36:01 62w9ymkZWDurfZDVT8OIVWXhgKlR44rEMqSAR+iv6ap61WM2ZMFejOGy4XrDjLrH\\\\r\\\\n2026-04-26 12:36:01 qwI=\\\\r\\\\n2026-04-26 12:36:01 -----END PRIVATE KEY-----\",\n                \"value_start\": 157,\n                \"value_end\": 6245,\n                \"entropy\": 5.8771\n            }\n        ]\n    },\n    {\n        \"rule\": \"PEM Private Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"-----BEGIN PRIVATE KEY-----\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/pem_key.p.rsa\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.rsa|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"-----BEGIN PRIVATE KEY-----\",\n                \"value_start\": 0,\n                \"value_end\": 27,\n                \"entropy\": 3.20029\n            },\n            {\n                \"line\": \"MIIBVQIBADANBgkqhkiG9w0BAQEFAASCAT8wggE7AgEAAkEA12FhURMjPmqRNZZl\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/pem_key.p.rsa\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.rsa|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"MIIBVQIBADANBgkqhkiG9w0BAQEFAASCAT8wggE7AgEAAkEA12FhURMjPmqRNZZl\",\n                \"value_start\": 0,\n                \"value_end\": 64,\n                \"entropy\": 4.67611\n            },\n            {\n                \"line\": \"teTEEoNqzPBXPBgBSqihi1qWbk3NthnycOSinUz7prfasLMlEDqcS68FFh1t5rrX\",\n                \"line_num\": 3,\n                \"path\": \"./tests/samples/pem_key.p.rsa\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.rsa|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"teTEEoNqzPBXPBgBSqihi1qWbk3NthnycOSinUz7prfasLMlEDqcS68FFh1t5rrX\",\n                \"value_start\": 0,\n                \"value_end\": 64,\n                \"entropy\": 5.10493\n            },\n            {\n                \"line\": \"WknouwIDAQABAkAySCW0C8e6lp536Diukk3EFLImTiXPfbsvdtbf9bIQ5eNrfOhV\",\n                \"line_num\": 4,\n                \"path\": \"./tests/samples/pem_key.p.rsa\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.rsa|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"WknouwIDAQABAkAySCW0C8e6lp536Diukk3EFLImTiXPfbsvdtbf9bIQ5eNrfOhV\",\n                \"value_start\": 0,\n                \"value_end\": 64,\n                \"entropy\": 5.21461\n            },\n            {\n                \"line\": \"z4MuDWaaLPkL49si36Li4nLu8op3i9QVIlThAiEA74ZnMHks7VhxqpneOxWC896e\",\n                \"line_num\": 5,\n                \"path\": \"./tests/samples/pem_key.p.rsa\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.rsa|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"z4MuDWaaLPkL49si36Li4nLu8op3i9QVIlThAiEA74ZnMHks7VhxqpneOxWC896e\",\n                \"value_start\": 0,\n                \"value_end\": 64,\n                \"entropy\": 4.97641\n            },\n            {\n                \"line\": \"gS3TOtNx8sYYYlfeyh8CIQDmMdWhVAOWhdWMwdSvDVo9Qxk7ZpZJzVH5c+vzSWOF\",\n                \"line_num\": 6,\n                \"path\": \"./tests/samples/pem_key.p.rsa\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.rsa|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"gS3TOtNx8sYYYlfeyh8CIQDmMdWhVAOWhdWMwdSvDVo9Qxk7ZpZJzVH5c+vzSWOF\",\n                \"value_start\": 0,\n                \"value_end\": 64,\n                \"entropy\": 5.17923\n            },\n            {\n                \"line\": \"5QIhAJsOHZSyjNPkskhnLQaAiXJHRcKIILpvEM/BTx2ylmWvAiAkN3z79+LkoMPb\",\n                \"line_num\": 7,\n                \"path\": \"./tests/samples/pem_key.p.rsa\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.rsa|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"5QIhAJsOHZSyjNPkskhnLQaAiXJHRcKIILpvEM/BTx2ylmWvAiAkN3z79+LkoMPb\",\n                \"value_start\": 0,\n                \"value_end\": 64,\n                \"entropy\": 5.25766\n            },\n            {\n                \"line\": \"dHeI3xnuf4sNvHMyw1n9XE6oJUjCPQIhAL7L9UoJKVXkKu+RtislM1+rx9j5qy01\",\n                \"line_num\": 8,\n                \"path\": \"./tests/samples/pem_key.p.rsa\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.rsa|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"dHeI3xnuf4sNvHMyw1n9XE6oJUjCPQIhAL7L9UoJKVXkKu+RtislM1+rx9j5qy01\",\n                \"value_start\": 0,\n                \"value_end\": 64,\n                \"entropy\": 5.35141\n            },\n            {\n                \"line\": \"24n7nBfD3ZXv\",\n                \"line_num\": 9,\n                \"path\": \"./tests/samples/pem_key.p.rsa\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.rsa|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"24n7nBfD3ZXv\",\n                \"value_start\": 0,\n                \"value_end\": 12,\n                \"entropy\": 3.4183\n            },\n            {\n                \"line\": \"-----END PRIVATE KEY-----\",\n                \"line_num\": 10,\n                \"path\": \"./tests/samples/pem_key.p.rsa\",\n                \"info\": \"FILE:./tests/samples/pem_key.p.rsa|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"-----END PRIVATE KEY-----\",\n                \"value_start\": 0,\n                \"value_end\": 25,\n                \"entropy\": 3.04489\n            }\n        ]\n    },\n    {\n        \"rule\": \"Perplexity API Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"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\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/perplexity\",\n                \"info\": \"FILE:./tests/samples/perplexity|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"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\",\n                \"value_start\": 0,\n                \"value_end\": 53,\n                \"entropy\": 5.08142\n            }\n        ]\n    },\n    {\n        \"rule\": \"Picatic API Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"sk_live_gireogicracklegireogicrackle1231\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/picatic_key\",\n                \"info\": \"FILE:./tests/samples/picatic_key|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"sk_live_gireogicracklegireogicrackle1231\",\n                \"value_start\": 0,\n                \"value_end\": 40,\n                \"entropy\": 3.7037\n            }\n        ]\n    },\n    {\n        \"rule\": \"Stripe Credentials\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"sk_live_gireogicracklegireogicrackle1231\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/picatic_key\",\n                \"info\": \"FILE:./tests/samples/picatic_key|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"sk_live_gireogicracklegireogicrackle1231\",\n                \"value_start\": 0,\n                \"value_end\": 40,\n                \"entropy\": 3.7037\n            }\n        ]\n    },\n    {\n        \"rule\": \"PKCS with password 'changeme'\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"MIIFNgIBAzCCBOwGCSqGSIb3DQEHAaCCBN0EggTZMIIE1TCCApIGCSqGSIb3DQEHBqCCAoMwggJ/AgEAMIICeAYJKoZIhvcNAQcBMFcGCSqGSIb3DQEFDTBKMCkGCSqG\",\n                \"line_num\": 0,\n                \"path\": \"./tests/samples/pkcs12.changeme.p12\",\n                \"info\": \"FILE:./tests/samples/pkcs12.changeme.p12|PKCS_PASSWORD:b'changeme'\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"b'changeme'\",\n                \"value_start\": -2,\n                \"value_end\": -2,\n                \"entropy\": 3.0958\n            }\n        ]\n    },\n    {\n        \"rule\": \"PostHog Credentials\",\n        \"severity\": \"medium\",\n        \"confidence\": \"weak\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"phc_cJMqv5nG7Qtd0sfIwasTG87lgnDfJVbrcOOAZMOf\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/posthog\",\n                \"info\": \"FILE:./tests/samples/posthog|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"phc_cJMqv5nG7Qtd0sfIwasTG87lgnDfJVbrcOOAZMOf\",\n                \"value_start\": 0,\n                \"value_end\": 44,\n                \"entropy\": 4.86251\n            }\n        ]\n    },\n    {\n        \"rule\": \"PostHog Credentials\",\n        \"severity\": \"medium\",\n        \"confidence\": \"weak\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"phs_dNrZRd5etgv1B1gRTkfUrTJnf0EaZ5r6hUouJgXtWwFTrq\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/posthog\",\n                \"info\": \"FILE:./tests/samples/posthog|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"phs_dNrZRd5etgv1B1gRTkfUrTJnf0EaZ5r6hUouJgXtWwFTrq\",\n                \"value_start\": 0,\n                \"value_end\": 50,\n                \"entropy\": 4.89366\n            }\n        ]\n    },\n    {\n        \"rule\": \"PostHog Credentials\",\n        \"severity\": \"medium\",\n        \"confidence\": \"weak\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"phr_dNrZRd5etgv1B1gRTKedUjAkFCcvNdBLoQz4W8GCYEVUySGUt\",\n                \"line_num\": 3,\n                \"path\": \"./tests/samples/posthog\",\n                \"info\": \"FILE:./tests/samples/posthog|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"phr_dNrZRd5etgv1B1gRTKedUjAkFCcvNdBLoQz4W8GCYEVUySGUt\",\n                \"value_start\": 0,\n                \"value_end\": 53,\n                \"entropy\": 5.07217\n            }\n        ]\n    },\n    {\n        \"rule\": \"PostHog Credentials\",\n        \"severity\": \"medium\",\n        \"confidence\": \"weak\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"pha_BkeaIpOESh8OGcD1bhPGh6kH9UjVGp6nnaC6vF4E7q9TcJr7GapdQMVDX\",\n                \"line_num\": 4,\n                \"path\": \"./tests/samples/posthog\",\n                \"info\": \"FILE:./tests/samples/posthog|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"pha_BkeaIpOESh8OGcD1bhPGh6kH9UjVGp6nnaC6vF4E7q9TcJr7GapdQMVDX\",\n                \"value_start\": 0,\n                \"value_end\": 61,\n                \"entropy\": 5.03312\n            }\n        ]\n    },\n    {\n        \"rule\": \"PostHog Credentials\",\n        \"severity\": \"medium\",\n        \"confidence\": \"weak\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"phx_5nYpKltuz4gvt7LessoO3swaOH41RJh6pzT1x1NoeTrKbTuAaxtVMA7JmMxp\",\n                \"line_num\": 5,\n                \"path\": \"./tests/samples/posthog\",\n                \"info\": \"FILE:./tests/samples/posthog|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"phx_5nYpKltuz4gvt7LessoO3swaOH41RJh6pzT1x1NoeTrKbTuAaxtVMA7JmMxp\",\n                \"value_start\": 0,\n                \"value_end\": 64,\n                \"entropy\": 5.04657\n            }\n        ]\n    },\n    {\n        \"rule\": \"Postman Credentials\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"PMAK-be68a955d73619000f121d77-1d6ce2aa99d4b222bcc9fc01f345cf3168\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/postman\",\n                \"info\": \"FILE:./tests/samples/postman|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"PMAK-be68a955d73619000f121d77-1d6ce2aa99d4b222bcc9fc01f345cf3168\",\n                \"value_start\": 0,\n                \"value_end\": 64,\n                \"entropy\": 4.21698\n            }\n        ]\n    },\n    {\n        \"rule\": \"Postman Credentials\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"PMAT-9GP54SGZ7TS928P0BW1K3AN0WX\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/postman\",\n                \"info\": \"FILE:./tests/samples/postman|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"PMAT-9GP54SGZ7TS928P0BW1K3AN0WX\",\n                \"value_start\": 0,\n                \"value_end\": 31,\n                \"entropy\": 4.3492\n            }\n        ]\n    },\n    {\n        \"rule\": \"UUID\",\n        \"severity\": \"info\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"Print, crumple, throw away. line # 10 a0572bc9-7a3e-beef-cafe-9129474bcd81\",\n                \"line_num\": 10,\n                \"path\": \"./tests/samples/pretty.html\",\n                \"info\": \"FILE:./tests/samples/pretty.html|HTML\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"a0572bc9-7a3e-beef-cafe-9129474bcd81\",\n                \"value_start\": 38,\n                \"value_end\": 74,\n                \"entropy\": 3.84286\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_CREDENTIALS\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.999,\n        \"line_data_list\": [\n            {\n                \"line\": \"http://localhost:8888/v1/api/get?token=zUkITxodk63bDVUMwIymb3zKTxICz85zC00cv0Gel1nE8O\",\n                \"line_num\": 80,\n                \"path\": \"./tests/samples/pretty.html\",\n                \"info\": \"FILE:./tests/samples/pretty.html|HTML\",\n                \"variable\": \"token\",\n                \"variable_start\": 33,\n                \"variable_end\": 38,\n                \"value\": \"zUkITxodk63bDVUMwIymb3zKTxICz85zC00cv0Gel1nE8O\",\n                \"value_start\": 39,\n                \"value_end\": 85,\n                \"entropy\": 4.79509\n            }\n        ]\n    },\n    {\n        \"rule\": \"SECRET_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.999,\n        \"line_data_list\": [\n            {\n                \"line\": \"http://localhost:8888/v1/api/get?token=zUkITxodk63bDVUMwIymb3zKTxICz85zC00cv0Gel1nE8O\",\n                \"line_num\": 80,\n                \"path\": \"./tests/samples/pretty.html\",\n                \"info\": \"FILE:./tests/samples/pretty.html|HTML\",\n                \"variable\": \"token\",\n                \"variable_start\": 33,\n                \"variable_end\": 38,\n                \"value\": \"zUkITxodk63bDVUMwIymb3zKTxICz85zC00cv0Gel1nE8O\",\n                \"value_start\": 39,\n                \"value_end\": 85,\n                \"entropy\": 4.79509\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_CREDENTIALS\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.982,\n        \"line_data_list\": [\n            {\n                \"line\": \"147# password: Jd3OnNy^564eD5_sd\",\n                \"line_num\": 147,\n                \"path\": \"./tests/samples/pretty.html\",\n                \"info\": \"FILE:./tests/samples/pretty.html|HTML\",\n                \"variable\": \"password\",\n                \"variable_start\": 5,\n                \"variable_end\": 13,\n                \"value\": \"Jd3OnNy^564eD5_sd\",\n                \"value_start\": 15,\n                \"value_end\": 32,\n                \"entropy\": 3.85217\n            }\n        ]\n    },\n    {\n        \"rule\": \"PASSWD_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.982,\n        \"line_data_list\": [\n            {\n                \"line\": \"147# password: Jd3OnNy^564eD5_sd\",\n                \"line_num\": 147,\n                \"path\": \"./tests/samples/pretty.html\",\n                \"info\": \"FILE:./tests/samples/pretty.html|HTML\",\n                \"variable\": \"password\",\n                \"variable_start\": 5,\n                \"variable_end\": 13,\n                \"value\": \"Jd3OnNy^564eD5_sd\",\n                \"value_start\": 15,\n                \"value_end\": 32,\n                \"entropy\": 3.85217\n            }\n        ]\n    },\n    {\n        \"rule\": \"UUID\",\n        \"severity\": \"info\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"151# a0ce4d19-7a3e-beef-cafe-9129474bcd81\",\n                \"line_num\": 151,\n                \"path\": \"./tests/samples/pretty.html\",\n                \"info\": \"FILE:./tests/samples/pretty.html|HTML\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"a0ce4d19-7a3e-beef-cafe-9129474bcd81\",\n                \"value_start\": 5,\n                \"value_end\": 41,\n                \"entropy\": 3.74259\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_CREDENTIALS\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.118,\n        \"line_data_list\": [\n            {\n                \"line\": \"pwd = \\\"cackle!\\\"\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/pwd.gradle\",\n                \"info\": \"FILE:./tests/samples/pwd.gradle|RAW\",\n                \"variable\": \"pwd\",\n                \"variable_start\": 0,\n                \"variable_end\": 3,\n                \"value\": \"cackle!\",\n                \"value_start\": 7,\n                \"value_end\": 14,\n                \"entropy\": 2.52164\n            }\n        ]\n    },\n    {\n        \"rule\": \"PyPi API Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"pypi-AgEIcHlvdS5bcmcCJGDmMTllXWJjLTRhODAtNDBhYi01Y2Y4LThjNjcxZTg3MsRjOAACKlszLCJlPDYzYmUxOC0wNjQ3LTQ4AzQtODFhYy1jZGRlNTk2MGYxNDYiXQAABiDDbVAEnaUMn4zZHlFr5NWy7JEYfvoay--cVmKO5lr3Xp\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/pypi_token\",\n                \"info\": \"FILE:./tests/samples/pypi_token|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"pypi-AgEIcHlvdS5bcmcCJGDmMTllXWJjLTRhODAtNDBhYi01Y2Y4LThjNjcxZTg3MsRjOAACKlszLCJlPDYzYmUxOC0wNjQ3LTQ4AzQtODFhYy1jZGRlNTk2MGYxNDYiXQAABiDDbVAEnaUMn4zZHlFr5NWy7JEYfvoay--cVmKO5lr3Xp\",\n                \"value_start\": 0,\n                \"value_end\": 179,\n                \"entropy\": 5.5923\n            }\n        ]\n    },\n    {\n        \"rule\": \"RubyGems API Key\",\n        \"severity\": \"medium\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"rubygems_2676e0138d75572e758e2b2252713061b8f26caf7f21630d\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/rubygems\",\n                \"info\": \"FILE:./tests/samples/rubygems|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"rubygems_2676e0138d75572e758e2b2252713061b8f26caf7f21630d\",\n                \"value_start\": 0,\n                \"value_end\": 57,\n                \"entropy\": 4.06282\n            }\n        ]\n    },\n    {\n        \"rule\": \"Salesforce Credentials\",\n        \"severity\": \"medium\",\n        \"confidence\": \"weak\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"t_org_if 00DFT5H59PHLAN0IA 00DG9UE38D6ELk5l 00DyXD47kKDny11j 00Dh68fkeHGbDk92k\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/salesfoce\",\n                \"info\": \"FILE:./tests/samples/salesfoce|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"00DFT5H59PHLAN0IA\",\n                \"value_start\": 9,\n                \"value_end\": 26,\n                \"entropy\": 3.45482\n            }\n        ]\n    },\n    {\n        \"rule\": \"Salesforce Credentials\",\n        \"severity\": \"medium\",\n        \"confidence\": \"weak\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"t_org_if 00DFT5H59PHLAN0IA 00DG9UE38D6ELk5l 00DyXD47kKDny11j 00Dh68fkeHGbDk92k\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/salesfoce\",\n                \"info\": \"FILE:./tests/samples/salesfoce|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"00DG9UE38D6ELk5l\",\n                \"value_start\": 27,\n                \"value_end\": 43,\n                \"entropy\": 3.625\n            }\n        ]\n    },\n    {\n        \"rule\": \"Salesforce Credentials\",\n        \"severity\": \"medium\",\n        \"confidence\": \"weak\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"t_org_if 00DFT5H59PHLAN0IA 00DG9UE38D6ELk5l 00DyXD47kKDny11j 00Dh68fkeHGbDk92k\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/salesfoce\",\n                \"info\": \"FILE:./tests/samples/salesfoce|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"00Dh68fkeHGbDk92k\",\n                \"value_start\": 61,\n                \"value_end\": 78,\n                \"entropy\": 3.57247\n            }\n        ]\n    },\n    {\n        \"rule\": \"Salesforce Credentials\",\n        \"severity\": \"medium\",\n        \"confidence\": \"weak\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"t_org_if 00DFT5H59PHLAN0IA 00DG9UE38D6ELk5l 00DyXD47kKDny11j 00Dh68fkeHGbDk92k\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/salesfoce\",\n                \"info\": \"FILE:./tests/samples/salesfoce|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"00DyXD47kKDny11j\",\n                \"value_start\": 44,\n                \"value_end\": 60,\n                \"entropy\": 3.32782\n            }\n        ]\n    },\n    {\n        \"rule\": \"Salesforce Credentials\",\n        \"severity\": \"medium\",\n        \"confidence\": \"weak\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"t_token 00DUI000005AecQ!AR8Amtqc2drcmpoZ3dlanJoMzQ5ODc1OTg0Mzc5NzQ1OCsrKysKLS0tLQp.cm9jLVR5cGU6IDQsRU5DUllwwMzQ1NzY3MzQ1\",\n                \"line_num\": 3,\n                \"path\": \"./tests/samples/salesfoce\",\n                \"info\": \"FILE:./tests/samples/salesfoce|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"00DUI000005AecQ!AR8Amtqc2drcmpoZ3dlanJoMzQ5ODc1OTg0Mzc5NzQ1OCsrKysKLS0tLQp.cm9jLVR5cGU6IDQsRU5DUllwwMzQ1NzY3MzQ1\",\n                \"value_start\": 8,\n                \"value_end\": 120,\n                \"entropy\": 5.19811\n            }\n        ]\n    },\n    {\n        \"rule\": \"Salesforce Credentials\",\n        \"severity\": \"medium\",\n        \"confidence\": \"weak\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"t_client_id: 3MVGb3j9DpwrLFc90tWIy.nh7B89YzeymdX9VETUUokMus8xztUgf_5PksXuZmgYoNmvYcsk_qPpk1Y.zttO1\",\n                \"line_num\": 4,\n                \"path\": \"./tests/samples/salesfoce\",\n                \"info\": \"FILE:./tests/samples/salesfoce|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"3MVGb3j9DpwrLFc90tWIy.nh7B89YzeymdX9VETUUokMus8xztUgf_5PksXuZmgYoNmvYcsk_qPpk1Y.zttO1\",\n                \"value_start\": 13,\n                \"value_end\": 98,\n                \"entropy\": 5.45622\n            }\n        ]\n    },\n    {\n        \"rule\": \"UUID\",\n        \"severity\": \"info\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"First line bace4d11-a001-be1a-c3fe-9829474b5d84\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/sample.docx\",\n                \"info\": \"FILE:./tests/samples/sample.docx|DOCX\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"bace4d11-a001-be1a-c3fe-9829474b5d84\",\n                \"value_start\": 11,\n                \"value_end\": 47,\n                \"entropy\": 3.82924\n            }\n        ]\n    },\n    {\n        \"rule\": \"UUID\",\n        \"severity\": \"info\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"second line bace4d11-a002-be1a-c3fe-9829474b5d84\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/sample.docx\",\n                \"info\": \"FILE:./tests/samples/sample.docx|DOCX\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"bace4d11-a002-be1a-c3fe-9829474b5d84\",\n                \"value_start\": 12,\n                \"value_end\": 48,\n                \"entropy\": 3.86383\n            }\n        ]\n    },\n    {\n        \"rule\": \"UUID\",\n        \"severity\": \"info\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"Innner cell bace4d11-b003-be1a-c3fe-9829474b5d84\",\n                \"line_num\": 3,\n                \"path\": \"./tests/samples/sample.docx\",\n                \"info\": \"FILE:./tests/samples/sample.docx|DOCX\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"bace4d11-b003-be1a-c3fe-9829474b5d84\",\n                \"value_start\": 12,\n                \"value_end\": 48,\n                \"entropy\": 3.85021\n            }\n        ]\n    },\n    {\n        \"rule\": \"UUID\",\n        \"severity\": \"info\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"New page first line bace4d19-b001-b3e2-eac1-9129474bcd84\",\n                \"line_num\": 4,\n                \"path\": \"./tests/samples/sample.docx\",\n                \"info\": \"FILE:./tests/samples/sample.docx|DOCX\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"bace4d19-b001-b3e2-eac1-9129474bcd84\",\n                \"value_start\": 20,\n                \"value_end\": 56,\n                \"entropy\": 3.66257\n            }\n        ]\n    },\n    {\n        \"rule\": \"UUID\",\n        \"severity\": \"info\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"Next page section bace4d19-c001-b3e2-eac1-9129474bcd84\",\n                \"line_num\": 5,\n                \"path\": \"./tests/samples/sample.docx\",\n                \"info\": \"FILE:./tests/samples/sample.docx|DOCX\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"bace4d19-c001-b3e2-eac1-9129474bcd84\",\n                \"value_start\": 18,\n                \"value_end\": 54,\n                \"entropy\": 3.66257\n            }\n        ]\n    },\n    {\n        \"rule\": \"UUID\",\n        \"severity\": \"info\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"Section R2C2 b5c6471d-a2b2-b4ef-ca5e-9121476bc881\",\n                \"line_num\": 6,\n                \"path\": \"./tests/samples/sample.docx\",\n                \"info\": \"FILE:./tests/samples/sample.docx|DOCX\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"b5c6471d-a2b2-b4ef-ca5e-9121476bc881\",\n                \"value_start\": 13,\n                \"value_end\": 49,\n                \"entropy\": 3.77368\n            }\n        ]\n    },\n    {\n        \"rule\": \"UUID\",\n        \"severity\": \"info\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"next line in section bace4d19-c001-b3e2-eac1-9129474bcd84\",\n                \"line_num\": 7,\n                \"path\": \"./tests/samples/sample.docx\",\n                \"info\": \"FILE:./tests/samples/sample.docx|DOCX\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"bace4d19-c001-b3e2-eac1-9129474bcd84\",\n                \"value_start\": 21,\n                \"value_end\": 57,\n                \"entropy\": 3.66257\n            }\n        ]\n    },\n    {\n        \"rule\": \"UUID\",\n        \"severity\": \"info\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"last page  bace4d11-a003-be2a-c3fe-9829474b5d84\",\n                \"line_num\": 8,\n                \"path\": \"./tests/samples/sample.docx\",\n                \"info\": \"FILE:./tests/samples/sample.docx|DOCX\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"bace4d11-a003-be2a-c3fe-9829474b5d84\",\n                \"value_start\": 11,\n                \"value_end\": 47,\n                \"entropy\": 3.8848\n            }\n        ]\n    },\n    {\n        \"rule\": \"UUID\",\n        \"severity\": \"info\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"2 Second page header bace4d19-b002-beda-cafe-0929375bcd82\",\n                \"line_num\": 9,\n                \"path\": \"./tests/samples/sample.docx\",\n                \"info\": \"FILE:./tests/samples/sample.docx|DOCX\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"bace4d19-b002-beda-cafe-0929375bcd82\",\n                \"value_start\": 21,\n                \"value_end\": 57,\n                \"entropy\": 3.80092\n            }\n        ]\n    },\n    {\n        \"rule\": \"UUID\",\n        \"severity\": \"info\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"Third page header bace4d19-b003-beda-cafe-0929375bcd82\",\n                \"line_num\": 10,\n                \"path\": \"./tests/samples/sample.docx\",\n                \"info\": \"FILE:./tests/samples/sample.docx|DOCX\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"bace4d19-b003-beda-cafe-0929375bcd82\",\n                \"value_start\": 18,\n                \"value_end\": 54,\n                \"entropy\": 3.82189\n            }\n        ]\n    },\n    {\n        \"rule\": \"UUID\",\n        \"severity\": \"info\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"first_page_header bace4d11-f001-beea-c3fe-9829474b5d84\",\n                \"line_num\": 11,\n                \"path\": \"./tests/samples/sample.docx\",\n                \"info\": \"FILE:./tests/samples/sample.docx|DOCX\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"bace4d11-f001-beea-c3fe-9829474b5d84\",\n                \"value_start\": 18,\n                \"value_end\": 54,\n                \"entropy\": 3.85021\n            }\n        ]\n    },\n    {\n        \"rule\": \"UUID\",\n        \"severity\": \"info\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"Default footer bace4119-f002-bdef-dafe-9129474bcd89\",\n                \"line_num\": 12,\n                \"path\": \"./tests/samples/sample.docx\",\n                \"info\": \"FILE:./tests/samples/sample.docx|DOCX\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"bace4119-f002-bdef-dafe-9129474bcd89\",\n                \"value_start\": 15,\n                \"value_end\": 51,\n                \"entropy\": 3.71078\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_GET\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.999,\n        \"line_data_list\": [\n            {\n                \"line\": \"password\\uc124\\uc815\\uc740getenv(\\\"CREDENTIAL\\\", \\\"De7a01tC4e9En7\\\")\",\n                \"line_num\": 16,\n                \"path\": \"./tests/samples/sample.html\",\n                \"info\": \"FILE:./tests/samples/sample.html|HTML\",\n                \"variable\": \"password\\uc124\\uc815\\uc740\",\n                \"variable_start\": 0,\n                \"variable_end\": 11,\n                \"value\": \"De7a01tC4e9En7\",\n                \"value_start\": 33,\n                \"value_end\": 47,\n                \"entropy\": 3.52164\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_CREDENTIALS\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"password\\uc124\\uc815\\uc740getenv(\\\"CREDENTIAL\\\", \\\"De7a01tC4e9En7\\\")\",\n                \"line_num\": 16,\n                \"path\": \"./tests/samples/sample.html\",\n                \"info\": \"FILE:./tests/samples/sample.html|HTML\",\n                \"variable\": \"password\",\n                \"variable_start\": 0,\n                \"variable_end\": 8,\n                \"value\": \"getenv(\\\"CREDENTIAL\\\",\",\n                \"value_start\": 11,\n                \"value_end\": 31,\n                \"entropy\": 4.02193\n            }\n        ]\n    },\n    {\n        \"rule\": \"IP_ID_PASSWORD_TRIPLE\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.523,\n        \"line_data_list\": [\n            {\n                \"line\": \"F16 224.52.124.93 root/A0dM1Nka\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/sample.ods\",\n                \"info\": \"FILE:./tests/samples/sample.ods|SheetAny:F16\",\n                \"variable\": null,\n                \"variable_start\": -1,\n                \"variable_end\": -1,\n                \"value\": \"A0dM1Nka\",\n                \"value_start\": 23,\n                \"value_end\": 31,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"AWS Client ID\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"AKIAGIREOGIAXLSX4BT5\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/sample.ods\",\n                \"info\": \"FILE:./tests/samples/sample.ods|Sheet1x1:A1\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"AKIAGIREOGIAXLSX4BT5\",\n                \"value_start\": 0,\n                \"value_end\": 20,\n                \"entropy\": 3.64644\n            }\n        ]\n    },\n    {\n        \"rule\": \"IP_ID_PASSWORD_TRIPLE\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.98,\n        \"line_data_list\": [\n            {\n                \"line\": \"\\ud64d\\uae38\\ub3d9\\uc804\\t192.168.0.1\\tadmin\\tH0NgGi1d0nG\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/sample.ods\",\n                \"info\": \"FILE:./tests/samples/sample.ods|Sheet4x3:R2\",\n                \"variable\": null,\n                \"variable_start\": -1,\n                \"variable_end\": -1,\n                \"value\": \"H0NgGi1d0nG\",\n                \"value_start\": 24,\n                \"value_end\": 35,\n                \"entropy\": 3.0958\n            }\n        ]\n    },\n    {\n        \"rule\": \"IP_ID_PASSWORD_TRIPLE\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.985,\n        \"line_data_list\": [\n            {\n                \"line\": \"B3 192.168.0.1 master/NBd@126t!\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/sample.ods\",\n                \"info\": \"FILE:./tests/samples/sample.ods|SheetAny:B3\",\n                \"variable\": null,\n                \"variable_start\": -1,\n                \"variable_end\": -1,\n                \"value\": \"NBd@126t!\",\n                \"value_start\": 22,\n                \"value_end\": 31,\n                \"entropy\": 3.16993\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_CREDENTIALS\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.835,\n        \"line_data_list\": [\n            {\n                \"line\": \"A2 ID:master,PW:dipPr10Gg!\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/sample.ods\",\n                \"info\": \"FILE:./tests/samples/sample.ods|SheetAny:A2\",\n                \"variable\": \"PW\",\n                \"variable_start\": 13,\n                \"variable_end\": 15,\n                \"value\": \"dipPr10Gg!\",\n                \"value_start\": 16,\n                \"value_end\": 26,\n                \"entropy\": 3.32193\n            }\n        ]\n    },\n    {\n        \"rule\": \"ID_PAIR_PASSWD_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.835,\n        \"line_data_list\": [\n            {\n                \"line\": \"A2 ID:master,PW:dipPr10Gg!\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/sample.ods\",\n                \"info\": \"FILE:./tests/samples/sample.ods|SheetAny:A2\",\n                \"variable\": \"PW\",\n                \"variable_start\": 13,\n                \"variable_end\": 15,\n                \"value\": \"dipPr10Gg!\",\n                \"value_start\": 16,\n                \"value_end\": 26,\n                \"entropy\": 3.32193\n            },\n            {\n                \"line\": \"A2 ID:master,PW:dipPr10Gg!\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/sample.ods\",\n                \"info\": \"FILE:./tests/samples/sample.ods|SheetAny:A2\",\n                \"variable\": \"ID\",\n                \"variable_start\": 3,\n                \"variable_end\": 5,\n                \"value\": \"master,PW:dipPr10Gg!\",\n                \"value_start\": 6,\n                \"value_end\": 26,\n                \"entropy\": 4.12193\n            }\n        ]\n    },\n    {\n        \"rule\": \"PASSWD_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.835,\n        \"line_data_list\": [\n            {\n                \"line\": \"A2 ID:master,PW:dipPr10Gg!\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/sample.ods\",\n                \"info\": \"FILE:./tests/samples/sample.ods|SheetAny:A2\",\n                \"variable\": \"PW\",\n                \"variable_start\": 13,\n                \"variable_end\": 15,\n                \"value\": \"dipPr10Gg!\",\n                \"value_start\": 16,\n                \"value_end\": 26,\n                \"entropy\": 3.32193\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_CREDENTIALS\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.999,\n        \"line_data_list\": [\n            {\n                \"line\": \"A1 password is w3Ry5tR0nG\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/sample.ods\",\n                \"info\": \"FILE:./tests/samples/sample.ods|SheetAny:A1\",\n                \"variable\": \"password\",\n                \"variable_start\": 3,\n                \"variable_end\": 11,\n                \"value\": \"w3Ry5tR0nG\",\n                \"value_start\": 15,\n                \"value_end\": 25,\n                \"entropy\": 3.12193\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_CREDENTIALS\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"password = \\u201cXdj@jcN834b\\u201d\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/sample.pdf\",\n                \"info\": \"FILE:./tests/samples/sample.pdf|PDF:1\",\n                \"variable\": \"password\",\n                \"variable_start\": 0,\n                \"variable_end\": 8,\n                \"value\": \"Xdj@jcN834b\",\n                \"value_start\": 12,\n                \"value_end\": 23,\n                \"entropy\": 3.27761\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_CREDENTIALS\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.967,\n        \"line_data_list\": [\n            {\n                \"line\": \"token = \\u2018bace4d31-fa7e-beef-cafe-912947cbe28\\u2019\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/sample.pdf\",\n                \"info\": \"FILE:./tests/samples/sample.pdf|PDF:1\",\n                \"variable\": \"token\",\n                \"variable_start\": 0,\n                \"variable_end\": 5,\n                \"value\": \"bace4d31-fa7e-beef-cafe-912947cbe28\",\n                \"value_start\": 9,\n                \"value_end\": 44,\n                \"entropy\": 3.62845\n            }\n        ]\n    },\n    {\n        \"rule\": \"Github Classic Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"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\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/sample.pdf\",\n                \"info\": \"FILE:./tests/samples/sample.pdf|PDF:1\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"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\",\n                \"value_start\": 0,\n                \"value_end\": 40,\n                \"entropy\": 4.97193\n            }\n        ]\n    },\n    {\n        \"rule\": \"AWS Client ID\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"AKIAGIREOGIPPTX1Y45X\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/sample.pptx\",\n                \"info\": \"FILE:./tests/samples/sample.pptx|PPTX:1\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"AKIAGIREOGIPPTX1Y45X\",\n                \"value_start\": 0,\n                \"value_end\": 20,\n                \"entropy\": 3.68418\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_CREDENTIALS\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.004,\n        \"line_data_list\": [\n            {\n                \"line\": \"1: \\ube44\\ubc00\\ubc88\\ud638:pRl5Db#@\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/sample.rtf\",\n                \"info\": \"FILE:./tests/samples/sample.rtf|RTF\",\n                \"variable\": \"\\ube44\\ubc00\\ubc88\\ud638\",\n                \"variable_start\": 3,\n                \"variable_end\": 7,\n                \"value\": \"pRl5Db#@\",\n                \"value_start\": 8,\n                \"value_end\": 16,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"PASSWD_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.004,\n        \"line_data_list\": [\n            {\n                \"line\": \"1: \\ube44\\ubc00\\ubc88\\ud638:pRl5Db#@\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/sample.rtf\",\n                \"info\": \"FILE:./tests/samples/sample.rtf|RTF\",\n                \"variable\": \"\\ube44\\ubc00\\ubc88\\ud638\",\n                \"variable_start\": 3,\n                \"variable_end\": 7,\n                \"value\": \"pRl5Db#@\",\n                \"value_start\": 8,\n                \"value_end\": 16,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"UUID\",\n        \"severity\": \"info\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"3: -H 'postman-token: 81f50f8d-4c1a-de4d-8e3f-c1bc8b429a36'\",\n                \"line_num\": 3,\n                \"path\": \"./tests/samples/sample.rtf\",\n                \"info\": \"FILE:./tests/samples/sample.rtf|RTF\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"81f50f8d-4c1a-de4d-8e3f-c1bc8b429a36\",\n                \"value_start\": 22,\n                \"value_end\": 58,\n                \"entropy\": 3.84286\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_CREDENTIALS\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.987,\n        \"line_data_list\": [\n            {\n                \"line\": \"3: -H 'postman-token: 81f50f8d-4c1a-de4d-8e3f-c1bc8b429a36'\",\n                \"line_num\": 3,\n                \"path\": \"./tests/samples/sample.rtf\",\n                \"info\": \"FILE:./tests/samples/sample.rtf|RTF\",\n                \"variable\": \"token\",\n                \"variable_start\": 15,\n                \"variable_end\": 20,\n                \"value\": \"81f50f8d-4c1a-de4d-8e3f-c1bc8b429a36'\",\n                \"value_start\": 22,\n                \"value_end\": 59,\n                \"entropy\": 3.91825\n            }\n        ]\n    },\n    {\n        \"rule\": \"UUID\",\n        \"severity\": \"info\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"17205d79-dead-beef-a311-26312ad6ea36\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/sample.tm7\",\n                \"info\": \"FILE:./tests/samples/sample.tm7|TMX\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"17205d79-dead-beef-a311-26312ad6ea36\",\n                \"value_start\": 0,\n                \"value_end\": 36,\n                \"entropy\": 3.60702\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_CREDENTIALS\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"May password:6Ew1ThY0u\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/sample.tm7\",\n                \"info\": \"FILE:./tests/samples/sample.tm7|TMX\",\n                \"variable\": \"password\",\n                \"variable_start\": 4,\n                \"variable_end\": 12,\n                \"value\": \"6Ew1ThY0u\",\n                \"value_start\": 13,\n                \"value_end\": 22,\n                \"entropy\": 3.16993\n            }\n        ]\n    },\n    {\n        \"rule\": \"PASSWD_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"May password:6Ew1ThY0u\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/sample.tm7\",\n                \"info\": \"FILE:./tests/samples/sample.tm7|TMX\",\n                \"variable\": \"password\",\n                \"variable_start\": 4,\n                \"variable_end\": 12,\n                \"value\": \"6Ew1ThY0u\",\n                \"value_start\": 13,\n                \"value_end\": 22,\n                \"entropy\": 3.16993\n            }\n        ]\n    },\n    {\n        \"rule\": \"IP_ID_PASSWORD_TRIPLE\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.523,\n        \"line_data_list\": [\n            {\n                \"line\": \"F16 224.52.124.93 root/A0dM1Nka\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/sample.xls\",\n                \"info\": \"FILE:./tests/samples/sample.xls|SheetAny:F16\",\n                \"variable\": null,\n                \"variable_start\": -1,\n                \"variable_end\": -1,\n                \"value\": \"A0dM1Nka\",\n                \"value_start\": 23,\n                \"value_end\": 31,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"AWS Client ID\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"AKIAGIREOGIAXLSX4BT5\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/sample.xls\",\n                \"info\": \"FILE:./tests/samples/sample.xls|Sheet1x1:A1\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"AKIAGIREOGIAXLSX4BT5\",\n                \"value_start\": 0,\n                \"value_end\": 20,\n                \"entropy\": 3.64644\n            }\n        ]\n    },\n    {\n        \"rule\": \"IP_ID_PASSWORD_TRIPLE\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.98,\n        \"line_data_list\": [\n            {\n                \"line\": \"\\ud64d\\uae38\\ub3d9\\uc804\\t192.168.0.1\\tadmin\\tH0NgGi1d0nG\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/sample.xls\",\n                \"info\": \"FILE:./tests/samples/sample.xls|Sheet4x3:R2\",\n                \"variable\": null,\n                \"variable_start\": -1,\n                \"variable_end\": -1,\n                \"value\": \"H0NgGi1d0nG\",\n                \"value_start\": 24,\n                \"value_end\": 35,\n                \"entropy\": 3.0958\n            }\n        ]\n    },\n    {\n        \"rule\": \"IP_ID_PASSWORD_TRIPLE\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.985,\n        \"line_data_list\": [\n            {\n                \"line\": \"B3 192.168.0.1 master/NBd@126t!\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/sample.xls\",\n                \"info\": \"FILE:./tests/samples/sample.xls|SheetAny:B3\",\n                \"variable\": null,\n                \"variable_start\": -1,\n                \"variable_end\": -1,\n                \"value\": \"NBd@126t!\",\n                \"value_start\": 22,\n                \"value_end\": 31,\n                \"entropy\": 3.16993\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_CREDENTIALS\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.835,\n        \"line_data_list\": [\n            {\n                \"line\": \"A2 ID:master,PW:dipPr10Gg!\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/sample.xls\",\n                \"info\": \"FILE:./tests/samples/sample.xls|SheetAny:A2\",\n                \"variable\": \"PW\",\n                \"variable_start\": 13,\n                \"variable_end\": 15,\n                \"value\": \"dipPr10Gg!\",\n                \"value_start\": 16,\n                \"value_end\": 26,\n                \"entropy\": 3.32193\n            }\n        ]\n    },\n    {\n        \"rule\": \"ID_PAIR_PASSWD_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.835,\n        \"line_data_list\": [\n            {\n                \"line\": \"A2 ID:master,PW:dipPr10Gg!\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/sample.xls\",\n                \"info\": \"FILE:./tests/samples/sample.xls|SheetAny:A2\",\n                \"variable\": \"PW\",\n                \"variable_start\": 13,\n                \"variable_end\": 15,\n                \"value\": \"dipPr10Gg!\",\n                \"value_start\": 16,\n                \"value_end\": 26,\n                \"entropy\": 3.32193\n            },\n            {\n                \"line\": \"A2 ID:master,PW:dipPr10Gg!\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/sample.xls\",\n                \"info\": \"FILE:./tests/samples/sample.xls|SheetAny:A2\",\n                \"variable\": \"ID\",\n                \"variable_start\": 3,\n                \"variable_end\": 5,\n                \"value\": \"master,PW:dipPr10Gg!\",\n                \"value_start\": 6,\n                \"value_end\": 26,\n                \"entropy\": 4.12193\n            }\n        ]\n    },\n    {\n        \"rule\": \"PASSWD_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.835,\n        \"line_data_list\": [\n            {\n                \"line\": \"A2 ID:master,PW:dipPr10Gg!\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/sample.xls\",\n                \"info\": \"FILE:./tests/samples/sample.xls|SheetAny:A2\",\n                \"variable\": \"PW\",\n                \"variable_start\": 13,\n                \"variable_end\": 15,\n                \"value\": \"dipPr10Gg!\",\n                \"value_start\": 16,\n                \"value_end\": 26,\n                \"entropy\": 3.32193\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_CREDENTIALS\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.999,\n        \"line_data_list\": [\n            {\n                \"line\": \"A1 password is w3Ry5tR0nG\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/sample.xls\",\n                \"info\": \"FILE:./tests/samples/sample.xls|SheetAny:A1\",\n                \"variable\": \"password\",\n                \"variable_start\": 3,\n                \"variable_end\": 11,\n                \"value\": \"w3Ry5tR0nG\",\n                \"value_start\": 15,\n                \"value_end\": 25,\n                \"entropy\": 3.12193\n            }\n        ]\n    },\n    {\n        \"rule\": \"IP_ID_PASSWORD_TRIPLE\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.523,\n        \"line_data_list\": [\n            {\n                \"line\": \"F16 224.52.124.93 root/A0dM1Nka\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/sample.xlsb\",\n                \"info\": \"FILE:./tests/samples/sample.xlsb|SheetAny:F16\",\n                \"variable\": null,\n                \"variable_start\": -1,\n                \"variable_end\": -1,\n                \"value\": \"A0dM1Nka\",\n                \"value_start\": 23,\n                \"value_end\": 31,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"AWS Client ID\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"AKIAGIREOGIAXLSX4BT5\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/sample.xlsb\",\n                \"info\": \"FILE:./tests/samples/sample.xlsb|Sheet1x1:A1\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"AKIAGIREOGIAXLSX4BT5\",\n                \"value_start\": 0,\n                \"value_end\": 20,\n                \"entropy\": 3.64644\n            }\n        ]\n    },\n    {\n        \"rule\": \"IP_ID_PASSWORD_TRIPLE\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.98,\n        \"line_data_list\": [\n            {\n                \"line\": \"\\ud64d\\uae38\\ub3d9\\uc804\\t192.168.0.1\\tadmin\\tH0NgGi1d0nG\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/sample.xlsb\",\n                \"info\": \"FILE:./tests/samples/sample.xlsb|Sheet4x3:R2\",\n                \"variable\": null,\n                \"variable_start\": -1,\n                \"variable_end\": -1,\n                \"value\": \"H0NgGi1d0nG\",\n                \"value_start\": 24,\n                \"value_end\": 35,\n                \"entropy\": 3.0958\n            }\n        ]\n    },\n    {\n        \"rule\": \"IP_ID_PASSWORD_TRIPLE\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.985,\n        \"line_data_list\": [\n            {\n                \"line\": \"B3 192.168.0.1 master/NBd@126t!\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/sample.xlsb\",\n                \"info\": \"FILE:./tests/samples/sample.xlsb|SheetAny:B3\",\n                \"variable\": null,\n                \"variable_start\": -1,\n                \"variable_end\": -1,\n                \"value\": \"NBd@126t!\",\n                \"value_start\": 22,\n                \"value_end\": 31,\n                \"entropy\": 3.16993\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_CREDENTIALS\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.835,\n        \"line_data_list\": [\n            {\n                \"line\": \"A2 ID:master,PW:dipPr10Gg!\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/sample.xlsb\",\n                \"info\": \"FILE:./tests/samples/sample.xlsb|SheetAny:A2\",\n                \"variable\": \"PW\",\n                \"variable_start\": 13,\n                \"variable_end\": 15,\n                \"value\": \"dipPr10Gg!\",\n                \"value_start\": 16,\n                \"value_end\": 26,\n                \"entropy\": 3.32193\n            }\n        ]\n    },\n    {\n        \"rule\": \"ID_PAIR_PASSWD_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.835,\n        \"line_data_list\": [\n            {\n                \"line\": \"A2 ID:master,PW:dipPr10Gg!\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/sample.xlsb\",\n                \"info\": \"FILE:./tests/samples/sample.xlsb|SheetAny:A2\",\n                \"variable\": \"PW\",\n                \"variable_start\": 13,\n                \"variable_end\": 15,\n                \"value\": \"dipPr10Gg!\",\n                \"value_start\": 16,\n                \"value_end\": 26,\n                \"entropy\": 3.32193\n            },\n            {\n                \"line\": \"A2 ID:master,PW:dipPr10Gg!\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/sample.xlsb\",\n                \"info\": \"FILE:./tests/samples/sample.xlsb|SheetAny:A2\",\n                \"variable\": \"ID\",\n                \"variable_start\": 3,\n                \"variable_end\": 5,\n                \"value\": \"master,PW:dipPr10Gg!\",\n                \"value_start\": 6,\n                \"value_end\": 26,\n                \"entropy\": 4.12193\n            }\n        ]\n    },\n    {\n        \"rule\": \"PASSWD_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.835,\n        \"line_data_list\": [\n            {\n                \"line\": \"A2 ID:master,PW:dipPr10Gg!\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/sample.xlsb\",\n                \"info\": \"FILE:./tests/samples/sample.xlsb|SheetAny:A2\",\n                \"variable\": \"PW\",\n                \"variable_start\": 13,\n                \"variable_end\": 15,\n                \"value\": \"dipPr10Gg!\",\n                \"value_start\": 16,\n                \"value_end\": 26,\n                \"entropy\": 3.32193\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_CREDENTIALS\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.999,\n        \"line_data_list\": [\n            {\n                \"line\": \"A1 password is w3Ry5tR0nG\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/sample.xlsb\",\n                \"info\": \"FILE:./tests/samples/sample.xlsb|SheetAny:A1\",\n                \"variable\": \"password\",\n                \"variable_start\": 3,\n                \"variable_end\": 11,\n                \"value\": \"w3Ry5tR0nG\",\n                \"value_start\": 15,\n                \"value_end\": 25,\n                \"entropy\": 3.12193\n            }\n        ]\n    },\n    {\n        \"rule\": \"IP_ID_PASSWORD_TRIPLE\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.523,\n        \"line_data_list\": [\n            {\n                \"line\": \"F16 224.52.124.93 root/A0dM1Nka\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/sample.xlsx\",\n                \"info\": \"FILE:./tests/samples/sample.xlsx|SheetAny:F16\",\n                \"variable\": null,\n                \"variable_start\": -1,\n                \"variable_end\": -1,\n                \"value\": \"A0dM1Nka\",\n                \"value_start\": 23,\n                \"value_end\": 31,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"AWS Client ID\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"AKIAGIREOGIAXLSX4BT5\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/sample.xlsx\",\n                \"info\": \"FILE:./tests/samples/sample.xlsx|Sheet1x1:A1\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"AKIAGIREOGIAXLSX4BT5\",\n                \"value_start\": 0,\n                \"value_end\": 20,\n                \"entropy\": 3.64644\n            }\n        ]\n    },\n    {\n        \"rule\": \"IP_ID_PASSWORD_TRIPLE\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.98,\n        \"line_data_list\": [\n            {\n                \"line\": \"\\ud64d\\uae38\\ub3d9\\uc804\\t192.168.0.1\\tadmin\\tH0NgGi1d0nG\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/sample.xlsx\",\n                \"info\": \"FILE:./tests/samples/sample.xlsx|Sheet4x3:R2\",\n                \"variable\": null,\n                \"variable_start\": -1,\n                \"variable_end\": -1,\n                \"value\": \"H0NgGi1d0nG\",\n                \"value_start\": 24,\n                \"value_end\": 35,\n                \"entropy\": 3.0958\n            }\n        ]\n    },\n    {\n        \"rule\": \"IP_ID_PASSWORD_TRIPLE\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.985,\n        \"line_data_list\": [\n            {\n                \"line\": \"B3 192.168.0.1 master/NBd@126t!\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/sample.xlsx\",\n                \"info\": \"FILE:./tests/samples/sample.xlsx|SheetAny:B3\",\n                \"variable\": null,\n                \"variable_start\": -1,\n                \"variable_end\": -1,\n                \"value\": \"NBd@126t!\",\n                \"value_start\": 22,\n                \"value_end\": 31,\n                \"entropy\": 3.16993\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_CREDENTIALS\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.835,\n        \"line_data_list\": [\n            {\n                \"line\": \"A2 ID:master,PW:dipPr10Gg!\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/sample.xlsx\",\n                \"info\": \"FILE:./tests/samples/sample.xlsx|SheetAny:A2\",\n                \"variable\": \"PW\",\n                \"variable_start\": 13,\n                \"variable_end\": 15,\n                \"value\": \"dipPr10Gg!\",\n                \"value_start\": 16,\n                \"value_end\": 26,\n                \"entropy\": 3.32193\n            }\n        ]\n    },\n    {\n        \"rule\": \"ID_PAIR_PASSWD_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.835,\n        \"line_data_list\": [\n            {\n                \"line\": \"A2 ID:master,PW:dipPr10Gg!\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/sample.xlsx\",\n                \"info\": \"FILE:./tests/samples/sample.xlsx|SheetAny:A2\",\n                \"variable\": \"PW\",\n                \"variable_start\": 13,\n                \"variable_end\": 15,\n                \"value\": \"dipPr10Gg!\",\n                \"value_start\": 16,\n                \"value_end\": 26,\n                \"entropy\": 3.32193\n            },\n            {\n                \"line\": \"A2 ID:master,PW:dipPr10Gg!\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/sample.xlsx\",\n                \"info\": \"FILE:./tests/samples/sample.xlsx|SheetAny:A2\",\n                \"variable\": \"ID\",\n                \"variable_start\": 3,\n                \"variable_end\": 5,\n                \"value\": \"master,PW:dipPr10Gg!\",\n                \"value_start\": 6,\n                \"value_end\": 26,\n                \"entropy\": 4.12193\n            }\n        ]\n    },\n    {\n        \"rule\": \"PASSWD_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.835,\n        \"line_data_list\": [\n            {\n                \"line\": \"A2 ID:master,PW:dipPr10Gg!\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/sample.xlsx\",\n                \"info\": \"FILE:./tests/samples/sample.xlsx|SheetAny:A2\",\n                \"variable\": \"PW\",\n                \"variable_start\": 13,\n                \"variable_end\": 15,\n                \"value\": \"dipPr10Gg!\",\n                \"value_start\": 16,\n                \"value_end\": 26,\n                \"entropy\": 3.32193\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_CREDENTIALS\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.999,\n        \"line_data_list\": [\n            {\n                \"line\": \"A1 password is w3Ry5tR0nG\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/sample.xlsx\",\n                \"info\": \"FILE:./tests/samples/sample.xlsx|SheetAny:A1\",\n                \"variable\": \"password\",\n                \"variable_start\": 3,\n                \"variable_end\": 11,\n                \"value\": \"w3Ry5tR0nG\",\n                \"value_start\": 15,\n                \"value_end\": 25,\n                \"entropy\": 3.12193\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_CREDENTIALS\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.003,\n        \"line_data_list\": [\n            {\n                \"line\": \"Secret: []byte{333, 9, 100, 114, 245, 164, 134, 217,225,26,0,       172, 39, 248,  203, 201},\",\n                \"line_num\": 3,\n                \"path\": \"./tests/samples/secret.go\",\n                \"info\": \"FILE:./tests/samples/secret.go|RAW\",\n                \"variable\": \"Secret\",\n                \"variable_start\": 8,\n                \"variable_end\": 14,\n                \"value\": \"[]byte{333,\",\n                \"value_start\": 16,\n                \"value_end\": 27,\n                \"entropy\": 3.02717\n            }\n        ]\n    },\n    {\n        \"rule\": \"PEM Private Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"var SECRET = `-----BEGIN OPENSSH PRIVATE KEY-----\",\n                \"line_num\": 7,\n                \"path\": \"./tests/samples/secret.go\",\n                \"info\": \"FILE:./tests/samples/secret.go|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"-----BEGIN OPENSSH PRIVATE KEY-----\",\n                \"value_start\": 14,\n                \"value_end\": 49,\n                \"entropy\": 3.58716\n            },\n            {\n                \"line\": \"b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAAAMwAAAAtzc2gtZWQyNTUx\",\n                \"line_num\": 8,\n                \"path\": \"./tests/samples/secret.go\",\n                \"info\": \"FILE:./tests/samples/secret.go|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAAAMwAAAAtzc2gtZWQyNTUx\",\n                \"value_start\": 0,\n                \"value_end\": 76,\n                \"entropy\": 4.18903\n            },\n            {\n                \"line\": \"OQAAABWHkoN5N0V0OCSXOHWSOHAxRYMJSGc4clgVA0gJgFlIBAAAAJimRM7VpkTO1QAAAAtzc2gt\",\n                \"line_num\": 9,\n                \"path\": \"./tests/samples/secret.go\",\n                \"info\": \"FILE:./tests/samples/secret.go|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"OQAAABWHkoN5N0V0OCSXOHWSOHAxRYMJSGc4clgVA0gJgFlIBAAAAJimRM7VpkTO1QAAAAtzc2gt\",\n                \"value_start\": 0,\n                \"value_end\": 76,\n                \"entropy\": 4.74471\n            },\n            {\n                \"line\": \"ZWQyNTUxOQAAACBqIPMG94HL7zedFzsvi45mHS8ZuyLQXqvHpHobcdNCJAAAAFRoZXJlXzE1LU4w\",\n                \"line_num\": 10,\n                \"path\": \"./tests/samples/secret.go\",\n                \"info\": \"FILE:./tests/samples/secret.go|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"ZWQyNTUxOQAAACBqIPMG94HL7zedFzsvi45mHS8ZuyLQXqvHpHobcdNCJAAAAFRoZXJlXzE1LU4w\",\n                \"value_start\": 0,\n                \"value_end\": 76,\n                \"entropy\": 5.24555\n            },\n            {\n                \"line\": \"dF9UaGVLZXlZb3VBcmVMb29raW5nRm9S8wb3Mj0tZT1hc3A7ZHprejsuZm5tbmRmbmVuZm5pAAAA\",\n                \"line_num\": 11,\n                \"path\": \"./tests/samples/secret.go\",\n                \"info\": \"FILE:./tests/samples/secret.go|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"dF9UaGVLZXlZb3VBcmVMb29raW5nRm9S8wb3Mj0tZT1hc3A7ZHprejsuZm5tbmRmbmVuZm5pAAAA\",\n                \"value_start\": 0,\n                \"value_end\": 76,\n                \"entropy\": 4.94996\n            },\n            {\n                \"line\": \"EXRpemVuQGNyZWRzd2VlcGVyAQIDBA==\",\n                \"line_num\": 12,\n                \"path\": \"./tests/samples/secret.go\",\n                \"info\": \"FILE:./tests/samples/secret.go|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"EXRpemVuQGNyZWRzd2VlcGVyAQIDBA==\",\n                \"value_start\": 0,\n                \"value_end\": 32,\n                \"entropy\": 4.47641\n            },\n            {\n                \"line\": \"-----END OPENSSH PRIVATE KEY-----\",\n                \"line_num\": 13,\n                \"path\": \"./tests/samples/secret.go\",\n                \"info\": \"FILE:./tests/samples/secret.go|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"-----END OPENSSH PRIVATE KEY-----\",\n                \"value_start\": 0,\n                \"value_end\": 33,\n                \"entropy\": 3.46942\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_CREDENTIALS\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"var secret_looks_like_linux_path_1=\\\"/VnpmUGWxhQW9KQAwrL2ZYdDJPNG1PQjYxMXNPaF\\\"\",\n                \"line_num\": 17,\n                \"path\": \"./tests/samples/secret.go\",\n                \"info\": \"FILE:./tests/samples/secret.go|RAW\",\n                \"variable\": \"secret_looks_like_linux_path_1\",\n                \"variable_start\": 4,\n                \"variable_end\": 34,\n                \"value\": \"/VnpmUGWxhQW9KQAwrL2ZYdDJPNG1PQjYxMXNPaF\",\n                \"value_start\": 36,\n                \"value_end\": 76,\n                \"entropy\": 4.83418\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_CREDENTIALS\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"var secret_looks_like_linux_path_2=\\\"VnpmUGWxhQW/9KQAwrL2ZYd/DJPNG1PQjYxMXNPF\\\"\",\n                \"line_num\": 18,\n                \"path\": \"./tests/samples/secret.go\",\n                \"info\": \"FILE:./tests/samples/secret.go|RAW\",\n                \"variable\": \"secret_looks_like_linux_path_2\",\n                \"variable_start\": 4,\n                \"variable_end\": 34,\n                \"value\": \"VnpmUGWxhQW/9KQAwrL2ZYd/DJPNG1PQjYxMXNPF\",\n                \"value_start\": 36,\n                \"value_end\": 76,\n                \"entropy\": 4.78418\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_CREDENTIALS\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"var secret_looks_like_linux_path_3=\\\"VnpmUGWxhQW/9KQAwrL2ZYdDJPNG1PQjYxMXNPF=\\\"\",\n                \"line_num\": 19,\n                \"path\": \"./tests/samples/secret.go\",\n                \"info\": \"FILE:./tests/samples/secret.go|RAW\",\n                \"variable\": \"secret_looks_like_linux_path_3\",\n                \"variable_start\": 4,\n                \"variable_end\": 34,\n                \"value\": \"VnpmUGWxhQW/9KQAwrL2ZYdDJPNG1PQjYxMXNPF=\",\n                \"value_start\": 36,\n                \"value_end\": 76,\n                \"entropy\": 4.83418\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_CREDENTIALS\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"var secret_looks_like_linux_path__=\\\"VnpmUGWxhQW/9KQAwrL2ZYd/DJPNG1PQjEXAMbLE\\\"\",\n                \"line_num\": 20,\n                \"path\": \"./tests/samples/secret.go\",\n                \"info\": \"FILE:./tests/samples/secret.go|RAW\",\n                \"variable\": \"secret_looks_like_linux_path__\",\n                \"variable_start\": 4,\n                \"variable_end\": 34,\n                \"value\": \"VnpmUGWxhQW/9KQAwrL2ZYd/DJPNG1PQjEXAMbLE\",\n                \"value_start\": 36,\n                \"value_end\": 76,\n                \"entropy\": 4.85306\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_CREDENTIALS\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.999,\n        \"line_data_list\": [\n            {\n                \"line\": \"LEGACY_GITHUB_SECRET = \\\"fa87409ad3a4589fd279c501b3d2e174855ee9f4\\\"\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/secret.groovy\",\n                \"info\": \"FILE:./tests/samples/secret.groovy|RAW\",\n                \"variable\": \"LEGACY_GITHUB_SECRET\",\n                \"variable_start\": 0,\n                \"variable_end\": 20,\n                \"value\": \"fa87409ad3a4589fd279c501b3d2e174855ee9f4\",\n                \"value_start\": 24,\n                \"value_end\": 64,\n                \"entropy\": 3.80869\n            }\n        ]\n    },\n    {\n        \"rule\": \"SendGrid API Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"SG.gireogigireogigi.gireogigireogigi\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/sendgrid_api_key\",\n                \"info\": \"FILE:./tests/samples/sendgrid_api_key|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"SG.gireogigireogigi.gireogigireogigi\",\n                \"value_start\": 0,\n                \"value_end\": 36,\n                \"entropy\": 2.60219\n            }\n        ]\n    },\n    {\n        \"rule\": \"Sentry Organization Auth Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"sntrys_eyJpYXQiOjE3NDEyNjQzNTYuMDAwMCwidXJsIjoiaHR0cHM6Ly9zZW50cnkuaW8iLCJyZWdpb25fdXJsIjoiaHR0cHM6Ly91YS5zZW50cnkuaW8iLCJvcmciOiIifQ==v8D-whr2cUQK91Civi4yNoLRjC3MDZH5I2aMcs_j5GDv\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/sentry\",\n                \"info\": \"FILE:./tests/samples/sentry|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"sntrys_eyJpYXQiOjE3NDEyNjQzNTYuMDAwMCwidXJsIjoiaHR0cHM6Ly9zZW50cnkuaW8iLCJyZWdpb25fdXJsIjoiaHR0cHM6Ly91YS5zZW50cnkuaW8iLCJvcmciOiIifQ==v8D-whr2cUQK91Civi4yNoLRjC3MDZH5I2aMcs_j5GDv\",\n                \"value_start\": 0,\n                \"value_end\": 179,\n                \"entropy\": 5.53873\n            }\n        ]\n    },\n    {\n        \"rule\": \"Sentry User Auth Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"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\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/sentry\",\n                \"info\": \"FILE:./tests/samples/sentry|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"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\",\n                \"value_start\": 0,\n                \"value_end\": 71,\n                \"entropy\": 4.14384\n            }\n        ]\n    },\n    {\n        \"rule\": \"Shopify Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"\\\"shopyfy_k\\\": \\\"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\\\",\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/shopify_token\",\n                \"info\": \"FILE:./tests/samples/shopify_token|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"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\",\n                \"value_start\": 18,\n                \"value_end\": 56,\n                \"entropy\": 3.80396\n            }\n        ]\n    },\n    {\n        \"rule\": \"Slack Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"xapp-1-A0F6JEP4877-3425459257038-ff6379c940d5ed64f2cf3c820578dcebe5e83dccc0ebd89574184af9b9d2c1be\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/slack_token.hs\",\n                \"info\": \"FILE:./tests/samples/slack_token.hs|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"xapp-1-A0F6JEP4877-3425459257038-ff6379c940d5ed64f2cf3c820578dcebe5e83dccc0ebd89574184af9b9d2c1be\",\n                \"value_start\": 0,\n                \"value_end\": 97,\n                \"entropy\": 4.32216\n            }\n        ]\n    },\n    {\n        \"rule\": \"Slack Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"xoxb-391809548274-4236212766789-i8EoyACELx2FYnSOkRPEpePN\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/slack_token.hs\",\n                \"info\": \"FILE:./tests/samples/slack_token.hs|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"xoxb-391809548274-4236212766789-i8EoyACELx2FYnSOkRPEpePN\",\n                \"value_start\": 0,\n                \"value_end\": 56,\n                \"entropy\": 4.71996\n            }\n        ]\n    },\n    {\n        \"rule\": \"Slack Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"xoxp-1-Mi0yLTM5MTgwOTU0ODI3NC0xMDUzMjc0NTg2MzIxLTQyMzYyMTI3NjY3ODktMzQyNTQ1OTI1NzAzOC1mZjYzNzljOTQwZDVlZDY0ZjJjZjNjODIwNTc4ZGNlYmU1ZTgzZGNjYzBlYmQ4OTU3NDE4NGFmOWI5ZDJjMWJl\",\n                \"line_num\": 3,\n                \"path\": \"./tests/samples/slack_token.hs\",\n                \"info\": \"FILE:./tests/samples/slack_token.hs|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"xoxp-1-Mi0yLTM5MTgwOTU0ODI3NC0xMDUzMjc0NTg2MzIxLTQyMzYyMTI3NjY3ODktMzQyNTQ1OTI1NzAzOC1mZjYzNzljOTQwZDVlZDY0ZjJjZjNjODIwNTc4ZGNlYmU1ZTgzZGNjYzBlYmQ4OTU3NDE4NGFmOWI5ZDJjMWJl\",\n                \"value_start\": 0,\n                \"value_end\": 171,\n                \"entropy\": 4.93756\n            }\n        ]\n    },\n    {\n        \"rule\": \"Slack Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"xoxe-1-My0xLTM5MTgwOTU0ODI3NC00MjM2MjEyNzY2Nzg5LTM0MjU0NTkyNTcwMzgtZmY2Mzc5Yzk0MGQ1ZWQ2NGYyY2YzYzgyMDU3OGRjZWJlNWU4M2RjY2MwZWJkODk1NzQxODRhZjliOWQyYzFiZQ\",\n                \"line_num\": 4,\n                \"path\": \"./tests/samples/slack_token.hs\",\n                \"info\": \"FILE:./tests/samples/slack_token.hs|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"xoxe-1-My0xLTM5MTgwOTU0ODI3NC00MjM2MjEyNzY2Nzg5LTM0MjU0NTkyNTcwMzgtZmY2Mzc5Yzk0MGQ1ZWQ2NGYyY2YzYzgyMDU3OGRjZWJlNWU4M2RjY2MwZWJkODk1NzQxODRhZjliOWQyYzFiZQ\",\n                \"value_start\": 0,\n                \"value_end\": 153,\n                \"entropy\": 4.95538\n            }\n        ]\n    },\n    {\n        \"rule\": \"Slack Webhook\",\n        \"severity\": \"medium\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"\\\"hook\\\": \\\"https://hooks.slack.com/services/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\\\",\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/slack_webhook.template\",\n                \"info\": \"FILE:./tests/samples/slack_webhook.template|RAW\",\n                \"variable\": \"hooks.slack.com/services\",\n                \"variable_start\": 21,\n                \"variable_end\": 45,\n                \"value\": \"/T1029384756/B102984756/sjsbfzowhhqbsgftrvajxzpg\",\n                \"value_start\": 45,\n                \"value_end\": 93,\n                \"entropy\": 4.76184\n            }\n        ]\n    },\n    {\n        \"rule\": \"Azure Secret Value\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"qpF8Q~PCM5MhMoyTFc5TYEomnzRUKim9UJhe8a2P\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/small.pdf\",\n                \"info\": \"FILE:./tests/samples/small.pdf|PDF:1\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"qpF8Q~PCM5MhMoyTFc5TYEomnzRUKim9UJhe8a2P\",\n                \"value_start\": 0,\n                \"value_end\": 40,\n                \"entropy\": 4.75306\n            }\n        ]\n    },\n    {\n        \"rule\": \"SonarQube Credentials\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"'sonar.login': 'squ_944fb17dc1ca18eb2750b6238e5c5ad27b68aaab',\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/sonarqube\",\n                \"info\": \"FILE:./tests/samples/sonarqube|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"squ_944fb17dc1ca18eb2750b6238e5c5ad27b68aaab\",\n                \"value_start\": 16,\n                \"value_end\": 60,\n                \"entropy\": 4.10151\n            }\n        ]\n    },\n    {\n        \"rule\": \"SonarQube Credentials\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"-Dsonar.login=squ_5f6278f46c0697b8ce6a07cfaabf363b5a97a984\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/sonarqube\",\n                \"info\": \"FILE:./tests/samples/sonarqube|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"squ_5f6278f46c0697b8ce6a07cfaabf363b5a97a984\",\n                \"value_start\": 14,\n                \"value_end\": 58,\n                \"entropy\": 3.954\n            }\n        ]\n    },\n    {\n        \"rule\": \"SQL Password\",\n        \"severity\": \"medium\",\n        \"confidence\": \"weak\",\n        \"ml_probability\": 0.918,\n        \"line_data_list\": [\n            {\n                \"line\": \"ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'SqLpa5sW0rD';\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/sql_password\",\n                \"info\": \"FILE:./tests/samples/sql_password|RAW\",\n                \"variable\": \"ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY\",\n                \"variable_start\": 0,\n                \"variable_end\": 70,\n                \"value\": \"SqLpa5sW0rD\",\n                \"value_start\": 72,\n                \"value_end\": 83,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"SQL Password\",\n        \"severity\": \"medium\",\n        \"confidence\": \"weak\",\n        \"ml_probability\": 0.917,\n        \"line_data_list\": [\n            {\n                \"line\": \"'create user name identified by 'SqLpa5sW0rD' --\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/sql_password\",\n                \"info\": \"FILE:./tests/samples/sql_password|RAW\",\n                \"variable\": \"create user name identified by\",\n                \"variable_start\": 1,\n                \"variable_end\": 31,\n                \"value\": \"SqLpa5sW0rD\",\n                \"value_start\": 33,\n                \"value_end\": 44,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"SQL Password\",\n        \"severity\": \"medium\",\n        \"confidence\": \"weak\",\n        \"ml_probability\": 0.996,\n        \"line_data_list\": [\n            {\n                \"line\": \"exec(\\\"CREATE USER ExposedTest ACCOUNT UNLOCK IDENTIFIED BY SqLpa5sW0rD\\\");\",\n                \"line_num\": 3,\n                \"path\": \"./tests/samples/sql_password\",\n                \"info\": \"FILE:./tests/samples/sql_password|RAW\",\n                \"variable\": \"CREATE USER ExposedTest ACCOUNT UNLOCK IDENTIFIED BY\",\n                \"variable_start\": 6,\n                \"variable_end\": 58,\n                \"value\": \"SqLpa5sW0rD\",\n                \"value_start\": 59,\n                \"value_end\": 70,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"SQL Password\",\n        \"severity\": \"medium\",\n        \"confidence\": \"weak\",\n        \"ml_probability\": 0.964,\n        \"line_data_list\": [\n            {\n                \"line\": \"\\uff1a`CREATE USER 'haproxy'@'%' IDENTIFIED BY 'SqLpa5sW0rD';`\",\n                \"line_num\": 4,\n                \"path\": \"./tests/samples/sql_password\",\n                \"info\": \"FILE:./tests/samples/sql_password|RAW\",\n                \"variable\": \"CREATE USER 'haproxy'@'%' IDENTIFIED BY\",\n                \"variable_start\": 2,\n                \"variable_end\": 41,\n                \"value\": \"SqLpa5sW0rD\",\n                \"value_start\": 43,\n                \"value_end\": 54,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"SQL Password\",\n        \"severity\": \"medium\",\n        \"confidence\": \"weak\",\n        \"ml_probability\": 0.996,\n        \"line_data_list\": [\n            {\n                \"line\": \"exec(\\\"CREATE USER ExposedTest ACCOUNT UNLOCK IDENTIFIED BY SqLpa5sW0rD\\\");\",\n                \"line_num\": 5,\n                \"path\": \"./tests/samples/sql_password\",\n                \"info\": \"FILE:./tests/samples/sql_password|RAW\",\n                \"variable\": \"CREATE USER ExposedTest ACCOUNT UNLOCK IDENTIFIED BY\",\n                \"variable_start\": 6,\n                \"variable_end\": 58,\n                \"value\": \"SqLpa5sW0rD\",\n                \"value_start\": 59,\n                \"value_end\": 70,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"SQL Password\",\n        \"severity\": \"medium\",\n        \"confidence\": \"weak\",\n        \"ml_probability\": 0.041,\n        \"line_data_list\": [\n            {\n                \"line\": \"expected_statement = \\\"\\\"\\\"CREATE USER foo WITH ENCRYPTED PASSWORD 'SqLpa5sW0rD' CREATEDB;\",\n                \"line_num\": 6,\n                \"path\": \"./tests/samples/sql_password\",\n                \"info\": \"FILE:./tests/samples/sql_password|RAW\",\n                \"variable\": \"CREATE USER foo WITH ENCRYPTED PASSWORD\",\n                \"variable_start\": 24,\n                \"variable_end\": 63,\n                \"value\": \"SqLpa5sW0rD\",\n                \"value_start\": 65,\n                \"value_end\": 76,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"SQL Password\",\n        \"severity\": \"medium\",\n        \"confidence\": \"weak\",\n        \"ml_probability\": 0.914,\n        \"line_data_list\": [\n            {\n                \"line\": \"CREATE USER foo WITH ENCRYPTED PASSWORD 'SqLpa5sW0rD' CREATEDB;\",\n                \"line_num\": 8,\n                \"path\": \"./tests/samples/sql_password\",\n                \"info\": \"FILE:./tests/samples/sql_password|RAW\",\n                \"variable\": \"CREATE USER foo WITH ENCRYPTED PASSWORD\",\n                \"variable_start\": 0,\n                \"variable_end\": 39,\n                \"value\": \"SqLpa5sW0rD\",\n                \"value_start\": 41,\n                \"value_end\": 52,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_CREDENTIALS\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"ALTER LOGIN username WITH PASSWORD = 'SqLpa5sW0rD';\",\n                \"line_num\": 9,\n                \"path\": \"./tests/samples/sql_password\",\n                \"info\": \"FILE:./tests/samples/sql_password|RAW\",\n                \"variable\": \"PASSWORD\",\n                \"variable_start\": 26,\n                \"variable_end\": 34,\n                \"value\": \"SqLpa5sW0rD\",\n                \"value_start\": 38,\n                \"value_end\": 49,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"ID_PAIR_PASSWD_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"ALTER LOGIN username WITH PASSWORD = 'SqLpa5sW0rD';\",\n                \"line_num\": 9,\n                \"path\": \"./tests/samples/sql_password\",\n                \"info\": \"FILE:./tests/samples/sql_password|RAW\",\n                \"variable\": \"PASSWORD\",\n                \"variable_start\": 26,\n                \"variable_end\": 34,\n                \"value\": \"SqLpa5sW0rD\",\n                \"value_start\": 38,\n                \"value_end\": 49,\n                \"entropy\": 3.45943\n            },\n            {\n                \"line\": \"ALTER LOGIN username WITH PASSWORD = 'SqLpa5sW0rD';\",\n                \"line_num\": 9,\n                \"path\": \"./tests/samples/sql_password\",\n                \"info\": \"FILE:./tests/samples/sql_password|RAW\",\n                \"variable\": \"LOGIN\",\n                \"variable_start\": 6,\n                \"variable_end\": 11,\n                \"value\": \"username\",\n                \"value_start\": 12,\n                \"value_end\": 20,\n                \"entropy\": 2.75\n            }\n        ]\n    },\n    {\n        \"rule\": \"PASSWD_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"ALTER LOGIN username WITH PASSWORD = 'SqLpa5sW0rD';\",\n                \"line_num\": 9,\n                \"path\": \"./tests/samples/sql_password\",\n                \"info\": \"FILE:./tests/samples/sql_password|RAW\",\n                \"variable\": \"PASSWORD\",\n                \"variable_start\": 26,\n                \"variable_end\": 34,\n                \"value\": \"SqLpa5sW0rD\",\n                \"value_start\": 38,\n                \"value_end\": 49,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"SQL Password\",\n        \"severity\": \"medium\",\n        \"confidence\": \"weak\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"ALTER LOGIN username WITH PASSWORD = 'SqLpa5sW0rD';\",\n                \"line_num\": 9,\n                \"path\": \"./tests/samples/sql_password\",\n                \"info\": \"FILE:./tests/samples/sql_password|RAW\",\n                \"variable\": \"ALTER LOGIN username WITH PASSWORD =\",\n                \"variable_start\": 0,\n                \"variable_end\": 36,\n                \"value\": \"SqLpa5sW0rD\",\n                \"value_start\": 38,\n                \"value_end\": 49,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"SQL Password\",\n        \"severity\": \"medium\",\n        \"confidence\": \"weak\",\n        \"ml_probability\": 0.992,\n        \"line_data_list\": [\n            {\n                \"line\": \"ALTER ROLE postgres PASSWORD 'SqLpa5sW0rD'; SELECT pg_reload_conf()\\\"\",\n                \"line_num\": 10,\n                \"path\": \"./tests/samples/sql_password\",\n                \"info\": \"FILE:./tests/samples/sql_password|RAW\",\n                \"variable\": \"ALTER ROLE postgres PASSWORD\",\n                \"variable_start\": 0,\n                \"variable_end\": 28,\n                \"value\": \"SqLpa5sW0rD\",\n                \"value_start\": 30,\n                \"value_end\": 41,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"SQL Password\",\n        \"severity\": \"medium\",\n        \"confidence\": \"weak\",\n        \"ml_probability\": 0.998,\n        \"line_data_list\": [\n            {\n                \"line\": \"ALTER USER username WITH PASSWORD 'SqLpa5sW0rD';\",\n                \"line_num\": 11,\n                \"path\": \"./tests/samples/sql_password\",\n                \"info\": \"FILE:./tests/samples/sql_password|RAW\",\n                \"variable\": \"ALTER USER username WITH PASSWORD\",\n                \"variable_start\": 0,\n                \"variable_end\": 33,\n                \"value\": \"SqLpa5sW0rD\",\n                \"value_start\": 35,\n                \"value_end\": 46,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_CREDENTIALS\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"CREATE LOGIN username WITH PASSWORD = 'SqLpa5sW0rD';\",\n                \"line_num\": 12,\n                \"path\": \"./tests/samples/sql_password\",\n                \"info\": \"FILE:./tests/samples/sql_password|RAW\",\n                \"variable\": \"PASSWORD\",\n                \"variable_start\": 27,\n                \"variable_end\": 35,\n                \"value\": \"SqLpa5sW0rD\",\n                \"value_start\": 39,\n                \"value_end\": 50,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"ID_PAIR_PASSWD_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"CREATE LOGIN username WITH PASSWORD = 'SqLpa5sW0rD';\",\n                \"line_num\": 12,\n                \"path\": \"./tests/samples/sql_password\",\n                \"info\": \"FILE:./tests/samples/sql_password|RAW\",\n                \"variable\": \"PASSWORD\",\n                \"variable_start\": 27,\n                \"variable_end\": 35,\n                \"value\": \"SqLpa5sW0rD\",\n                \"value_start\": 39,\n                \"value_end\": 50,\n                \"entropy\": 3.45943\n            },\n            {\n                \"line\": \"CREATE LOGIN username WITH PASSWORD = 'SqLpa5sW0rD';\",\n                \"line_num\": 12,\n                \"path\": \"./tests/samples/sql_password\",\n                \"info\": \"FILE:./tests/samples/sql_password|RAW\",\n                \"variable\": \"LOGIN\",\n                \"variable_start\": 7,\n                \"variable_end\": 12,\n                \"value\": \"username\",\n                \"value_start\": 13,\n                \"value_end\": 21,\n                \"entropy\": 2.75\n            }\n        ]\n    },\n    {\n        \"rule\": \"PASSWD_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"CREATE LOGIN username WITH PASSWORD = 'SqLpa5sW0rD';\",\n                \"line_num\": 12,\n                \"path\": \"./tests/samples/sql_password\",\n                \"info\": \"FILE:./tests/samples/sql_password|RAW\",\n                \"variable\": \"PASSWORD\",\n                \"variable_start\": 27,\n                \"variable_end\": 35,\n                \"value\": \"SqLpa5sW0rD\",\n                \"value_start\": 39,\n                \"value_end\": 50,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"SQL Password\",\n        \"severity\": \"medium\",\n        \"confidence\": \"weak\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"CREATE LOGIN username WITH PASSWORD = 'SqLpa5sW0rD';\",\n                \"line_num\": 12,\n                \"path\": \"./tests/samples/sql_password\",\n                \"info\": \"FILE:./tests/samples/sql_password|RAW\",\n                \"variable\": \"CREATE LOGIN username WITH PASSWORD =\",\n                \"variable_start\": 0,\n                \"variable_end\": 37,\n                \"value\": \"SqLpa5sW0rD\",\n                \"value_start\": 39,\n                \"value_end\": 50,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"SQL Password\",\n        \"severity\": \"medium\",\n        \"confidence\": \"weak\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"CREATE USER chuck WITH PASSWORD 'SqLpa5sW0rD' SUPERUSER;\",\n                \"line_num\": 13,\n                \"path\": \"./tests/samples/sql_password\",\n                \"info\": \"FILE:./tests/samples/sql_password|RAW\",\n                \"variable\": \"CREATE USER chuck WITH PASSWORD\",\n                \"variable_start\": 0,\n                \"variable_end\": 31,\n                \"value\": \"SqLpa5sW0rD\",\n                \"value_start\": 33,\n                \"value_end\": 44,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"SQL Password\",\n        \"severity\": \"medium\",\n        \"confidence\": \"weak\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"CREATE USER IF NOT EXISTS sandy WITH PASSWORD 'SqLpa5sW0rD' NOSUPERUSER;\",\n                \"line_num\": 14,\n                \"path\": \"./tests/samples/sql_password\",\n                \"info\": \"FILE:./tests/samples/sql_password|RAW\",\n                \"variable\": \"CREATE USER IF NOT EXISTS sandy WITH PASSWORD\",\n                \"variable_start\": 0,\n                \"variable_end\": 45,\n                \"value\": \"SqLpa5sW0rD\",\n                \"value_start\": 47,\n                \"value_end\": 58,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"SQL Password\",\n        \"severity\": \"medium\",\n        \"confidence\": \"weak\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"CREATE USER myuser WITH PASSWORD 'SqLpa5sW0rD';\",\n                \"line_num\": 15,\n                \"path\": \"./tests/samples/sql_password\",\n                \"info\": \"FILE:./tests/samples/sql_password|RAW\",\n                \"variable\": \"CREATE USER myuser WITH PASSWORD\",\n                \"variable_start\": 0,\n                \"variable_end\": 32,\n                \"value\": \"SqLpa5sW0rD\",\n                \"value_start\": 34,\n                \"value_end\": 45,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"SQL Password\",\n        \"severity\": \"medium\",\n        \"confidence\": \"weak\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"CREATE USER username WITH PASSWORD 'SqLpa5sW0rD';\",\n                \"line_num\": 16,\n                \"path\": \"./tests/samples/sql_password\",\n                \"info\": \"FILE:./tests/samples/sql_password|RAW\",\n                \"variable\": \"CREATE USER username WITH PASSWORD\",\n                \"variable_start\": 0,\n                \"variable_end\": 34,\n                \"value\": \"SqLpa5sW0rD\",\n                \"value_start\": 36,\n                \"value_end\": 47,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"SQL Password\",\n        \"severity\": \"medium\",\n        \"confidence\": \"weak\",\n        \"ml_probability\": 0.964,\n        \"line_data_list\": [\n            {\n                \"line\": \"ALTER USER 'username'@'localhost' IDENTIFIED BY 'SqLpa5sW0rD';\",\n                \"line_num\": 17,\n                \"path\": \"./tests/samples/sql_password\",\n                \"info\": \"FILE:./tests/samples/sql_password|RAW\",\n                \"variable\": \"ALTER USER 'username'@'localhost' IDENTIFIED BY\",\n                \"variable_start\": 0,\n                \"variable_end\": 47,\n                \"value\": \"SqLpa5sW0rD\",\n                \"value_start\": 49,\n                \"value_end\": 60,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"SQL Password\",\n        \"severity\": \"medium\",\n        \"confidence\": \"weak\",\n        \"ml_probability\": 0.553,\n        \"line_data_list\": [\n            {\n                \"line\": \"ALTER USER 'super_user'@'10.10.10.%' identified by 'SqLpa5sW0rD';\",\n                \"line_num\": 18,\n                \"path\": \"./tests/samples/sql_password\",\n                \"info\": \"FILE:./tests/samples/sql_password|RAW\",\n                \"variable\": \"ALTER USER 'super_user'@'10.10.10.%' identified by\",\n                \"variable_start\": 0,\n                \"variable_end\": 50,\n                \"value\": \"SqLpa5sW0rD\",\n                \"value_start\": 52,\n                \"value_end\": 63,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"SQL Password\",\n        \"severity\": \"medium\",\n        \"confidence\": \"weak\",\n        \"ml_probability\": 0.899,\n        \"line_data_list\": [\n            {\n                \"line\": \"ALTER USER username IDENTIFIED BY SqLpa5sW0rD;\",\n                \"line_num\": 19,\n                \"path\": \"./tests/samples/sql_password\",\n                \"info\": \"FILE:./tests/samples/sql_password|RAW\",\n                \"variable\": \"ALTER USER username IDENTIFIED BY\",\n                \"variable_start\": 0,\n                \"variable_end\": 33,\n                \"value\": \"SqLpa5sW0rD\",\n                \"value_start\": 34,\n                \"value_end\": 45,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"SQL Password\",\n        \"severity\": \"medium\",\n        \"confidence\": \"weak\",\n        \"ml_probability\": 0.991,\n        \"line_data_list\": [\n            {\n                \"line\": \"CREATE USER username IDENTIFIED BY SqLpa5sW0rD;\",\n                \"line_num\": 20,\n                \"path\": \"./tests/samples/sql_password\",\n                \"info\": \"FILE:./tests/samples/sql_password|RAW\",\n                \"variable\": \"CREATE USER username IDENTIFIED BY\",\n                \"variable_start\": 0,\n                \"variable_end\": 34,\n                \"value\": \"SqLpa5sW0rD\",\n                \"value_start\": 35,\n                \"value_end\": 46,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"SQL Password\",\n        \"severity\": \"medium\",\n        \"confidence\": \"weak\",\n        \"ml_probability\": 0.997,\n        \"line_data_list\": [\n            {\n                \"line\": \"CREATE USER 'username'@'localhost' IDENTIFIED BY 'SqLpa5sW0rD';\",\n                \"line_num\": 21,\n                \"path\": \"./tests/samples/sql_password\",\n                \"info\": \"FILE:./tests/samples/sql_password|RAW\",\n                \"variable\": \"CREATE USER 'username'@'localhost' IDENTIFIED BY\",\n                \"variable_start\": 0,\n                \"variable_end\": 48,\n                \"value\": \"SqLpa5sW0rD\",\n                \"value_start\": 50,\n                \"value_end\": 61,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"SQL Password\",\n        \"severity\": \"medium\",\n        \"confidence\": \"weak\",\n        \"ml_probability\": 0.998,\n        \"line_data_list\": [\n            {\n                \"line\": \"mysql -u root -pdbadmin -e \\\"CREATE USER 'cactiuser'@'localhost' IDENTIFIED BY 'SqLpa5sW0rD';\\\"\\u2013\",\n                \"line_num\": 22,\n                \"path\": \"./tests/samples/sql_password\",\n                \"info\": \"FILE:./tests/samples/sql_password|RAW\",\n                \"variable\": \"CREATE USER 'cactiuser'@'localhost' IDENTIFIED BY\",\n                \"variable_start\": 28,\n                \"variable_end\": 77,\n                \"value\": \"SqLpa5sW0rD\",\n                \"value_start\": 79,\n                \"value_end\": 90,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"SQL Password\",\n        \"severity\": \"medium\",\n        \"confidence\": \"weak\",\n        \"ml_probability\": 0.999,\n        \"line_data_list\": [\n            {\n                \"line\": \"-c \\\"CREATE ROLE scram_test login password 'SqLpa5sW0rD'\\\"\",\n                \"line_num\": 23,\n                \"path\": \"./tests/samples/sql_password\",\n                \"info\": \"FILE:./tests/samples/sql_password|RAW\",\n                \"variable\": \"CREATE ROLE scram_test login password\",\n                \"variable_start\": 4,\n                \"variable_end\": 41,\n                \"value\": \"SqLpa5sW0rD\",\n                \"value_start\": 43,\n                \"value_end\": 54,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"SQL Password\",\n        \"severity\": \"medium\",\n        \"confidence\": \"weak\",\n        \"ml_probability\": 0.995,\n        \"line_data_list\": [\n            {\n                \"line\": \"CREATE ROLE app_admin WITH LOGIN PASSWORD SqLpa5sW0rD;\",\n                \"line_num\": 24,\n                \"path\": \"./tests/samples/sql_password\",\n                \"info\": \"FILE:./tests/samples/sql_password|RAW\",\n                \"variable\": \"CREATE ROLE app_admin WITH LOGIN PASSWORD\",\n                \"variable_start\": 0,\n                \"variable_end\": 41,\n                \"value\": \"SqLpa5sW0rD\",\n                \"value_start\": 42,\n                \"value_end\": 53,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"SQL Password\",\n        \"severity\": \"medium\",\n        \"confidence\": \"weak\",\n        \"ml_probability\": 0.999,\n        \"line_data_list\": [\n            {\n                \"line\": \"CREATE ROLE flask_admin_geo LOGIN PASSWORD 'SqLpa5sW0rD';\",\n                \"line_num\": 25,\n                \"path\": \"./tests/samples/sql_password\",\n                \"info\": \"FILE:./tests/samples/sql_password|RAW\",\n                \"variable\": \"CREATE ROLE flask_admin_geo LOGIN PASSWORD\",\n                \"variable_start\": 0,\n                \"variable_end\": 42,\n                \"value\": \"SqLpa5sW0rD\",\n                \"value_start\": 44,\n                \"value_end\": 55,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"SQL Password\",\n        \"severity\": \"medium\",\n        \"confidence\": \"weak\",\n        \"ml_probability\": 0.702,\n        \"line_data_list\": [\n            {\n                \"line\": \"create role forum_example_graph_demo login password 'SqLpa5sW0rD';\",\n                \"line_num\": 26,\n                \"path\": \"./tests/samples/sql_password\",\n                \"info\": \"FILE:./tests/samples/sql_password|RAW\",\n                \"variable\": \"create role forum_example_graph_demo login password\",\n                \"variable_start\": 0,\n                \"variable_end\": 51,\n                \"value\": \"SqLpa5sW0rD\",\n                \"value_start\": 53,\n                \"value_end\": 64,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"SQL Password\",\n        \"severity\": \"medium\",\n        \"confidence\": \"weak\",\n        \"ml_probability\": 0.722,\n        \"line_data_list\": [\n            {\n                \"line\": \"create role forum_example_graph login password 'SqLpa5sW0rD';\",\n                \"line_num\": 27,\n                \"path\": \"./tests/samples/sql_password\",\n                \"info\": \"FILE:./tests/samples/sql_password|RAW\",\n                \"variable\": \"create role forum_example_graph login password\",\n                \"variable_start\": 0,\n                \"variable_end\": 46,\n                \"value\": \"SqLpa5sW0rD\",\n                \"value_start\": 48,\n                \"value_end\": 59,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"SQL Password\",\n        \"severity\": \"medium\",\n        \"confidence\": \"weak\",\n        \"ml_probability\": 0.12,\n        \"line_data_list\": [\n            {\n                \"line\": \"SET PASSWORD FOR 'username'@'localhost' = PASSWORD('SqLpa5sW0rD');\",\n                \"line_num\": 28,\n                \"path\": \"./tests/samples/sql_password\",\n                \"info\": \"FILE:./tests/samples/sql_password|RAW\",\n                \"variable\": \"SET PASSWORD FOR 'username'@'localhost' = PASSWORD\",\n                \"variable_start\": 0,\n                \"variable_end\": 50,\n                \"value\": \"SqLpa5sW0rD\",\n                \"value_start\": 52,\n                \"value_end\": 63,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"SQL Password\",\n        \"severity\": \"medium\",\n        \"confidence\": \"weak\",\n        \"ml_probability\": 0.549,\n        \"line_data_list\": [\n            {\n                \"line\": \"insert into mysql.user values(PASSWORD('SqLpa5sW0rD') );\",\n                \"line_num\": 29,\n                \"path\": \"./tests/samples/sql_password\",\n                \"info\": \"FILE:./tests/samples/sql_password|RAW\",\n                \"variable\": \"insert into mysql.user values(PASSWORD\",\n                \"variable_start\": 0,\n                \"variable_end\": 38,\n                \"value\": \"SqLpa5sW0rD\",\n                \"value_start\": 40,\n                \"value_end\": 51,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"SQL Password\",\n        \"severity\": \"medium\",\n        \"confidence\": \"weak\",\n        \"ml_probability\": 0.12,\n        \"line_data_list\": [\n            {\n                \"line\": \"UPDATE mysql.user SET authentication_string = PASSWORD ('SqLpa5sW0rD') WHERE User = 'username';\",\n                \"line_num\": 30,\n                \"path\": \"./tests/samples/sql_password\",\n                \"info\": \"FILE:./tests/samples/sql_password|RAW\",\n                \"variable\": \"UPDATE mysql.user SET authentication_string = PASSWORD\",\n                \"variable_start\": 0,\n                \"variable_end\": 54,\n                \"value\": \"SqLpa5sW0rD\",\n                \"value_start\": 57,\n                \"value_end\": 68,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"SQL Password\",\n        \"severity\": \"medium\",\n        \"confidence\": \"weak\",\n        \"ml_probability\": 0.996,\n        \"line_data_list\": [\n            {\n                \"line\": \"ALTER USER 'test'@'1.1.1.1' IDENTIFIED WITH 'mysql_native_password' AS '*92FD05ADCA2EC9D1E10C096DEB1618BC2470E409' REQUIRE NONE\",\n                \"line_num\": 31,\n                \"path\": \"./tests/samples/sql_password\",\n                \"info\": \"FILE:./tests/samples/sql_password|RAW\",\n                \"variable\": \"ALTER USER 'test'@'1.1.1.1' IDENTIFIED WITH 'mysql_native_password' AS\",\n                \"variable_start\": 0,\n                \"variable_end\": 70,\n                \"value\": \"*92FD05ADCA2EC9D1E10C096DEB1618BC2470E409\",\n                \"value_start\": 72,\n                \"value_end\": 113,\n                \"entropy\": 3.78769\n            }\n        ]\n    },\n    {\n        \"rule\": \"SQL Password\",\n        \"severity\": \"medium\",\n        \"confidence\": \"weak\",\n        \"ml_probability\": 0.849,\n        \"line_data_list\": [\n            {\n                \"line\": \"sh -c 'echo CREATE USER typeorm_mg IDENTIFIED BY SqLpa5sW0rD\\\\; >>tmp.sql;'\",\n                \"line_num\": 32,\n                \"path\": \"./tests/samples/sql_password\",\n                \"info\": \"FILE:./tests/samples/sql_password|RAW\",\n                \"variable\": \"CREATE USER typeorm_mg IDENTIFIED BY\",\n                \"variable_start\": 12,\n                \"variable_end\": 48,\n                \"value\": \"SqLpa5sW0rD\\\\;\",\n                \"value_start\": 49,\n                \"value_end\": 62,\n                \"entropy\": 3.70044\n            }\n        ]\n    },\n    {\n        \"rule\": \"SQL Password\",\n        \"severity\": \"medium\",\n        \"confidence\": \"weak\",\n        \"ml_probability\": 0.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"ALTER USER 'super_user'@'10.10.%' PASSWORD EXPIRE INTERVAL 90 DAY;\",\n                \"line_num\": 34,\n                \"path\": \"./tests/samples/sql_password\",\n                \"info\": \"FILE:./tests/samples/sql_password|RAW\",\n                \"variable\": \"ALTER USER 'super_user'@'10.10.%' PASSWORD\",\n                \"variable_start\": 0,\n                \"variable_end\": 42,\n                \"value\": \"EXPIRE\",\n                \"value_start\": 43,\n                \"value_end\": 49,\n                \"entropy\": 2.25163\n            }\n        ]\n    },\n    {\n        \"rule\": \"SQL Password\",\n        \"severity\": \"medium\",\n        \"confidence\": \"weak\",\n        \"ml_probability\": 0.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"ALTER USER 'super_user'@'10.1.%' PASSWORD HISTORY 1;\",\n                \"line_num\": 35,\n                \"path\": \"./tests/samples/sql_password\",\n                \"info\": \"FILE:./tests/samples/sql_password|RAW\",\n                \"variable\": \"ALTER USER 'super_user'@'10.1.%' PASSWORD\",\n                \"variable_start\": 0,\n                \"variable_end\": 41,\n                \"value\": \"HISTORY\",\n                \"value_start\": 42,\n                \"value_end\": 49,\n                \"entropy\": 2.80735\n            }\n        ]\n    },\n    {\n        \"rule\": \"SQL Password\",\n        \"severity\": \"medium\",\n        \"confidence\": \"weak\",\n        \"ml_probability\": 0.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"ALTER USER 'username'@'%' PASSWORD EXPIRE INTERVAL 90 DAY;\",\n                \"line_num\": 36,\n                \"path\": \"./tests/samples/sql_password\",\n                \"info\": \"FILE:./tests/samples/sql_password|RAW\",\n                \"variable\": \"ALTER USER 'username'@'%' PASSWORD\",\n                \"variable_start\": 0,\n                \"variable_end\": 34,\n                \"value\": \"EXPIRE\",\n                \"value_start\": 35,\n                \"value_end\": 41,\n                \"entropy\": 2.25163\n            }\n        ]\n    },\n    {\n        \"rule\": \"SQL Password\",\n        \"severity\": \"medium\",\n        \"confidence\": \"weak\",\n        \"ml_probability\": 0.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"alter user \\\"bob\\\"@\\\"localhost\\\" identified with sha256_password by '<enter password>';\",\n                \"line_num\": 38,\n                \"path\": \"./tests/samples/sql_password\",\n                \"info\": \"FILE:./tests/samples/sql_password|RAW\",\n                \"variable\": \"alter user \\\"bob\\\"@\\\"localhost\\\" identified with sha256_password by\",\n                \"variable_start\": 0,\n                \"variable_end\": 63,\n                \"value\": \"<enter password>\",\n                \"value_start\": 65,\n                \"value_end\": 81,\n                \"entropy\": 3.625\n            }\n        ]\n    },\n    {\n        \"rule\": \"Square Access Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"\\\"SQT\\\": \\\"EAAAEEPtuW9FnP_CuCV-3DFPB54M7YWBUVEFOWKPRVMWEJYMODIDAEX4FASS64NF\\\",\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/square_access_token\",\n                \"info\": \"FILE:./tests/samples/square_access_token|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"EAAAEEPtuW9FnP_CuCV-3DFPB54M7YWBUVEFOWKPRVMWEJYMODIDAEX4FASS64NF\",\n                \"value_start\": 12,\n                \"value_end\": 76,\n                \"entropy\": 4.66018\n            }\n        ]\n    },\n    {\n        \"rule\": \"Square Credentials\",\n        \"severity\": \"medium\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"sq0atp-GIREOGICR0CKLE12W45A78\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/square_client_id\",\n                \"info\": \"FILE:./tests/samples/square_client_id|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"sq0atp-GIREOGICR0CKLE12W45A78\",\n                \"value_start\": 0,\n                \"value_end\": 29,\n                \"entropy\": 4.44419\n            }\n        ]\n    },\n    {\n        \"rule\": \"Square Credentials\",\n        \"severity\": \"medium\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"20241204_112356 Colored line: \\\"\\u001b[94msq0csp-ST2dsfwyVI7Ydj343EY72hb48ehKQINMST2ds_fwyVI\\u001b[0m\\\";\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/square_oauth_secret\",\n                \"info\": \"FILE:./tests/samples/square_oauth_secret|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"sq0csp-ST2dsfwyVI7Ydj343EY72hb48ehKQINMST2ds_fwyVI\",\n                \"value_start\": 36,\n                \"value_end\": 86,\n                \"entropy\": 4.75856\n            }\n        ]\n    },\n    {\n        \"rule\": \"Stripe Credentials\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"pk_test_Tph4NiI7TYooMQaujxvdEDq5\",\n                \"line_num\": 3,\n                \"path\": \"./tests/samples/stripe_credentials\",\n                \"info\": \"FILE:./tests/samples/stripe_credentials|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"pk_test_Tph4NiI7TYooMQaujxvdEDq5\",\n                \"value_start\": 0,\n                \"value_end\": 32,\n                \"entropy\": 4.6875\n            }\n        ]\n    },\n    {\n        \"rule\": \"Stripe Credentials\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"rk_live_TsS4QI2dNfwyVM7YdjI78ehK\",\n                \"line_num\": 4,\n                \"path\": \"./tests/samples/stripe_credentials\",\n                \"info\": \"FILE:./tests/samples/stripe_credentials|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"rk_live_TsS4QI2dNfwyVM7YdjI78ehK\",\n                \"value_start\": 0,\n                \"value_end\": 32,\n                \"entropy\": 4.6875\n            }\n        ]\n    },\n    {\n        \"rule\": \"Stripe Credentials\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"sk_test_T1z4jtdp7dcC39HqLyjWareD\",\n                \"line_num\": 5,\n                \"path\": \"./tests/samples/stripe_credentials\",\n                \"info\": \"FILE:./tests/samples/stripe_credentials|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"sk_test_T1z4jtdp7dcC39HqLyjWareD\",\n                \"value_start\": 0,\n                \"value_end\": 32,\n                \"entropy\": 4.53891\n            }\n        ]\n    },\n    {\n        \"rule\": \"Stripe Credentials\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"pk_live_KQI2pIpqzh1Nv2ZXfJBqUJItqoO5WdI6zUkITxodxICz85zC00cv0Gk63bDVUMwIymb3zKTeiqfU588jyYJdNYekpiI56wY0IIx\",\n                \"line_num\": 6,\n                \"path\": \"./tests/samples/stripe_credentials\",\n                \"info\": \"FILE:./tests/samples/stripe_credentials|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"pk_live_KQI2pIpqzh1Nv2ZXfJBqUJItqoO5WdI6zUkITxodxICz85zC00cv0Gk63bDVUMwIymb3zKTeiqfU588jyYJdNYekpiI56wY0IIx\",\n                \"value_start\": 0,\n                \"value_end\": 107,\n                \"entropy\": 5.24966\n            }\n        ]\n    },\n    {\n        \"rule\": \"Stripe Credentials\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"sk_test_KQI2pIpqzh1Nv2ZXfyfDQUTUQ63Cw359VjKMwtfJ000DsiXxtcVuxT40W8QRSYWZLQZxszLqOMkbYwYWDV1xKCmRKWR3kgSpi9h\",\n                \"line_num\": 7,\n                \"path\": \"./tests/samples/stripe_credentials\",\n                \"info\": \"FILE:./tests/samples/stripe_credentials|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"sk_test_KQI2pIpqzh1Nv2ZXfyfDQUTUQ63Cw359VjKMwtfJ000DsiXxtcVuxT40W8QRSYWZLQZxszLqOMkbYwYWDV1xKCmRKWR3kgSpi9h\",\n                \"value_start\": 0,\n                \"value_end\": 107,\n                \"entropy\": 5.44092\n            }\n        ]\n    },\n    {\n        \"rule\": \"Stripe Credentials\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"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\",\n                \"line_num\": 8,\n                \"path\": \"./tests/samples/stripe_credentials\",\n                \"info\": \"FILE:./tests/samples/stripe_credentials|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"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\",\n                \"value_start\": 0,\n                \"value_end\": 107,\n                \"entropy\": 5.50064\n            }\n        ]\n    },\n    {\n        \"rule\": \"Stripe Credentials\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"whsec_IsQVcHgjVWTBwlClIsICTD0mpDr4gJ4m\",\n                \"line_num\": 9,\n                \"path\": \"./tests/samples/stripe_credentials\",\n                \"info\": \"FILE:./tests/samples/stripe_credentials|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"whsec_IsQVcHgjVWTBwlClIsICTD0mpDr4gJ4m\",\n                \"value_start\": 0,\n                \"value_end\": 38,\n                \"entropy\": 4.47135\n            }\n        ]\n    },\n    {\n        \"rule\": \"Stripe Credentials\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"whsec_Q4KGL7AstjhYfzCtzK2RTB2EmncHgjVW\",\n                \"line_num\": 10,\n                \"path\": \"./tests/samples/stripe_credentials\",\n                \"info\": \"FILE:./tests/samples/stripe_credentials|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"whsec_Q4KGL7AstjhYfzCtzK2RTB2EmncHgjVW\",\n                \"value_start\": 0,\n                \"value_end\": 38,\n                \"entropy\": 4.82687\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_CREDENTIALS\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"\\\"key\\\": \\\"password\\\",\",\n                \"line_num\": 3,\n                \"path\": \"./tests/samples/struct.json\",\n                \"info\": \"FILE:./tests/samples/struct.json|RAW\",\n                \"variable\": \"key\",\n                \"variable_start\": 5,\n                \"variable_end\": 8,\n                \"value\": \"password\",\n                \"value_start\": 12,\n                \"value_end\": 20,\n                \"entropy\": 2.75\n            }\n        ]\n    },\n    {\n        \"rule\": \"Telegram Bot API Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"508627689:AAEuLPKs-EhrjrYGnz60bnYNZqakf6HJxc0\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/telegram_api_key\",\n                \"info\": \"FILE:./tests/samples/telegram_api_key|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"508627689:AAEuLPKs-EhrjrYGnz60bnYNZqakf6HJxc0\",\n                \"value_start\": 0,\n                \"value_end\": 45,\n                \"entropy\": 4.94174\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_CREDENTIALS\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.012,\n        \"line_data_list\": [\n            {\n                \"line\": \"PW: H1ddEn#ema1l\",\n                \"line_num\": 6,\n                \"path\": \"./tests/samples/test.eml\",\n                \"info\": \"FILE:./tests/samples/test.eml|EML-HTML\",\n                \"variable\": \"PW\",\n                \"variable_start\": 0,\n                \"variable_end\": 2,\n                \"value\": \"H1ddEn#ema1l\",\n                \"value_start\": 4,\n                \"value_end\": 16,\n                \"entropy\": 3.25163\n            }\n        ]\n    },\n    {\n        \"rule\": \"PASSWD_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.012,\n        \"line_data_list\": [\n            {\n                \"line\": \"PW: H1ddEn#ema1l\",\n                \"line_num\": 6,\n                \"path\": \"./tests/samples/test.eml\",\n                \"info\": \"FILE:./tests/samples/test.eml|EML-HTML\",\n                \"variable\": \"PW\",\n                \"variable_start\": 0,\n                \"variable_end\": 2,\n                \"value\": \"H1ddEn#ema1l\",\n                \"value_start\": 4,\n                \"value_end\": 16,\n                \"entropy\": 3.25163\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_CREDENTIALS\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.832,\n        \"line_data_list\": [\n            {\n                \"line\": \"td : Password:            MU$T6Ef09#D!\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/test.html\",\n                \"info\": \"FILE:./tests/samples/test.html|XML\",\n                \"variable\": \"Password\",\n                \"variable_start\": 5,\n                \"variable_end\": 13,\n                \"value\": \"MU$T6Ef09#D!\",\n                \"value_start\": 26,\n                \"value_end\": 38,\n                \"entropy\": 3.58496\n            }\n        ]\n    },\n    {\n        \"rule\": \"PASSWD_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.832,\n        \"line_data_list\": [\n            {\n                \"line\": \"td : Password:            MU$T6Ef09#D!\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/test.html\",\n                \"info\": \"FILE:./tests/samples/test.html|XML\",\n                \"variable\": \"Password\",\n                \"variable_start\": 5,\n                \"variable_end\": 13,\n                \"value\": \"MU$T6Ef09#D!\",\n                \"value_start\": 26,\n                \"value_end\": 38,\n                \"entropy\": 3.58496\n            }\n        ]\n    },\n    {\n        \"rule\": \"Telegram Bot API Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"508627689:AAEuLPKs-EhrjrYGnz60bnYNZqakf6HJxc0\",\n                \"line_num\": 76,\n                \"path\": \"./tests/samples/test.html\",\n                \"info\": \"FILE:./tests/samples/test.html|HTML\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"508627689:AAEuLPKs-EhrjrYGnz60bnYNZqakf6HJxc0\",\n                \"value_start\": 0,\n                \"value_end\": 45,\n                \"entropy\": 4.94174\n            }\n        ]\n    },\n    {\n        \"rule\": \"Google OAuth Access Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"# 94 ya29.dshMb48ehfXwydAj34D32J\",\n                \"line_num\": 83,\n                \"path\": \"./tests/samples/test.html\",\n                \"info\": \"FILE:./tests/samples/test.html|HTML\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"ya29.dshMb48ehfXwydAj34D32J\",\n                \"value_start\": 5,\n                \"value_end\": 32,\n                \"entropy\": 4.31044\n            }\n        ]\n    },\n    {\n        \"rule\": \"Digital Ocean Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"# 95 dop_v1_425522a565f532bc6532d453422e50334a42f5242a3090fbe553b543b124259b\",\n                \"line_num\": 84,\n                \"path\": \"./tests/samples/test.html\",\n                \"info\": \"FILE:./tests/samples/test.html|HTML\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"dop_v1_425522a565f532bc6532d453422e50334a42f5242a3090fbe553b543b124259b\",\n                \"value_start\": 5,\n                \"value_end\": 76,\n                \"entropy\": 3.6568\n            }\n        ]\n    },\n    {\n        \"rule\": \"Facebook Access Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"the line will be found twice # 100 EAACEb00Kse0BAlGy7KeQ5YnaCEd09Eose0cBAlGy7KeQ5Yna9CoDsup39tiYdoQ4jH9Coup39tiYdWoQ4jHFZD\",\n                \"line_num\": 89,\n                \"path\": \"./tests/samples/test.html\",\n                \"info\": \"FILE:./tests/samples/test.html|HTML\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"EAACEb00Kse0BAlGy7KeQ5YnaCEd09Eose0cBAlGy7KeQ5Yna9CoDsup39tiYdoQ4jH9Coup39tiYdWoQ4jHFZD\",\n                \"value_start\": 35,\n                \"value_end\": 122,\n                \"entropy\": 4.93612\n            }\n        ]\n    },\n    {\n        \"rule\": \"SQL Password\",\n        \"severity\": \"medium\",\n        \"confidence\": \"weak\",\n        \"ml_probability\": 0.994,\n        \"line_data_list\": [\n            {\n                \"line\": \"ALTER\\tUSER\\tdetector\\tIDENTIFIED\\tBY\\tSqLpa5sW0rD4;\",\n                \"line_num\": 110,\n                \"path\": \"./tests/samples/test.html\",\n                \"info\": \"FILE:./tests/samples/test.html|HTML\",\n                \"variable\": \"ALTER\\tUSER\\tdetector\\tIDENTIFIED\\tBY\",\n                \"variable_start\": 0,\n                \"variable_end\": 33,\n                \"value\": \"SqLpa5sW0rD4\",\n                \"value_start\": 34,\n                \"value_end\": 46,\n                \"entropy\": 3.58496\n            }\n        ]\n    },\n    {\n        \"rule\": \"Grafana Provisioned API Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"token in text: eyJrIjoiMDAwMDAwNDAwMDAwODAwNDAwMDAwMDAwNDAwMDAwMDAwMDAwMDAyMSIsIm4iOiJ4eHh4IiwiaWQiOjQzMDh9Cg\",\n                \"line_num\": 8,\n                \"path\": \"./tests/samples/test2.eml\",\n                \"info\": \"FILE:./tests/samples/test2.eml|EML-TEXT\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"eyJrIjoiMDAwMDAwNDAwMDAwODAwNDAwMDAwMDAwNDAwMDAwMDAwMDAwMDAyMSIsIm4iOiJ4eHh4IiwiaWQiOjQzMDh9Cg\",\n                \"value_start\": 15,\n                \"value_end\": 109,\n                \"entropy\": 4.02967\n            }\n        ]\n    },\n    {\n        \"rule\": \"Together AI API Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"tgp_v1_45j-rhExaIPrLzTp--mCXcQwaWyNYUK86IG0_XWnNqc\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/together\",\n                \"info\": \"FILE:./tests/samples/together|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"tgp_v1_45j-rhExaIPrLzTp--mCXcQwaWyNYUK86IG0_XWnNqc\",\n                \"value_start\": 0,\n                \"value_end\": 50,\n                \"entropy\": 5.13366\n            }\n        ]\n    },\n    {\n        \"rule\": \"Together AI API Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"tgp_v1_LRvIfXDN2VjuqCi5zcGzrM3oIwIOhhIZd9H8JmE2CpR\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/together\",\n                \"info\": \"FILE:./tests/samples/together|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"tgp_v1_LRvIfXDN2VjuqCi5zcGzrM3oIwIOhhIZd9H8JmE2CpR\",\n                \"value_start\": 0,\n                \"value_end\": 50,\n                \"entropy\": 5.16386\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_CREDENTIALS\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"gi_reo_gi_token = \\\"G1Re06G1BdgNseiJDN21Z094M\\\"\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/token.toml\",\n                \"info\": \"FILE:./tests/samples/token.toml|RAW\",\n                \"variable\": \"gi_reo_gi_token\",\n                \"variable_start\": 0,\n                \"variable_end\": 15,\n                \"value\": \"G1Re06G1BdgNseiJDN21Z094M\",\n                \"value_start\": 19,\n                \"value_end\": 44,\n                \"entropy\": 4.13366\n            }\n        ]\n    },\n    {\n        \"rule\": \"SECRET_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"gi_reo_gi_token = \\\"G1Re06G1BdgNseiJDN21Z094M\\\"\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/token.toml\",\n                \"info\": \"FILE:./tests/samples/token.toml|RAW\",\n                \"variable\": \"token\",\n                \"variable_start\": 10,\n                \"variable_end\": 15,\n                \"value\": \"G1Re06G1BdgNseiJDN21Z094M\",\n                \"value_start\": 19,\n                \"value_end\": 44,\n                \"entropy\": 4.13366\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_CREDENTIALS\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.999,\n        \"line_data_list\": [\n            {\n                \"line\": \"Token-> DemoToken: Nxs094M3ed2s1Re0F4M3ed2GZ8M= <- for User : demo\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/token.toml\",\n                \"info\": \"FILE:./tests/samples/token.toml|RAW\",\n                \"variable\": \"DemoToken\",\n                \"variable_start\": 8,\n                \"variable_end\": 17,\n                \"value\": \"Nxs094M3ed2s1Re0F4M3ed2GZ8M=\",\n                \"value_start\": 19,\n                \"value_end\": 47,\n                \"entropy\": 4.03915\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_CREDENTIALS\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"tp_token_value=\\\"b035d48j9X2dfjF0hb9sd8Guf5hWu2ia\\\"\",\n                \"line_num\": 4,\n                \"path\": \"./tests/samples/token.toml\",\n                \"info\": \"FILE:./tests/samples/token.toml|RAW\",\n                \"variable\": \"tp_token_value\",\n                \"variable_start\": 0,\n                \"variable_end\": 14,\n                \"value\": \"b035d48j9X2dfjF0hb9sd8Guf5hWu2ia\",\n                \"value_start\": 16,\n                \"value_end\": 48,\n                \"entropy\": 4.22641\n            }\n        ]\n    },\n    {\n        \"rule\": \"Tavily API Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"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  # TP\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/tvly\",\n                \"info\": \"FILE:./tests/samples/tvly|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"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\",\n                \"value_start\": 0,\n                \"value_end\": 37,\n                \"entropy\": 4.84432\n            }\n        ]\n    },\n    {\n        \"rule\": \"Twilio Credentials\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"SK4D2F64E2A108CD72F648B1984C3B5A13\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/twilio_credentials_p\",\n                \"info\": \"FILE:./tests/samples/twilio_credentials_p|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"SK4D2F64E2A108CD72F648B1984C3B5A13\",\n                \"value_start\": 0,\n                \"value_end\": 34,\n                \"entropy\": 4.02086\n            }\n        ]\n    },\n    {\n        \"rule\": \"Twilio Credentials\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"AC4d2f64e2a108cd72f648b1984c3b5a13\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/twilio_credentials_p\",\n                \"info\": \"FILE:./tests/samples/twilio_credentials_p|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"AC4d2f64e2a108cd72f648b1984c3b5a13\",\n                \"value_start\": 0,\n                \"value_end\": 34,\n                \"entropy\": 4.02086\n            }\n        ]\n    },\n    {\n        \"rule\": \"URL Credentials\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"const connection_url = require('dbconnection://ad%6Din:5WdF4f2jE76a@db-host-local');\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/url_cred.js\",\n                \"info\": \"FILE:./tests/samples/url_cred.js|RAW\",\n                \"variable\": \"dbconnection://\",\n                \"variable_start\": 32,\n                \"variable_end\": 47,\n                \"value\": \"5WdF4f2jE76a\",\n                \"value_start\": 55,\n                \"value_end\": 67,\n                \"entropy\": 3.58496\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_CREDENTIALS\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"url = \\\"https://secure.com/83675/39084?Credential=546DFS64N90P3AW7DX%2Fkeep%26cut\\\";\",\n                \"line_num\": 3,\n                \"path\": \"./tests/samples/url_cred.js\",\n                \"info\": \"FILE:./tests/samples/url_cred.js|RAW\",\n                \"variable\": \"Credential\",\n                \"variable_start\": 38,\n                \"variable_end\": 48,\n                \"value\": \"546DFS64N90P3AW7DX%2Fkeep%26cut\\\"\",\n                \"value_start\": 49,\n                \"value_end\": 81,\n                \"entropy\": 4.47641\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_CREDENTIALS\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.033,\n        \"line_data_list\": [\n            {\n                \"line\": \"// \\\"fp://no.host.real/any/path/to/nowhere/\\\",\\\"key\\\":\\\"f45VgF8jX79o@anydata.com\\\"\",\n                \"line_num\": 7,\n                \"path\": \"./tests/samples/url_cred.js\",\n                \"info\": \"FILE:./tests/samples/url_cred.js|RAW\",\n                \"variable\": \"key\",\n                \"variable_start\": 45,\n                \"variable_end\": 48,\n                \"value\": \"f45VgF8jX79o@anydata.com\",\n                \"value_start\": 51,\n                \"value_end\": 75,\n                \"entropy\": 4.30351\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_CREDENTIALS\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"39084?Credential=546DFS64N90P3AW7DX&key=3487263-2384579834-234732875-345&hasToBefound=2\",\n                \"line_num\": 10,\n                \"path\": \"./tests/samples/url_cred.js\",\n                \"info\": \"FILE:./tests/samples/url_cred.js|RAW\",\n                \"variable\": \"key\",\n                \"variable_start\": 36,\n                \"variable_end\": 39,\n                \"value\": \"3487263-2384579834-234732875-345\",\n                \"value_start\": 40,\n                \"value_end\": 72,\n                \"entropy\": 2.97591\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_CREDENTIALS\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"39084?Credential=546DFS64N90P3AW7DX&key=3487263-2384579834-234732875-345&hasToBefound=2\",\n                \"line_num\": 10,\n                \"path\": \"./tests/samples/url_cred.js\",\n                \"info\": \"FILE:./tests/samples/url_cred.js|RAW\",\n                \"variable\": \"Credential\",\n                \"variable_start\": 6,\n                \"variable_end\": 16,\n                \"value\": \"546DFS64N90P3AW7DX\",\n                \"value_start\": 17,\n                \"value_end\": 35,\n                \"entropy\": 3.83659\n            }\n        ]\n    },\n    {\n        \"rule\": \"URL Credentials\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"email_as_login = \\\"smtps://example@gmail.com:FnD83JZs@smtp.gmail.com:465\\\";\",\n                \"line_num\": 13,\n                \"path\": \"./tests/samples/url_cred.js\",\n                \"info\": \"FILE:./tests/samples/url_cred.js|RAW\",\n                \"variable\": \"smtps://\",\n                \"variable_start\": 18,\n                \"variable_end\": 26,\n                \"value\": \"FnD83JZs\",\n                \"value_start\": 44,\n                \"value_end\": 52,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_CREDENTIALS\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"url3d = \\\"https://localhost.com/013948?26timestamp%3D1395782596%26token%3Dh1d3Me4ch534d801sl3jdk%26version%3D3.14%26si\\\";\",\n                \"line_num\": 19,\n                \"path\": \"./tests/samples/url_cred.js\",\n                \"info\": \"FILE:./tests/samples/url_cred.js|RAW\",\n                \"variable\": \"26token\",\n                \"variable_start\": 63,\n                \"variable_end\": 70,\n                \"value\": \"h1d3Me4ch534d801sl3jdk\",\n                \"value_start\": 73,\n                \"value_end\": 95,\n                \"entropy\": 3.75444\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_CREDENTIALS\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.997,\n        \"line_data_list\": [\n            {\n                \"line\": \"if (password !== \\\"PaS5w0rD2#\\\"){\",\n                \"line_num\": 21,\n                \"path\": \"./tests/samples/url_cred.js\",\n                \"info\": \"FILE:./tests/samples/url_cred.js|RAW\",\n                \"variable\": \"password\",\n                \"variable_start\": 4,\n                \"variable_end\": 12,\n                \"value\": \"PaS5w0rD2#\",\n                \"value_start\": 18,\n                \"value_end\": 28,\n                \"entropy\": 3.32193\n            }\n        ]\n    },\n    {\n        \"rule\": \"PASSWD_PAIR\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.997,\n        \"line_data_list\": [\n            {\n                \"line\": \"if (password !== \\\"PaS5w0rD2#\\\"){\",\n                \"line_num\": 21,\n                \"path\": \"./tests/samples/url_cred.js\",\n                \"info\": \"FILE:./tests/samples/url_cred.js|RAW\",\n                \"variable\": \"password\",\n                \"variable_start\": 4,\n                \"variable_end\": 12,\n                \"value\": \"PaS5w0rD2#\",\n                \"value_start\": 18,\n                \"value_end\": 28,\n                \"entropy\": 3.32193\n            }\n        ]\n    },\n    {\n        \"rule\": \"URL Credentials\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.933,\n        \"line_data_list\": [\n            {\n                \"line\": \"{\\\"line\\\": \\\"url: mongodb://jrfdeg42:p4Dsr8b@127.0.0.1:32768/architecture\\\"}\",\n                \"line_num\": 25,\n                \"path\": \"./tests/samples/url_cred.js\",\n                \"info\": \"FILE:./tests/samples/url_cred.js|RAW\",\n                \"variable\": \"mongodb://\",\n                \"variable_start\": 15,\n                \"variable_end\": 25,\n                \"value\": \"p4Dsr8b\",\n                \"value_start\": 34,\n                \"value_end\": 41,\n                \"entropy\": 2.80735\n            }\n        ]\n    },\n    {\n        \"rule\": \"UUID\",\n        \"severity\": \"info\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"bace4d19-fa7e-beef-cafe-9129474bcd81 # tp\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/uuid\",\n                \"info\": \"FILE:./tests/samples/uuid|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"bace4d19-fa7e-beef-cafe-9129474bcd81\",\n                \"value_start\": 0,\n                \"value_end\": 36,\n                \"entropy\": 3.58954\n            }\n        ]\n    },\n    {\n        \"rule\": \"Vercel Token\",\n        \"severity\": \"medium\",\n        \"confidence\": \"weak\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"vcp_5G8LQP7fmw80eG7W8y0sWO1QFPuhsYUuLEqyd1ialdvz9r6pL4vzxkC3\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/vercel\",\n                \"info\": \"FILE:./tests/samples/vercel|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"vcp_5G8LQP7fmw80eG7W8y0sWO1QFPuhsYUuLEqyd1ialdvz9r6pL4vzxkC3\",\n                \"value_start\": 0,\n                \"value_end\": 60,\n                \"entropy\": 5.23581\n            }\n        ]\n    },\n    {\n        \"rule\": \"Tencent WeChat API App ID\",\n        \"severity\": \"medium\",\n        \"confidence\": \"weak\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"wxe191bc54fc7d529a\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/wechat_p\",\n                \"info\": \"FILE:./tests/samples/wechat_p|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"wxe191bc54fc7d529a\",\n                \"value_start\": 0,\n                \"value_end\": 18,\n                \"entropy\": 3.72548\n            }\n        ]\n    },\n    {\n        \"rule\": \"Tencent WeChat API App ID\",\n        \"severity\": \"medium\",\n        \"confidence\": \"weak\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"wx2274a335e18222d6\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/wechat_p\",\n                \"info\": \"FILE:./tests/samples/wechat_p|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"wx2274a335e18222d6\",\n                \"value_start\": 0,\n                \"value_end\": 18,\n                \"entropy\": 3.41383\n            }\n        ]\n    },\n    {\n        \"rule\": \"Tencent WeChat API App ID\",\n        \"severity\": \"medium\",\n        \"confidence\": \"weak\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"wx4d82d07e3eb5ba84\",\n                \"line_num\": 3,\n                \"path\": \"./tests/samples/wechat_p\",\n                \"info\": \"FILE:./tests/samples/wechat_p|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"wx4d82d07e3eb5ba84\",\n                \"value_start\": 0,\n                \"value_end\": 18,\n                \"entropy\": 3.61437\n            }\n        ]\n    },\n    {\n        \"rule\": \"X AI API Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"xai-wjluCw1zixzDiYOxeeGtIwuHjIyax8SukK2lFWtBRn1yfEPMQzv63sMCd1nzqylpuDXQjEGd19OJi3cL\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/xai\",\n                \"info\": \"FILE:./tests/samples/xai|RAW\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"xai-wjluCw1zixzDiYOxeeGtIwuHjIyax8SukK2lFWtBRn1yfEPMQzv63sMCd1nzqylpuDXQjEGd19OJi3cL\",\n                \"value_start\": 0,\n                \"value_end\": 84,\n                \"entropy\": 5.35637\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_CREDENTIALS\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.999,\n        \"line_data_list\": [\n            {\n                \"line\": \"token : IBOgIBAAJBAJtFfagSXdo0JmX6EdwWGvFMaXeOFY5xOTs3PWsn        hRFakQFbAuI769fdsbkjerfkjrekjnkerjnfkrejnfrejn==\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/xml_data.xml\",\n                \"info\": \"FILE:./tests/samples/xml_data.xml|XML\",\n                \"variable\": \"token\",\n                \"variable_start\": 0,\n                \"variable_end\": 5,\n                \"value\": \"IBOgIBAAJBAJtFfagSXdo0JmX6EdwWGvFMaXeOFY5xOTs3PWsn\",\n                \"value_start\": 8,\n                \"value_end\": 58,\n                \"entropy\": 4.83327\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_CREDENTIALS\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.992,\n        \"line_data_list\": [\n            {\n                \"line\": \"token : \\\"IBOgIBAAJBAJtFfagSXdo0JmX6EdwWGvFMaXeOFY5xOTs3PWsn        hRFakQFbAuI769fdsbkjerfkjrekjnkerjnfkrejnfrejn==\\\"\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/xml_data.xml\",\n                \"info\": \"FILE:./tests/samples/xml_data.xml|XML\",\n                \"variable\": \"token\",\n                \"variable_start\": 0,\n                \"variable_end\": 5,\n                \"value\": \"IBOgIBAAJBAJtFfagSXdo0JmX6EdwWGvFMaXeOFY5xOTs3PWsn        hRFakQFbAuI769fdsbkjerfkjrekjnkerjnfkrejnfrejn==\",\n                \"value_start\": 9,\n                \"value_end\": 115,\n                \"entropy\": 5.09578\n            }\n        ]\n    },\n    {\n        \"rule\": \"BASE64 Private Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"MIIBOgIBAAJBAJtFfagSXdo0JmX6EdwWGvFMaXeOFY5xOTs3PWsnhRFakQFbAuI/        DaJSTVnp3ObjJPZhJs/P/XPWIKRNIglRqkkCAwEAAQJAbErPFMWah3EPxtfeVO1l        5R0yAZwrFKmLDO29/FoXyL2XbxthJlJmdMQgIYayZYn4W2PSq6C56AI201SlW7Ts        AQIhAMwBYS+NST98g0nytTRD1Y94n+yrhTlyWNR/uC4tT8SpAiEAwthlcs9UDPh5        BnaO8Y7A+im+Aw5ANIhJwSVBxB3QnKECIQCJm9ihic1B7MxmojgGxEcXGwfNTjl0        caRn2qszQs9O2QIgdaBFvkXDrADkry4rpVBU17ETcKzNvej4/Y0MYuTM54ECIGtT        EBUWuiacAxz/WKHb9WVp0F/zkRwucJ0Hr2W4P9cP\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/xml_data.xml\",\n                \"info\": \"FILE:./tests/samples/xml_data.xml|XML\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"MIIBOgIBAAJBAJtFfagSXdo0JmX6EdwWGvFMaXeOFY5xOTs3PWsnhRFakQFbAuI/        DaJSTVnp3ObjJPZhJs/P/XPWIKRNIglRqkkCAwEAAQJAbErPFMWah3EPxtfeVO1l        5R0yAZwrFKmLDO29/FoXyL2XbxthJlJmdMQgIYayZYn4W2PSq6C56AI201SlW7Ts        AQIhAMwBYS+NST98g0nytTRD1Y94n+yrhTlyWNR/uC4tT8SpAiEAwthlcs9UDPh5        BnaO8Y7A+im+Aw5ANIhJwSVBxB3QnKECIQCJm9ihic1B7MxmojgGxEcXGwfNTjl0        caRn2qszQs9O2QIgdaBFvkXDrADkry4rpVBU17ETcKzNvej4/Y0MYuTM54ECIGtT        EBUWuiacAxz/WKHb9WVp0F/zkRwucJ0Hr2W4P9cP\",\n                \"value_start\": 7,\n                \"value_end\": 479,\n                \"entropy\": 5.73206\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_CREDENTIALS\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"password : Password for authorization        BAIT: bace4d59-fa7e-beef-cafe-9129474bcd81\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/xml_password.xml\",\n                \"info\": \"FILE:./tests/samples/xml_password.xml|XML\",\n                \"variable\": \"password\",\n                \"variable_start\": 0,\n                \"variable_end\": 8,\n                \"value\": \"Password\",\n                \"value_start\": 11,\n                \"value_end\": 19,\n                \"entropy\": 2.75\n            }\n        ]\n    },\n    {\n        \"rule\": \"UUID\",\n        \"severity\": \"info\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"password : Password for authorization        BAIT: bace4d59-fa7e-beef-cafe-9129474bcd81\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/xml_password.xml\",\n                \"info\": \"FILE:./tests/samples/xml_password.xml|XML\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"bace4d59-fa7e-beef-cafe-9129474bcd81\",\n                \"value_start\": 51,\n                \"value_end\": 87,\n                \"entropy\": 3.66606\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_CREDENTIALS\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.169,\n        \"line_data_list\": [\n            {\n                \"line\": \"password : cackle!\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/xml_password.xml\",\n                \"info\": \"FILE:./tests/samples/xml_password.xml|XML\",\n                \"variable\": \"password\",\n                \"variable_start\": 0,\n                \"variable_end\": 8,\n                \"value\": \"cackle!\",\n                \"value_start\": 11,\n                \"value_end\": 18,\n                \"entropy\": 2.52164\n            }\n        ]\n    },\n    {\n        \"rule\": \"DOC_CREDENTIALS\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.002,\n        \"line_data_list\": [\n            {\n                \"line\": \"password : peace_for_ukraine\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/xml_password.xml\",\n                \"info\": \"FILE:./tests/samples/xml_password.xml|XML\",\n                \"variable\": \"password\",\n                \"variable_start\": 0,\n                \"variable_end\": 8,\n                \"value\": \"peace_for_ukraine\",\n                \"value_start\": 11,\n                \"value_end\": 28,\n                \"entropy\": 3.45482\n            }\n        ]\n    }\n]"
  },
  {
    "path": "tests/data/no_filters_no_ml.json",
    "content": "[\n    {\n        \"rule\": \"1Password Account Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"ops_eyJb11xLqNoZodWhBSRZjgXFblnyPe_NKm9AQtqj1-g2NkK6QBDIjHwxGYNea8w7cImHWxSXc4ISxk4G9R85CVS1TqBvOOOXycTTH0eqOnwcIGDCQelSMcMIXfHNQVE2pDBHWIsRHmjR-uMUS4SnCU3odPaE9i7BTpHI8mKYEyJzCXzsmLu-mfHfhPM2WffsDLSvlHGwNzVa6wCQio7lsOSrhsjsYkH_boPMB4ZUQ01hn-ix_yBaGvTrMEN6lAy4Z6Pd3KvPb9Pr6c-kI1ifadgIJfRUQJse3IuwLfxeqBUYdHXVgknJ71YECM0-Xg3xwcFjO8oQC1b6kJs2jGX-vdtbLt8MlGzUEn-zYmAam5cj5ye-b_4lVyQjzYrWTI2CP4EkWT7Jsv9KQPVlNye6HwOvUvpm2VHEQDrl-9Kb3XZwo6C53Df0xBfU5Rr6b9p8_r6XrrBGLZWqf2xZkh8pC4OXECo_JzZWNyZXRLZXkiO-jd180LqEfYwfv8_tnxyLXVDX989lmYjZGyJDisytEIwIIcsnnZLCabN-0bOgT_Api9RTXZt7q-9IVxSSm4sgK8ZJ96roIIeukKC_FWVfvZ7uCmGT-TrDc0Kvit44ulvWgt6uoTtMrLGzZYyAx8COjniLSpKk6OOv\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/1password\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"ops_eyJb11xLqNoZodWhBSRZjgXFblnyPe_NKm9AQtqj1-g2NkK6QBDIjHwxGYNea8w7cImHWxSXc4ISxk4G9R85CVS1TqBvOOOXycTTH0eqOnwcIGDCQelSMcMIXfHNQVE2pDBHWIsRHmjR-uMUS4SnCU3odPaE9i7BTpHI8mKYEyJzCXzsmLu-mfHfhPM2WffsDLSvlHGwNzVa6wCQio7lsOSrhsjsYkH_boPMB4ZUQ01hn-ix_yBaGvTrMEN6lAy4Z6Pd3KvPb9Pr6c-kI1ifadgIJfRUQJse3IuwLfxeqBUYdHXVgknJ71YECM0-Xg3xwcFjO8oQC1b6kJs2jGX-vdtbLt8MlGzUEn-zYmAam5cj5ye-b_4lVyQjzYrWTI2CP4EkWT7Jsv9KQPVlNye6HwOvUvpm2VHEQDrl-9Kb3XZwo6C53Df0xBfU5Rr6b9p8_r6XrrBGLZWqf2xZkh8pC4OXECo_JzZWNyZXRLZXkiO-jd180LqEfYwfv8_tnxyLXVDX989lmYjZGyJDisytEIwIIcsnnZLCabN-0bOgT_Api9RTXZt7q-9IVxSSm4sgK8ZJ96roIIeukKC_FWVfvZ7uCmGT-TrDc0Kvit44ulvWgt6uoTtMrLGzZYyAx8COjniLSpKk6OOv\",\n                \"value_start\": 0,\n                \"value_end\": 656,\n                \"entropy\": 5.94326\n            }\n        ]\n    },\n    {\n        \"rule\": \"BASE64 encoded PEM Private Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"LS0tLS1CRUdJTiBSU0EgUFJJVkFURSBLRVktLS0tLQpQcm9jLVR5cGU6IDQsRU5DUllQVEVECkRFSy1JbmZvOiBBRVMtMTI4LUNCQywwMzQ1NzY3MzQ1NjgzNjIzNDc2NTM3NDY1ODM2NDgyNgoKenVFc2RhamhmYWtqc2hka2Zoc2FrZGZoaGprYWhzZGdkZmhnYXNqa2hkZ2ZramFzaGdramhnZ2FzZGhzaFFmaQpUZnNkaGFoZmtoaXUzNGhpdWh1dTM0eXk3ODg3M3lyNDg3d2V1cmlza3VkcmdqeWc0d3I0eXJndXN5Z2h1aHNrCnNaZGZ1aWdpdTM0aDM3OHk3d3I4N3dlcnk4N3lzZHVmc3VoaXU0Z3VpdXlnaXdldWhyaXV3aHRpdWhpdWhxOW8Kc2J0OTgzNHk5N3l0eTM0cnlnMzR1eXJnandoZWdya2pzZ2tyamhnd2Vqcmhnd2VqaHJnZXdqaGdyandlaHJnagotLS0tLUVORCBSU0EgUFJJVkFURSBLRVktLS0tLQoKLS0tLS1CRUdJTiBFTkNSWVBURUQgUFJJVkFURSBLRVktLS0tLQpNSUlGTFRCWEJna3Foa2lHOXcwQkJRMHdTakFwQmc5MzQ3OTU4MzI4NDAyMzc5ODIzOTg2ODIzNzY4NzIzNDU2Cnp1RXNkYWpoZmFranNoZGtmaHNha2RmaGhqa2Foc2RnZGZoZ2FzamtoZGdma2phc2hna2poZ2dhc2Roc2hRZmkKVGZzZGhhaGZraGl1MzRoaXVodXUzNHl5Nzg4NzN5cjQ4N3dldXJpc2t1ZHJnanlnNHdyNHlyZ3VzeWdodWhzawpzWmRmdWlnaXUzNGgzNzh5N3dyODd3ZXJ5ODd5c2R1ZnN1aGl1NGd1aXV5Z2l3ZXVocml1d2h0aXVoaXVocTlvCnNidDk4MzR5OTd5dHkzNHJ5ZzM0dXlyZ2p3aGVncmtqc2drcmpoZ3dlanJoZ3dlamhyZ2V3amhncmp3ZWhyZ2oKenVFc2RhamhmYWtqc2hka2Zoc2FrZGZoaGprYWhzZGdkZmhnYXNqa2hkZ2ZramFzaGdramhnZ2FzZGhzaFFmaQpUZnNkaGFoZmtoaXUzNGhpdWh1dTM0eXk3ODg3M3lyNDg3d2V1cmlza3VkcmdqeWc0d3I0eXJndXN5Z2h1aHNrCnNaZGZ1aWdpdTM0aDM3OHk3d3I4N3dlcnk4N3lzZHVmc3VoaXU0Z3VpdXlnaXdldWhyaXV3aHRpdWhpdWhxOW8Kc2J0OTgzNHk5N3l0eTM0cnlnMzR1eXJnandoZWdya2pzZ2tyamhnd2Vqcmhnd2VqaHJnZXdqaGdyandlaHJnagp6dUVzZGFqaGZha2pzaGRrZmhzYWtkZmhoamthaHNkZ2RmaGdhc2praGRnZmtqYXNoZ2tqaGdnYXNkaHNoUWZpClRmc2RoYWhma2hpdTM0aGl1aHV1MzR5eTc4ODczeXI0ODd3ZXVyaXNrdWRyZ2p5ZzR3cjR5cmd1c3lnaHVoc2sKc1pkZnVpZ2l1MzRoMzc4eTd3cjg3d2VyeTg3eXNkdWZzdWhpdTRndWl1eWdpd2V1aHJpdXdodGl1aGl1aHE5bwpzYnQ5ODM0eTk3eXR5MzRyeWczNHV5cmdqd2hlZ3JranNna3JqaGd3ZWpyaGd3ZWpocmdld2poZ3Jqd2VocmdqCnp1RXNkYWpoZmFranNoZGtmaHNha2RmaGhqa2Foc2RnZGZoZ2FzamtoZGdma2phc2hna2poZ2dhc2Roc2hRZmkKVGZzZGhhaGZraGl1MzRoaXVodXUzNHl5Nzg4NzN5cjQ4N3dldXJpc2t1ZHJnanlnNHdyNHlyZ3VzeWdodWhzawpzWmRmdWlnaXUzNGgzNzh5N3dyODd3ZXJ5ODd5c2R1ZnN1aGl1NGd1aXV5Z2l3ZXVocml1d2h0aXVoaXVocTlvCnNidDk4MzR5OTd5dHkzNHJ5ZzM0dXlyZ2p3aGVncmtqc2drcmpoZ3dlanJoZ3dlamhyZ2V3amhncmp3ZWhyZ2oKenVFc2RhamhmYWtqc2hka2Zoc2FrZGZoaGprYWhzZGdkZmhnYXNqa2hkZ2ZramFzaGdramhnZ2FzZGhzaFFmaQpUZnNkaGFoZmtoaXUzNGhpdWh1dTM0eXk3ODg3M3lyNDg3d2V1cmlza3VkcmdqeWc0d3I0eXJndXN5Z2h1aHNrCnNaZGZ1aWdpdTM0aDM3OHk3d3I4N3dlcnk4N3lzZHVmc3VoaXU0Z3VpdXlnaXdldWhyaXV3aHRpdWhpdWhxOW8Kc2J0OTgzNHk5N3l0eTM0cnlnMzR1eXJnandoZWdya2pzZ2tyamhnd2Vqcmhnd2VqaHJnZXdqaGdyandlaHJnagp6dUVzZGFqaGZha2pzaGRrZmhzYWtkZmhoamthaHNkZ2RmaGdhc2praGRnZmtqYXNoZ2tqaGdnYXNkaHNoUWZpClRmc2RoYWhma2hpdTM0aGl1aHV1MzR5eTc4ODczeXI0ODd3ZXVyaXNrdWRyZ2p5ZzR3cjR5cmd1c3lnaHVoc2sKc1pkZnVpZ2l1MzRoMzc4eTd3cjg3d2VyeTg3eXNkdWZzdWhpdTRndWl1eWdpd2V1aHJpdXdodGl1aGl1aHE5bwpzYnQ5ODM0eTk3eXR5MzRyeWczNHV5cmdqd2hlZ3JranNna3JqaGd3ZWpyaGd3ZWpocmdld2poZ3Jqd2VocmdqCnp1RXNkYWpoZmFranNoZGtmaHNha2RmaGhqa2Foc2RnZGZoZ2FzamtoZGdma2phc2hna2poZ2dhc2Roc2hRZmkKVGZzZGhhaGZraGl1MzRoaXVodXUzNHl5Nzg4NzN5cjQ4N3dldXJpc2t1ZHJnanlnNHdyNHlyZ3VzeWdodWhzawpzWmRmdWlnaXUzNGgzNzh5N3dyODd3ZXJ5ODd5c2R1ZnN1aGl1NGd1aXV5Z2l3ZXVocml1d2h0aXVoaXVocTlvCnNidDk4MzR5OTd5dHkzNHJ5ZzM0dXlyZ2p3aGVncmtqc2drcmpoZ3dlanJoMzQ5ODc1OTg0Mzc5NzQ1OCsrKysKLS0tLS1FTkQgRU5DUllQVEVEIFBSSVZBVEUgS0VZLS0tLS0KCg==\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/LS0t_n\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"LS0tLS1CRUdJTiBSU0EgUFJJVkFURSBLRVktLS0tLQpQcm9jLVR5cGU6IDQsRU5DUllQVEVECkRFSy1JbmZvOiBBRVMtMTI4LUNCQywwMzQ1NzY3MzQ1NjgzNjIzNDc2NTM3NDY1ODM2NDgyNgoKenVFc2RhamhmYWtqc2hka2Zoc2FrZGZoaGprYWhzZGdkZmhnYXNqa2hkZ2ZramFzaGdramhnZ2FzZGhzaFFmaQpUZnNkaGFoZmtoaXUzNGhpdWh1dTM0eXk3ODg3M3lyNDg3d2V1cmlza3VkcmdqeWc0d3I0eXJndXN5Z2h1aHNrCnNaZGZ1aWdpdTM0aDM3OHk3d3I4N3dlcnk4N3lzZHVmc3VoaXU0Z3VpdXlnaXdldWhyaXV3aHRpdWhpdWhxOW8Kc2J0OTgzNHk5N3l0eTM0cnlnMzR1eXJnandoZWdya2pzZ2tyamhnd2Vqcmhnd2VqaHJnZXdqaGdyandlaHJnagotLS0tLUVORCBSU0EgUFJJVkFURSBLRVktLS0tLQoKLS0tLS1CRUdJTiBFTkNSWVBURUQgUFJJVkFURSBLRVktLS0tLQpNSUlGTFRCWEJna3Foa2lHOXcwQkJRMHdTakFwQmc5MzQ3OTU4MzI4NDAyMzc5ODIzOTg2ODIzNzY4NzIzNDU2Cnp1RXNkYWpoZmFranNoZGtmaHNha2RmaGhqa2Foc2RnZGZoZ2FzamtoZGdma2phc2hna2poZ2dhc2Roc2hRZmkKVGZzZGhhaGZraGl1MzRoaXVodXUzNHl5Nzg4NzN5cjQ4N3dldXJpc2t1ZHJnanlnNHdyNHlyZ3VzeWdodWhzawpzWmRmdWlnaXUzNGgzNzh5N3dyODd3ZXJ5ODd5c2R1ZnN1aGl1NGd1aXV5Z2l3ZXVocml1d2h0aXVoaXVocTlvCnNidDk4MzR5OTd5dHkzNHJ5ZzM0dXlyZ2p3aGVncmtqc2drcmpoZ3dlanJoZ3dlamhyZ2V3amhncmp3ZWhyZ2oKenVFc2RhamhmYWtqc2hka2Zoc2FrZGZoaGprYWhzZGdkZmhnYXNqa2hkZ2ZramFzaGdramhnZ2FzZGhzaFFmaQpUZnNkaGFoZmtoaXUzNGhpdWh1dTM0eXk3ODg3M3lyNDg3d2V1cmlza3VkcmdqeWc0d3I0eXJndXN5Z2h1aHNrCnNaZGZ1aWdpdTM0aDM3OHk3d3I4N3dlcnk4N3lzZHVmc3VoaXU0Z3VpdXlnaXdldWhyaXV3aHRpdWhpdWhxOW8Kc2J0OTgzNHk5N3l0eTM0cnlnMzR1eXJnandoZWdya2pzZ2tyamhnd2Vqcmhnd2VqaHJnZXdqaGdyandlaHJnagp6dUVzZGFqaGZha2pzaGRrZmhzYWtkZmhoamthaHNkZ2RmaGdhc2praGRnZmtqYXNoZ2tqaGdnYXNkaHNoUWZpClRmc2RoYWhma2hpdTM0aGl1aHV1MzR5eTc4ODczeXI0ODd3ZXVyaXNrdWRyZ2p5ZzR3cjR5cmd1c3lnaHVoc2sKc1pkZnVpZ2l1MzRoMzc4eTd3cjg3d2VyeTg3eXNkdWZzdWhpdTRndWl1eWdpd2V1aHJpdXdodGl1aGl1aHE5bwpzYnQ5ODM0eTk3eXR5MzRyeWczNHV5cmdqd2hlZ3JranNna3JqaGd3ZWpyaGd3ZWpocmdld2poZ3Jqd2VocmdqCnp1RXNkYWpoZmFranNoZGtmaHNha2RmaGhqa2Foc2RnZGZoZ2FzamtoZGdma2phc2hna2poZ2dhc2Roc2hRZmkKVGZzZGhhaGZraGl1MzRoaXVodXUzNHl5Nzg4NzN5cjQ4N3dldXJpc2t1ZHJnanlnNHdyNHlyZ3VzeWdodWhzawpzWmRmdWlnaXUzNGgzNzh5N3dyODd3ZXJ5ODd5c2R1ZnN1aGl1NGd1aXV5Z2l3ZXVocml1d2h0aXVoaXVocTlvCnNidDk4MzR5OTd5dHkzNHJ5ZzM0dXlyZ2p3aGVncmtqc2drcmpoZ3dlanJoZ3dlamhyZ2V3amhncmp3ZWhyZ2oKenVFc2RhamhmYWtqc2hka2Zoc2FrZGZoaGprYWhzZGdkZmhnYXNqa2hkZ2ZramFzaGdramhnZ2FzZGhzaFFmaQpUZnNkaGFoZmtoaXUzNGhpdWh1dTM0eXk3ODg3M3lyNDg3d2V1cmlza3VkcmdqeWc0d3I0eXJndXN5Z2h1aHNrCnNaZGZ1aWdpdTM0aDM3OHk3d3I4N3dlcnk4N3lzZHVmc3VoaXU0Z3VpdXlnaXdldWhyaXV3aHRpdWhpdWhxOW8Kc2J0OTgzNHk5N3l0eTM0cnlnMzR1eXJnandoZWdya2pzZ2tyamhnd2Vqcmhnd2VqaHJnZXdqaGdyandlaHJnagp6dUVzZGFqaGZha2pzaGRrZmhzYWtkZmhoamthaHNkZ2RmaGdhc2praGRnZmtqYXNoZ2tqaGdnYXNkaHNoUWZpClRmc2RoYWhma2hpdTM0aGl1aHV1MzR5eTc4ODczeXI0ODd3ZXVyaXNrdWRyZ2p5ZzR3cjR5cmd1c3lnaHVoc2sKc1pkZnVpZ2l1MzRoMzc4eTd3cjg3d2VyeTg3eXNkdWZzdWhpdTRndWl1eWdpd2V1aHJpdXdodGl1aGl1aHE5bwpzYnQ5ODM0eTk3eXR5MzRyeWczNHV5cmdqd2hlZ3JranNna3JqaGd3ZWpyaGd3ZWpocmdld2poZ3Jqd2VocmdqCnp1RXNkYWpoZmFranNoZGtmaHNha2RmaGhqa2Foc2RnZGZoZ2FzamtoZGdma2phc2hna2poZ2dhc2Roc2hRZmkKVGZzZGhhaGZraGl1MzRoaXVodXUzNHl5Nzg4NzN5cjQ4N3dldXJpc2t1ZHJnanlnNHdyNHlyZ3VzeWdodWhzawpzWmRmdWlnaXUzNGgzNzh5N3dyODd3ZXJ5ODd5c2R1ZnN1aGl1NGd1aXV5Z2l3ZXVocml1d2h0aXVoaXVocTlvCnNidDk4MzR5OTd5dHkzNHJ5ZzM0dXlyZ2p3aGVncmtqc2drcmpoZ3dlanJoMzQ5ODc1OTg0Mzc5NzQ1OCsrKysKLS0tLS1FTkQgRU5DUllQVEVEIFBSSVZBVEUgS0VZLS0tLS0KCg\",\n                \"value_start\": 0,\n                \"value_end\": 3150,\n                \"entropy\": 5.3348\n            }\n        ]\n    },\n    {\n        \"rule\": \"BASE64 encoded PEM Private Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"ZGVidWdDb250YWluZXI6CiAgaW1hZ2U6CiAgICB2ZXJzaW9uOiBpbnN0YWxsLWRlYnVnLXZlcnNpb24KaGVhcnRiZWF0U2NoZWR1bGU6IDEgMiAzIDQgNQppZGVudGl0eToKICBpc3N1ZXI6CiAgICB0bHM6CiAgICAgIGNydFBFTTogfAogICAgICAgIC0tLS0tQkVHSU4gQ0VSVElGSUNBVEUtLS0tLQogICAgICAgIE1JSUJ3RENDQVdlZ0F3SUJBZ0lSQUpSSWdaOFJ0TzhFd2cxWGVwZjhUNDR3Q2dZSUtvWkl6ajBFQXdJd0tURW4KICAgICAgICBna2RqaHNsa2Roa2dkamhza2pkZmtkamhna2RqaGtkZmpibmtkZm52amtoYnZqaGRiZGpmaGJmamhiZGZNRGd5CiAgICAgICAgbGZrZGprc2xkamdrbGpkZmtnamhkZmtnamhzZGZrbGdqc2RrbGpmZ2hsa2Rmamhsa3NkZmpsa3Nkamt1YkdsdQogICAgICAgIGxzZGpoZnY1NDZtZmRza2dqaGRmamtoZ2tqZGhramhkZmtqZ2hrZGZqaGdramRmaGtqZGZoZ2tqZmRoZ2tqRnAKICAgICAgICBmY1JkZmdoZmRnbWRuZ2tqeGRuYnZqbmN2a2pua2pkbmdram5mZGtqYmt2YmpibnZja2puYmpuZGRmZ2ZkZ3QxCiAgICAgICAgMmJsa2puZ2JramhnbGpkZmxnaGtsamRmbmdqZGZuZ25sZGZrbWxrZGZqZ21sZGZrZ21sa2ZkbWdsa2RtTUFZQgogICAgICAgIEFmOENmZ2xibmpuZGJqZG5rZmpuZ2tkbmZnamtsbmRranZuYmlqZGlmamdpZXJqZ29pamRmbGtneGxrbmdrQ0MKICAgICAgICBIbWxkZmtmamdvaWRmamdnam5kamtmbmdranNkbnNram5qNXNiMk5oYkRBS0JnZ3Foa2pPUFFRREFnTkhBREJFCiAgICAgICAgQWlBdG9mZ2toOTk0NXU4OXV5OWU4dWdodWRmaGd1aGRmZmhpbGd1aGl1aGtkaGZna2pkaGZramhya2piazFwNQogICAgICAgIDVrZmRsc2lmaHU0aHRpdWg0aXR1aGtqaGt6az0KICAgICAgICAtLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCiAgICAgIGtleVBFTTogfAogICAgICAgIC0tLS0tQkVHSU4gRUMgUFJJVkFURSBLRVktLS0tLQogICAgICAgIE1IY0NBUUVFSUFBZThuZmJ6WnU5Yy9PQjJnZGZramdsaWRma2pibnhqa2hiZ2hiZmdoYmpoYmRqaGJzanhjazkKICAgICAgICBvZGlmanZpamRmdm9pamRmb2l2amRmb2lqZGpnbmZka2pnbmtqZGZna2pkZmtqZ2JrampoYmtnSmpYZ1p0TTcyCiAgICAgICAgZGZpb2hndXhoYmtqZ25rbGpkZm5rbGpkbmdram5rZ2puKz09CiAgICAgICAgLS0tLS1FTkQgRUMgUFJJVkFURSBLRVktLS0tLQppZGVudGl0eVRydXN0QW5jaG9yc1BFTTogfAogIC0tLS0tQkVHSU4gQ0VSVElGSUNBVEUtLS0tLQogIE1JSUJ3VENDQVdhZ0F3SUJBZ0lRZURacDVsRGFJeWdRNVVmTUtaZGZuZ2puZGZrZ2puZmRramdua2RqbmtkamYKICBkZmtuZ2tqYmtqZGZic2tqYm5ma2puc2RrZ2psbnhrY2pibmt4am5ja2pnbmtqbmdreGpuZ2tqeGNua2dqbkk0CiAgTURkc2xrZmpvaWVyOGhzZGY4ZmdoZzc4NGg5OHQ5OGVydWhpdXNkaGtmZ2hoc2poYmdqa2hzdmpmaHZzYVc1cgogIFpYNDhrbmdraGdkZmtmamdic2RoYmpoYnNkaGJoeGJkZmxqZ2xkZmtqZ2tqaGpmZGdramJka2pmYmdrYmM3MFoKICBsZGZsa2pna2xqZGZoZmRrZ2poZXJramJnaGZia2dqYmtqbmtqeGNua2pmbmtnam5ma2pnbmtmam43SEJXVUM0CiAgdWZkZ2tqZGZpZ2hmdWRoZ2l1dWRoYm5ma25iZ3NibmRma2poc2tqa3NqbmdranNibmdramJrZ2pieGtqYmdFQgogIC9zZGZiaHNiamZoYmVod3did2poZmJqc2hiZGpoYnppdWhya2hiZXJoYnNqaGJkZmpoYmpoYmpoc2JqaGJzcysKICBsZGpmbGhranNka2ZqaHNrZGpma2pzZG5ma2puc2RramZuc2Rram5ranhjbmtqdm5ram5kc2Z3bGVra0FNRVlDCiAgSWVmb2h3a3VlaGZranNkaGZranNkaGtmamhzZGtqZmhrc2RqaGZranNkaGZranNkaGRramZoc2trZGpmaGpDOAogIHNkZnNkaHlnZmpoZ2RqaGZnanNoZGdmamhncXIKICAtLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCmxpbmtlcmRWZXJzaW9uOiBpbnN0YWxsLWNvbnRyb2wtcGxhbmUtdmVyc2lvbgpwb2xpY3lWYWxpZGF0b3I6CiAgY2FCdW5kbGU6IHBvbGljeSB2YWxpZGF0b3IgQ0EgYnVuZGxlCiAgZXh0ZXJuYWxTZWNyZXQ6IHRydWUKcHJvZmlsZVZhbGlkYXRvcjoKICBjYUJ1bmRsZTogcHJvZmlsZSB2YWxpZGF0b3IgQ0EgYnVuZGxlCiAgZXh0ZXJuYWxTZWNyZXQ6IHRydWUKcHJveHk6CiAgaW1hZ2U6CiAgICB2ZXJzaW9uOiBpbnN0YWxsLXByb3h5LXZlcnNpb24KcHJveHlJbml0OgogIGlnbm9yZUluYm91bmRQb3J0czogMjIsMzMwNi02MTkyCiAgaWdub3JlT3V0Ym91bmRQb3J0czogIjMyNzgiCnByb3h5SW5qZWN0b3I6CiAgY2FCdW5kbGU6IHByb3h5IGluamVjdG9yIENBIGJ1bmRsZQogIGV4dGVybmFsU2VjcmV0OiB0cnVlCg==\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/LS0t_p\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"ZGVidWdDb250YWluZXI6CiAgaW1hZ2U6CiAgICB2ZXJzaW9uOiBpbnN0YWxsLWRlYnVnLXZlcnNpb24KaGVhcnRiZWF0U2NoZWR1bGU6IDEgMiAzIDQgNQppZGVudGl0eToKICBpc3N1ZXI6CiAgICB0bHM6CiAgICAgIGNydFBFTTogfAogICAgICAgIC0tLS0tQkVHSU4gQ0VSVElGSUNBVEUtLS0tLQogICAgICAgIE1JSUJ3RENDQVdlZ0F3SUJBZ0lSQUpSSWdaOFJ0TzhFd2cxWGVwZjhUNDR3Q2dZSUtvWkl6ajBFQXdJd0tURW4KICAgICAgICBna2RqaHNsa2Roa2dkamhza2pkZmtkamhna2RqaGtkZmpibmtkZm52amtoYnZqaGRiZGpmaGJmamhiZGZNRGd5CiAgICAgICAgbGZrZGprc2xkamdrbGpkZmtnamhkZmtnamhzZGZrbGdqc2RrbGpmZ2hsa2Rmamhsa3NkZmpsa3Nkamt1YkdsdQogICAgICAgIGxzZGpoZnY1NDZtZmRza2dqaGRmamtoZ2tqZGhramhkZmtqZ2hrZGZqaGdramRmaGtqZGZoZ2tqZmRoZ2tqRnAKICAgICAgICBmY1JkZmdoZmRnbWRuZ2tqeGRuYnZqbmN2a2pua2pkbmdram5mZGtqYmt2YmpibnZja2puYmpuZGRmZ2ZkZ3QxCiAgICAgICAgMmJsa2puZ2JramhnbGpkZmxnaGtsamRmbmdqZGZuZ25sZGZrbWxrZGZqZ21sZGZrZ21sa2ZkbWdsa2RtTUFZQgogICAgICAgIEFmOENmZ2xibmpuZGJqZG5rZmpuZ2tkbmZnamtsbmRranZuYmlqZGlmamdpZXJqZ29pamRmbGtneGxrbmdrQ0MKICAgICAgICBIbWxkZmtmamdvaWRmamdnam5kamtmbmdranNkbnNram5qNXNiMk5oYkRBS0JnZ3Foa2pPUFFRREFnTkhBREJFCiAgICAgICAgQWlBdG9mZ2toOTk0NXU4OXV5OWU4dWdodWRmaGd1aGRmZmhpbGd1aGl1aGtkaGZna2pkaGZramhya2piazFwNQogICAgICAgIDVrZmRsc2lmaHU0aHRpdWg0aXR1aGtqaGt6az0KICAgICAgICAtLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCiAgICAgIGtleVBFTTogfAogICAgICAgIC0tLS0tQkVHSU4gRUMgUFJJVkFURSBLRVktLS0tLQogICAgICAgIE1IY0NBUUVFSUFBZThuZmJ6WnU5Yy9PQjJnZGZramdsaWRma2pibnhqa2hiZ2hiZmdoYmpoYmRqaGJzanhjazkKICAgICAgICBvZGlmanZpamRmdm9pamRmb2l2amRmb2lqZGpnbmZka2pnbmtqZGZna2pkZmtqZ2JrampoYmtnSmpYZ1p0TTcyCiAgICAgICAgZGZpb2hndXhoYmtqZ25rbGpkZm5rbGpkbmdram5rZ2puKz09CiAgICAgICAgLS0tLS1FTkQgRUMgUFJJVkFURSBLRVktLS0tLQppZGVudGl0eVRydXN0QW5jaG9yc1BFTTogfAogIC0tLS0tQkVHSU4gQ0VSVElGSUNBVEUtLS0tLQogIE1JSUJ3VENDQVdhZ0F3SUJBZ0lRZURacDVsRGFJeWdRNVVmTUtaZGZuZ2puZGZrZ2puZmRramdua2RqbmtkamYKICBkZmtuZ2tqYmtqZGZic2tqYm5ma2puc2RrZ2psbnhrY2pibmt4am5ja2pnbmtqbmdreGpuZ2tqeGNua2dqbkk0CiAgTURkc2xrZmpvaWVyOGhzZGY4ZmdoZzc4NGg5OHQ5OGVydWhpdXNkaGtmZ2hoc2poYmdqa2hzdmpmaHZzYVc1cgogIFpYNDhrbmdraGdkZmtmamdic2RoYmpoYnNkaGJoeGJkZmxqZ2xkZmtqZ2tqaGpmZGdramJka2pmYmdrYmM3MFoKICBsZGZsa2pna2xqZGZoZmRrZ2poZXJramJnaGZia2dqYmtqbmtqeGNua2pmbmtnam5ma2pnbmtmam43SEJXVUM0CiAgdWZkZ2tqZGZpZ2hmdWRoZ2l1dWRoYm5ma25iZ3NibmRma2poc2tqa3NqbmdranNibmdramJrZ2pieGtqYmdFQgogIC9zZGZiaHNiamZoYmVod3did2poZmJqc2hiZGpoYnppdWhya2hiZXJoYnNqaGJkZmpoYmpoYmpoc2JqaGJzcysKICBsZGpmbGhranNka2ZqaHNrZGpma2pzZG5ma2puc2RramZuc2Rram5ranhjbmtqdm5ram5kc2Z3bGVra0FNRVlDCiAgSWVmb2h3a3VlaGZranNkaGZranNkaGtmamhzZGtqZmhrc2RqaGZranNkaGZranNkaGRramZoc2trZGpmaGpDOAogIHNkZnNkaHlnZmpoZ2RqaGZnanNoZGdmamhncXIKICAtLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCmxpbmtlcmRWZXJzaW9uOiBpbnN0YWxsLWNvbnRyb2wtcGxhbmUtdmVyc2lvbgpwb2xpY3lWYWxpZGF0b3I6CiAgY2FCdW5kbGU6IHBvbGljeSB2YWxpZGF0b3IgQ0EgYnVuZGxlCiAgZXh0ZXJuYWxTZWNyZXQ6IHRydWUKcHJvZmlsZVZhbGlkYXRvcjoKICBjYUJ1bmRsZTogcHJvZmlsZSB2YWxpZGF0b3IgQ0EgYnVuZGxlCiAgZXh0ZXJuYWxTZWNyZXQ6IHRydWUKcHJveHk6CiAgaW1hZ2U6CiAgICB2ZXJzaW9uOiBpbnN0YWxsLXByb3h5LXZlcnNpb24KcHJveHlJbml0OgogIGlnbm9yZUluYm91bmRQb3J0czogMjIsMzMwNi02MTkyCiAgaWdub3JlT3V0Ym91bmRQb3J0czogIjMyNzgiCnByb3h5SW5qZWN0b3I6CiAgY2FCdW5kbGU6IHByb3h5IGluamVjdG9yIENBIGJ1bmRsZQogIGV4dGVybmFsU2VjcmV0OiB0cnVlCg\",\n                \"value_start\": 0,\n                \"value_end\": 3078,\n                \"entropy\": 5.49785\n            }\n        ]\n    },\n    {\n        \"rule\": \"Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"        final byte [] pkey = Base64.getMimeDecoder().decode(\",\n                \"line_num\": 35,\n                \"path\": \"./tests/samples/Sample.java\",\n                \"info\": \"\",\n                \"variable\": \"pkey\",\n                \"variable_start\": 22,\n                \"variable_end\": 26,\n                \"value\": \"Base64.getMimeDecoder().decode(\",\n                \"value_start\": 29,\n                \"value_end\": 60,\n                \"entropy\": 3.90883\n            }\n        ]\n    },\n    {\n        \"rule\": \"Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"        final byte [] pkey = Base64.getMimeDecoder().decode(text);\",\n                \"line_num\": 58,\n                \"path\": \"./tests/samples/Sample.java\",\n                \"info\": \"\",\n                \"variable\": \"pkey\",\n                \"variable_start\": 22,\n                \"variable_end\": 26,\n                \"value\": \"Base64.getMimeDecoder().decode(text)\",\n                \"value_start\": 29,\n                \"value_end\": 65,\n                \"entropy\": 3.96132\n            }\n        ]\n    },\n    {\n        \"rule\": \"Akamai Credentials\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"T: akab-tblc7jkffv3wfxh3-h5stbzeswb3v4kj3\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/akamai\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"akab-tblc7jkffv3wfxh3-h5stbzeswb3v4kj3\",\n                \"value_start\": 3,\n                \"value_end\": 41,\n                \"entropy\": 4.15557\n            }\n        ]\n    },\n    {\n        \"rule\": \"Anthropic API Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"sk-ant-api03-gigCtxD_mMUnJuUOwVtpBmPFdG0-ybrcBb1EcgpJblpcwh7tpFu-DIChOfbCnT7NgKcobiQ5aQA1oxlu3aJ-HgvUeZoSew\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/antrhropic\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"sk-ant-api03-gigCtxD_mMUnJuUOwVtpBmPFdG0-ybrcBb1EcgpJblpcwh7tpFu-DIChOfbCnT7NgKcobiQ5aQA1oxlu3aJ-HgvUeZoSew\",\n                \"value_start\": 0,\n                \"value_end\": 107,\n                \"entropy\": 5.42952\n            }\n        ]\n    },\n    {\n        \"rule\": \"Anthropic API Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"sk-ant-api03-gigCtxD_mMUnJuUOwVtpBmPFdG0-ybrcBb1EcgpJblpcwh7tpFu-DIChOfbCnT7NgKcobiQ5aQA1oxlu3aJ-Hg76543210\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/antrhropic\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"sk-ant-api03-gigCtxD_mMUnJuUOwVtpBmPFdG0-ybrcBb1EcgpJblpcwh7tpFu-DIChOfbCnT7NgKcobiQ5aQA1oxlu3aJ-Hg76543210\",\n                \"value_start\": 0,\n                \"value_end\": 107,\n                \"entropy\": 5.40378\n            }\n        ]\n    },\n    {\n        \"rule\": \"API\",\n        \"severity\": \"low\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"gi_reo_gi_api = \\\"DvMB_glvwjlEQ_uqIyn8k\\\";\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/api.toml\",\n                \"info\": \"\",\n                \"variable\": \"gi_reo_gi_api\",\n                \"variable_start\": 0,\n                \"variable_end\": 13,\n                \"value\": \"DvMB_glvwjlEQ_uqIyn8k\",\n                \"value_start\": 17,\n                \"value_end\": 38,\n                \"entropy\": 4.1066\n            }\n        ]\n    },\n    {\n        \"rule\": \"Atlassian PAT token\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"ATLASSIAN = \\\"ATATT3xFfGF0vNZ7oy6ON4KrWEzKEu96n-r2bCLOOcdOADizvJqPd89yKyP853uTZSflBi1Lk1zD460BqyMTa08VUEy8-oOzr1esg3j_mZKZwAELnRkCDTJZXhHsv5jaWHyAj4LRL-6h8LI-5MrYs4l7xXSaY8odQxDKJB4hDvdkmuh61xea2jE=00203E68\\\"\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/atlassian_pat\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"ATATT3xFfGF0vNZ7oy6ON4KrWEzKEu96n-r2bCLOOcdOADizvJqPd89yKyP853uTZSflBi1Lk1zD460BqyMTa08VUEy8-oOzr1esg3j_mZKZwAELnRkCDTJZXhHsv5jaWHyAj4LRL-6h8LI-5MrYs4l7xXSaY8odQxDKJB4hDvdkmuh61xea2jE=00203E68\",\n                \"value_start\": 13,\n                \"value_end\": 205,\n                \"entropy\": 5.77034\n            }\n        ]\n    },\n    {\n        \"rule\": \"Atlassian PAT token\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"escaped_backslash = ATATT3xFfGF0vNZ7oy6ON4KrWEzKEu96n-r2bCLOOcdOADizvJqPd89yKyP853uTZSflBi1Lk1zD460BqyMTa08VUEy8-oOzr1esg3j_mZKZwAELnRkCDTJZXhHsv5jaWHyAj4LRL-6h8LI-5MrYs4l7xXSaY8odQxDKJB4hDvdkmuh61xea2jE\\\\=00203E68\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/atlassian_pat\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"ATATT3xFfGF0vNZ7oy6ON4KrWEzKEu96n-r2bCLOOcdOADizvJqPd89yKyP853uTZSflBi1Lk1zD460BqyMTa08VUEy8-oOzr1esg3j_mZKZwAELnRkCDTJZXhHsv5jaWHyAj4LRL-6h8LI-5MrYs4l7xXSaY8odQxDKJB4hDvdkmuh61xea2jE\\\\=00203E68\",\n                \"value_start\": 20,\n                \"value_end\": 213,\n                \"entropy\": 5.78724\n            }\n        ]\n    },\n    {\n        \"rule\": \"Atlassian PAT token\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"url_escaped_capital = ATATT3xFfGF0vNZ7oy6ON4KrWEzKEu96n-r2bCLOOcdOADizvJqPd89yKyP853uTZSflBi1Lk1zD460BqyMTa08VUEy8-oOzr1esg3j_mZKZwAELnRkCDTJZXhHsv5jaWHyAj4LRL-6h8LI-5MrYs4l7xXSaY8odQxDKJB4hDvdkmuh61xea2jE%3D00203E68\",\n                \"line_num\": 3,\n                \"path\": \"./tests/samples/atlassian_pat\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"ATATT3xFfGF0vNZ7oy6ON4KrWEzKEu96n-r2bCLOOcdOADizvJqPd89yKyP853uTZSflBi1Lk1zD460BqyMTa08VUEy8-oOzr1esg3j_mZKZwAELnRkCDTJZXhHsv5jaWHyAj4LRL-6h8LI-5MrYs4l7xXSaY8odQxDKJB4hDvdkmuh61xea2jE%3D00203E68\",\n                \"value_start\": 22,\n                \"value_end\": 216,\n                \"entropy\": 5.76529\n            }\n        ]\n    },\n    {\n        \"rule\": \"Atlassian PAT token\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"url_escaped_lowercase = ATATT3xFfGF0vNZ7oy6ON4KrWEzKEu96n-r2bCLOOcdOADizvJqPd89yKyP853uTZSflBi1Lk1zD460BqyMTa08VUEy8-oOzr1esg3j_mZKZwAELnRkCDTJZXhHsv5jaWHyAj4LRL-6h8LI-5MrYs4l7xXSaY8odQxDKJB4hDvdkmuh61xea2jE%3d00203E68\",\n                \"line_num\": 4,\n                \"path\": \"./tests/samples/atlassian_pat\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"ATATT3xFfGF0vNZ7oy6ON4KrWEzKEu96n-r2bCLOOcdOADizvJqPd89yKyP853uTZSflBi1Lk1zD460BqyMTa08VUEy8-oOzr1esg3j_mZKZwAELnRkCDTJZXhHsv5jaWHyAj4LRL-6h8LI-5MrYs4l7xXSaY8odQxDKJB4hDvdkmuh61xea2jE%3d00203E68\",\n                \"value_start\": 24,\n                \"value_end\": 218,\n                \"entropy\": 5.76679\n            }\n        ]\n    },\n    {\n        \"rule\": \"Auth\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"\\\"kerberos_authentication\\\": \\\"YI7IB6wYJgaMgHAgIKoZI2AQBuIh2cSA0IB1qA\\\"\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/auth.hs\",\n                \"info\": \"\",\n                \"variable\": \"kerberos_authentication\",\n                \"variable_start\": 1,\n                \"variable_end\": 24,\n                \"value\": \"YI7IB6wYJgaMgHAgIKoZI2AQBuIh2cSA0IB1qA\",\n                \"value_start\": 28,\n                \"value_end\": 66,\n                \"entropy\": 4.27373\n            }\n        ]\n    },\n    {\n        \"rule\": \"Auth\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"\\\"authorization\\\": \\\"aMgHAgIKhwLgGq02iQoZI1AQBuOh4cSAQ8B1qA\\\"\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/auth.hs\",\n                \"info\": \"\",\n                \"variable\": \"authorization\",\n                \"variable_start\": 1,\n                \"variable_end\": 14,\n                \"value\": \"aMgHAgIKhwLgGq02iQoZI1AQBuOh4cSAQ8B1qA\",\n                \"value_start\": 18,\n                \"value_end\": 56,\n                \"entropy\": 4.52399\n            }\n        ]\n    },\n    {\n        \"rule\": \"Auth\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"headers = {authorization: /oauth_signature=\\\"JgEWaL6V6eM%2FFb9wuXG4I3IB6wY%3D\\\"/, content_type: 'application/json; charset=utf-8'}\",\n                \"line_num\": 3,\n                \"path\": \"./tests/samples/auth.hs\",\n                \"info\": \"\",\n                \"variable\": \"authorization\",\n                \"variable_start\": 11,\n                \"variable_end\": 24,\n                \"value\": \"/oauth_signature=\",\n                \"value_start\": 26,\n                \"value_end\": 43,\n                \"entropy\": 3.73452\n            }\n        ]\n    },\n    {\n        \"rule\": \"Auth\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"Authorization: NTLM TlRMTUAAABABoITVNIAAZI1AQBuOh4cSAQ8B1A=\",\n                \"line_num\": 4,\n                \"path\": \"./tests/samples/auth.hs\",\n                \"info\": \"\",\n                \"variable\": \"Authorization\",\n                \"variable_start\": 0,\n                \"variable_end\": 13,\n                \"value\": \"TlRMTUAAABABoITVNIAAZI1AQBuOh4cSAQ8B1A=\",\n                \"value_start\": 20,\n                \"value_end\": 59,\n                \"entropy\": 4.00235\n            }\n        ]\n    },\n    {\n        \"rule\": \"Bearer Authorization\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"Authorization: NTLM TlRMTUAAABABoITVNIAAZI1AQBuOh4cSAQ8B1A=\",\n                \"line_num\": 4,\n                \"path\": \"./tests/samples/auth.hs\",\n                \"info\": \"\",\n                \"variable\": \"NTLM\",\n                \"variable_start\": 15,\n                \"variable_end\": 19,\n                \"value\": \"TlRMTUAAABABoITVNIAAZI1AQBuOh4cSAQ8B1A=\",\n                \"value_start\": 20,\n                \"value_end\": 59,\n                \"entropy\": 4.00235\n            }\n        ]\n    },\n    {\n        \"rule\": \"Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"AUTH_TOKEN=<an authorization token>\",\n                \"line_num\": 6,\n                \"path\": \"./tests/samples/auth_n.template\",\n                \"info\": \"\",\n                \"variable\": \"AUTH_TOKEN\",\n                \"variable_start\": 0,\n                \"variable_end\": 10,\n                \"value\": \"<an authorization token>\",\n                \"value_start\": 11,\n                \"value_end\": 35,\n                \"entropy\": 3.62581\n            }\n        ]\n    },\n    {\n        \"rule\": \"Auth\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"AUTH_TOKEN=<an authorization token>\",\n                \"line_num\": 6,\n                \"path\": \"./tests/samples/auth_n.template\",\n                \"info\": \"\",\n                \"variable\": \"AUTH_TOKEN\",\n                \"variable_start\": 0,\n                \"variable_end\": 10,\n                \"value\": \"<an authorization token>\",\n                \"value_start\": 11,\n                \"value_end\": 35,\n                \"entropy\": 3.62581\n            }\n        ]\n    },\n    {\n        \"rule\": \"Auth\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"curl -H \\\"Authorization: Basic R2hyZG5oYzpycWVpIGVuZ2xiZg==\\\" http://localhost:8080/.\",\n                \"line_num\": 8,\n                \"path\": \"./tests/samples/auth_n.template\",\n                \"info\": \"\",\n                \"variable\": \"Authorization\",\n                \"variable_start\": 9,\n                \"variable_end\": 22,\n                \"value\": \"R2hyZG5oYzpycWVpIGVuZ2xiZg==\",\n                \"value_start\": 30,\n                \"value_end\": 58,\n                \"entropy\": 4.20897\n            }\n        ]\n    },\n    {\n        \"rule\": \"Basic Authorization\",\n        \"severity\": \"medium\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"curl -H \\\"Authorization: Basic R2hyZG5oYzpycWVpIGVuZ2xiZg==\\\" http://localhost:8080/.\",\n                \"line_num\": 8,\n                \"path\": \"./tests/samples/auth_n.template\",\n                \"info\": \"\",\n                \"variable\": \"Basic\",\n                \"variable_start\": 24,\n                \"variable_end\": 29,\n                \"value\": \"R2hyZG5oYzpycWVpIGVuZ2xiZg==\",\n                \"value_start\": 30,\n                \"value_end\": 58,\n                \"entropy\": 4.20897\n            }\n        ]\n    },\n    {\n        \"rule\": \"Auth\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"curl -H \\\"Authorization: Bearer eyJGRpVu1c2VzY2-823r_db32hbf4W1lbj\\\" http://localhost:8080/.\",\n                \"line_num\": 9,\n                \"path\": \"./tests/samples/auth_n.template\",\n                \"info\": \"\",\n                \"variable\": \"Authorization\",\n                \"variable_start\": 9,\n                \"variable_end\": 22,\n                \"value\": \"eyJGRpVu1c2VzY2-823r_db32hbf4W1lbj\",\n                \"value_start\": 31,\n                \"value_end\": 65,\n                \"entropy\": 4.53585\n            }\n        ]\n    },\n    {\n        \"rule\": \"Bearer Authorization\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"curl -H \\\"Authorization: Bearer eyJGRpVu1c2VzY2-823r_db32hbf4W1lbj\\\" http://localhost:8080/.\",\n                \"line_num\": 9,\n                \"path\": \"./tests/samples/auth_n.template\",\n                \"info\": \"\",\n                \"variable\": \"Bearer\",\n                \"variable_start\": 24,\n                \"variable_end\": 30,\n                \"value\": \"eyJGRpVu1c2VzY2-823r_db32hbf4W1lbj\",\n                \"value_start\": 31,\n                \"value_end\": 65,\n                \"entropy\": 4.53585\n            }\n        ]\n    },\n    {\n        \"rule\": \"AWS Client ID\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"The items are AKIAGIREOGIAWSKEY123,AKIAGIREOGIAWSKEY45X,A3T1DJ4IS97DLLTH2SZ3\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/aws_client_id\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"A3T1DJ4IS97DLLTH2SZ3\",\n                \"value_start\": 56,\n                \"value_end\": 76,\n                \"entropy\": 3.82193\n            }\n        ]\n    },\n    {\n        \"rule\": \"AWS Client ID\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"The items are AKIAGIREOGIAWSKEY123,AKIAGIREOGIAWSKEY45X,A3T1DJ4IS97DLLTH2SZ3\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/aws_client_id\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"AKIAGIREOGIAWSKEY123\",\n                \"value_start\": 14,\n                \"value_end\": 34,\n                \"entropy\": 3.54644\n            }\n        ]\n    },\n    {\n        \"rule\": \"AWS Multi\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"The items are AKIAGIREOGIAWSKEY123,AKIAGIREOGIAWSKEY45X,A3T1DJ4IS97DLLTH2SZ3\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/aws_client_id\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"AKIAGIREOGIAWSKEY123\",\n                \"value_start\": 14,\n                \"value_end\": 34,\n                \"entropy\": 3.54644\n            },\n            {\n                \"line\": \"filtered too: AKIALGSBKLIKEAREAL12 --access-key <xcFsdeGddSAdI/KFRS2CB/3fGCsdCYEXAMPLEKEY>\",\n                \"line_num\": 4,\n                \"path\": \"./tests/samples/aws_client_id\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"xcFsdeGddSAdI/KFRS2CB/3fGCsdCYEXAMPLEKEY\",\n                \"value_start\": 49,\n                \"value_end\": 89,\n                \"entropy\": 4.39394\n            }\n        ]\n    },\n    {\n        \"rule\": \"AWS Client ID\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"The items are AKIAGIREOGIAWSKEY123,AKIAGIREOGIAWSKEY45X,A3T1DJ4IS97DLLTH2SZ3\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/aws_client_id\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"AKIAGIREOGIAWSKEY45X\",\n                \"value_start\": 35,\n                \"value_end\": 55,\n                \"entropy\": 3.54644\n            }\n        ]\n    },\n    {\n        \"rule\": \"AWS Multi\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"The items are AKIAGIREOGIAWSKEY123,AKIAGIREOGIAWSKEY45X,A3T1DJ4IS97DLLTH2SZ3\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/aws_client_id\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"AKIAGIREOGIAWSKEY45X\",\n                \"value_start\": 35,\n                \"value_end\": 55,\n                \"entropy\": 3.54644\n            },\n            {\n                \"line\": \"filtered too: AKIALGSBKLIKEAREAL12 --access-key <xcFsdeGddSAdI/KFRS2CB/3fGCsdCYEXAMPLEKEY>\",\n                \"line_num\": 4,\n                \"path\": \"./tests/samples/aws_client_id\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"xcFsdeGddSAdI/KFRS2CB/3fGCsdCYEXAMPLEKEY\",\n                \"value_start\": 49,\n                \"value_end\": 89,\n                \"entropy\": 4.39394\n            }\n        ]\n    },\n    {\n        \"rule\": \"AWS Client ID\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"must be filtered: AKIAGIREOGIAEXAMPLE7\",\n                \"line_num\": 3,\n                \"path\": \"./tests/samples/aws_client_id\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"AKIAGIREOGIAEXAMPLE7\",\n                \"value_start\": 18,\n                \"value_end\": 38,\n                \"entropy\": 3.34644\n            }\n        ]\n    },\n    {\n        \"rule\": \"AWS Multi\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"must be filtered: AKIAGIREOGIAEXAMPLE7\",\n                \"line_num\": 3,\n                \"path\": \"./tests/samples/aws_client_id\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"AKIAGIREOGIAEXAMPLE7\",\n                \"value_start\": 18,\n                \"value_end\": 38,\n                \"entropy\": 3.34644\n            },\n            {\n                \"line\": \"filtered too: AKIALGSBKLIKEAREAL12 --access-key <xcFsdeGddSAdI/KFRS2CB/3fGCsdCYEXAMPLEKEY>\",\n                \"line_num\": 4,\n                \"path\": \"./tests/samples/aws_client_id\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"xcFsdeGddSAdI/KFRS2CB/3fGCsdCYEXAMPLEKEY\",\n                \"value_start\": 49,\n                \"value_end\": 89,\n                \"entropy\": 4.39394\n            }\n        ]\n    },\n    {\n        \"rule\": \"AWS Client ID\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"filtered too: AKIALGSBKLIKEAREAL12 --access-key <xcFsdeGddSAdI/KFRS2CB/3fGCsdCYEXAMPLEKEY>\",\n                \"line_num\": 4,\n                \"path\": \"./tests/samples/aws_client_id\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"AKIALGSBKLIKEAREAL12\",\n                \"value_start\": 14,\n                \"value_end\": 34,\n                \"entropy\": 3.24644\n            }\n        ]\n    },\n    {\n        \"rule\": \"AWS Multi\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"filtered too: AKIALGSBKLIKEAREAL12 --access-key <xcFsdeGddSAdI/KFRS2CB/3fGCsdCYEXAMPLEKEY>\",\n                \"line_num\": 4,\n                \"path\": \"./tests/samples/aws_client_id\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"AKIALGSBKLIKEAREAL12\",\n                \"value_start\": 14,\n                \"value_end\": 34,\n                \"entropy\": 3.24644\n            },\n            {\n                \"line\": \"filtered too: AKIALGSBKLIKEAREAL12 --access-key <xcFsdeGddSAdI/KFRS2CB/3fGCsdCYEXAMPLEKEY>\",\n                \"line_num\": 4,\n                \"path\": \"./tests/samples/aws_client_id\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"xcFsdeGddSAdI/KFRS2CB/3fGCsdCYEXAMPLEKEY\",\n                \"value_start\": 49,\n                \"value_end\": 89,\n                \"entropy\": 4.39394\n            }\n        ]\n    },\n    {\n        \"rule\": \"Amazon Bedrock API Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"bedrock-api-key-vZKDJRzMKwJH6ewnj9FiyoUlZemipP2t\",\n                \"line_num\": 8,\n                \"path\": \"./tests/samples/aws_client_id\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"bedrock-api-key-vZKDJRzMKwJH6ewnj9FiyoUlZemipP2t\",\n                \"value_start\": 0,\n                \"value_end\": 48,\n                \"entropy\": 4.88684\n            }\n        ]\n    },\n    {\n        \"rule\": \"Amazon Bedrock API Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"ABSKpA8zwd50pFVLlH+DeWUlP1+WQ44upInjTDDbiDdaS2IvMOcMgT//XXPzEeJvYPRozcaOxv/no3aR3p7CoHYQf9Yx3PnaQVTYO+iCyiUbinHue1+8DSAx61Froe42\",\n                \"line_num\": 9,\n                \"path\": \"./tests/samples/aws_client_id\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"ABSKpA8zwd50pFVLlH+DeWUlP1+WQ44upInjTDDbiDdaS2IvMOcMgT//XXPzEeJvYPRozcaOxv/no3aR3p7CoHYQf9Yx3PnaQVTYO+iCyiUbinHue1+8DSAx61Froe42\",\n                \"value_start\": 0,\n                \"value_end\": 128,\n                \"entropy\": 5.61388\n            }\n        ]\n    },\n    {\n        \"rule\": \"AWS Client ID\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"        \\\"AwsAccessID\\\": \\\"AKIAGIREOGIAWSKEY123\\\",\",\n                \"line_num\": 3,\n                \"path\": \"./tests/samples/aws_multi.json\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"AKIAGIREOGIAWSKEY123\",\n                \"value_start\": 24,\n                \"value_end\": 44,\n                \"entropy\": 3.54644\n            }\n        ]\n    },\n    {\n        \"rule\": \"Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"        \\\"AwsSecretKey\\\": \\\"J38YmIgn7dH6cw4W+yqoRgjsFsWvysFjfVcpCh7O9Yyv9/qNvNI\\\"\",\n                \"line_num\": 4,\n                \"path\": \"./tests/samples/aws_multi.json\",\n                \"info\": \"\",\n                \"variable\": \"AwsSecretKey\",\n                \"variable_start\": 9,\n                \"variable_end\": 21,\n                \"value\": \"J38YmIgn7dH6cw4W+yqoRgjsFsWvysFjfVcpCh7O9Yyv9/qNvNI\",\n                \"value_start\": 25,\n                \"value_end\": 76,\n                \"entropy\": 4.96135\n            }\n        ]\n    },\n    {\n        \"rule\": \"Secret\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"        \\\"AwsSecretKey\\\": \\\"J38YmIgn7dH6cw4W+yqoRgjsFsWvysFjfVcpCh7O9Yyv9/qNvNI\\\"\",\n                \"line_num\": 4,\n                \"path\": \"./tests/samples/aws_multi.json\",\n                \"info\": \"\",\n                \"variable\": \"AwsSecretKey\",\n                \"variable_start\": 9,\n                \"variable_end\": 21,\n                \"value\": \"J38YmIgn7dH6cw4W+yqoRgjsFsWvysFjfVcpCh7O9Yyv9/qNvNI\",\n                \"value_start\": 25,\n                \"value_end\": 76,\n                \"entropy\": 4.96135\n            }\n        ]\n    },\n    {\n        \"rule\": \"AWS Client ID\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"        \\\"request_url\\\": \\\"https://gireogi323.s3.amazonaws.com/x3342?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Date=203230516T251998Z&X-Amz-SignedHeaders=host&X-Amz-Expires=999999&X-Amz-Credential=AKIAGIREOGIAWSKEY323%2F21100651%2Feu-west-3%2Fs3%2Faws_dummy&X-Amz-Key=J38YmIgn7dH6cw4W1yqoRgjsFsWvysFjfVcpCh7O9Yyv9_qNvNI\\\"\",\n                \"line_num\": 28,\n                \"path\": \"./tests/samples/aws_multi.json\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"AKIAGIREOGIAWSKEY323\",\n                \"value_start\": 191,\n                \"value_end\": 211,\n                \"entropy\": 3.44644\n            }\n        ]\n    },\n    {\n        \"rule\": \"Credential\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"        \\\"request_url\\\": \\\"https://gireogi323.s3.amazonaws.com/x3342?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Date=203230516T251998Z&X-Amz-SignedHeaders=host&X-Amz-Expires=999999&X-Amz-Credential=AKIAGIREOGIAWSKEY323%2F21100651%2Feu-west-3%2Fs3%2Faws_dummy&X-Amz-Key=J38YmIgn7dH6cw4W1yqoRgjsFsWvysFjfVcpCh7O9Yyv9_qNvNI\\\"\",\n                \"line_num\": 28,\n                \"path\": \"./tests/samples/aws_multi.json\",\n                \"info\": \"\",\n                \"variable\": \"X-Amz-Credential\",\n                \"variable_start\": 174,\n                \"variable_end\": 190,\n                \"value\": \"AKIAGIREOGIAWSKEY323%2F21100651%2Feu-west-3%2Fs3%2Faws_dummy\",\n                \"value_start\": 191,\n                \"value_end\": 251,\n                \"entropy\": 4.6314\n            }\n        ]\n    },\n    {\n        \"rule\": \"Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"        \\\"request_url\\\": \\\"https://gireogi323.s3.amazonaws.com/x3342?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Date=203230516T251998Z&X-Amz-SignedHeaders=host&X-Amz-Expires=999999&X-Amz-Credential=AKIAGIREOGIAWSKEY323%2F21100651%2Feu-west-3%2Fs3%2Faws_dummy&X-Amz-Key=J38YmIgn7dH6cw4W1yqoRgjsFsWvysFjfVcpCh7O9Yyv9_qNvNI\\\"\",\n                \"line_num\": 28,\n                \"path\": \"./tests/samples/aws_multi.json\",\n                \"info\": \"\",\n                \"variable\": \"X-Amz-Key\",\n                \"variable_start\": 252,\n                \"variable_end\": 261,\n                \"value\": \"J38YmIgn7dH6cw4W1yqoRgjsFsWvysFjfVcpCh7O9Yyv9_qNvNI\",\n                \"value_start\": 262,\n                \"value_end\": 313,\n                \"entropy\": 4.96135\n            }\n        ]\n    },\n    {\n        \"rule\": \"AWS S3 Bucket\",\n        \"severity\": \"info\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"        \\\"request_url\\\": \\\"https://gireogi323.s3.amazonaws.com/x3342?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Date=203230516T251998Z&X-Amz-SignedHeaders=host&X-Amz-Expires=999999&X-Amz-Credential=AKIAGIREOGIAWSKEY323%2F21100651%2Feu-west-3%2Fs3%2Faws_dummy&X-Amz-Key=J38YmIgn7dH6cw4W1yqoRgjsFsWvysFjfVcpCh7O9Yyv9_qNvNI\\\"\",\n                \"line_num\": 28,\n                \"path\": \"./tests/samples/aws_multi.json\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"gireogi323.s3.amazonaws.com\",\n                \"value_start\": 32,\n                \"value_end\": 59,\n                \"entropy\": 3.75416\n            }\n        ]\n    },\n    {\n        \"rule\": \"Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"        \\\"AwsSecretKey\\\": \\\"J38YmIgn7dH6cw4W1yqoRgjsFsWvysFjfVcpCh7O9Yyv9/qNvNI\\\",\",\n                \"line_num\": 52,\n                \"path\": \"./tests/samples/aws_multi.json\",\n                \"info\": \"\",\n                \"variable\": \"AwsSecretKey\",\n                \"variable_start\": 9,\n                \"variable_end\": 21,\n                \"value\": \"J38YmIgn7dH6cw4W1yqoRgjsFsWvysFjfVcpCh7O9Yyv9/qNvNI\",\n                \"value_start\": 25,\n                \"value_end\": 76,\n                \"entropy\": 4.96135\n            }\n        ]\n    },\n    {\n        \"rule\": \"Secret\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"        \\\"AwsSecretKey\\\": \\\"J38YmIgn7dH6cw4W1yqoRgjsFsWvysFjfVcpCh7O9Yyv9/qNvNI\\\",\",\n                \"line_num\": 52,\n                \"path\": \"./tests/samples/aws_multi.json\",\n                \"info\": \"\",\n                \"variable\": \"AwsSecretKey\",\n                \"variable_start\": 9,\n                \"variable_end\": 21,\n                \"value\": \"J38YmIgn7dH6cw4W1yqoRgjsFsWvysFjfVcpCh7O9Yyv9/qNvNI\",\n                \"value_start\": 25,\n                \"value_end\": 76,\n                \"entropy\": 4.96135\n            }\n        ]\n    },\n    {\n        \"rule\": \"AWS Client ID\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"        \\\"AwsAccessID\\\": \\\"AKIAGIREOGIAWSKEY321\\\"\",\n                \"line_num\": 53,\n                \"path\": \"./tests/samples/aws_multi.json\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"AKIAGIREOGIAWSKEY321\",\n                \"value_start\": 24,\n                \"value_end\": 44,\n                \"entropy\": 3.54644\n            }\n        ]\n    },\n    {\n        \"rule\": \"AWS Client ID\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"    \\\"AccessKeyId\\\" : \\\"AKIA0ON7V2DD57PL3JXM\\\",\",\n                \"line_num\": 7,\n                \"path\": \"./tests/samples/aws_multi.md\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"AKIA0ON7V2DD57PL3JXM\",\n                \"value_start\": 21,\n                \"value_end\": 41,\n                \"entropy\": 4.02193\n            }\n        ]\n    },\n    {\n        \"rule\": \"AWS Multi\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"    \\\"AccessKeyId\\\" : \\\"AKIA0ON7V2DD57PL3JXM\\\",\",\n                \"line_num\": 7,\n                \"path\": \"./tests/samples/aws_multi.md\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"AKIA0ON7V2DD57PL3JXM\",\n                \"value_start\": 21,\n                \"value_end\": 41,\n                \"entropy\": 4.02193\n            },\n            {\n                \"line\": \"    \\\"SecretAccessKey\\\" : \\\"RMkMm8niUJ1iuhAA+AAyugy3fFt/rtrf7GFQ9xz1\\\",\",\n                \"line_num\": 8,\n                \"path\": \"./tests/samples/aws_multi.md\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"RMkMm8niUJ1iuhAA+AAyugy3fFt/rtrf7GFQ9xz1\",\n                \"value_start\": 25,\n                \"value_end\": 65,\n                \"entropy\": 4.67193\n            }\n        ]\n    },\n    {\n        \"rule\": \"Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"    \\\"AccessKeyId\\\" : \\\"AKIA0ON7V2DD57PL3JXM\\\",\",\n                \"line_num\": 7,\n                \"path\": \"./tests/samples/aws_multi.md\",\n                \"info\": \"\",\n                \"variable\": \"AccessKeyId\",\n                \"variable_start\": 5,\n                \"variable_end\": 16,\n                \"value\": \"AKIA0ON7V2DD57PL3JXM\",\n                \"value_start\": 21,\n                \"value_end\": 41,\n                \"entropy\": 4.02193\n            }\n        ]\n    },\n    {\n        \"rule\": \"Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"    \\\"SecretAccessKey\\\" : \\\"RMkMm8niUJ1iuhAA+AAyugy3fFt/rtrf7GFQ9xz1\\\",\",\n                \"line_num\": 8,\n                \"path\": \"./tests/samples/aws_multi.md\",\n                \"info\": \"\",\n                \"variable\": \"SecretAccessKey\",\n                \"variable_start\": 5,\n                \"variable_end\": 20,\n                \"value\": \"RMkMm8niUJ1iuhAA+AAyugy3fFt/rtrf7GFQ9xz1\",\n                \"value_start\": 25,\n                \"value_end\": 65,\n                \"entropy\": 4.67193\n            }\n        ]\n    },\n    {\n        \"rule\": \"Secret\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"    \\\"SecretAccessKey\\\" : \\\"RMkMm8niUJ1iuhAA+AAyugy3fFt/rtrf7GFQ9xz1\\\",\",\n                \"line_num\": 8,\n                \"path\": \"./tests/samples/aws_multi.md\",\n                \"info\": \"\",\n                \"variable\": \"SecretAccessKey\",\n                \"variable_start\": 5,\n                \"variable_end\": 20,\n                \"value\": \"RMkMm8niUJ1iuhAA+AAyugy3fFt/rtrf7GFQ9xz1\",\n                \"value_start\": 25,\n                \"value_end\": 65,\n                \"entropy\": 4.67193\n            }\n        ]\n    },\n    {\n        \"rule\": \"Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"    \\\"Token\\\" : \\\"J38YmIgn7dH6cw4W1yqoRgjsFsWvysFjfVcpCh7O9Yyv9/qNvNI\\\",\",\n                \"line_num\": 9,\n                \"path\": \"./tests/samples/aws_multi.md\",\n                \"info\": \"\",\n                \"variable\": \"Token\",\n                \"variable_start\": 5,\n                \"variable_end\": 10,\n                \"value\": \"J38YmIgn7dH6cw4W1yqoRgjsFsWvysFjfVcpCh7O9Yyv9/qNvNI\",\n                \"value_start\": 15,\n                \"value_end\": 66,\n                \"entropy\": 4.96135\n            }\n        ]\n    },\n    {\n        \"rule\": \"AWS MWS Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"AWS_MWS_KEY = \\\"amzn.mws.c1dg4haz-6xd6-4gqi-vna2-ed3whf71x9k6\\\"\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/aws_mws_key\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"amzn.mws.c1dg4haz-6xd6-4gqi-vna2-ed3whf71x9k6\",\n                \"value_start\": 15,\n                \"value_end\": 60,\n                \"entropy\": 4.55264\n            }\n        ]\n    },\n    {\n        \"rule\": \"Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"AWS_MWS_KEY = \\\"amzn.mws.c1dg4haz-6xd6-4gqi-vna2-ed3whf71x9k6\\\"\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/aws_mws_key\",\n                \"info\": \"\",\n                \"variable\": \"AWS_MWS_KEY\",\n                \"variable_start\": 0,\n                \"variable_end\": 11,\n                \"value\": \"amzn.mws.c1dg4haz-6xd6-4gqi-vna2-ed3whf71x9k6\",\n                \"value_start\": 15,\n                \"value_end\": 60,\n                \"entropy\": 4.55264\n            }\n        ]\n    },\n    {\n        \"rule\": \"AWS S3 Bucket\",\n        \"severity\": \"info\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"{\\\"url\\\" : \\\"https://circle-production-action-output.s3.amazonaws.com/283746ds4?X-Amz-Algorithm=AWS4-HMAC-SHA256\\\"}\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/aws_s3_bucket\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"circle-production-action-output.s3.amazonaws.com\",\n                \"value_start\": 18,\n                \"value_end\": 66,\n                \"entropy\": 4.02467\n            }\n        ]\n    },\n    {\n        \"rule\": \"Grafana Provisioned API Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIng1dCI6Imk2bEdrM0ZaenhSY1ViMkMzbkVRN3N5SEpsWSIsImtpZCI6Imk2bEdrM0ZaenhSY1ViMkMzbkVRN3N5SEpsWSJ9.eyJhdWQiOiJlZjFkYTlkNC1mZjc3LTRjM2UtYTAwNS04NDBjM2Y4MzA3NDUiLCJpc3MiOiJodHRwczovL3N0cy53aW5kb3dzLm5ldC9mYTE1ZDY5Mi1lOWM3LTQ0NjAtYTc0My0yOWYyOTUyMjIyOS8iLCJpYXQiOjE1MzcyMzMxMDYsIm5iZiI6MTUzNzIzMzEwNiwiZXhwIjoxNTM3MjM3MDA2LCJhY3IiOiIxIiwiYWlvIjoiQVhRQWkvOElBQUFBRm0rRS9RVEcrZ0ZuVnhMaldkdzhLKzYxQUdyU091TU1GNmViYU1qN1hPM0libUQzZkdtck95RCtOdlp5R24yVmFUL2tES1h3NE1JaHJnR1ZxNkJuOHdMWG9UMUxrSVorRnpRVmtKUFBMUU9WNEtjWHFTbENWUERTL0RpQ0RnRTIyMlRJbU12V05hRU1hVU9Uc0lHdlRRPT0iLCJhbXIiOlsid2lhIl0sImFwcGlkIjoiNzVkYmU3N2YtMTBhMy00ZTU5LTg1ZmQtOGMxMjc1NDRmMTdjIiwiYXBwaWRhY3IiOiIwIiwiZW1haWwiOiJBYmVMaUBtaWNyb3NvZnQuY29tIiwiZmFtaWx5X25hbWUiOiJMaW5jb2xuIiwiZ2l2ZW5fbmFtZSI6IkFiZSAoTVNGVCkiLCJpZHAiOiJodHRwczovL3N0cy53aW5kb3dzLm5ldC83MmY5ODhiZi04NmYxLTQxYWYtOTFhYi0yZDdjZDAxMjIyNDcvIiwiaXBhZGRyIjoiMjIyLjIyMi4yMjIuMjIiLCJuYW1lIjoiYWJlbGkiLCJvaWQiOiIwMjIyM2I2Yi1hYTFkLTQyZDQtOWVjMC0xYjJiYjkxOTQ0MzgiLCJyaCI6IkkiLCJzY3AiOiJ1c2VyX2ltcGVyc29uYXRpb24iLCJzdWIiOiJsM19yb0lTUVUyMjJiVUxTOXlpMmswWHBxcE9pTXo1SDNaQUNvMUdlWEEiLCJ0aWQiOiJmYTE1ZDY5Mi1lOWM3LTQ0NjAtYTc0My0yOWYyOTU2ZmQ0MjkiLCJ1bmlxdWVfbmFtZSI6ImFiZWxpQG1pY3Jvc29mdC5jb20iLCJ1dGkiOiJGVnNHeFlYSTMwLVR1aWt1dVVvRkFBIiwidmVyIjoiMS4wIn0.D3H6pMUtQnoJAGq6AHd\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/azure_access_token\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIng1dCI6Imk2bEdrM0ZaenhSY1ViMkMzbkVRN3N5SEpsWSIsImtpZCI6Imk2bEdrM0ZaenhSY1ViMkMzbkVRN3N5SEpsWSJ9\",\n                \"value_start\": 0,\n                \"value_end\": 132,\n                \"entropy\": 5.16528\n            }\n        ]\n    },\n    {\n        \"rule\": \"JSON Web Key\",\n        \"severity\": \"medium\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIng1dCI6Imk2bEdrM0ZaenhSY1ViMkMzbkVRN3N5SEpsWSIsImtpZCI6Imk2bEdrM0ZaenhSY1ViMkMzbkVRN3N5SEpsWSJ9.eyJhdWQiOiJlZjFkYTlkNC1mZjc3LTRjM2UtYTAwNS04NDBjM2Y4MzA3NDUiLCJpc3MiOiJodHRwczovL3N0cy53aW5kb3dzLm5ldC9mYTE1ZDY5Mi1lOWM3LTQ0NjAtYTc0My0yOWYyOTUyMjIyOS8iLCJpYXQiOjE1MzcyMzMxMDYsIm5iZiI6MTUzNzIzMzEwNiwiZXhwIjoxNTM3MjM3MDA2LCJhY3IiOiIxIiwiYWlvIjoiQVhRQWkvOElBQUFBRm0rRS9RVEcrZ0ZuVnhMaldkdzhLKzYxQUdyU091TU1GNmViYU1qN1hPM0libUQzZkdtck95RCtOdlp5R24yVmFUL2tES1h3NE1JaHJnR1ZxNkJuOHdMWG9UMUxrSVorRnpRVmtKUFBMUU9WNEtjWHFTbENWUERTL0RpQ0RnRTIyMlRJbU12V05hRU1hVU9Uc0lHdlRRPT0iLCJhbXIiOlsid2lhIl0sImFwcGlkIjoiNzVkYmU3N2YtMTBhMy00ZTU5LTg1ZmQtOGMxMjc1NDRmMTdjIiwiYXBwaWRhY3IiOiIwIiwiZW1haWwiOiJBYmVMaUBtaWNyb3NvZnQuY29tIiwiZmFtaWx5X25hbWUiOiJMaW5jb2xuIiwiZ2l2ZW5fbmFtZSI6IkFiZSAoTVNGVCkiLCJpZHAiOiJodHRwczovL3N0cy53aW5kb3dzLm5ldC83MmY5ODhiZi04NmYxLTQxYWYtOTFhYi0yZDdjZDAxMjIyNDcvIiwiaXBhZGRyIjoiMjIyLjIyMi4yMjIuMjIiLCJuYW1lIjoiYWJlbGkiLCJvaWQiOiIwMjIyM2I2Yi1hYTFkLTQyZDQtOWVjMC0xYjJiYjkxOTQ0MzgiLCJyaCI6IkkiLCJzY3AiOiJ1c2VyX2ltcGVyc29uYXRpb24iLCJzdWIiOiJsM19yb0lTUVUyMjJiVUxTOXlpMmswWHBxcE9pTXo1SDNaQUNvMUdlWEEiLCJ0aWQiOiJmYTE1ZDY5Mi1lOWM3LTQ0NjAtYTc0My0yOWYyOTU2ZmQ0MjkiLCJ1bmlxdWVfbmFtZSI6ImFiZWxpQG1pY3Jvc29mdC5jb20iLCJ1dGkiOiJGVnNHeFlYSTMwLVR1aWt1dVVvRkFBIiwidmVyIjoiMS4wIn0.D3H6pMUtQnoJAGq6AHd\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/azure_access_token\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIng1dCI6Imk2bEdrM0ZaenhSY1ViMkMzbkVRN3N5SEpsWSIsImtpZCI6Imk2bEdrM0ZaenhSY1ViMkMzbkVRN3N5SEpsWSJ9\",\n                \"value_start\": 0,\n                \"value_end\": 132,\n                \"entropy\": 5.16528\n            }\n        ]\n    },\n    {\n        \"rule\": \"Azure Access Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIng1dCI6Imk2bEdrM0ZaenhSY1ViMkMzbkVRN3N5SEpsWSIsImtpZCI6Imk2bEdrM0ZaenhSY1ViMkMzbkVRN3N5SEpsWSJ9.eyJhdWQiOiJlZjFkYTlkNC1mZjc3LTRjM2UtYTAwNS04NDBjM2Y4MzA3NDUiLCJpc3MiOiJodHRwczovL3N0cy53aW5kb3dzLm5ldC9mYTE1ZDY5Mi1lOWM3LTQ0NjAtYTc0My0yOWYyOTUyMjIyOS8iLCJpYXQiOjE1MzcyMzMxMDYsIm5iZiI6MTUzNzIzMzEwNiwiZXhwIjoxNTM3MjM3MDA2LCJhY3IiOiIxIiwiYWlvIjoiQVhRQWkvOElBQUFBRm0rRS9RVEcrZ0ZuVnhMaldkdzhLKzYxQUdyU091TU1GNmViYU1qN1hPM0libUQzZkdtck95RCtOdlp5R24yVmFUL2tES1h3NE1JaHJnR1ZxNkJuOHdMWG9UMUxrSVorRnpRVmtKUFBMUU9WNEtjWHFTbENWUERTL0RpQ0RnRTIyMlRJbU12V05hRU1hVU9Uc0lHdlRRPT0iLCJhbXIiOlsid2lhIl0sImFwcGlkIjoiNzVkYmU3N2YtMTBhMy00ZTU5LTg1ZmQtOGMxMjc1NDRmMTdjIiwiYXBwaWRhY3IiOiIwIiwiZW1haWwiOiJBYmVMaUBtaWNyb3NvZnQuY29tIiwiZmFtaWx5X25hbWUiOiJMaW5jb2xuIiwiZ2l2ZW5fbmFtZSI6IkFiZSAoTVNGVCkiLCJpZHAiOiJodHRwczovL3N0cy53aW5kb3dzLm5ldC83MmY5ODhiZi04NmYxLTQxYWYtOTFhYi0yZDdjZDAxMjIyNDcvIiwiaXBhZGRyIjoiMjIyLjIyMi4yMjIuMjIiLCJuYW1lIjoiYWJlbGkiLCJvaWQiOiIwMjIyM2I2Yi1hYTFkLTQyZDQtOWVjMC0xYjJiYjkxOTQ0MzgiLCJyaCI6IkkiLCJzY3AiOiJ1c2VyX2ltcGVyc29uYXRpb24iLCJzdWIiOiJsM19yb0lTUVUyMjJiVUxTOXlpMmswWHBxcE9pTXo1SDNaQUNvMUdlWEEiLCJ0aWQiOiJmYTE1ZDY5Mi1lOWM3LTQ0NjAtYTc0My0yOWYyOTU2ZmQ0MjkiLCJ1bmlxdWVfbmFtZSI6ImFiZWxpQG1pY3Jvc29mdC5jb20iLCJ1dGkiOiJGVnNHeFlYSTMwLVR1aWt1dVVvRkFBIiwidmVyIjoiMS4wIn0.D3H6pMUtQnoJAGq6AHd\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/azure_access_token\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIng1dCI6Imk2bEdrM0ZaenhSY1ViMkMzbkVRN3N5SEpsWSIsImtpZCI6Imk2bEdrM0ZaenhSY1ViMkMzbkVRN3N5SEpsWSJ9.eyJhdWQiOiJlZjFkYTlkNC1mZjc3LTRjM2UtYTAwNS04NDBjM2Y4MzA3NDUiLCJpc3MiOiJodHRwczovL3N0cy53aW5kb3dzLm5ldC9mYTE1ZDY5Mi1lOWM3LTQ0NjAtYTc0My0yOWYyOTUyMjIyOS8iLCJpYXQiOjE1MzcyMzMxMDYsIm5iZiI6MTUzNzIzMzEwNiwiZXhwIjoxNTM3MjM3MDA2LCJhY3IiOiIxIiwiYWlvIjoiQVhRQWkvOElBQUFBRm0rRS9RVEcrZ0ZuVnhMaldkdzhLKzYxQUdyU091TU1GNmViYU1qN1hPM0libUQzZkdtck95RCtOdlp5R24yVmFUL2tES1h3NE1JaHJnR1ZxNkJuOHdMWG9UMUxrSVorRnpRVmtKUFBMUU9WNEtjWHFTbENWUERTL0RpQ0RnRTIyMlRJbU12V05hRU1hVU9Uc0lHdlRRPT0iLCJhbXIiOlsid2lhIl0sImFwcGlkIjoiNzVkYmU3N2YtMTBhMy00ZTU5LTg1ZmQtOGMxMjc1NDRmMTdjIiwiYXBwaWRhY3IiOiIwIiwiZW1haWwiOiJBYmVMaUBtaWNyb3NvZnQuY29tIiwiZmFtaWx5X25hbWUiOiJMaW5jb2xuIiwiZ2l2ZW5fbmFtZSI6IkFiZSAoTVNGVCkiLCJpZHAiOiJodHRwczovL3N0cy53aW5kb3dzLm5ldC83MmY5ODhiZi04NmYxLTQxYWYtOTFhYi0yZDdjZDAxMjIyNDcvIiwiaXBhZGRyIjoiMjIyLjIyMi4yMjIuMjIiLCJuYW1lIjoiYWJlbGkiLCJvaWQiOiIwMjIyM2I2Yi1hYTFkLTQyZDQtOWVjMC0xYjJiYjkxOTQ0MzgiLCJyaCI6IkkiLCJzY3AiOiJ1c2VyX2ltcGVyc29uYXRpb24iLCJzdWIiOiJsM19yb0lTUVUyMjJiVUxTOXlpMmswWHBxcE9pTXo1SDNaQUNvMUdlWEEiLCJ0aWQiOiJmYTE1ZDY5Mi1lOWM3LTQ0NjAtYTc0My0yOWYyOTU2ZmQ0MjkiLCJ1bmlxdWVfbmFtZSI6ImFiZWxpQG1pY3Jvc29mdC5jb20iLCJ1dGkiOiJGVnNHeFlYSTMwLVR1aWt1dVVvRkFBIiwidmVyIjoiMS4wIn0.D3H6pMUtQnoJAGq6AHd\",\n                \"value_start\": 0,\n                \"value_end\": 1316,\n                \"entropy\": 5.63018\n            }\n        ]\n    },\n    {\n        \"rule\": \"JSON Web Token\",\n        \"severity\": \"medium\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIng1dCI6Imk2bEdrM0ZaenhSY1ViMkMzbkVRN3N5SEpsWSIsImtpZCI6Imk2bEdrM0ZaenhSY1ViMkMzbkVRN3N5SEpsWSJ9.eyJhdWQiOiJlZjFkYTlkNC1mZjc3LTRjM2UtYTAwNS04NDBjM2Y4MzA3NDUiLCJpc3MiOiJodHRwczovL3N0cy53aW5kb3dzLm5ldC9mYTE1ZDY5Mi1lOWM3LTQ0NjAtYTc0My0yOWYyOTUyMjIyOS8iLCJpYXQiOjE1MzcyMzMxMDYsIm5iZiI6MTUzNzIzMzEwNiwiZXhwIjoxNTM3MjM3MDA2LCJhY3IiOiIxIiwiYWlvIjoiQVhRQWkvOElBQUFBRm0rRS9RVEcrZ0ZuVnhMaldkdzhLKzYxQUdyU091TU1GNmViYU1qN1hPM0libUQzZkdtck95RCtOdlp5R24yVmFUL2tES1h3NE1JaHJnR1ZxNkJuOHdMWG9UMUxrSVorRnpRVmtKUFBMUU9WNEtjWHFTbENWUERTL0RpQ0RnRTIyMlRJbU12V05hRU1hVU9Uc0lHdlRRPT0iLCJhbXIiOlsid2lhIl0sImFwcGlkIjoiNzVkYmU3N2YtMTBhMy00ZTU5LTg1ZmQtOGMxMjc1NDRmMTdjIiwiYXBwaWRhY3IiOiIwIiwiZW1haWwiOiJBYmVMaUBtaWNyb3NvZnQuY29tIiwiZmFtaWx5X25hbWUiOiJMaW5jb2xuIiwiZ2l2ZW5fbmFtZSI6IkFiZSAoTVNGVCkiLCJpZHAiOiJodHRwczovL3N0cy53aW5kb3dzLm5ldC83MmY5ODhiZi04NmYxLTQxYWYtOTFhYi0yZDdjZDAxMjIyNDcvIiwiaXBhZGRyIjoiMjIyLjIyMi4yMjIuMjIiLCJuYW1lIjoiYWJlbGkiLCJvaWQiOiIwMjIyM2I2Yi1hYTFkLTQyZDQtOWVjMC0xYjJiYjkxOTQ0MzgiLCJyaCI6IkkiLCJzY3AiOiJ1c2VyX2ltcGVyc29uYXRpb24iLCJzdWIiOiJsM19yb0lTUVUyMjJiVUxTOXlpMmswWHBxcE9pTXo1SDNaQUNvMUdlWEEiLCJ0aWQiOiJmYTE1ZDY5Mi1lOWM3LTQ0NjAtYTc0My0yOWYyOTU2ZmQ0MjkiLCJ1bmlxdWVfbmFtZSI6ImFiZWxpQG1pY3Jvc29mdC5jb20iLCJ1dGkiOiJGVnNHeFlYSTMwLVR1aWt1dVVvRkFBIiwidmVyIjoiMS4wIn0.D3H6pMUtQnoJAGq6AHd\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/azure_access_token\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIng1dCI6Imk2bEdrM0ZaenhSY1ViMkMzbkVRN3N5SEpsWSIsImtpZCI6Imk2bEdrM0ZaenhSY1ViMkMzbkVRN3N5SEpsWSJ9.eyJhdWQiOiJlZjFkYTlkNC1mZjc3LTRjM2UtYTAwNS04NDBjM2Y4MzA3NDUiLCJpc3MiOiJodHRwczovL3N0cy53aW5kb3dzLm5ldC9mYTE1ZDY5Mi1lOWM3LTQ0NjAtYTc0My0yOWYyOTUyMjIyOS8iLCJpYXQiOjE1MzcyMzMxMDYsIm5iZiI6MTUzNzIzMzEwNiwiZXhwIjoxNTM3MjM3MDA2LCJhY3IiOiIxIiwiYWlvIjoiQVhRQWkvOElBQUFBRm0rRS9RVEcrZ0ZuVnhMaldkdzhLKzYxQUdyU091TU1GNmViYU1qN1hPM0libUQzZkdtck95RCtOdlp5R24yVmFUL2tES1h3NE1JaHJnR1ZxNkJuOHdMWG9UMUxrSVorRnpRVmtKUFBMUU9WNEtjWHFTbENWUERTL0RpQ0RnRTIyMlRJbU12V05hRU1hVU9Uc0lHdlRRPT0iLCJhbXIiOlsid2lhIl0sImFwcGlkIjoiNzVkYmU3N2YtMTBhMy00ZTU5LTg1ZmQtOGMxMjc1NDRmMTdjIiwiYXBwaWRhY3IiOiIwIiwiZW1haWwiOiJBYmVMaUBtaWNyb3NvZnQuY29tIiwiZmFtaWx5X25hbWUiOiJMaW5jb2xuIiwiZ2l2ZW5fbmFtZSI6IkFiZSAoTVNGVCkiLCJpZHAiOiJodHRwczovL3N0cy53aW5kb3dzLm5ldC83MmY5ODhiZi04NmYxLTQxYWYtOTFhYi0yZDdjZDAxMjIyNDcvIiwiaXBhZGRyIjoiMjIyLjIyMi4yMjIuMjIiLCJuYW1lIjoiYWJlbGkiLCJvaWQiOiIwMjIyM2I2Yi1hYTFkLTQyZDQtOWVjMC0xYjJiYjkxOTQ0MzgiLCJyaCI6IkkiLCJzY3AiOiJ1c2VyX2ltcGVyc29uYXRpb24iLCJzdWIiOiJsM19yb0lTUVUyMjJiVUxTOXlpMmswWHBxcE9pTXo1SDNaQUNvMUdlWEEiLCJ0aWQiOiJmYTE1ZDY5Mi1lOWM3LTQ0NjAtYTc0My0yOWYyOTU2ZmQ0MjkiLCJ1bmlxdWVfbmFtZSI6ImFiZWxpQG1pY3Jvc29mdC5jb20iLCJ1dGkiOiJGVnNHeFlYSTMwLVR1aWt1dVVvRkFBIiwidmVyIjoiMS4wIn0.D3H6pMUtQnoJAGq6AHd\",\n                \"value_start\": 0,\n                \"value_end\": 1316,\n                \"entropy\": 5.63018\n            }\n        ]\n    },\n    {\n        \"rule\": \"JSON Web Key\",\n        \"severity\": \"medium\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIng1dCI6Imk2bEdrM0ZaenhSY1ViMkMzbkVRN3N5SEpsWSIsImtpZCI6Imk2bEdrM0ZaenhSY1ViMkMzbkVRN3N5SEpsWSJ9.eyJhdWQiOiJlZjFkYTlkNC1mZjc3LTRjM2UtYTAwNS04NDBjM2Y4MzA3NDUiLCJpc3MiOiJodHRwczovL3N0cy53aW5kb3dzLm5ldC9mYTE1ZDY5Mi1lOWM3LTQ0NjAtYTc0My0yOWYyOTUyMjIyOS8iLCJpYXQiOjE1MzcyMzMxMDYsIm5iZiI6MTUzNzIzMzEwNiwiZXhwIjoxNTM3MjM3MDA2LCJhY3IiOiIxIiwiYWlvIjoiQVhRQWkvOElBQUFBRm0rRS9RVEcrZ0ZuVnhMaldkdzhLKzYxQUdyU091TU1GNmViYU1qN1hPM0libUQzZkdtck95RCtOdlp5R24yVmFUL2tES1h3NE1JaHJnR1ZxNkJuOHdMWG9UMUxrSVorRnpRVmtKUFBMUU9WNEtjWHFTbENWUERTL0RpQ0RnRTIyMlRJbU12V05hRU1hVU9Uc0lHdlRRPT0iLCJhbXIiOlsid2lhIl0sImFwcGlkIjoiNzVkYmU3N2YtMTBhMy00ZTU5LTg1ZmQtOGMxMjc1NDRmMTdjIiwiYXBwaWRhY3IiOiIwIiwiZW1haWwiOiJBYmVMaUBtaWNyb3NvZnQuY29tIiwiZmFtaWx5X25hbWUiOiJMaW5jb2xuIiwiZ2l2ZW5fbmFtZSI6IkFiZSAoTVNGVCkiLCJpZHAiOiJodHRwczovL3N0cy53aW5kb3dzLm5ldC83MmY5ODhiZi04NmYxLTQxYWYtOTFhYi0yZDdjZDAxMjIyNDcvIiwiaXBhZGRyIjoiMjIyLjIyMi4yMjIuMjIiLCJuYW1lIjoiYWJlbGkiLCJvaWQiOiIwMjIyM2I2Yi1hYTFkLTQyZDQtOWVjMC0xYjJiYjkxOTQ0MzgiLCJyaCI6IkkiLCJzY3AiOiJ1c2VyX2ltcGVyc29uYXRpb24iLCJzdWIiOiJsM19yb0lTUVUyMjJiVUxTOXlpMmswWHBxcE9pTXo1SDNaQUNvMUdlWEEiLCJ0aWQiOiJmYTE1ZDY5Mi1lOWM3LTQ0NjAtYTc0My0yOWYyOTU2ZmQ0MjkiLCJ1bmlxdWVfbmFtZSI6ImFiZWxpQG1pY3Jvc29mdC5jb20iLCJ1dGkiOiJGVnNHeFlYSTMwLVR1aWt1dVVvRkFBIiwidmVyIjoiMS4wIn0.D3H6pMUtQnoJAGq6AHd\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/azure_access_token\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"eyJhdWQiOiJlZjFkYTlkNC1mZjc3LTRjM2UtYTAwNS04NDBjM2Y4MzA3NDUiLCJpc3MiOiJodHRwczovL3N0cy53aW5kb3dzLm5ldC9mYTE1ZDY5Mi1lOWM3LTQ0NjAtYTc0My0yOWYyOTUyMjIyOS8iLCJpYXQiOjE1MzcyMzMxMDYsIm5iZiI6MTUzNzIzMzEwNiwiZXhwIjoxNTM3MjM3MDA2LCJhY3IiOiIxIiwiYWlvIjoiQVhRQWkvOElBQUFBRm0rRS9RVEcrZ0ZuVnhMaldkdzhLKzYxQUdyU091TU1GNmViYU1qN1hPM0libUQzZkdtck95RCtOdlp5R24yVmFUL2tES1h3NE1JaHJnR1ZxNkJuOHdMWG9UMUxrSVorRnpRVmtKUFBMUU9WNEtjWHFTbENWUERTL0RpQ0RnRTIyMlRJbU12V05hRU1hVU9Uc0lHdlRRPT0iLCJhbXIiOlsid2lhIl0sImFwcGlkIjoiNzVkYmU3N2YtMTBhMy00ZTU5LTg1ZmQtOGMxMjc1NDRmMTdjIiwiYXBwaWRhY3IiOiIwIiwiZW1haWwiOiJBYmVMaUBtaWNyb3NvZnQuY29tIiwiZmFtaWx5X25hbWUiOiJMaW5jb2xuIiwiZ2l2ZW5fbmFtZSI6IkFiZSAoTVNGVCkiLCJpZHAiOiJodHRwczovL3N0cy53aW5kb3dzLm5ldC83MmY5ODhiZi04NmYxLTQxYWYtOTFhYi0yZDdjZDAxMjIyNDcvIiwiaXBhZGRyIjoiMjIyLjIyMi4yMjIuMjIiLCJuYW1lIjoiYWJlbGkiLCJvaWQiOiIwMjIyM2I2Yi1hYTFkLTQyZDQtOWVjMC0xYjJiYjkxOTQ0MzgiLCJyaCI6IkkiLCJzY3AiOiJ1c2VyX2ltcGVyc29uYXRpb24iLCJzdWIiOiJsM19yb0lTUVUyMjJiVUxTOXlpMmswWHBxcE9pTXo1SDNaQUNvMUdlWEEiLCJ0aWQiOiJmYTE1ZDY5Mi1lOWM3LTQ0NjAtYTc0My0yOWYyOTU2ZmQ0MjkiLCJ1bmlxdWVfbmFtZSI6ImFiZWxpQG1pY3Jvc29mdC5jb20iLCJ1dGkiOiJGVnNHeFlYSTMwLVR1aWt1dVVvRkFBIiwidmVyIjoiMS4wIn0\",\n                \"value_start\": 133,\n                \"value_end\": 1296,\n                \"entropy\": 5.58725\n            }\n        ]\n    },\n    {\n        \"rule\": \"Grafana Provisioned API Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImtpZCI6Imk2bEdrM0ZaenhSY1ViMkMzbkVRN3N5SEpsWSJ9.eyJhdWQiOiI2ZTc0MTcyYi1iZTU2LTQ4NDMtOWZmNC1lNjZhMzliYjEyZTMiLCJpc3MiOiJodHRwczovL2xvZ2luLm1pY3Jvc29mdG9ubGluZS5jb20vNzJmOTg4YmYtODZmMS00MWFmLTkxYWItMmQ3Y2QwMTFkYjQ3L3YyLjAiLCJpYXQiOjE1MzcyMzEwNDgsIm5iZiI6MTUzNzIzMTA0OCwiZXhwIjoxNTM3MjM0OTQ4LCJhaW8iOiJBWFFBaS84SUFBQUF0QWFaTG8zQ2hNaWY2S09udHRSQjdlQnE0L0RjY1F6amNKR3hQWXkvQzNqRGFOR3hYZDZ3TklJVkdSZ2hOUm53SjFsT2NBbk5aY2p2a295ckZ4Q3R0djMzMTQwUmlvT0ZKNGJDQ0dWdW9DYWcxdU9UVDIyMjIyZ0h3TFBZUS91Zjc5UVgrMEtJaWpkcm1wNjlSY3R6bVE9PSIsImF6cCI6IjZlNzQxNzJiLWJlNTYtNDg0My05ZmY0LWU2NmEzOWJiMTJlMyIsImF6cGFjciI6IjAiLCJuYW1lIjoiQWJlIExpbmNvbG4iLCJvaWQiOiI2OTAyMjJiZS1mZjFhLTRkNTYtYWJkMS03ZTRmN2QzOGU0NzQiLCJwcmVmZXJyZWRfdXNlcm5hbWUiOiJhYmVsaUBtaWNyb3NvZnQuY29tIiwicmgiOiJJIiwic2NwIjoiYWNjZXNzX2FzX3VzZXIiLCJzdWIiOiJIS1pwZmFIeVdhZGVPb3VZbGl0anJJLUtmZlRtMjIyWDVyclYzeERxZktRIiwidGlkIjoiNzJmOTg4YmYtODZmMS00MWFmLTkxYWItMmQ3Y2QwMTFkYjQ3IiwidXRpIjoiZnFpQnFYTFBqMGVRYTgyUy1JWUZBQSIsInZlciI6IjIuMCJ9.pj4N-w_3Us9DrBLfpCt\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/azure_access_token\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImtpZCI6Imk2bEdrM0ZaenhSY1ViMkMzbkVRN3N5SEpsWSJ9\",\n                \"value_start\": 0,\n                \"value_end\": 84,\n                \"entropy\": 5.15238\n            }\n        ]\n    },\n    {\n        \"rule\": \"JSON Web Key\",\n        \"severity\": \"medium\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImtpZCI6Imk2bEdrM0ZaenhSY1ViMkMzbkVRN3N5SEpsWSJ9.eyJhdWQiOiI2ZTc0MTcyYi1iZTU2LTQ4NDMtOWZmNC1lNjZhMzliYjEyZTMiLCJpc3MiOiJodHRwczovL2xvZ2luLm1pY3Jvc29mdG9ubGluZS5jb20vNzJmOTg4YmYtODZmMS00MWFmLTkxYWItMmQ3Y2QwMTFkYjQ3L3YyLjAiLCJpYXQiOjE1MzcyMzEwNDgsIm5iZiI6MTUzNzIzMTA0OCwiZXhwIjoxNTM3MjM0OTQ4LCJhaW8iOiJBWFFBaS84SUFBQUF0QWFaTG8zQ2hNaWY2S09udHRSQjdlQnE0L0RjY1F6amNKR3hQWXkvQzNqRGFOR3hYZDZ3TklJVkdSZ2hOUm53SjFsT2NBbk5aY2p2a295ckZ4Q3R0djMzMTQwUmlvT0ZKNGJDQ0dWdW9DYWcxdU9UVDIyMjIyZ0h3TFBZUS91Zjc5UVgrMEtJaWpkcm1wNjlSY3R6bVE9PSIsImF6cCI6IjZlNzQxNzJiLWJlNTYtNDg0My05ZmY0LWU2NmEzOWJiMTJlMyIsImF6cGFjciI6IjAiLCJuYW1lIjoiQWJlIExpbmNvbG4iLCJvaWQiOiI2OTAyMjJiZS1mZjFhLTRkNTYtYWJkMS03ZTRmN2QzOGU0NzQiLCJwcmVmZXJyZWRfdXNlcm5hbWUiOiJhYmVsaUBtaWNyb3NvZnQuY29tIiwicmgiOiJJIiwic2NwIjoiYWNjZXNzX2FzX3VzZXIiLCJzdWIiOiJIS1pwZmFIeVdhZGVPb3VZbGl0anJJLUtmZlRtMjIyWDVyclYzeERxZktRIiwidGlkIjoiNzJmOTg4YmYtODZmMS00MWFmLTkxYWItMmQ3Y2QwMTFkYjQ3IiwidXRpIjoiZnFpQnFYTFBqMGVRYTgyUy1JWUZBQSIsInZlciI6IjIuMCJ9.pj4N-w_3Us9DrBLfpCt\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/azure_access_token\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImtpZCI6Imk2bEdrM0ZaenhSY1ViMkMzbkVRN3N5SEpsWSJ9\",\n                \"value_start\": 0,\n                \"value_end\": 84,\n                \"entropy\": 5.15238\n            }\n        ]\n    },\n    {\n        \"rule\": \"Azure Access Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImtpZCI6Imk2bEdrM0ZaenhSY1ViMkMzbkVRN3N5SEpsWSJ9.eyJhdWQiOiI2ZTc0MTcyYi1iZTU2LTQ4NDMtOWZmNC1lNjZhMzliYjEyZTMiLCJpc3MiOiJodHRwczovL2xvZ2luLm1pY3Jvc29mdG9ubGluZS5jb20vNzJmOTg4YmYtODZmMS00MWFmLTkxYWItMmQ3Y2QwMTFkYjQ3L3YyLjAiLCJpYXQiOjE1MzcyMzEwNDgsIm5iZiI6MTUzNzIzMTA0OCwiZXhwIjoxNTM3MjM0OTQ4LCJhaW8iOiJBWFFBaS84SUFBQUF0QWFaTG8zQ2hNaWY2S09udHRSQjdlQnE0L0RjY1F6amNKR3hQWXkvQzNqRGFOR3hYZDZ3TklJVkdSZ2hOUm53SjFsT2NBbk5aY2p2a295ckZ4Q3R0djMzMTQwUmlvT0ZKNGJDQ0dWdW9DYWcxdU9UVDIyMjIyZ0h3TFBZUS91Zjc5UVgrMEtJaWpkcm1wNjlSY3R6bVE9PSIsImF6cCI6IjZlNzQxNzJiLWJlNTYtNDg0My05ZmY0LWU2NmEzOWJiMTJlMyIsImF6cGFjciI6IjAiLCJuYW1lIjoiQWJlIExpbmNvbG4iLCJvaWQiOiI2OTAyMjJiZS1mZjFhLTRkNTYtYWJkMS03ZTRmN2QzOGU0NzQiLCJwcmVmZXJyZWRfdXNlcm5hbWUiOiJhYmVsaUBtaWNyb3NvZnQuY29tIiwicmgiOiJJIiwic2NwIjoiYWNjZXNzX2FzX3VzZXIiLCJzdWIiOiJIS1pwZmFIeVdhZGVPb3VZbGl0anJJLUtmZlRtMjIyWDVyclYzeERxZktRIiwidGlkIjoiNzJmOTg4YmYtODZmMS00MWFmLTkxYWItMmQ3Y2QwMTFkYjQ3IiwidXRpIjoiZnFpQnFYTFBqMGVRYTgyUy1JWUZBQSIsInZlciI6IjIuMCJ9.pj4N-w_3Us9DrBLfpCt\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/azure_access_token\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImtpZCI6Imk2bEdrM0ZaenhSY1ViMkMzbkVRN3N5SEpsWSJ9.eyJhdWQiOiI2ZTc0MTcyYi1iZTU2LTQ4NDMtOWZmNC1lNjZhMzliYjEyZTMiLCJpc3MiOiJodHRwczovL2xvZ2luLm1pY3Jvc29mdG9ubGluZS5jb20vNzJmOTg4YmYtODZmMS00MWFmLTkxYWItMmQ3Y2QwMTFkYjQ3L3YyLjAiLCJpYXQiOjE1MzcyMzEwNDgsIm5iZiI6MTUzNzIzMTA0OCwiZXhwIjoxNTM3MjM0OTQ4LCJhaW8iOiJBWFFBaS84SUFBQUF0QWFaTG8zQ2hNaWY2S09udHRSQjdlQnE0L0RjY1F6amNKR3hQWXkvQzNqRGFOR3hYZDZ3TklJVkdSZ2hOUm53SjFsT2NBbk5aY2p2a295ckZ4Q3R0djMzMTQwUmlvT0ZKNGJDQ0dWdW9DYWcxdU9UVDIyMjIyZ0h3TFBZUS91Zjc5UVgrMEtJaWpkcm1wNjlSY3R6bVE9PSIsImF6cCI6IjZlNzQxNzJiLWJlNTYtNDg0My05ZmY0LWU2NmEzOWJiMTJlMyIsImF6cGFjciI6IjAiLCJuYW1lIjoiQWJlIExpbmNvbG4iLCJvaWQiOiI2OTAyMjJiZS1mZjFhLTRkNTYtYWJkMS03ZTRmN2QzOGU0NzQiLCJwcmVmZXJyZWRfdXNlcm5hbWUiOiJhYmVsaUBtaWNyb3NvZnQuY29tIiwicmgiOiJJIiwic2NwIjoiYWNjZXNzX2FzX3VzZXIiLCJzdWIiOiJIS1pwZmFIeVdhZGVPb3VZbGl0anJJLUtmZlRtMjIyWDVyclYzeERxZktRIiwidGlkIjoiNzJmOTg4YmYtODZmMS00MWFmLTkxYWItMmQ3Y2QwMTFkYjQ3IiwidXRpIjoiZnFpQnFYTFBqMGVRYTgyUy1JWUZBQSIsInZlciI6IjIuMCJ9.pj4N-w_3Us9DrBLfpCt\",\n                \"value_start\": 0,\n                \"value_end\": 1029,\n                \"entropy\": 5.64141\n            }\n        ]\n    },\n    {\n        \"rule\": \"JSON Web Token\",\n        \"severity\": \"medium\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImtpZCI6Imk2bEdrM0ZaenhSY1ViMkMzbkVRN3N5SEpsWSJ9.eyJhdWQiOiI2ZTc0MTcyYi1iZTU2LTQ4NDMtOWZmNC1lNjZhMzliYjEyZTMiLCJpc3MiOiJodHRwczovL2xvZ2luLm1pY3Jvc29mdG9ubGluZS5jb20vNzJmOTg4YmYtODZmMS00MWFmLTkxYWItMmQ3Y2QwMTFkYjQ3L3YyLjAiLCJpYXQiOjE1MzcyMzEwNDgsIm5iZiI6MTUzNzIzMTA0OCwiZXhwIjoxNTM3MjM0OTQ4LCJhaW8iOiJBWFFBaS84SUFBQUF0QWFaTG8zQ2hNaWY2S09udHRSQjdlQnE0L0RjY1F6amNKR3hQWXkvQzNqRGFOR3hYZDZ3TklJVkdSZ2hOUm53SjFsT2NBbk5aY2p2a295ckZ4Q3R0djMzMTQwUmlvT0ZKNGJDQ0dWdW9DYWcxdU9UVDIyMjIyZ0h3TFBZUS91Zjc5UVgrMEtJaWpkcm1wNjlSY3R6bVE9PSIsImF6cCI6IjZlNzQxNzJiLWJlNTYtNDg0My05ZmY0LWU2NmEzOWJiMTJlMyIsImF6cGFjciI6IjAiLCJuYW1lIjoiQWJlIExpbmNvbG4iLCJvaWQiOiI2OTAyMjJiZS1mZjFhLTRkNTYtYWJkMS03ZTRmN2QzOGU0NzQiLCJwcmVmZXJyZWRfdXNlcm5hbWUiOiJhYmVsaUBtaWNyb3NvZnQuY29tIiwicmgiOiJJIiwic2NwIjoiYWNjZXNzX2FzX3VzZXIiLCJzdWIiOiJIS1pwZmFIeVdhZGVPb3VZbGl0anJJLUtmZlRtMjIyWDVyclYzeERxZktRIiwidGlkIjoiNzJmOTg4YmYtODZmMS00MWFmLTkxYWItMmQ3Y2QwMTFkYjQ3IiwidXRpIjoiZnFpQnFYTFBqMGVRYTgyUy1JWUZBQSIsInZlciI6IjIuMCJ9.pj4N-w_3Us9DrBLfpCt\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/azure_access_token\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImtpZCI6Imk2bEdrM0ZaenhSY1ViMkMzbkVRN3N5SEpsWSJ9.eyJhdWQiOiI2ZTc0MTcyYi1iZTU2LTQ4NDMtOWZmNC1lNjZhMzliYjEyZTMiLCJpc3MiOiJodHRwczovL2xvZ2luLm1pY3Jvc29mdG9ubGluZS5jb20vNzJmOTg4YmYtODZmMS00MWFmLTkxYWItMmQ3Y2QwMTFkYjQ3L3YyLjAiLCJpYXQiOjE1MzcyMzEwNDgsIm5iZiI6MTUzNzIzMTA0OCwiZXhwIjoxNTM3MjM0OTQ4LCJhaW8iOiJBWFFBaS84SUFBQUF0QWFaTG8zQ2hNaWY2S09udHRSQjdlQnE0L0RjY1F6amNKR3hQWXkvQzNqRGFOR3hYZDZ3TklJVkdSZ2hOUm53SjFsT2NBbk5aY2p2a295ckZ4Q3R0djMzMTQwUmlvT0ZKNGJDQ0dWdW9DYWcxdU9UVDIyMjIyZ0h3TFBZUS91Zjc5UVgrMEtJaWpkcm1wNjlSY3R6bVE9PSIsImF6cCI6IjZlNzQxNzJiLWJlNTYtNDg0My05ZmY0LWU2NmEzOWJiMTJlMyIsImF6cGFjciI6IjAiLCJuYW1lIjoiQWJlIExpbmNvbG4iLCJvaWQiOiI2OTAyMjJiZS1mZjFhLTRkNTYtYWJkMS03ZTRmN2QzOGU0NzQiLCJwcmVmZXJyZWRfdXNlcm5hbWUiOiJhYmVsaUBtaWNyb3NvZnQuY29tIiwicmgiOiJJIiwic2NwIjoiYWNjZXNzX2FzX3VzZXIiLCJzdWIiOiJIS1pwZmFIeVdhZGVPb3VZbGl0anJJLUtmZlRtMjIyWDVyclYzeERxZktRIiwidGlkIjoiNzJmOTg4YmYtODZmMS00MWFmLTkxYWItMmQ3Y2QwMTFkYjQ3IiwidXRpIjoiZnFpQnFYTFBqMGVRYTgyUy1JWUZBQSIsInZlciI6IjIuMCJ9.pj4N-w_3Us9DrBLfpCt\",\n                \"value_start\": 0,\n                \"value_end\": 1029,\n                \"entropy\": 5.64141\n            }\n        ]\n    },\n    {\n        \"rule\": \"JSON Web Key\",\n        \"severity\": \"medium\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImtpZCI6Imk2bEdrM0ZaenhSY1ViMkMzbkVRN3N5SEpsWSJ9.eyJhdWQiOiI2ZTc0MTcyYi1iZTU2LTQ4NDMtOWZmNC1lNjZhMzliYjEyZTMiLCJpc3MiOiJodHRwczovL2xvZ2luLm1pY3Jvc29mdG9ubGluZS5jb20vNzJmOTg4YmYtODZmMS00MWFmLTkxYWItMmQ3Y2QwMTFkYjQ3L3YyLjAiLCJpYXQiOjE1MzcyMzEwNDgsIm5iZiI6MTUzNzIzMTA0OCwiZXhwIjoxNTM3MjM0OTQ4LCJhaW8iOiJBWFFBaS84SUFBQUF0QWFaTG8zQ2hNaWY2S09udHRSQjdlQnE0L0RjY1F6amNKR3hQWXkvQzNqRGFOR3hYZDZ3TklJVkdSZ2hOUm53SjFsT2NBbk5aY2p2a295ckZ4Q3R0djMzMTQwUmlvT0ZKNGJDQ0dWdW9DYWcxdU9UVDIyMjIyZ0h3TFBZUS91Zjc5UVgrMEtJaWpkcm1wNjlSY3R6bVE9PSIsImF6cCI6IjZlNzQxNzJiLWJlNTYtNDg0My05ZmY0LWU2NmEzOWJiMTJlMyIsImF6cGFjciI6IjAiLCJuYW1lIjoiQWJlIExpbmNvbG4iLCJvaWQiOiI2OTAyMjJiZS1mZjFhLTRkNTYtYWJkMS03ZTRmN2QzOGU0NzQiLCJwcmVmZXJyZWRfdXNlcm5hbWUiOiJhYmVsaUBtaWNyb3NvZnQuY29tIiwicmgiOiJJIiwic2NwIjoiYWNjZXNzX2FzX3VzZXIiLCJzdWIiOiJIS1pwZmFIeVdhZGVPb3VZbGl0anJJLUtmZlRtMjIyWDVyclYzeERxZktRIiwidGlkIjoiNzJmOTg4YmYtODZmMS00MWFmLTkxYWItMmQ3Y2QwMTFkYjQ3IiwidXRpIjoiZnFpQnFYTFBqMGVRYTgyUy1JWUZBQSIsInZlciI6IjIuMCJ9.pj4N-w_3Us9DrBLfpCt\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/azure_access_token\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"eyJhdWQiOiI2ZTc0MTcyYi1iZTU2LTQ4NDMtOWZmNC1lNjZhMzliYjEyZTMiLCJpc3MiOiJodHRwczovL2xvZ2luLm1pY3Jvc29mdG9ubGluZS5jb20vNzJmOTg4YmYtODZmMS00MWFmLTkxYWItMmQ3Y2QwMTFkYjQ3L3YyLjAiLCJpYXQiOjE1MzcyMzEwNDgsIm5iZiI6MTUzNzIzMTA0OCwiZXhwIjoxNTM3MjM0OTQ4LCJhaW8iOiJBWFFBaS84SUFBQUF0QWFaTG8zQ2hNaWY2S09udHRSQjdlQnE0L0RjY1F6amNKR3hQWXkvQzNqRGFOR3hYZDZ3TklJVkdSZ2hOUm53SjFsT2NBbk5aY2p2a295ckZ4Q3R0djMzMTQwUmlvT0ZKNGJDQ0dWdW9DYWcxdU9UVDIyMjIyZ0h3TFBZUS91Zjc5UVgrMEtJaWpkcm1wNjlSY3R6bVE9PSIsImF6cCI6IjZlNzQxNzJiLWJlNTYtNDg0My05ZmY0LWU2NmEzOWJiMTJlMyIsImF6cGFjciI6IjAiLCJuYW1lIjoiQWJlIExpbmNvbG4iLCJvaWQiOiI2OTAyMjJiZS1mZjFhLTRkNTYtYWJkMS03ZTRmN2QzOGU0NzQiLCJwcmVmZXJyZWRfdXNlcm5hbWUiOiJhYmVsaUBtaWNyb3NvZnQuY29tIiwicmgiOiJJIiwic2NwIjoiYWNjZXNzX2FzX3VzZXIiLCJzdWIiOiJIS1pwZmFIeVdhZGVPb3VZbGl0anJJLUtmZlRtMjIyWDVyclYzeERxZktRIiwidGlkIjoiNzJmOTg4YmYtODZmMS00MWFmLTkxYWItMmQ3Y2QwMTFkYjQ3IiwidXRpIjoiZnFpQnFYTFBqMGVRYTgyUy1JWUZBQSIsInZlciI6IjIuMCJ9\",\n                \"value_start\": 85,\n                \"value_end\": 1009,\n                \"entropy\": 5.59159\n            }\n        ]\n    },\n    {\n        \"rule\": \"Azure Storage Account Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"t 189shdhgr893rgdg74sdsdfkksdhtg87dyfwegjddshjhsgjsgdhJQQJ99ALACAAAAAAAAAAAAASAZDO1e4drs==\",\n                \"line_num\": 5,\n                \"path\": \"./tests/samples/azure_access_token\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"189shdhgr893rgdg74sdsdfkksdhtg87dyfwegjddshjhsgjsgdhJQQJ99ALACAAAAAAAAAAAAASAZDO1e4drs==\",\n                \"value_start\": 2,\n                \"value_end\": 90,\n                \"entropy\": 4.22483\n            }\n        ]\n    },\n    {\n        \"rule\": \"Azure Storage Account Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"f ooooooooooooooooooooooooooooooooooooooooooooooooooooJQQJ99AEAAAAAAAAAAAAAAAAAZFURg67\",\n                \"line_num\": 7,\n                \"path\": \"./tests/samples/azure_access_token\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"ooooooooooooooooooooooooooooooooooooooooooooooooooooJQQJ99AEAAAAAAAAAAAAAAAAAZFURg67\",\n                \"value_start\": 2,\n                \"value_end\": 86,\n                \"entropy\": 1.89849\n            }\n        ]\n    },\n    {\n        \"rule\": \"Azure Secret Value\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"client_srt = \\\"qpF8Q~PCM5MhMoyTFc5TYEomnzRUKim9UJhe8a2P\\\";\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/azure_secret_value\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"qpF8Q~PCM5MhMoyTFc5TYEomnzRUKim9UJhe8a2P\",\n                \"value_start\": 14,\n                \"value_end\": 54,\n                \"entropy\": 4.75306\n            }\n        ]\n    },\n    {\n        \"rule\": \"Bitbucket HTTP Access Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"\\\"bitbucket\\\" : \\\"BBDC-MzQ2Njc4NjkyMDgwOsEidtxMt9WDExIOYPEWBFXH093l\\\"\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/bitbuckert_http_access_token\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"BBDC-MzQ2Njc4NjkyMDgwOsEidtxMt9WDExIOYPEWBFXH093l\",\n                \"value_start\": 15,\n                \"value_end\": 64,\n                \"entropy\": 4.94084\n            }\n        ]\n    },\n    {\n        \"rule\": \"Bitbucket App Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"app_sample:ATBBcCe6fczW96Vzwgvb4r8F2gZS54D591C4\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/bitbucket_app_password\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"ATBBcCe6fczW96Vzwgvb4r8F2gZS54D591C4\",\n                \"value_start\": 11,\n                \"value_end\": 47,\n                \"entropy\": 4.5934\n            }\n        ]\n    },\n    {\n        \"rule\": \"Bitbucket App Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"falsesampleATBBcXe6fczW96Vzwgvb4r8F2gZS54D591C4\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/bitbucket_app_password\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"ATBBcXe6fczW96Vzwgvb4r8F2gZS54D591C4\",\n                \"value_start\": 11,\n                \"value_end\": 47,\n                \"entropy\": 4.64896\n            }\n        ]\n    },\n    {\n        \"rule\": \"Bitbucket Repository Access Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"\\\"Bitbucket Repository Access Token\\\" : \\\"ATCTT3xFfGN0zXtbKHz2POF86xa-2aBiYC4o_T3-myk01bmFVluUIFtGm_VFQwLizp4o1FKw-AMZhtdA0NzizshnA8WzRdfgv6GeTyowCD101oqKbJ4nx9DFsar5YyUNkwO9maR9-00tQvfciyfOHtPKG6K1d76Ki3iFo7roGeyJu4j1jM3GwQ4=EDDE81AD\\\"\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/bitbucket_repository_access_token\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"ATCTT3xFfGN0zXtbKHz2POF86xa-2aBiYC4o_T3-myk01bmFVluUIFtGm_VFQwLizp4o1FKw-AMZhtdA0NzizshnA8WzRdfgv6GeTyowCD101oqKbJ4nx9DFsar5YyUNkwO9maR9-00tQvfciyfOHtPKG6K1d76Ki3iFo7roGeyJu4j1jM3GwQ4=EDDE81AD\",\n                \"value_start\": 39,\n                \"value_end\": 231,\n                \"entropy\": 5.75803\n            }\n        ]\n    },\n    {\n        \"rule\": \"Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"\\\"Bitbucket Repository Access Token\\\" : \\\"ATCTT3xFfGN0zXtbKHz2POF86xa-2aBiYC4o_T3-myk01bmFVluUIFtGm_VFQwLizp4o1FKw-AMZhtdA0NzizshnA8WzRdfgv6GeTyowCD101oqKbJ4nx9DFsar5YyUNkwO9maR9-00tQvfciyfOHtPKG6K1d76Ki3iFo7roGeyJu4j1jM3GwQ4=EDDE81AD\\\"\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/bitbucket_repository_access_token\",\n                \"info\": \"\",\n                \"variable\": \"Bitbucket Repository Access Token\",\n                \"variable_start\": 1,\n                \"variable_end\": 34,\n                \"value\": \"ATCTT3xFfGN0zXtbKHz2POF86xa-2aBiYC4o_T3-myk01bmFVluUIFtGm_VFQwLizp4o1FKw-AMZhtdA0NzizshnA8WzRdfgv6GeTyowCD101oqKbJ4nx9DFsar5YyUNkwO9maR9-00tQvfciyfOHtPKG6K1d76Ki3iFo7roGeyJu4j1jM3GwQ4=EDDE81AD\",\n                \"value_start\": 39,\n                \"value_end\": 231,\n                \"entropy\": 5.75803\n            }\n        ]\n    },\n    {\n        \"rule\": \"Brevo API Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"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\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/brevo\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"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\",\n                \"value_start\": 0,\n                \"value_end\": 89,\n                \"entropy\": 4.64688\n            }\n        ]\n    },\n    {\n        \"rule\": \"Brevo API Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"xkeysib-12345678983f579a06f63a6fa0c8df4a56e645342dc875b80b5b3c90380352c0-hfeyJ6o3MTDHuoFZ\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/brevo\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"xkeysib-12345678983f579a06f63a6fa0c8df4a56e645342dc875b80b5b3c90380352c0-hfeyJ6o3MTDHuoFZ\",\n                \"value_start\": 0,\n                \"value_end\": 89,\n                \"entropy\": 4.62234\n            }\n        ]\n    },\n    {\n        \"rule\": \"CMD Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"gpg --decrypt --passphrase N1DdkUD3E73 --output decrypted.txt encrypted.txt.gpg\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/cmd_credential\",\n                \"info\": \"\",\n                \"variable\": \"passphrase\",\n                \"variable_start\": 16,\n                \"variable_end\": 26,\n                \"value\": \"N1DdkUD3E73\",\n                \"value_start\": 27,\n                \"value_end\": 38,\n                \"entropy\": 3.0958\n            }\n        ]\n    },\n    {\n        \"rule\": \"CMD Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"mysql -u root --password Sne3sd8AZjq\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/cmd_credential\",\n                \"info\": \"\",\n                \"variable\": \"password\",\n                \"variable_start\": 16,\n                \"variable_end\": 24,\n                \"value\": \"Sne3sd8AZjq\",\n                \"value_start\": 25,\n                \"value_end\": 36,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"CMD Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"-Domain 'localhost' -Password 'Sjdn43ss@!'\",\n                \"line_num\": 3,\n                \"path\": \"./tests/samples/cmd_credential\",\n                \"info\": \"\",\n                \"variable\": \"Password\",\n                \"variable_start\": 21,\n                \"variable_end\": 29,\n                \"value\": \"Sjdn43ss@!\",\n                \"value_start\": 31,\n                \"value_end\": 41,\n                \"entropy\": 3.12193\n            }\n        ]\n    },\n    {\n        \"rule\": \"CMD Secret\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"--super-secret_token 1ace4d19-fa7e-b4e2-c3f0-9129474bcd81\",\n                \"line_num\": 4,\n                \"path\": \"./tests/samples/cmd_credential\",\n                \"info\": \"\",\n                \"variable\": \"super-secret_token\",\n                \"variable_start\": 2,\n                \"variable_end\": 20,\n                \"value\": \"1ace4d19-fa7e-b4e2-c3f0-9129474bcd81\",\n                \"value_start\": 21,\n                \"value_end\": 57,\n                \"entropy\": 3.77368\n            }\n        ]\n    },\n    {\n        \"rule\": \"CMD Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"--super-secret_token 1ace4d19-fa7e-b4e2-c3f0-9129474bcd81\",\n                \"line_num\": 4,\n                \"path\": \"./tests/samples/cmd_credential\",\n                \"info\": \"\",\n                \"variable\": \"super-secret_token\",\n                \"variable_start\": 2,\n                \"variable_end\": 20,\n                \"value\": \"1ace4d19-fa7e-b4e2-c3f0-9129474bcd81\",\n                \"value_start\": 21,\n                \"value_end\": 57,\n                \"entropy\": 3.77368\n            }\n        ]\n    },\n    {\n        \"rule\": \"UUID\",\n        \"severity\": \"info\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"--super-secret_token 1ace4d19-fa7e-b4e2-c3f0-9129474bcd81\",\n                \"line_num\": 4,\n                \"path\": \"./tests/samples/cmd_credential\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"1ace4d19-fa7e-b4e2-c3f0-9129474bcd81\",\n                \"value_start\": 21,\n                \"value_end\": 57,\n                \"entropy\": 3.77368\n            }\n        ]\n    },\n    {\n        \"rule\": \"CMD Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"    --oauth2-bearer \\\"eZs2fjkjD8hUcsQ37b8zHig==\\\" \\\\\",\n                \"line_num\": 7,\n                \"path\": \"./tests/samples/cmd_credential\",\n                \"info\": \"\",\n                \"variable\": \"oauth2-bearer\",\n                \"variable_start\": 6,\n                \"variable_end\": 19,\n                \"value\": \"eZs2fjkjD8hUcsQ37b8zHig==\",\n                \"value_start\": 21,\n                \"value_end\": 46,\n                \"entropy\": 4.32386\n            }\n        ]\n    },\n    {\n        \"rule\": \"CMD ConvertTo-SecureString\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"ConvertTo-SecureString -String -Force dsjUE#$gds8s\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/cmd_secure_string\",\n                \"info\": \"\",\n                \"variable\": \"ConvertTo-SecureString -String -Force\",\n                \"variable_start\": 0,\n                \"variable_end\": 37,\n                \"value\": \"dsjUE#$gds8s\",\n                \"value_start\": 38,\n                \"value_end\": 50,\n                \"entropy\": 3.02206\n            }\n        ]\n    },\n    {\n        \"rule\": \"CMD ConvertTo-SecureString\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"\\\"ConvertTo-SecureString \\\\\\\"4yd21JKH~GE8dkd\\\\\\\"\\\"\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/cmd_secure_string\",\n                \"info\": \"\",\n                \"variable\": \"ConvertTo-SecureString\",\n                \"variable_start\": 1,\n                \"variable_end\": 23,\n                \"value\": \"4yd21JKH~GE8dkd\",\n                \"value_start\": 26,\n                \"value_end\": 41,\n                \"entropy\": 3.5899\n            }\n        ]\n    },\n    {\n        \"rule\": \"Credential\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"gi_reo_gi_credential = \\\"K2u6mFw8wJOsAf\\\"\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/credential.hs\",\n                \"info\": \"\",\n                \"variable\": \"gi_reo_gi_credential\",\n                \"variable_start\": 0,\n                \"variable_end\": 20,\n                \"value\": \"K2u6mFw8wJOsAf\",\n                \"value_start\": 24,\n                \"value_end\": 38,\n                \"entropy\": 3.6645\n            }\n        ]\n    },\n    {\n        \"rule\": \"CURL User Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"curl -X PUT -u \\\"admin:dG9rZW4g\\\" https://127.0.0.1 # TP\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/curl_user_password\",\n                \"info\": \"\",\n                \"variable\": \"curl\",\n                \"variable_start\": 0,\n                \"variable_end\": 4,\n                \"value\": \"dG9rZW4g\",\n                \"value_start\": 22,\n                \"value_end\": 30,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"CURL User Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"curl -X PUT -u \\\"$USER:$PASSWORD\\\" https://127.0.0.1 # FP\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/curl_user_password\",\n                \"info\": \"\",\n                \"variable\": \"curl\",\n                \"variable_start\": 0,\n                \"variable_end\": 4,\n                \"value\": \"$PASSWORD\",\n                \"value_start\": 22,\n                \"value_end\": 31,\n                \"entropy\": 2.9477\n            }\n        ]\n    },\n    {\n        \"rule\": \"DeepSeek API Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \">>>\\u001b[93msk-615ef152bf865a131f88b23571dc4ee6\\u001b[0m<<<\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/deepseek\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"sk-615ef152bf865a131f88b23571dc4ee6\",\n                \"value_start\": 8,\n                \"value_end\": 43,\n                \"entropy\": 3.85416\n            }\n        ]\n    },\n    {\n        \"rule\": \"Digital Ocean Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"digital_oc = 'doo_v1_c46dde8bd623be6efab141fa2452e10fcc382e70d5da882493477828eba24a8c';\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/digital_ocean_oauth_access_token\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"doo_v1_c46dde8bd623be6efab141fa2452e10fcc382e70d5da882493477828eba24a8c\",\n                \"value_start\": 14,\n                \"value_end\": 85,\n                \"entropy\": 4.05874\n            }\n        ]\n    },\n    {\n        \"rule\": \"Digital Ocean Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"dop_v1_425522a565f532bc6532d453422e50334a42f5242a3090fbe553b543b124259b\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/digital_ocean_pat\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"dop_v1_425522a565f532bc6532d453422e50334a42f5242a3090fbe553b543b124259b\",\n                \"value_start\": 0,\n                \"value_end\": 71,\n                \"entropy\": 3.6568\n            }\n        ]\n    },\n    {\n        \"rule\": \"Discord Bot Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"MTIzNDU2Nzg5MDEyMzQ1Njc4OQ.E2-E4_.Zig9V5mpMk-JybgCFvqSfgY9EoqWjkA5O_qDje\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/discord_bot_token\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"MTIzNDU2Nzg5MDEyMzQ1Njc4OQ.E2-E4_.Zig9V5mpMk-JybgCFvqSfgY9EoqWjkA5O_qDje\",\n                \"value_start\": 0,\n                \"value_end\": 72,\n                \"entropy\": 5.16257\n            }\n        ]\n    },\n    {\n        \"rule\": \"Discord Webhook\",\n        \"severity\": \"medium\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"T https://discordapp.com/api/webhooks/148392840000482200/ihUFAgIi-OsnNHsjJBpvzkzZOicbe0R2UkWo1nvOnkLGHWJnW8HZjF_dRDj7fi5q3u2h\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/discord_webhook\",\n                \"info\": \"\",\n                \"variable\": \"discordapp.com/api/webhooks\",\n                \"variable_start\": 10,\n                \"variable_end\": 37,\n                \"value\": \"/148392840000482200/ihUFAgIi-OsnNHsjJBpvzkzZOicbe0R2UkWo1nvOnkLGHWJnW8HZjF_dRDj7fi5q3u2h\",\n                \"value_start\": 37,\n                \"value_end\": 125,\n                \"entropy\": 5.23454\n            }\n        ]\n    },\n    {\n        \"rule\": \"Discord Webhook\",\n        \"severity\": \"medium\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"F discord.com/api/webhooks/148392840000482200/OsnNHsifi5q3u2_there-are-not-the-webhook-you-are-looking-for_8HZjFgIi\",\n                \"line_num\": 3,\n                \"path\": \"./tests/samples/discord_webhook\",\n                \"info\": \"\",\n                \"variable\": \"discord.com/api/webhooks\",\n                \"variable_start\": 2,\n                \"variable_end\": 26,\n                \"value\": \"/148392840000482200/OsnNHsifi5q3u2_there-are-not-the-webhook-you-are-looking-for_8HZjFgIi\",\n                \"value_start\": 26,\n                \"value_end\": 115,\n                \"entropy\": 4.83876\n            }\n        ]\n    },\n    {\n        \"rule\": \"Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"Activation key : ZAQWS-XCDER-VBGTR-FRTGU-KLMNO\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/doc_credentials_n\",\n                \"info\": \"\",\n                \"variable\": \"key\",\n                \"variable_start\": 11,\n                \"variable_end\": 14,\n                \"value\": \"ZAQWS-XCDER-VBGTR-FRTGU-KLMNO\",\n                \"value_start\": 17,\n                \"value_end\": 46,\n                \"entropy\": 4.28023\n            }\n        ]\n    },\n    {\n        \"rule\": \"Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"Activation key : ZAQWS-XCDER-*****-VBGTR-FRTGU\",\n                \"line_num\": 3,\n                \"path\": \"./tests/samples/doc_credentials_n\",\n                \"info\": \"\",\n                \"variable\": \"key\",\n                \"variable_start\": 11,\n                \"variable_end\": 14,\n                \"value\": \"ZAQWS-XCDER-*****-VBGTR-FRTGU\",\n                \"value_start\": 17,\n                \"value_end\": 46,\n                \"entropy\": 3.87989\n            }\n        ]\n    },\n    {\n        \"rule\": \"Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"\\\"SecretApiKey\\\": \\\"string\\\"\",\n                \"line_num\": 4,\n                \"path\": \"./tests/samples/doc_credentials_n\",\n                \"info\": \"\",\n                \"variable\": \"SecretApiKey\",\n                \"variable_start\": 1,\n                \"variable_end\": 13,\n                \"value\": \"string\",\n                \"value_start\": 17,\n                \"value_end\": 23,\n                \"entropy\": 2.58496\n            }\n        ]\n    },\n    {\n        \"rule\": \"API\",\n        \"severity\": \"low\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"\\\"SecretApiKey\\\": \\\"string\\\"\",\n                \"line_num\": 4,\n                \"path\": \"./tests/samples/doc_credentials_n\",\n                \"info\": \"\",\n                \"variable\": \"SecretApiKey\",\n                \"variable_start\": 1,\n                \"variable_end\": 13,\n                \"value\": \"string\",\n                \"value_start\": 17,\n                \"value_end\": 23,\n                \"entropy\": 2.58496\n            }\n        ]\n    },\n    {\n        \"rule\": \"Secret\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"\\\"SecretApiKey\\\": \\\"string\\\"\",\n                \"line_num\": 4,\n                \"path\": \"./tests/samples/doc_credentials_n\",\n                \"info\": \"\",\n                \"variable\": \"SecretApiKey\",\n                \"variable_start\": 1,\n                \"variable_end\": 13,\n                \"value\": \"string\",\n                \"value_start\": 17,\n                \"value_end\": 23,\n                \"entropy\": 2.58496\n            }\n        ]\n    },\n    {\n        \"rule\": \"UUID\",\n        \"severity\": \"info\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"\\\"UserKeyword\\\": \\\"A1328E04-88B6-4E2A-A5C0-A4D9B21754C4\\\"\",\n                \"line_num\": 5,\n                \"path\": \"./tests/samples/doc_credentials_n\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"A1328E04-88B6-4E2A-A5C0-A4D9B21754C4\",\n                \"value_start\": 16,\n                \"value_end\": 52,\n                \"entropy\": 3.8055\n            }\n        ]\n    },\n    {\n        \"rule\": \"Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"Activation key : ZAQWS-XCDER-VBGTR-FRTGU-KLMNX\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/doc_credentials_p\",\n                \"info\": \"\",\n                \"variable\": \"key\",\n                \"variable_start\": 11,\n                \"variable_end\": 14,\n                \"value\": \"ZAQWS-XCDER-VBGTR-FRTGU-KLMNX\",\n                \"value_start\": 17,\n                \"value_end\": 46,\n                \"entropy\": 4.21126\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"password:!Dd5G4s9\",\n                \"line_num\": 3,\n                \"path\": \"./tests/samples/doc_credentials_p\",\n                \"info\": \"\",\n                \"variable\": \"password\",\n                \"variable_start\": 0,\n                \"variable_end\": 8,\n                \"value\": \"!Dd5G4s9\",\n                \"value_start\": 9,\n                \"value_end\": 17,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"Credential\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"LONG_CREDENTIAL: AgV4TakqXDSaUSruBPiKENLUg+aN/Z5HzG4y5q21GOWteXBNZSVXAh1G8ZCdf8AKaa73TipBRAOT0gI0o2xrm1AFzfnoa2J56rr5WtWfAmr5WCGdZx68H+ghRZMa7C8c76I0zDleUKuPbRhJEM+OZPLGVrL/yodyF+7wF5di84Cb5NOyuAHBZUGxxMWCFuwjRH13JRABMygbrOKaauKjQ5aUAp6ggKijEwr4oysBclvocYin4w1TDApHF5lbd6ytfAYSREJIhbswoUmzlyJ/3ftvl3w6qC2Hikfc8S2rRZ7Evdsbr1lDeNckRmzb3ZQKmREjnxYWM5X5ZekKdLOyo9wdmUleEfX0gU0ZXgB9tKDdR7bP//2p8lJreW51DuF4EynVTSoPqB0mLo0iMkxx0xBCEp5BNC5XpYi7jjvuCKWaHETR+60CsZG1cy12cQlZKtscrc4MI7D7jg9y+GooV+pF05A7a9QgBmqTunmEYBvP7C54nmiHM91fb1W/9XBqCgJZB/Bky9R/nmrRb7+yeRoC8HodzrBlRdciWzkXk0MG63xUGA5K4cH/s+EvmbP+eAi42vneKt9mslid7cxq//AdnXOiIBmhVQ+hn07V/rQxetqbvIYHIEmCdUqqOAmtuV5ba2TPcMtbYEcEGxQJX9e8oYvoShpFbVDpSoEUlVkqI0Bjdts3hsl7B7vV09OdPcMGWFRswu8OIvtllh1C3+2XarwXBs/EfNCWOR5XYDMrHKAWHgvNEI2uZQukt0ekN4BGKA+XNs8T9gdKzun7FoWuSpsXqbvkNS1lXe4dOYay5OoY3Od6eSpwboYmC7Y1GxEi6ixOTePovwot4cIYFvILJExraDEnRQCm53mcvr2qewiy5o8brTr8cA/Fp2VJGiIGmU2cUmz90Tx15/9ZzWA6N/Q0aaiKVDYmAirhUJaMf6gNeDYbodN9tJxEbeNN6krZvdLrsxBZdBViciX2X8Ju8ws0DQlIh54FhHKwwWeoxKPN05RFLORlNQdrV5bKt9FCA/igQECZP233wg7pBEw0wvdASDhaZs0pWX98jDUEJzfwSK4ivc3F15BuKy2Sh3rNjUXht95Dzl4iGsPIsA8DgZjgPbmcjrZXaMdQ5H8l/L4xce0mIAz3s9S/O2ginpFCbwTl2Txrnv44OPjif1S45wSwjzNvchTwduBi1Q13S78xsP//BopuNjxScQU0W8e06HOf9Cg9EkEQ08g57ekS7QcuCfVTQeHj+bltRUbL9en1iwNDgkI49S7kCy2hpSAbVn9WIJMJvMaUEm+jICKQdhnY2XuBiic4bznR+4TOkBaBXBVTKUr1EUH9PigkyliiLtIhHsCvungvP3htfH325ZAKcNxarlKgJrJvfCBnxtNzplF0R8UQUPUmYBRO2VYRT14iFqsU9Y21bG4aiz9SdJgh20KIBjtY1bn7FUNlJ0LHPuKiZSoX5Z71Y5o06YHBP5ijXsfDbEYW5nwfL1sDIqIgxJ0d5bnY9lJ8IdgFjnNqWECLinfjFCXdqiOPprIHD9N/x7DmDstNzjDKw+3aUtRboJmUCN/VsNhOgvBbPux1+UZcf4W01u3fT/JglhjApwqtoQnszIglHxSTHL3WphAB671pr2PK9vgkDeASmrSSrG0LuTx9d5UQLm/NV6j5MXxL1q7/Kk/RTHRd4l5SkcjmA+7Ds7W5rTVIOXV7j/ZYL6HdVv6MWqMKL7QvwUNseM2cnbOxWKg2T37rpZsCk1eU7AeVA69LxS7BHFiswfEi32YWVaxJu0lNoMiZg4WaNhmOtTIzoZU/INWQsRkfbdSROOIiUAYy983kE6h8HjgCvmebb0BeJeMZBM5jyRVrcwrnPEnZzHOiPruNovstlEt6IFvUotNKZgk5Y3DBUUVB4fo/Dv2zBoobQHcomWa2W6Fux6uYuIxG2i6VEVBX3QhItPFr6wc6+n00qiLBG1vhUFGsJzsomMFJx0wrA6voi/kfjRU2TnJjwG0mKMwLurxVVJyLtgwJy3BEDmR2vcaW18G3xoNjc3E+5XS6MutGX3TSoY7n2DftHvKSj46tjPyGPujOQ0tsN9z3EDVLemgnEl42L4FgLtgMOERfIs2XiMy384LbTJQ6xtknjEL3cFNN765s04wFGyI/hc1npJnkCCfKg/sVFLW3YrVGMZAVo/648q655vw2oKKRq8h48g7rnOj239TKUZhxwXZiWqnNZnnBXMIT5hSXwNyIotGcWyuqG2WGL+us/rT6jekSofQaswm8XRDSQPLO9ZqSCX7uM709gLrc/gyNtWaZ9+jpi+o60ydRvYaAgnBzAqhG2spKFTcuOx3usTuQssR2eDZlomRi2zo/nGqDke1sFWr7AULH40IYXqyrle6oY4j8Wf7f6evtNm9b42fFmVAdE04X27tEOe9b1q4o2IWibni0eNdjvjCaMu+DveYqyGXTSTIZt6UzSYFP18YjHKrSsr8SJE9LNMlxwl93v1AfwVFejK7eg3tm7+HRgRVTBaQyuf3EWgXdwcRH8Nqo/rrLBjXmeKZSjWpQIOX9h0TRc91DSJFu02PdqcmIG5T3lFHToLZYB1ohQMIHmfX8+fyR59o86hE/dm8WD1LuEpDlHsIOe4ZKVB9PqRfFpEIZ9gBcyW4co3Kl7uxh5UJVWDLv97ROG29tLBC5rq9mUXxbFiuQSV1/YGnkJQL3IlJ+KKE9fd8Lk+QVjfz2Kc2LBiaTwGoJ5MreVo5LxGf4joXXOpmk+g2dbo6bmuz0WpoGDLYON26mOQawWP+LIpMGlPYiTbUlwgwVv4iQr1ntgpka309haHfh/PeadIJ5FftNERTbNEtO7yKdKbf8ESLl3mVfZW4/bWmO9PBQQAu7dhXNqwG8AmsS62w77UgS7OSvAoSbtCSGZ+9HiGNdn/LI/K+7W4y9S10lR5Npa+5WSnSSTvh9ICfBQVD6iO0HChhEfXKLhesp/250V9kC0yuwq5eLi+A7tCfNQ9iTsmj0hQvnemxISy26OyBe5y39+d+lx45sbx1ijnT6+5PHsmSKx+/tDf6FxdcJpp/D5jUYNvjDASBS9ZxeA/JJDCC3sde9F9ZHZDY4gASDLmzQJYGOthD+bm7aA/RWofNJVpbLRq/7AjonvEOMgc3sk2nLlkfppE7EChJ75xV3aJ4EenBpkjSJVdEMckybT6d+Io9lH8YOuxpzSLo2kVt1vDRr26UZKW/M5OXY3tEHFj8679f4oddmJ1OGLG8SYuCIf5U6qPiom5C1CSVz/8ObNAxPR4ECdGpIpfJO0HmtwMvRmsAbsOEBGg4wIVa945ukJugZNwklFZ6wI0ys2jyvNCDRcgDRrV/fzkfyEIO/WMT/dLx4tbgqksXpnbfvUEJKorLMm2Lye4LuJ3msHvu0c274bJ7E8Y8KXKoMLNRdL7ZwwNUfrbj2KHyaAyqE0YOjIF3+06YOWyC0rJVOthFh+I9ah7RKPwSpsaqK6abzCFZLFdx8qBYA7mO4avHlm2SqiIgdivfHMm/RIFKHuEv+FxWXzfT8KD/jtDhBo672uY8c+nVsfZQysAsalkjd9qkhaqZbDbsHZi2LssBabP5MFqOOGpHgiV9UgMd1vDmz42E7MDCVcgvOF6IgB2Qz62fWdgL94HpRJTY794aJfhPFdk1K4PVo1Cs4CPoCo7gYoqcIBa0vUYwz5zSJe+0Mk21E5ltTl9A2hZhnbt8XFJRTtmXP8g4Jx9EP5hMtj4o7nKgvUwUXcVpa7COGw2UL2eU8TtFvKpWkQd05G1WaTDzHaGUXmo5/LQTLyBvrgi+NbM5JXklvefyZ2Va6LtWethJBfU3KM/PNh/qn9PnjBbfvMe4gVeX1WLxud7DBER6aVL5SqSKlXLbvoi2osQKKM0ExfOvtIs5l5wCp/aoHVgbCnADu6dN877zmNpJdnov1Qj0RYALV1ivdN//vnr47Y7vCJqennCd6IAL5PiZFi0VIBjMG4WL+wwU5tkfnxPL1ukvpEdZqaejBrPqqU+ewlpX7enAwzAaihYMSOfLlVrM/ybIpBtuDtRkQRPr8nUa1r2EDQi/jWeKN1CNJpxnKv9peG2z9FHQBhFS2WdqshVeGBACqG/dqDhugOi/P9FLNv4buPcLL7Yd+GOg66DnvEWGAvUXuE3152NOykn1zRyMQZTLdcNRfuX3WfLklPYO6Nf2JRaylcMcrErbsixgcT+p1+qXLQ8GCnkfqyMjmPo+FJ2BWd5KDRUim0ihUmO6Vd4B2/JMTZXsWNwOPmN/DqjpX/Z64UVO7yh0emaA9Vt6+bNlxrR/l/9Hy1JGz9GpK22jLIHDBcUwGP53ZHKSSm/WyfNzOJxRdeSTK+SApsglmdYUSNLVJjVraDURTkVI0XjVFTvu98yM95w9y3DoX9iYWLdg4NRysVMoWkOB0Ts0MBQeCZkn+erzs+7KNFTXxPrQA5LHMgbT/2ukEeKhuKypLsu9s4BLqGWTFnHgv1SL37dqvqigY55fxfEvHBuw+ea41xnfFPSb2yjm9d/lLnXapCkIGoss6ecxHg9481heyM32bnlqzngiluuuMQoEU9Lwk5VBMhKuQN+LbJds2Nb+XnHz4yLIWLIXX+4+Uv4uh0zYJSLABk8piLuFQ7NwkHbQR+cptvefLwpZmBOC68065t5WR/IeOlYpg6ND320XSOyshBXH9hgCXWtIHzxG64rAf/UkmB+UsnP2g2xbklc2s8hoYtMQP8F3qKbL557mBBDVVc8MPyamBusSVbYowBNzASZ64PsdfOSIAmjb9gv8+4X0EK9F789s7predBaFZRJNzfUXwhMrPeCmVGP692781db4K9vD5HJISA7juhIjL5f1uLXaJkBFbJJxkp6MTtWDFtwnXPYmhkEDPIF4oas7scywk70fkAaXzIgDymYlBMUVXR29X2gp49Kvo/kuGR3/oDV4DpEMrfK94BBL9rSXicnF4zDcMnW30gYY5Q/NLTLVktfvoea8QTwJ18BsD27fxEkCkupxrez2JgHx+m6u+2hPEO+V8PhpHCgM2aONfr1ZCcGBjcRtZLw1v2Gtd6QkwkrNgDwy3B/7gShoZSDRno3ceu5V0//JgKQOGuQP2MpxeX/Wu+e3BsftOdBct8E0m3MKek4Ij9bIXNim8taEz0VczllW3nEhgy1IJ5pL2q8AgxsHxjqCsBIH8KL5l0rwWiqFSw+Kb4Y8dUi/im8kZQerV8LwOCXvyPlgkIkPcDFlkeoFaYgWhmPfFGqhJIab7g8cMmT0hp51sRq8KmkHCEU+GmHHkwBuycA9/5gp6niJAuLNuQf5t6DacELYr6U/wsddBce6vaaPWWMYPrkJh52TIvszYapEZSynFZsOqb3SAbe0AGZuSL3NbD3SYNOpXLcdIZbCfczHChbLB+ljuOhURZzWHaY6oxXGqLJyo3pzbiS2PQ3q7nFWzMXxrXWVEO+zL/2U14A==\",\n                \"line_num\": 4,\n                \"path\": \"./tests/samples/doc_credentials_p\",\n                \"info\": \"\",\n                \"variable\": \"LONG_CREDENTIAL\",\n                \"variable_start\": 0,\n                \"variable_end\": 15,\n                \"value\": \"AgV4TakqXDSaUSruBPiKENLUg+aN/Z5HzG4y5q21GOWteXBNZSVXAh1G8ZCdf8AKaa73TipBRAOT0gI0o2xrm1AFzfnoa2J56rr5WtWfAmr5WCGdZx68H+ghRZMa7C8c76I0zDleUKuPbRhJEM+OZPLGVrL/yodyF+7wF5di84Cb5NOyuAHBZUGxxMWCFuwjRH13JRABMygbrOKaauKjQ5aUAp6ggKijEwr4oysBclvocYin4w1TDApHF5lbd6ytfAYSREJIhbswoUmzlyJ/3ftvl3w6qC2Hikfc8S2rRZ7Evdsbr1lDeNckRmzb3ZQKmREjnxYWM5X5ZekKdLOyo9wdmUleEfX0gU0ZXgB9tKDdR7bP//2p8lJreW51DuF4EynVTSoPqB0mLo0iMkxx0xBCEp5BNC5XpYi7jjvuCKWaHETR+60CsZG1cy12cQlZKtscrc4MI7D7jg9y+GooV+pF05A7a9QgBmqTunmEYBvP7C54nmiHM91fb1W/9XBqCgJZB/Bky9R/nmrRb7+yeRoC8HodzrBlRdciWzkXk0MG63xUGA5K4cH/s+EvmbP+eAi42vneKt9mslid7cxq//AdnXOiIBmhVQ+hn07V/rQxetqbvIYHIEmCdUqqOAmtuV5ba2TPcMtbYEcEGxQJX9e8oYvoShpFbVDpSoEUlVkqI0Bjdts3hsl7B7vV09OdPcMGWFRswu8OIvtllh1C3+2XarwXBs/EfNCWOR5XYDMrHKAWHgvNEI2uZQukt0ekN4BGKA+XNs8T9gdKzun7FoWuSpsXqbvkNS1lXe4dOYay5OoY3Od6eSpwboYmC7Y1GxEi6ixOTePovwot4cIYFvILJExraDEnRQCm53mcvr2qewiy5o8brTr8cA/Fp2VJGiIGmU2cUmz90Tx15/9ZzWA6N/Q0aaiKVDYmAirhUJaMf6gNeDYbodN9tJxEbeNN6krZvdLrsxBZdBViciX2X8Ju8ws0DQlIh54FhHKwwWeoxKPN05RFLORlNQdrV5bKt9FCA/igQECZP233wg7pBEw0wvdASDhaZs0pWX98jDUEJzfwSK4ivc3F15BuKy2Sh3rNjUXht95Dzl4iGsPIsA8DgZjgPbmcjrZXaMdQ5H8l/L4xce0mIAz3s9S/O2ginpFCbwTl2Txrnv44OPjif1S45wSwjzNvchTwduBi1Q13S78xsP//BopuNjxScQU0W8e06HOf9Cg9EkEQ08g57ekS7QcuCfVTQeHj+bltRUbL9en1iwNDgkI49S7kCy2hpSAbVn9WIJMJvMaUEm+jICKQdhnY2XuBiic4bznR+4TOkBaBXBVTKUr1EUH9PigkyliiLtIhHsCvungvP3htfH325ZAKcNxarlKgJrJvfCBnxtNzplF0R8UQUPUmYBRO2VYRT14iFqsU9Y21bG4aiz9SdJgh20KIBjtY1bn7FUNlJ0LHPuKiZSoX5Z71Y5o06YHBP5ijXsfDbEYW5nwfL1sDIqIgxJ0d5bnY9lJ8IdgFjnNqWECLinfjFCXdqiOPprIHD9N/x7DmDstNzjDKw+3aUtRboJmUCN/VsNhOgvBbPux1+UZcf4W01u3fT/JglhjApwqtoQnszIglHxSTHL3WphAB671pr2PK9vgkDeASmrSSrG0LuTx9d5UQLm/NV6j5MXxL1q7/Kk/RTHRd4l5SkcjmA+7Ds7W5rTVIOXV7j/ZYL6HdVv6MWqMKL7QvwUNseM2cnbOxWKg2T37rpZsCk1eU7AeVA69LxS7BHFiswfEi32YWVaxJu0lNoMiZg4WaNhmOtTIzoZU/INWQsRkfbdSROOIiUAYy983kE6h8HjgCvmebb0BeJeMZBM5jyRVrcwrnPEnZzHOiPruNovstlEt6IFvUotNKZgk5Y3DBUUVB4fo/Dv2zBoobQHcomWa2W6Fux6uYuIxG2i6VEVBX3QhItPFr6wc6+n00qiLBG1vhUFGsJzsomMFJx0wrA6voi/kfjRU2TnJjwG0mKMwLurxVVJyLtgwJy3BEDmR2vcaW18G3xoNjc3E+5XS6MutGX3TSoY7n2DftHvKSj46tjPyGPujOQ0tsN9z3EDVLemgnEl42L4FgLtgMOERfIs2XiMy384LbTJQ6xtknjEL3cFNN765s04wFGyI/hc1npJnkCCfKg/sVFLW3YrVGMZAVo/648q655vw2oKKRq8h48g7rnOj239TKUZhxwXZiWqnNZnnBXMIT5hSXwNyIotGcWyuqG2WGL+us/rT6jekSofQaswm8XRDSQPLO9ZqSCX7uM709gLrc/gyNtWaZ9+jpi+o60ydRvYaAgnBzAqhG2spKFTcuOx3usTuQssR2eDZlomRi2zo/nGqDke1sFWr7AULH40IYXqyrle6oY4j8Wf7f6evtNm9b42fFmVAdE04X27tEOe9b1q4o2IWibni0eNdjvjCaMu+DveYqyGXTSTIZt6UzSYFP18YjHKrSsr8SJE9LNMlxwl93v1AfwVFejK7eg3tm7+HRgRVTBaQyuf3EWgXdwcRH8Nqo/rrLBjXmeKZSjWpQIOX9h0TRc91DSJFu02PdqcmIG5T3lFHToLZYB1ohQMIHmfX8+fyR59o86hE/dm8WD1LuEpDlHsIOe4ZKVB9PqRfFpEIZ9gBcyW4co3Kl7uxh5UJVWDLv97ROG29tLBC5rq9mUXxbFiuQSV1/YGnkJQL3IlJ+KKE9fd8Lk+QVjfz2Kc2LBiaTwGoJ5MreVo5LxGf4joXXOpmk+g2dbo6bmuz0WpoGDLYON26mOQawWP+LIpMGlPYiTbUlwgwVv4iQr1ntgpka309haHfh/PeadIJ5FftNERTbNEtO7yKdKbf8ESLl3mVfZW4/bWmO9PBQQAu7dhXNqwG8AmsS62w77UgS7OSvAoSbtCSGZ+9HiGNdn/LI/K+7W4y9S10lR5Npa+5WSnSSTvh9ICfBQVD6iO0HChhEfXKLhesp/250V9kC0yuwq5eLi+A7tCfNQ9iTsmj0hQvnemxISy26OyBe5y39+d+lx45sbx1ijnT6+5PHsmSKx+/tDf6FxdcJpp/D5jUYNvjDASBS9ZxeA/JJDCC3sde9F9ZHZDY4gASDLmzQJYGOthD+bm7aA/RWofNJVpbLRq/7AjonvEOMgc3sk2nLlkfppE7EChJ75xV3aJ4EenBpkjSJVdEMckybT6d+Io9lH8YOuxpzSLo2kVt1vDRr26UZKW/M5OXY3tEHFj8679f4oddmJ1OGLG8SYuCIf5U6qPiom5C1CSVz/8ObNAxPR4ECdGpIpfJO0HmtwMvRmsAbsOEBGg4wIVa945ukJugZNwklFZ6wI0ys2jyvNCDRcgDRrV/fzkfyEIO/WMT/dLx4tbgqksXpnbfvUEJKorLMm2Lye4LuJ3msHvu0c274bJ7E8Y8KXKoMLNRdL7ZwwNUfrbj2KHyaAyqE0YOjIF3+06YOWyC0rJVOthFh+I9ah7RKPwSpsaqK6abzCFZLFdx8qBYA7mO4avHlm2SqiIgdivfHMm/RIFKHuEv+FxWXzfT8KD/jtDhBo672uY8c+nVsfZQysAsalkjd9qkhaqZbDbsHZi2LssBabP5MFqOOGpHgiV9UgMd1vDmz42E7MDCVcgvOF6IgB2Qz62fWdgL94HpRJTY794aJfhPFdk1K4PVo1Cs4CPoCo7gYoqcIBa0vUYwz5zSJe+0Mk21E5ltTl9A2hZhnbt8XFJRTtmXP8g4Jx9EP5hMtj4o7nKgvUwUXcVpa7COGw2UL2eU8TtFvKpWkQd05G1WaTDzHaGUXmo5/LQTLyBvrgi+NbM5JXklvefyZ2Va6LtWethJBfU3KM/PNh/qn9PnjBbfvMe4gVeX1WLxud7DBER6aVL5SqSKlXLbvoi2osQKKM0ExfOvtIs5l5wCp/aoHVgbCnADu6dN877zmNpJdnov1Qj0RYALV1ivdN//vnr47Y7vCJqennCd6IAL5PiZFi0VIBjMG4WL+wwU5tkfnxPL1ukvpEdZqaejBrPqqU+ewlpX7enAwzAaihYMSOfLlVrM/ybIpBtuDtRkQRPr8nUa1r2EDQi/jWeKN1CNJpxnKv9peG2z9FHQBhFS2WdqshVeGBACqG/dqDhugOi/P9FLNv4buPcLL7Yd+GOg66DnvEWGAvUXuE3152NOykn1zRyMQZTLdcNRfuX3WfLklPYO6Nf2JRaylcMcrErbsixgcT+p1+qXLQ8GCnkfqyMjmPo+FJ2BWd5KDRUim0ihUmO6Vd4B2/JMTZXsWNwOPmN/DqjpX/Z64UVO7yh0emaA9Vt6+bNlxrR/l/9Hy1JGz9GpK22jLIHDBcUwGP53ZHKSSm/WyfNzOJxRdeSTK+SApsglmdYUSNLVJjVraDURTkVI0XjVFTvu98yM95w9y3DoX9iYWLdg4NRysVMoWkOB0Ts0MBQeCZkn+erzs+7KNFTXxPrQA5LHMgbT/2ukEeKhuKypLsu9s4BLqGWTFnHgv1SL37dqvqigY55fxfEvHBuw+ea41xnfFPSb2yjm9d/lLnXapCkIGoss6ecxHg9481heyM32bnlqzngiluuuMQoEU9Lwk5VBMhKuQN+LbJds2Nb+XnHz4yLIWLIXX+4+Uv4uh0zYJSLABk8piLuFQ7NwkHbQR+cptvefLwpZmBOC68065t5WR/IeOlYpg6ND320XSOyshBXH9hgCXWtIHzxG64rAf/UkmB+UsnP2g2xbklc2s8hoYtMQP8F3qKbL557mBBDVVc8MPyamBusSVbYowBNzASZ64PsdfOSIAmjb9gv8+4X0EK9F789s7predBaFZRJNzfUXwhMrPeCmVGP692781db4K9vD5HJISA7juhIjL5f1uLXaJkBFbJJxkp6MTtWDFtwnXPYmhkEDPIF4oas7scywk70fkAaXzIgDymYlBMUVXR29X2gp49Kvo/kuGR3/oDV4DpEMrfK94BBL9rSXicnF4zDcMnW30gYY5Q/NLTLVktfvoea8QTwJ18BsD27fxEkCkupxrez2JgHx+m6u+2hPEO+V8PhpHCgM2aONfr1ZCcGBjcRtZLw1v2Gtd6QkwkrNgDwy3B/7gShoZSDRno3ceu5V0//JgKQOGuQP2MpxeX/Wu+e3BsftOdBct8E0m3MKek4Ij9bIXNim8taEz0VczllW3nEhgy1IJ5pL2q8AgxsHxjqCsBIH8KL5l0rwWiqFSw+Kb4Y8dUi/im8kZQerV8LwOCXvyPlgkIkPcDFlkeoFaYgWhmPfFGqhJIab7g8cMmT0hp51sRq8KmkHCEU+GmHHkwBuycA9/5gp6niJAuLNuQf5t6DacELYr6U/wsddBce6vaaPWWMYPrkJh52TIvszYapEZSynFZsOqb3SAbe0AGZuSL3NbD3SYNOpXLcdIZbCfczHChbLB+ljuOhURZzWHaY6oxXGqLJyo3pzbiS2PQ3q7nFWzMXxrXWVEO+zL/2U14A==\",\n                \"value_start\": 17,\n                \"value_end\": 5485,\n                \"entropy\": 5.99409\n            }\n        ]\n    },\n    {\n        \"rule\": \"Secret\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"SECRET = getenv(\\\"GEHE1MN15\\\", '')\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/doc_get_n\",\n                \"info\": \"\",\n                \"variable\": \"SECRET\",\n                \"variable_start\": 0,\n                \"variable_end\": 6,\n                \"value\": \"\",\n                \"value_start\": 30,\n                \"value_end\": 30,\n                \"entropy\": 0.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"Secret\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"if SECRET := getenv(\\\"CEKPET\\\", \\\"GEHEIMN1S\\\"):\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/doc_get_p\",\n                \"info\": \"\",\n                \"variable\": \"SECRET\",\n                \"variable_start\": 3,\n                \"variable_end\": 9,\n                \"value\": \"GEHEIMN1S\",\n                \"value_start\": 31,\n                \"value_end\": 40,\n                \"entropy\": 2.9477\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"PASSWORD = os.environ.get(\\\"PASSWORD\\\") or \\\"at5G6zi!m\\\"\",\n                \"line_num\": 5,\n                \"path\": \"./tests/samples/doc_get_p\",\n                \"info\": \"\",\n                \"variable\": \"PASSWORD\",\n                \"variable_start\": 0,\n                \"variable_end\": 8,\n                \"value\": \"at5G6zi!m\",\n                \"value_start\": 42,\n                \"value_end\": 51,\n                \"entropy\": 3.16993\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"ID:master,PW:dipPr10Gg!\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"PW\",\n                \"variable_start\": 10,\n                \"variable_end\": 12,\n                \"value\": \"dipPr10Gg!\",\n                \"value_start\": 13,\n                \"value_end\": 23,\n                \"entropy\": 3.32193\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"ID:master PW:dipPr11Gg!\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"PW\",\n                \"variable_start\": 10,\n                \"variable_end\": 12,\n                \"value\": \"dipPr11Gg!\",\n                \"value_start\": 13,\n                \"value_end\": 23,\n                \"entropy\": 3.12193\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"ANYID:master PW:dipPr12Gg!\",\n                \"line_num\": 3,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"PW\",\n                \"variable_start\": 13,\n                \"variable_end\": 15,\n                \"value\": \"dipPr12Gg!\",\n                \"value_start\": 16,\n                \"value_end\": 26,\n                \"entropy\": 3.32193\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"Username:master Password:dipPr13Gg!\",\n                \"line_num\": 4,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"Password\",\n                \"variable_start\": 16,\n                \"variable_end\": 24,\n                \"value\": \"dipPr13Gg!\",\n                \"value_start\": 25,\n                \"value_end\": 35,\n                \"entropy\": 3.32193\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"id:master,password:dipPr14Gg!\",\n                \"line_num\": 5,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"password\",\n                \"variable_start\": 10,\n                \"variable_end\": 18,\n                \"value\": \"dipPr14Gg!\",\n                \"value_start\": 19,\n                \"value_end\": 29,\n                \"entropy\": 3.32193\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"ID:master/PW:dipPr15Gg!\",\n                \"line_num\": 6,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"PW\",\n                \"variable_start\": 10,\n                \"variable_end\": 12,\n                \"value\": \"dipPr15Gg!\",\n                \"value_start\": 13,\n                \"value_end\": 23,\n                \"entropy\": 3.32193\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"id:master password:dipPr16Gg!\",\n                \"line_num\": 7,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"password\",\n                \"variable_start\": 10,\n                \"variable_end\": 18,\n                \"value\": \"dipPr16Gg!\",\n                \"value_start\": 19,\n                \"value_end\": 29,\n                \"entropy\": 3.32193\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"user:master password:dipPr17Gg!\",\n                \"line_num\": 8,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"password\",\n                \"variable_start\": 12,\n                \"variable_end\": 20,\n                \"value\": \"dipPr17Gg!\",\n                \"value_start\": 21,\n                \"value_end\": 31,\n                \"entropy\": 3.32193\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"username:master,password:dipPr19Gg!\",\n                \"line_num\": 10,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"password\",\n                \"variable_start\": 16,\n                \"variable_end\": 24,\n                \"value\": \"dipPr19Gg!\",\n                \"value_start\": 25,\n                \"value_end\": 35,\n                \"entropy\": 3.32193\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"username:master pwd:dipPr110Gg!\",\n                \"line_num\": 11,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"pwd\",\n                \"variable_start\": 16,\n                \"variable_end\": 19,\n                \"value\": \"dipPr110Gg!\",\n                \"value_start\": 20,\n                \"value_end\": 31,\n                \"entropy\": 3.27761\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"ANYid:master,password:dipPr111Gg!\",\n                \"line_num\": 12,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"password\",\n                \"variable_start\": 13,\n                \"variable_end\": 21,\n                \"value\": \"dipPr111Gg!\",\n                \"value_start\": 22,\n                \"value_end\": 33,\n                \"entropy\": 3.02717\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"ID:master PWD:dipPr112Gg!\",\n                \"line_num\": 13,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"PWD\",\n                \"variable_start\": 10,\n                \"variable_end\": 13,\n                \"value\": \"dipPr112Gg!\",\n                \"value_start\": 14,\n                \"value_end\": 25,\n                \"entropy\": 3.27761\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"user id:master password:dipPr113Gg!\",\n                \"line_num\": 14,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"password\",\n                \"variable_start\": 15,\n                \"variable_end\": 23,\n                \"value\": \"dipPr113Gg!\",\n                \"value_start\": 24,\n                \"value_end\": 35,\n                \"entropy\": 3.27761\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"user:master,password:dipPr114Gg!\",\n                \"line_num\": 15,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"password\",\n                \"variable_start\": 12,\n                \"variable_end\": 20,\n                \"value\": \"dipPr114Gg!\",\n                \"value_start\": 21,\n                \"value_end\": 32,\n                \"entropy\": 3.27761\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"user=master,password=dipPr115Gg!\",\n                \"line_num\": 16,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"password\",\n                \"variable_start\": 12,\n                \"variable_end\": 20,\n                \"value\": \"dipPr115Gg!\",\n                \"value_start\": 21,\n                \"value_end\": 32,\n                \"entropy\": 3.27761\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"username=master password=dipPr116Gg!\",\n                \"line_num\": 17,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"password\",\n                \"variable_start\": 16,\n                \"variable_end\": 24,\n                \"value\": \"dipPr116Gg!\",\n                \"value_start\": 25,\n                \"value_end\": 36,\n                \"entropy\": 3.27761\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"User name:master Password:dipPr117Gg!\",\n                \"line_num\": 18,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"Password\",\n                \"variable_start\": 17,\n                \"variable_end\": 25,\n                \"value\": \"dipPr117Gg!\",\n                \"value_start\": 26,\n                \"value_end\": 37,\n                \"entropy\": 3.27761\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"username=master,password=dipPr118Gg!\",\n                \"line_num\": 19,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"password\",\n                \"variable_start\": 16,\n                \"variable_end\": 24,\n                \"value\": \"dipPr118Gg!\",\n                \"value_start\": 25,\n                \"value_end\": 36,\n                \"entropy\": 3.27761\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"--user=master --password=dipPr119Gg!\",\n                \"line_num\": 20,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"password\",\n                \"variable_start\": 16,\n                \"variable_end\": 24,\n                \"value\": \"dipPr119Gg!\",\n                \"value_start\": 25,\n                \"value_end\": 36,\n                \"entropy\": 3.27761\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"user=master passwd=dipPr120Gg!\",\n                \"line_num\": 21,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"passwd\",\n                \"variable_start\": 12,\n                \"variable_end\": 18,\n                \"value\": \"dipPr120Gg!\",\n                \"value_start\": 19,\n                \"value_end\": 30,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"account:dipPr121Gg! password:dipPr121Gg!\",\n                \"line_num\": 22,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"password\",\n                \"variable_start\": 20,\n                \"variable_end\": 28,\n                \"value\": \"dipPr121Gg!\",\n                \"value_start\": 29,\n                \"value_end\": 40,\n                \"entropy\": 3.27761\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"id:master pass:dipPr122Gg!\",\n                \"line_num\": 23,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"pass\",\n                \"variable_start\": 10,\n                \"variable_end\": 14,\n                \"value\": \"dipPr122Gg!\",\n                \"value_start\": 15,\n                \"value_end\": 26,\n                \"entropy\": 3.27761\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"user:master pw:dipPr124Gg!\",\n                \"line_num\": 25,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"pw\",\n                \"variable_start\": 12,\n                \"variable_end\": 14,\n                \"value\": \"dipPr124Gg!\",\n                \"value_start\": 15,\n                \"value_end\": 26,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"Username:master/Password:dipPr125Gg!\",\n                \"line_num\": 26,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"Password\",\n                \"variable_start\": 16,\n                \"variable_end\": 24,\n                \"value\": \"dipPr125Gg!\",\n                \"value_start\": 25,\n                \"value_end\": 36,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"userId:master,password:dipPr126Gg!\",\n                \"line_num\": 27,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"password\",\n                \"variable_start\": 14,\n                \"variable_end\": 22,\n                \"value\": \"dipPr126Gg!\",\n                \"value_start\": 23,\n                \"value_end\": 34,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"CMD Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"--user master --password dipPr127Gg!\",\n                \"line_num\": 28,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"password\",\n                \"variable_start\": 16,\n                \"variable_end\": 24,\n                \"value\": \"dipPr127Gg!\",\n                \"value_start\": 25,\n                \"value_end\": 36,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"dipPr128Gg! ID:master dipPr128Gg! Password:dipPr128Gg!\",\n                \"line_num\": 29,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"Password\",\n                \"variable_start\": 34,\n                \"variable_end\": 42,\n                \"value\": \"dipPr128Gg!\",\n                \"value_start\": 43,\n                \"value_end\": 54,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"ANYid:master,pw:dipPr129Gg!\",\n                \"line_num\": 30,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"pw\",\n                \"variable_start\": 13,\n                \"variable_end\": 15,\n                \"value\": \"dipPr129Gg!\",\n                \"value_start\": 16,\n                \"value_end\": 27,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"user:master pwd:dipPr130Gg!\",\n                \"line_num\": 31,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"pwd\",\n                \"variable_start\": 12,\n                \"variable_end\": 15,\n                \"value\": \"dipPr130Gg!\",\n                \"value_start\": 16,\n                \"value_end\": 27,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"Login:dipPr131Gg! Pwd:dipPr131Gg!\",\n                \"line_num\": 32,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"Pwd\",\n                \"variable_start\": 18,\n                \"variable_end\": 21,\n                \"value\": \"dipPr131Gg!\",\n                \"value_start\": 22,\n                \"value_end\": 33,\n                \"entropy\": 3.27761\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"ANYID:master Password:dipPr132Gg!\",\n                \"line_num\": 33,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"Password\",\n                \"variable_start\": 13,\n                \"variable_end\": 21,\n                \"value\": \"dipPr132Gg!\",\n                \"value_start\": 22,\n                \"value_end\": 33,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"-Username:master -Password:dipPr133Gg!\",\n                \"line_num\": 34,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"Password\",\n                \"variable_start\": 18,\n                \"variable_end\": 26,\n                \"value\": \"dipPr133Gg!\",\n                \"value_start\": 27,\n                \"value_end\": 38,\n                \"entropy\": 3.27761\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"account:dipPr134Gg! pw:dipPr134Gg!\",\n                \"line_num\": 35,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"pw\",\n                \"variable_start\": 20,\n                \"variable_end\": 22,\n                \"value\": \"dipPr134Gg!\",\n                \"value_start\": 23,\n                \"value_end\": 34,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"user id:master user pw:dipPr135Gg!\",\n                \"line_num\": 36,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"pw\",\n                \"variable_start\": 20,\n                \"variable_end\": 22,\n                \"value\": \"dipPr135Gg!\",\n                \"value_start\": 23,\n                \"value_end\": 34,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"user_name=master password=dipPr136Gg!\",\n                \"line_num\": 37,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"password\",\n                \"variable_start\": 17,\n                \"variable_end\": 25,\n                \"value\": \"dipPr136Gg!\",\n                \"value_start\": 26,\n                \"value_end\": 37,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"CMD Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"--username master --password dipPr137Gg!\",\n                \"line_num\": 38,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"password\",\n                \"variable_start\": 20,\n                \"variable_end\": 28,\n                \"value\": \"dipPr137Gg!\",\n                \"value_start\": 29,\n                \"value_end\": 40,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"ANYlogin:master,ANYpassword:dipPr138Gg!\",\n                \"line_num\": 39,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"ANYpassword\",\n                \"variable_start\": 16,\n                \"variable_end\": 27,\n                \"value\": \"dipPr138Gg!\",\n                \"value_start\": 28,\n                \"value_end\": 39,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"ANYusername=master ANYpassword=dipPr139Gg!\",\n                \"line_num\": 40,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"ANYpassword\",\n                \"variable_start\": 19,\n                \"variable_end\": 30,\n                \"value\": \"dipPr139Gg!\",\n                \"value_start\": 31,\n                \"value_end\": 42,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"ID:master,PWD:dipPr140Gg!\",\n                \"line_num\": 41,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"PWD\",\n                \"variable_start\": 10,\n                \"variable_end\": 13,\n                \"value\": \"dipPr140Gg!\",\n                \"value_start\": 14,\n                \"value_end\": 25,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"ID:master/PASS:dipPr141Gg!\",\n                \"line_num\": 42,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"PASS\",\n                \"variable_start\": 10,\n                \"variable_end\": 14,\n                \"value\": \"dipPr141Gg!\",\n                \"value_start\": 15,\n                \"value_end\": 26,\n                \"entropy\": 3.27761\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"account:master passwd:dipPr142Gg!\",\n                \"line_num\": 43,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"passwd\",\n                \"variable_start\": 15,\n                \"variable_end\": 21,\n                \"value\": \"dipPr142Gg!\",\n                \"value_start\": 22,\n                \"value_end\": 33,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"login:master password:dipPr143Gg!\",\n                \"line_num\": 44,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"password\",\n                \"variable_start\": 13,\n                \"variable_end\": 21,\n                \"value\": \"dipPr143Gg!\",\n                \"value_start\": 22,\n                \"value_end\": 33,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"user=master,pass=dipPr144Gg!\",\n                \"line_num\": 45,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"pass\",\n                \"variable_start\": 12,\n                \"variable_end\": 16,\n                \"value\": \"dipPr144Gg!\",\n                \"value_start\": 17,\n                \"value_end\": 28,\n                \"entropy\": 3.27761\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"password:dipPr145Gg! username:master\",\n                \"line_num\": 46,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"password\",\n                \"variable_start\": 0,\n                \"variable_end\": 8,\n                \"value\": \"dipPr145Gg!\",\n                \"value_start\": 9,\n                \"value_end\": 20,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"Login as:master Password:dipPr146Gg!\",\n                \"line_num\": 47,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"Password\",\n                \"variable_start\": 16,\n                \"variable_end\": 24,\n                \"value\": \"dipPr146Gg!\",\n                \"value_start\": 25,\n                \"value_end\": 36,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"ID:master,pass:dipPr147Gg!\",\n                \"line_num\": 48,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"pass\",\n                \"variable_start\": 10,\n                \"variable_end\": 14,\n                \"value\": \"dipPr147Gg!\",\n                \"value_start\": 15,\n                \"value_end\": 26,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"id:master pw:dipPr148Gg!\",\n                \"line_num\": 49,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"pw\",\n                \"variable_start\": 10,\n                \"variable_end\": 12,\n                \"value\": \"dipPr148Gg!\",\n                \"value_start\": 13,\n                \"value_end\": 24,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"(98.76.54.32)ID:master PW:dipPr149Gg!\",\n                \"line_num\": 50,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"PW\",\n                \"variable_start\": 23,\n                \"variable_end\": 25,\n                \"value\": \"dipPr149Gg!\",\n                \"value_start\": 26,\n                \"value_end\": 37,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"-id:master -pw:dipPr151Gg!\",\n                \"line_num\": 52,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"pw\",\n                \"variable_start\": 12,\n                \"variable_end\": 14,\n                \"value\": \"dipPr151Gg!\",\n                \"value_start\": 15,\n                \"value_end\": 26,\n                \"entropy\": 3.27761\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"username:master pw:dipPr152Gg!\",\n                \"line_num\": 53,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"pw\",\n                \"variable_start\": 16,\n                \"variable_end\": 18,\n                \"value\": \"dipPr152Gg!\",\n                \"value_start\": 19,\n                \"value_end\": 30,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"-User Name:master -Password:dipPr154Gg!\",\n                \"line_num\": 55,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"Password\",\n                \"variable_start\": 19,\n                \"variable_end\": 27,\n                \"value\": \"dipPr154Gg!\",\n                \"value_start\": 28,\n                \"value_end\": 39,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"account:dipPr155Gg!/password:dipPr155Gg!\",\n                \"line_num\": 56,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"password\",\n                \"variable_start\": 20,\n                \"variable_end\": 28,\n                \"value\": \"dipPr155Gg!\",\n                \"value_start\": 29,\n                \"value_end\": 40,\n                \"entropy\": 3.27761\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"ANYuser=master ANY_pass=dipPr156Gg!\",\n                \"line_num\": 57,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"ANY_pass\",\n                \"variable_start\": 15,\n                \"variable_end\": 23,\n                \"value\": \"dipPr156Gg!\",\n                \"value_start\": 24,\n                \"value_end\": 35,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"ANYUser:master password:dipPr157Gg!\",\n                \"line_num\": 58,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"password\",\n                \"variable_start\": 15,\n                \"variable_end\": 23,\n                \"value\": \"dipPr157Gg!\",\n                \"value_start\": 24,\n                \"value_end\": 35,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"user:master,pwd:dipPr158Gg!\",\n                \"line_num\": 59,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"pwd\",\n                \"variable_start\": 12,\n                \"variable_end\": 15,\n                \"value\": \"dipPr158Gg!\",\n                \"value_start\": 16,\n                \"value_end\": 27,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"ANY_username:master,ANY_password:dipPr159Gg!\",\n                \"line_num\": 60,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"ANY_password\",\n                \"variable_start\": 20,\n                \"variable_end\": 32,\n                \"value\": \"dipPr159Gg!\",\n                \"value_start\": 33,\n                \"value_end\": 44,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"ANYusername:master,ANY_password:dipPr160Gg!\",\n                \"line_num\": 61,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"ANY_password\",\n                \"variable_start\": 19,\n                \"variable_end\": 31,\n                \"value\": \"dipPr160Gg!\",\n                \"value_start\": 32,\n                \"value_end\": 43,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"ANY_USER=master ANY_PASS=dipPr161Gg!\",\n                \"line_num\": 62,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"ANY_PASS\",\n                \"variable_start\": 16,\n                \"variable_end\": 24,\n                \"value\": \"dipPr161Gg!\",\n                \"value_start\": 25,\n                \"value_end\": 36,\n                \"entropy\": 3.27761\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"User Account:master User password:dipPr162Gg!\",\n                \"line_num\": 63,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"password\",\n                \"variable_start\": 25,\n                \"variable_end\": 33,\n                \"value\": \"dipPr162Gg!\",\n                \"value_start\": 34,\n                \"value_end\": 45,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"dipPr163Gg! ID:master dipPr163Gg! PWD:dipPr163Gg!\",\n                \"line_num\": 64,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"PWD\",\n                \"variable_start\": 34,\n                \"variable_end\": 37,\n                \"value\": \"dipPr163Gg!\",\n                \"value_start\": 38,\n                \"value_end\": 49,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"userid=master password=dipPr164Gg!\",\n                \"line_num\": 65,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"password\",\n                \"variable_start\": 14,\n                \"variable_end\": 22,\n                \"value\": \"dipPr164Gg!\",\n                \"value_start\": 23,\n                \"value_end\": 34,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"ANY-username=master ANY-password=dipPr165Gg!\",\n                \"line_num\": 66,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"ANY-password\",\n                \"variable_start\": 20,\n                \"variable_end\": 32,\n                \"value\": \"dipPr165Gg!\",\n                \"value_start\": 33,\n                \"value_end\": 44,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"username:master pass:dipPr166Gg!\",\n                \"line_num\": 67,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"pass\",\n                \"variable_start\": 16,\n                \"variable_end\": 20,\n                \"value\": \"dipPr166Gg!\",\n                \"value_start\": 21,\n                \"value_end\": 32,\n                \"entropy\": 3.27761\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"user=master pwd=dipPr168Gg!\",\n                \"line_num\": 69,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"pwd\",\n                \"variable_start\": 12,\n                \"variable_end\": 15,\n                \"value\": \"dipPr168Gg!\",\n                \"value_start\": 16,\n                \"value_end\": 27,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"Name:master,PW:dipPr169Gg!\",\n                \"line_num\": 70,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"PW\",\n                \"variable_start\": 12,\n                \"variable_end\": 14,\n                \"value\": \"dipPr169Gg!\",\n                \"value_start\": 15,\n                \"value_end\": 26,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"user:master pass:dipPr172Gg!\",\n                \"line_num\": 73,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"pass\",\n                \"variable_start\": 12,\n                \"variable_end\": 16,\n                \"value\": \"dipPr172Gg!\",\n                \"value_start\": 17,\n                \"value_end\": 28,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"user=master password=dipPr174Gg!\",\n                \"line_num\": 75,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"password\",\n                \"variable_start\": 12,\n                \"variable_end\": 20,\n                \"value\": \"dipPr174Gg!\",\n                \"value_start\": 21,\n                \"value_end\": 32,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"Host name:master/Password:dipPr175Gg!\",\n                \"line_num\": 76,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"Password\",\n                \"variable_start\": 17,\n                \"variable_end\": 25,\n                \"value\": \"dipPr175Gg!\",\n                \"value_start\": 26,\n                \"value_end\": 37,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"role:master,password:dipPr176Gg!\",\n                \"line_num\": 77,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"password\",\n                \"variable_start\": 12,\n                \"variable_end\": 20,\n                \"value\": \"dipPr176Gg!\",\n                \"value_start\": 21,\n                \"value_end\": 32,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"Wifi Name:master,PW:dipPr177Gg!\",\n                \"line_num\": 78,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"PW\",\n                \"variable_start\": 17,\n                \"variable_end\": 19,\n                \"value\": \"dipPr177Gg!\",\n                \"value_start\": 20,\n                \"value_end\": 31,\n                \"entropy\": 3.27761\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"ID:master/Password:dipPr178Gg!\",\n                \"line_num\": 79,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"Password\",\n                \"variable_start\": 10,\n                \"variable_end\": 18,\n                \"value\": \"dipPr178Gg!\",\n                \"value_start\": 19,\n                \"value_end\": 30,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"name:master,password:dipPr179Gg!\",\n                \"line_num\": 80,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"password\",\n                \"variable_start\": 12,\n                \"variable_end\": 20,\n                \"value\": \"dipPr179Gg!\",\n                \"value_start\": 21,\n                \"value_end\": 32,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"Loging:master Password:dipPr180Gg!\",\n                \"line_num\": 81,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"Password\",\n                \"variable_start\": 14,\n                \"variable_end\": 22,\n                \"value\": \"dipPr180Gg!\",\n                \"value_start\": 23,\n                \"value_end\": 34,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"Loging:master Pwd:dipPr181Gg!\",\n                \"line_num\": 82,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"Pwd\",\n                \"variable_start\": 14,\n                \"variable_end\": 17,\n                \"value\": \"dipPr181Gg!\",\n                \"value_start\": 18,\n                \"value_end\": 29,\n                \"entropy\": 3.27761\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"id:master,default pw:dipPr182Gg!\",\n                \"line_num\": 83,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"pw\",\n                \"variable_start\": 18,\n                \"variable_end\": 20,\n                \"value\": \"dipPr182Gg!\",\n                \"value_start\": 21,\n                \"value_end\": 32,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"id/pw id:master pw:dipPr185Gg!\",\n                \"line_num\": 86,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"pw\",\n                \"variable_start\": 16,\n                \"variable_end\": 18,\n                \"value\": \"dipPr185Gg!\",\n                \"value_start\": 19,\n                \"value_end\": 30,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"id/pw id:master pw:dipPr185Gg!\",\n                \"line_num\": 86,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"pw id\",\n                \"variable_start\": 3,\n                \"variable_end\": 8,\n                \"value\": \"master\",\n                \"value_start\": 9,\n                \"value_end\": 15,\n                \"entropy\": 2.58496\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"user:master,pwd:dipPr186Gg!\",\n                \"line_num\": 87,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"pwd\",\n                \"variable_start\": 12,\n                \"variable_end\": 15,\n                \"value\": \"dipPr186Gg!\",\n                \"value_start\": 16,\n                \"value_end\": 27,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"username:master/pw:dipPr188Gg!\",\n                \"line_num\": 89,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"pw\",\n                \"variable_start\": 16,\n                \"variable_end\": 18,\n                \"value\": \"dipPr188Gg!\",\n                \"value_start\": 19,\n                \"value_end\": 30,\n                \"entropy\": 3.27761\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"username:master pw:dipPr189Gg!\",\n                \"line_num\": 90,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"pw\",\n                \"variable_start\": 16,\n                \"variable_end\": 18,\n                \"value\": \"dipPr189Gg!\",\n                \"value_start\": 19,\n                \"value_end\": 30,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"PW:dipPr190Gg! ID:master\",\n                \"line_num\": 91,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"PW\",\n                \"variable_start\": 0,\n                \"variable_end\": 2,\n                \"value\": \"dipPr190Gg!\",\n                \"value_start\": 3,\n                \"value_end\": 14,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"ANYid:master pw:dipPr194Gg! ip:98.76.54.32\",\n                \"line_num\": 95,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"pw\",\n                \"variable_start\": 13,\n                \"variable_end\": 15,\n                \"value\": \"dipPr194Gg!\",\n                \"value_start\": 16,\n                \"value_end\": 27,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"id: master pw:dipPr197Gg!\",\n                \"line_num\": 98,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"pw\",\n                \"variable_start\": 11,\n                \"variable_end\": 13,\n                \"value\": \"dipPr197Gg!\",\n                \"value_start\": 14,\n                \"value_end\": 25,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"id:master@example.com,pw:dipPr198Gg!\",\n                \"line_num\": 99,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"pw\",\n                \"variable_start\": 22,\n                \"variable_end\": 24,\n                \"value\": \"dipPr198Gg!\",\n                \"value_start\": 25,\n                \"value_end\": 36,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"id:master@example.com,pw:IHQSB1GG!\",\n                \"line_num\": 102,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"pw\",\n                \"variable_start\": 22,\n                \"variable_end\": 24,\n                \"value\": \"IHQSB1GG!\",\n                \"value_start\": 25,\n                \"value_end\": 34,\n                \"entropy\": 2.9477\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"ID/PW:master/iPp0@GRq\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/doc_id_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"PW\",\n                \"variable_start\": 3,\n                \"variable_end\": 5,\n                \"value\": \"master/iPp0@GRq\",\n                \"value_start\": 6,\n                \"value_end\": 21,\n                \"entropy\": 3.90689\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"ANYID(PW):master(iPp1@GRq)\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/doc_id_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"PW)\",\n                \"variable_start\": 6,\n                \"variable_end\": 9,\n                \"value\": \"iPp1@GRq\",\n                \"value_start\": 17,\n                \"value_end\": 25,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"ID/Password:master/iPp2@GRq\",\n                \"line_num\": 3,\n                \"path\": \"./tests/samples/doc_id_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"Password\",\n                \"variable_start\": 3,\n                \"variable_end\": 11,\n                \"value\": \"master/iPp2@GRq\",\n                \"value_start\": 12,\n                \"value_end\": 27,\n                \"entropy\": 3.90689\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"ID/Pass:master/iPp3@GRq\",\n                \"line_num\": 4,\n                \"path\": \"./tests/samples/doc_id_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"Pass\",\n                \"variable_start\": 3,\n                \"variable_end\": 7,\n                \"value\": \"master/iPp3@GRq\",\n                \"value_start\": 8,\n                \"value_end\": 23,\n                \"entropy\": 3.90689\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"ID:PW=master:iPp4@GRq\",\n                \"line_num\": 5,\n                \"path\": \"./tests/samples/doc_id_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"PW\",\n                \"variable_start\": 3,\n                \"variable_end\": 5,\n                \"value\": \"master:iPp4@GRq\",\n                \"value_start\": 6,\n                \"value_end\": 21,\n                \"entropy\": 3.90689\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"ID/PW=master/iPp5@GRq\",\n                \"line_num\": 6,\n                \"path\": \"./tests/samples/doc_id_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"PW\",\n                \"variable_start\": 3,\n                \"variable_end\": 5,\n                \"value\": \"master/iPp5@GRq\",\n                \"value_start\": 6,\n                \"value_end\": 21,\n                \"entropy\": 3.90689\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"username/password:master/iPp7@GRq\",\n                \"line_num\": 8,\n                \"path\": \"./tests/samples/doc_id_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"password\",\n                \"variable_start\": 9,\n                \"variable_end\": 17,\n                \"value\": \"master/iPp7@GRq\",\n                \"value_start\": 18,\n                \"value_end\": 33,\n                \"entropy\": 3.90689\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"id/passwd:master/iPp8@GRq\",\n                \"line_num\": 9,\n                \"path\": \"./tests/samples/doc_id_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"passwd\",\n                \"variable_start\": 3,\n                \"variable_end\": 9,\n                \"value\": \"master/iPp8@GRq\",\n                \"value_start\": 10,\n                \"value_end\": 25,\n                \"entropy\": 3.90689\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"98.76.54.32(ID:master/PW:iPp10@GRq)      # todo: move into other sample ?\",\n                \"line_num\": 11,\n                \"path\": \"./tests/samples/doc_id_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"PW\",\n                \"variable_start\": 22,\n                \"variable_end\": 24,\n                \"value\": \"iPp10@GRq\",\n                \"value_start\": 25,\n                \"value_end\": 34,\n                \"entropy\": 3.16993\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \" ID / PW : db / iPp14@GRq\",\n                \"line_num\": 15,\n                \"path\": \"./tests/samples/doc_id_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"PW\",\n                \"variable_start\": 6,\n                \"variable_end\": 8,\n                \"value\": \"\",\n                \"value_start\": 11,\n                \"value_end\": 11,\n                \"entropy\": 0.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"\\uc544\\uc774\\ub514/PW:master/iPp16@GRq\",\n                \"line_num\": 17,\n                \"path\": \"./tests/samples/doc_id_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"PW\",\n                \"variable_start\": 4,\n                \"variable_end\": 6,\n                \"value\": \"master/iPp16@GRq\",\n                \"value_start\": 7,\n                \"value_end\": 23,\n                \"entropy\": 4.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"\\uacc4\\uc815/PW:master/iPp17@GRq\",\n                \"line_num\": 18,\n                \"path\": \"./tests/samples/doc_id_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"PW\",\n                \"variable_start\": 3,\n                \"variable_end\": 5,\n                \"value\": \"master/iPp17@GRq\",\n                \"value_start\": 6,\n                \"value_end\": 22,\n                \"entropy\": 4.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"98.76.54.32 id/pw:master/iPp19@GRq\",\n                \"line_num\": 20,\n                \"path\": \"./tests/samples/doc_id_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"pw\",\n                \"variable_start\": 15,\n                \"variable_end\": 17,\n                \"value\": \"master/iPp19@GRq\",\n                \"value_start\": 18,\n                \"value_end\": 34,\n                \"entropy\": 4.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"id/pass:master,iPp20@GRq\",\n                \"line_num\": 21,\n                \"path\": \"./tests/samples/doc_id_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"pass\",\n                \"variable_start\": 3,\n                \"variable_end\": 7,\n                \"value\": \"master\",\n                \"value_start\": 8,\n                \"value_end\": 14,\n                \"entropy\": 2.58496\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"ID/PWD:master/iPp21@GRq\",\n                \"line_num\": 22,\n                \"path\": \"./tests/samples/doc_id_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"PWD\",\n                \"variable_start\": 3,\n                \"variable_end\": 6,\n                \"value\": \"master/iPp21@GRq\",\n                \"value_start\": 7,\n                \"value_end\": 23,\n                \"entropy\": 4.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"user/pwd:master/iPp22@GRq\",\n                \"line_num\": 23,\n                \"path\": \"./tests/samples/doc_id_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"pwd\",\n                \"variable_start\": 5,\n                \"variable_end\": 8,\n                \"value\": \"master/iPp22@GRq\",\n                \"value_start\": 9,\n                \"value_end\": 25,\n                \"entropy\": 3.875\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"user/pass:master/iPp25@GRq\",\n                \"line_num\": 26,\n                \"path\": \"./tests/samples/doc_id_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"pass\",\n                \"variable_start\": 5,\n                \"variable_end\": 9,\n                \"value\": \"master/iPp25@GRq\",\n                \"value_start\": 10,\n                \"value_end\": 26,\n                \"entropy\": 4.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"ID/Password=master/iPp27@GRq\",\n                \"line_num\": 28,\n                \"path\": \"./tests/samples/doc_id_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"Password\",\n                \"variable_start\": 3,\n                \"variable_end\": 11,\n                \"value\": \"master/iPp27@GRq\",\n                \"value_start\": 12,\n                \"value_end\": 28,\n                \"entropy\": 4.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"ID/PW:master/iPp28@GRq\",\n                \"line_num\": 29,\n                \"path\": \"./tests/samples/doc_id_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"PW\",\n                \"variable_start\": 3,\n                \"variable_end\": 5,\n                \"value\": \"master/iPp28@GRq\",\n                \"value_start\": 6,\n                \"value_end\": 22,\n                \"entropy\": 4.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"password: <PostgreSQL PW>\",\n                \"line_num\": 35,\n                \"path\": \"./tests/samples/doc_id_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"password\",\n                \"variable_start\": 0,\n                \"variable_end\": 8,\n                \"value\": \"<PostgreSQL\",\n                \"value_start\": 10,\n                \"value_end\": 21,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"Password:Prl23Db#@\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/doc_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"Password\",\n                \"variable_start\": 0,\n                \"variable_end\": 8,\n                \"value\": \"Prl23Db#@\",\n                \"value_start\": 9,\n                \"value_end\": 18,\n                \"entropy\": 3.16993\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"pw:Prl23Db#@\",\n                \"line_num\": 3,\n                \"path\": \"./tests/samples/doc_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"pw\",\n                \"variable_start\": 0,\n                \"variable_end\": 2,\n                \"value\": \"Prl23Db#@\",\n                \"value_start\": 3,\n                \"value_end\": 12,\n                \"entropy\": 3.16993\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"Password=Prl23Db#@\",\n                \"line_num\": 4,\n                \"path\": \"./tests/samples/doc_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"Password\",\n                \"variable_start\": 0,\n                \"variable_end\": 8,\n                \"value\": \"Prl23Db#@\",\n                \"value_start\": 9,\n                \"value_end\": 18,\n                \"entropy\": 3.16993\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"pwd:Prl23Db#@\",\n                \"line_num\": 5,\n                \"path\": \"./tests/samples/doc_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"pwd\",\n                \"variable_start\": 0,\n                \"variable_end\": 3,\n                \"value\": \"Prl23Db#@\",\n                \"value_start\": 4,\n                \"value_end\": 13,\n                \"entropy\": 3.16993\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"ANY_password=Prl23Db#@\",\n                \"line_num\": 8,\n                \"path\": \"./tests/samples/doc_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"ANY_password\",\n                \"variable_start\": 0,\n                \"variable_end\": 12,\n                \"value\": \"Prl23Db#@\",\n                \"value_start\": 13,\n                \"value_end\": 22,\n                \"entropy\": 3.16993\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"pass:Prl23Db#@\",\n                \"line_num\": 10,\n                \"path\": \"./tests/samples/doc_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"pass\",\n                \"variable_start\": 0,\n                \"variable_end\": 4,\n                \"value\": \"Prl23Db#@\",\n                \"value_start\": 5,\n                \"value_end\": 14,\n                \"entropy\": 3.16993\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"ANY-password=Prl23Db#@\",\n                \"line_num\": 11,\n                \"path\": \"./tests/samples/doc_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"ANY-password\",\n                \"variable_start\": 0,\n                \"variable_end\": 12,\n                \"value\": \"Prl23Db#@\",\n                \"value_start\": 13,\n                \"value_end\": 22,\n                \"entropy\": 3.16993\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"master@98.76.54.32 password:Prl23Db#@\",\n                \"line_num\": 14,\n                \"path\": \"./tests/samples/doc_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"password\",\n                \"variable_start\": 19,\n                \"variable_end\": 27,\n                \"value\": \"Prl23Db#@\",\n                \"value_start\": 28,\n                \"value_end\": 37,\n                \"entropy\": 3.16993\n            }\n        ]\n    },\n    {\n        \"rule\": \"CMD Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"--Password Prl23Db#@\",\n                \"line_num\": 15,\n                \"path\": \"./tests/samples/doc_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"Password\",\n                \"variable_start\": 2,\n                \"variable_end\": 10,\n                \"value\": \"Prl23Db#@\",\n                \"value_start\": 11,\n                \"value_end\": 20,\n                \"entropy\": 3.16993\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"ANY_PW:Prl23Db#@\",\n                \"line_num\": 17,\n                \"path\": \"./tests/samples/doc_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"ANY_PW\",\n                \"variable_start\": 0,\n                \"variable_end\": 6,\n                \"value\": \"Prl23Db#@\",\n                \"value_start\": 7,\n                \"value_end\": 16,\n                \"entropy\": 3.16993\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"default password:Prl23Db#@\",\n                \"line_num\": 18,\n                \"path\": \"./tests/samples/doc_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"password\",\n                \"variable_start\": 8,\n                \"variable_end\": 16,\n                \"value\": \"Prl23Db#@\",\n                \"value_start\": 17,\n                \"value_end\": 26,\n                \"entropy\": 3.16993\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"\\\"password\\\":\\\"Prl23Db#@\\\"\",\n                \"line_num\": 21,\n                \"path\": \"./tests/samples/doc_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"password\",\n                \"variable_start\": 1,\n                \"variable_end\": 9,\n                \"value\": \"Prl23Db#@\",\n                \"value_start\": 12,\n                \"value_end\": 21,\n                \"entropy\": 3.16993\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"Passwd:Prl23Db#@ Prl23Db#@\",\n                \"line_num\": 23,\n                \"path\": \"./tests/samples/doc_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"Passwd\",\n                \"variable_start\": 0,\n                \"variable_end\": 6,\n                \"value\": \"Prl23Db#@\",\n                \"value_start\": 7,\n                \"value_end\": 16,\n                \"entropy\": 3.16993\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"PW:Prl23Db#@,password:Prl23Db#@\",\n                \"line_num\": 24,\n                \"path\": \"./tests/samples/doc_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"PW\",\n                \"variable_start\": 0,\n                \"variable_end\": 2,\n                \"value\": \"Prl23Db#@\",\n                \"value_start\": 3,\n                \"value_end\": 12,\n                \"entropy\": 3.16993\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"PW:Prl23Db#@,password:Prl23Db#@\",\n                \"line_num\": 24,\n                \"path\": \"./tests/samples/doc_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"password\",\n                \"variable_start\": 13,\n                \"variable_end\": 21,\n                \"value\": \"Prl23Db#@\",\n                \"value_start\": 22,\n                \"value_end\": 31,\n                \"entropy\": 3.16993\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"password:Prl23Db#@,\\ube44\\ubc88:Prl23Db#@\",\n                \"line_num\": 25,\n                \"path\": \"./tests/samples/doc_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"password\",\n                \"variable_start\": 0,\n                \"variable_end\": 8,\n                \"value\": \"Prl23Db#@\",\n                \"value_start\": 9,\n                \"value_end\": 18,\n                \"entropy\": 3.16993\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"passwd=Prl23Db#@\",\n                \"line_num\": 26,\n                \"path\": \"./tests/samples/doc_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"passwd\",\n                \"variable_start\": 0,\n                \"variable_end\": 6,\n                \"value\": \"Prl23Db#@\",\n                \"value_start\": 7,\n                \"value_end\": 16,\n                \"entropy\": 3.16993\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"password:Prl23Db#@, paasword:Prl23Db#@\",\n                \"line_num\": 30,\n                \"path\": \"./tests/samples/doc_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"password\",\n                \"variable_start\": 0,\n                \"variable_end\": 8,\n                \"value\": \"Prl23Db#@\",\n                \"value_start\": 9,\n                \"value_end\": 18,\n                \"entropy\": 3.16993\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"password:Prl23Db#@,ANYPassword:Prl23Db#@\",\n                \"line_num\": 31,\n                \"path\": \"./tests/samples/doc_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"password\",\n                \"variable_start\": 0,\n                \"variable_end\": 8,\n                \"value\": \"Prl23Db#@\",\n                \"value_start\": 9,\n                \"value_end\": 18,\n                \"entropy\": 3.16993\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"password:Prl23Db#@,ANYPassword:Prl23Db#@\",\n                \"line_num\": 31,\n                \"path\": \"./tests/samples/doc_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"ANYPassword\",\n                \"variable_start\": 19,\n                \"variable_end\": 30,\n                \"value\": \"Prl23Db#@\",\n                \"value_start\": 31,\n                \"value_end\": 40,\n                \"entropy\": 3.16993\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"Password:Prl23Db#@,pwd=Prl23Db#@\",\n                \"line_num\": 32,\n                \"path\": \"./tests/samples/doc_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"Password\",\n                \"variable_start\": 0,\n                \"variable_end\": 8,\n                \"value\": \"Prl23Db#@\",\n                \"value_start\": 9,\n                \"value_end\": 18,\n                \"entropy\": 3.16993\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"Password:Prl23Db#@,pwd=Prl23Db#@\",\n                \"line_num\": 32,\n                \"path\": \"./tests/samples/doc_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"pwd\",\n                \"variable_start\": 19,\n                \"variable_end\": 22,\n                \"value\": \"Prl23Db#@\",\n                \"value_start\": 23,\n                \"value_end\": 32,\n                \"entropy\": 3.16993\n            }\n        ]\n    },\n    {\n        \"rule\": \"CMD Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"-password \\\"Prl23Db#@\\\"\",\n                \"line_num\": 33,\n                \"path\": \"./tests/samples/doc_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"password\",\n                \"variable_start\": 1,\n                \"variable_end\": 9,\n                \"value\": \"Prl23Db#@\",\n                \"value_start\": 11,\n                \"value_end\": 20,\n                \"entropy\": 3.16993\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"ANY_password:Prl23Db#@\",\n                \"line_num\": 34,\n                \"path\": \"./tests/samples/doc_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"ANY_password\",\n                \"variable_start\": 0,\n                \"variable_end\": 12,\n                \"value\": \"Prl23Db#@\",\n                \"value_start\": 13,\n                \"value_end\": 22,\n                \"entropy\": 3.16993\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"--password=Prl23Db#@\",\n                \"line_num\": 37,\n                \"path\": \"./tests/samples/doc_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"password\",\n                \"variable_start\": 2,\n                \"variable_end\": 10,\n                \"value\": \"Prl23Db#@\",\n                \"value_start\": 11,\n                \"value_end\": 20,\n                \"entropy\": 3.16993\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"root/Prl23Db#@,root password:Prl23Db#@\",\n                \"line_num\": 38,\n                \"path\": \"./tests/samples/doc_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"password\",\n                \"variable_start\": 20,\n                \"variable_end\": 28,\n                \"value\": \"Prl23Db#@\",\n                \"value_start\": 29,\n                \"value_end\": 38,\n                \"entropy\": 3.16993\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"Prl23Db#@ username:Prl23Db#@,Prl23Db#@ password:Prl23Db#@\",\n                \"line_num\": 40,\n                \"path\": \"./tests/samples/doc_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"password\",\n                \"variable_start\": 39,\n                \"variable_end\": 47,\n                \"value\": \"Prl23Db#@\",\n                \"value_start\": 48,\n                \"value_end\": 57,\n                \"entropy\": 3.16993\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"Prl23Db#@:password:Prl23Db#@\",\n                \"line_num\": 41,\n                \"path\": \"./tests/samples/doc_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"password\",\n                \"variable_start\": 10,\n                \"variable_end\": 18,\n                \"value\": \"Prl23Db#@\",\n                \"value_start\": 19,\n                \"value_end\": 28,\n                \"entropy\": 3.16993\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"ANYpassword=Prl23Db#@\",\n                \"line_num\": 45,\n                \"path\": \"./tests/samples/doc_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"ANYpassword\",\n                \"variable_start\": 0,\n                \"variable_end\": 11,\n                \"value\": \"Prl23Db#@\",\n                \"value_start\": 12,\n                \"value_end\": 21,\n                \"entropy\": 3.16993\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"passwords:Prl23Db#@\",\n                \"line_num\": 46,\n                \"path\": \"./tests/samples/doc_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"passwords\",\n                \"variable_start\": 0,\n                \"variable_end\": 9,\n                \"value\": \"Prl23Db#@\",\n                \"value_start\": 10,\n                \"value_end\": 19,\n                \"entropy\": 3.16993\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"password=>Prl23Db#@\",\n                \"line_num\": 48,\n                \"path\": \"./tests/samples/doc_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"password\",\n                \"variable_start\": 0,\n                \"variable_end\": 8,\n                \"value\": \"Prl23Db#@\",\n                \"value_start\": 10,\n                \"value_end\": 19,\n                \"entropy\": 3.16993\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"# password: keep empty\",\n                \"line_num\": 56,\n                \"path\": \"./tests/samples/doc_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"password\",\n                \"variable_start\": 2,\n                \"variable_end\": 10,\n                \"value\": \"keep\",\n                \"value_start\": 12,\n                \"value_end\": 16,\n                \"entropy\": 1.5\n            }\n        ]\n    },\n    {\n        \"rule\": \"Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"ANY-Token:AIhq5Xyb1Gga9Q0\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/doc_secret_pair\",\n                \"info\": \"\",\n                \"variable\": \"ANY-Token\",\n                \"variable_start\": 0,\n                \"variable_end\": 9,\n                \"value\": \"AIhq5Xyb1Gga9Q0\",\n                \"value_start\": 10,\n                \"value_end\": 25,\n                \"entropy\": 3.90689\n            }\n        ]\n    },\n    {\n        \"rule\": \"Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"token:AIhq5Xyb1Gga9Q2\",\n                \"line_num\": 3,\n                \"path\": \"./tests/samples/doc_secret_pair\",\n                \"info\": \"\",\n                \"variable\": \"token\",\n                \"variable_start\": 0,\n                \"variable_end\": 5,\n                \"value\": \"AIhq5Xyb1Gga9Q2\",\n                \"value_start\": 6,\n                \"value_end\": 21,\n                \"entropy\": 3.90689\n            }\n        ]\n    },\n    {\n        \"rule\": \"Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"SECRET KEY:AIhq5Xyb1Gga9Q3\",\n                \"line_num\": 4,\n                \"path\": \"./tests/samples/doc_secret_pair\",\n                \"info\": \"\",\n                \"variable\": \"KEY\",\n                \"variable_start\": 7,\n                \"variable_end\": 10,\n                \"value\": \"AIhq5Xyb1Gga9Q3\",\n                \"value_start\": 11,\n                \"value_end\": 26,\n                \"entropy\": 3.90689\n            }\n        ]\n    },\n    {\n        \"rule\": \"Secret\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"SECRET KEY:AIhq5Xyb1Gga9Q3\",\n                \"line_num\": 4,\n                \"path\": \"./tests/samples/doc_secret_pair\",\n                \"info\": \"\",\n                \"variable\": \"SECRET KEY\",\n                \"variable_start\": 0,\n                \"variable_end\": 10,\n                \"value\": \"AIhq5Xyb1Gga9Q3\",\n                \"value_start\": 11,\n                \"value_end\": 26,\n                \"entropy\": 3.90689\n            }\n        ]\n    },\n    {\n        \"rule\": \"Secret\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"secret=AIhq5Xyb1Gga9Q4\",\n                \"line_num\": 5,\n                \"path\": \"./tests/samples/doc_secret_pair\",\n                \"info\": \"\",\n                \"variable\": \"secret\",\n                \"variable_start\": 0,\n                \"variable_end\": 6,\n                \"value\": \"AIhq5Xyb1Gga9Q4\",\n                \"value_start\": 7,\n                \"value_end\": 22,\n                \"entropy\": 3.90689\n            }\n        ]\n    },\n    {\n        \"rule\": \"CMD Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"--token AIhq5Xyb1Gga9Q5\",\n                \"line_num\": 6,\n                \"path\": \"./tests/samples/doc_secret_pair\",\n                \"info\": \"\",\n                \"variable\": \"token\",\n                \"variable_start\": 2,\n                \"variable_end\": 7,\n                \"value\": \"AIhq5Xyb1Gga9Q5\",\n                \"value_start\": 8,\n                \"value_end\": 23,\n                \"entropy\": 3.77356\n            }\n        ]\n    },\n    {\n        \"rule\": \"Secret\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"secret:AIhq5Xyb1Gga9Q6\",\n                \"line_num\": 7,\n                \"path\": \"./tests/samples/doc_secret_pair\",\n                \"info\": \"\",\n                \"variable\": \"secret\",\n                \"variable_start\": 0,\n                \"variable_end\": 6,\n                \"value\": \"AIhq5Xyb1Gga9Q6\",\n                \"value_start\": 7,\n                \"value_end\": 22,\n                \"entropy\": 3.90689\n            }\n        ]\n    },\n    {\n        \"rule\": \"Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"ANY_token=AIhq5Xyb1Gga9Q7\",\n                \"line_num\": 8,\n                \"path\": \"./tests/samples/doc_secret_pair\",\n                \"info\": \"\",\n                \"variable\": \"ANY_token\",\n                \"variable_start\": 0,\n                \"variable_end\": 9,\n                \"value\": \"AIhq5Xyb1Gga9Q7\",\n                \"value_start\": 10,\n                \"value_end\": 25,\n                \"entropy\": 3.90689\n            }\n        ]\n    },\n    {\n        \"rule\": \"CMD Secret\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"-secret AIhq5Xyb1Gga9Q10\",\n                \"line_num\": 11,\n                \"path\": \"./tests/samples/doc_secret_pair\",\n                \"info\": \"\",\n                \"variable\": \"secret\",\n                \"variable_start\": 1,\n                \"variable_end\": 7,\n                \"value\": \"AIhq5Xyb1Gga9Q10\",\n                \"value_start\": 8,\n                \"value_end\": 24,\n                \"entropy\": 3.875\n            }\n        ]\n    },\n    {\n        \"rule\": \"Secret\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"ANY.secret=AIhq5Xyb1Gga9Q19\",\n                \"line_num\": 20,\n                \"path\": \"./tests/samples/doc_secret_pair\",\n                \"info\": \"\",\n                \"variable\": \"ANY.secret\",\n                \"variable_start\": 0,\n                \"variable_end\": 10,\n                \"value\": \"AIhq5Xyb1Gga9Q19\",\n                \"value_start\": 11,\n                \"value_end\": 27,\n                \"entropy\": 3.75\n            }\n        ]\n    },\n    {\n        \"rule\": \"Secret\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"--secret=AIhq5Xyb1Gga9Q21\",\n                \"line_num\": 22,\n                \"path\": \"./tests/samples/doc_secret_pair\",\n                \"info\": \"\",\n                \"variable\": \"secret\",\n                \"variable_start\": 2,\n                \"variable_end\": 8,\n                \"value\": \"AIhq5Xyb1Gga9Q21\",\n                \"value_start\": 9,\n                \"value_end\": 25,\n                \"entropy\": 3.875\n            }\n        ]\n    },\n    {\n        \"rule\": \"Secret\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"ANY_secret:AIhq5Xyb1Gga9Q22\",\n                \"line_num\": 23,\n                \"path\": \"./tests/samples/doc_secret_pair\",\n                \"info\": \"\",\n                \"variable\": \"ANY_secret\",\n                \"variable_start\": 0,\n                \"variable_end\": 10,\n                \"value\": \"AIhq5Xyb1Gga9Q22\",\n                \"value_start\": 11,\n                \"value_end\": 27,\n                \"entropy\": 3.875\n            }\n        ]\n    },\n    {\n        \"rule\": \"Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"-Token:AIhq5Xyb1Gga9Q23\",\n                \"line_num\": 24,\n                \"path\": \"./tests/samples/doc_secret_pair\",\n                \"info\": \"\",\n                \"variable\": \"Token\",\n                \"variable_start\": 1,\n                \"variable_end\": 6,\n                \"value\": \"AIhq5Xyb1Gga9Q23\",\n                \"value_start\": 7,\n                \"value_end\": 23,\n                \"entropy\": 4.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"API\",\n        \"severity\": \"low\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"API Secret:AIhq5Xyb1Gga9Q24\",\n                \"line_num\": 25,\n                \"path\": \"./tests/samples/doc_secret_pair\",\n                \"info\": \"\",\n                \"variable\": \"API Secret\",\n                \"variable_start\": 0,\n                \"variable_end\": 10,\n                \"value\": \"AIhq5Xyb1Gga9Q24\",\n                \"value_start\": 11,\n                \"value_end\": 27,\n                \"entropy\": 4.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"Secret\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"API Secret:AIhq5Xyb1Gga9Q24\",\n                \"line_num\": 25,\n                \"path\": \"./tests/samples/doc_secret_pair\",\n                \"info\": \"\",\n                \"variable\": \"Secret\",\n                \"variable_start\": 4,\n                \"variable_end\": 10,\n                \"value\": \"AIhq5Xyb1Gga9Q24\",\n                \"value_start\": 11,\n                \"value_end\": 27,\n                \"entropy\": 4.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"access key:AIhq5Xyb1Gga9Q26\",\n                \"line_num\": 27,\n                \"path\": \"./tests/samples/doc_secret_pair\",\n                \"info\": \"\",\n                \"variable\": \"key\",\n                \"variable_start\": 7,\n                \"variable_end\": 10,\n                \"value\": \"AIhq5Xyb1Gga9Q26\",\n                \"value_start\": 11,\n                \"value_end\": 27,\n                \"entropy\": 4.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"Secret Key:AIhq5Xyb1Gga9Q27\",\n                \"line_num\": 28,\n                \"path\": \"./tests/samples/doc_secret_pair\",\n                \"info\": \"\",\n                \"variable\": \"Key\",\n                \"variable_start\": 7,\n                \"variable_end\": 10,\n                \"value\": \"AIhq5Xyb1Gga9Q27\",\n                \"value_start\": 11,\n                \"value_end\": 27,\n                \"entropy\": 4.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"Secret\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"Secret Key:AIhq5Xyb1Gga9Q27\",\n                \"line_num\": 28,\n                \"path\": \"./tests/samples/doc_secret_pair\",\n                \"info\": \"\",\n                \"variable\": \"Secret Key\",\n                \"variable_start\": 0,\n                \"variable_end\": 10,\n                \"value\": \"AIhq5Xyb1Gga9Q27\",\n                \"value_start\": 11,\n                \"value_end\": 27,\n                \"entropy\": 4.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"ANY_key=AIhq5Xyb1Gga9Q29\",\n                \"line_num\": 30,\n                \"path\": \"./tests/samples/doc_secret_pair\",\n                \"info\": \"\",\n                \"variable\": \"ANY_key\",\n                \"variable_start\": 0,\n                \"variable_end\": 7,\n                \"value\": \"AIhq5Xyb1Gga9Q29\",\n                \"value_start\": 8,\n                \"value_end\": 24,\n                \"entropy\": 3.875\n            }\n        ]\n    },\n    {\n        \"rule\": \"Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"secret-ANYkey:AIhq5Xyb1Gga9Q30\",\n                \"line_num\": 31,\n                \"path\": \"./tests/samples/doc_secret_pair\",\n                \"info\": \"\",\n                \"variable\": \"secret-ANYkey\",\n                \"variable_start\": 0,\n                \"variable_end\": 13,\n                \"value\": \"AIhq5Xyb1Gga9Q30\",\n                \"value_start\": 14,\n                \"value_end\": 30,\n                \"entropy\": 4.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"Secret\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"secret-ANYkey:AIhq5Xyb1Gga9Q30\",\n                \"line_num\": 31,\n                \"path\": \"./tests/samples/doc_secret_pair\",\n                \"info\": \"\",\n                \"variable\": \"secret-ANYkey\",\n                \"variable_start\": 0,\n                \"variable_end\": 13,\n                \"value\": \"AIhq5Xyb1Gga9Q30\",\n                \"value_start\": 14,\n                \"value_end\": 30,\n                \"entropy\": 4.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"ANY_id=AIhq5Xyb1Gga9Q31 ANY_token=AIhq5Xyb1Gga9Q31\",\n                \"line_num\": 32,\n                \"path\": \"./tests/samples/doc_secret_pair\",\n                \"info\": \"\",\n                \"variable\": \"ANY_token\",\n                \"variable_start\": 24,\n                \"variable_end\": 33,\n                \"value\": \"AIhq5Xyb1Gga9Q31\",\n                \"value_start\": 34,\n                \"value_end\": 50,\n                \"entropy\": 3.875\n            }\n        ]\n    },\n    {\n        \"rule\": \"Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"access_token:AIhq5Xyb1Gga9Q33\",\n                \"line_num\": 34,\n                \"path\": \"./tests/samples/doc_secret_pair\",\n                \"info\": \"\",\n                \"variable\": \"access_token\",\n                \"variable_start\": 0,\n                \"variable_end\": 12,\n                \"value\": \"AIhq5Xyb1Gga9Q33\",\n                \"value_start\": 13,\n                \"value_end\": 29,\n                \"entropy\": 3.875\n            }\n        ]\n    },\n    {\n        \"rule\": \"Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"Authentication key:AIhq5Xyb1Gga9Q35\",\n                \"line_num\": 36,\n                \"path\": \"./tests/samples/doc_secret_pair\",\n                \"info\": \"\",\n                \"variable\": \"key\",\n                \"variable_start\": 15,\n                \"variable_end\": 18,\n                \"value\": \"AIhq5Xyb1Gga9Q35\",\n                \"value_start\": 19,\n                \"value_end\": 35,\n                \"entropy\": 3.875\n            }\n        ]\n    },\n    {\n        \"rule\": \"Auth\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"Authentication key:AIhq5Xyb1Gga9Q35\",\n                \"line_num\": 36,\n                \"path\": \"./tests/samples/doc_secret_pair\",\n                \"info\": \"\",\n                \"variable\": \"Authentication key\",\n                \"variable_start\": 0,\n                \"variable_end\": 18,\n                \"value\": \"AIhq5Xyb1Gga9Q35\",\n                \"value_start\": 19,\n                \"value_end\": 35,\n                \"entropy\": 3.875\n            }\n        ]\n    },\n    {\n        \"rule\": \"Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"page.action?spaceKey=LOGIC&title=QUANTUM\\\",\",\n                \"line_num\": 39,\n                \"path\": \"./tests/samples/doc_secret_pair\",\n                \"info\": \"\",\n                \"variable\": \"spaceKey\",\n                \"variable_start\": 12,\n                \"variable_end\": 20,\n                \"value\": \"LOGIC\",\n                \"value_start\": 21,\n                \"value_end\": 26,\n                \"entropy\": 2.32193\n            }\n        ]\n    },\n    {\n        \"rule\": \"Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"Enter token : This is a query parameter\",\n                \"line_num\": 40,\n                \"path\": \"./tests/samples/doc_secret_pair\",\n                \"info\": \"\",\n                \"variable\": \"token\",\n                \"variable_start\": 6,\n                \"variable_end\": 11,\n                \"value\": \"This\",\n                \"value_start\": 14,\n                \"value_end\": 18,\n                \"entropy\": 2.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"\\\"key\\\":\\\"attached_file_0\\\"\",\n                \"line_num\": 41,\n                \"path\": \"./tests/samples/doc_secret_pair\",\n                \"info\": \"\",\n                \"variable\": \"key\",\n                \"variable_start\": 1,\n                \"variable_end\": 4,\n                \"value\": \"attached_file_0\",\n                \"value_start\": 7,\n                \"value_end\": 22,\n                \"entropy\": 3.37356\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"master@98.76.54.32(pw:IhqSb1Gg)\",\n                \"line_num\": 3,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"\",\n                \"variable\": \"pw\",\n                \"variable_start\": 19,\n                \"variable_end\": 21,\n                \"value\": \"IhqSb1Gg\",\n                \"value_start\": 22,\n                \"value_end\": 30,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"ID:gildong.hong@example.com mailto:{1} PW:IhqSb1Gg\",\n                \"line_num\": 4,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"\",\n                \"variable\": \"PW\",\n                \"variable_start\": 39,\n                \"variable_end\": 41,\n                \"value\": \"IhqSb1Gg\",\n                \"value_start\": 42,\n                \"value_end\": 50,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"Password:master/IhqSb1Gg\",\n                \"line_num\": 5,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"\",\n                \"variable\": \"Password\",\n                \"variable_start\": 0,\n                \"variable_end\": 8,\n                \"value\": \"master/IhqSb1Gg\",\n                \"value_start\": 9,\n                \"value_end\": 24,\n                \"entropy\": 3.90689\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"ssh gildong.hong@98.76.54.32 mailto:{1} (PW:IhqSb1Gg)\",\n                \"line_num\": 6,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"\",\n                \"variable\": \"PW\",\n                \"variable_start\": 41,\n                \"variable_end\": 43,\n                \"value\": \"IhqSb1Gg\",\n                \"value_start\": 44,\n                \"value_end\": 52,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"ssh gildong.hong@98.76.54.32 mailto:{1} password:IhqSb1Gg\",\n                \"line_num\": 7,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"\",\n                \"variable\": \"password\",\n                \"variable_start\": 40,\n                \"variable_end\": 48,\n                \"value\": \"IhqSb1Gg\",\n                \"value_start\": 49,\n                \"value_end\": 57,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"ssh -P IhqSb1Gg gildong.hong@98.76.54.32 mailto:{1} (password:IhqSb1Gg)\",\n                \"line_num\": 11,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"\",\n                \"variable\": \"password\",\n                \"variable_start\": 53,\n                \"variable_end\": 61,\n                \"value\": \"IhqSb1Gg\",\n                \"value_start\": 62,\n                \"value_end\": 70,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"ID/Pass:xxxx:master/IhqSb1Gg,xxxx:master/IhqSb1Gg\",\n                \"line_num\": 13,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"\",\n                \"variable\": \"Pass\",\n                \"variable_start\": 3,\n                \"variable_end\": 7,\n                \"value\": \"xxxx:master/IhqSb1Gg\",\n                \"value_start\": 8,\n                \"value_end\": 28,\n                \"entropy\": 3.92193\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"gildong.hong@98.76.54.32 pwd:IhqSb1Gg\",\n                \"line_num\": 15,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"\",\n                \"variable\": \"pwd\",\n                \"variable_start\": 25,\n                \"variable_end\": 28,\n                \"value\": \"IhqSb1Gg\",\n                \"value_start\": 29,\n                \"value_end\": 37,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"\\uacc4\\uc815:master(PW:IhqSb1Gg)\",\n                \"line_num\": 16,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"\",\n                \"variable\": \"PW\",\n                \"variable_start\": 10,\n                \"variable_end\": 12,\n                \"value\": \"IhqSb1Gg\",\n                \"value_start\": 13,\n                \"value_end\": 21,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"98.76.54.32(pw:IhqSb1Gg)\",\n                \"line_num\": 17,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"\",\n                \"variable\": \"pw\",\n                \"variable_start\": 12,\n                \"variable_end\": 14,\n                \"value\": \"IhqSb1Gg\",\n                \"value_start\": 15,\n                \"value_end\": 23,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"98.76.54.32/pw:IhqSb1Gg\",\n                \"line_num\": 19,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"\",\n                \"variable\": \"pw\",\n                \"variable_start\": 12,\n                \"variable_end\": 14,\n                \"value\": \"IhqSb1Gg\",\n                \"value_start\": 15,\n                \"value_end\": 23,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"ID:gildong.hong@example.com mailto:{1}/pw:IhqSb1Gg\",\n                \"line_num\": 20,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"\",\n                \"variable\": \"pw\",\n                \"variable_start\": 39,\n                \"variable_end\": 41,\n                \"value\": \"IhqSb1Gg\",\n                \"value_start\": 42,\n                \"value_end\": 50,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"ID:gildong.hong@any.example.com mailto:{1} PWD:IhqSb1Gg\",\n                \"line_num\": 21,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"\",\n                \"variable\": \"PWD\",\n                \"variable_start\": 43,\n                \"variable_end\": 46,\n                \"value\": \"IhqSb1Gg\",\n                \"value_start\": 47,\n                \"value_end\": 55,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"sftp gildong.hong@98.76.54.32 mailto:{1} (pw:IhqSb1Gg)\",\n                \"line_num\": 22,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"\",\n                \"variable\": \"pw\",\n                \"variable_start\": 42,\n                \"variable_end\": 44,\n                \"value\": \"IhqSb1Gg\",\n                \"value_start\": 45,\n                \"value_end\": 53,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"gildong.hong@98.76.54.32 mailto:{1} (pw:IhqSb1Gg)\",\n                \"line_num\": 23,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"\",\n                \"variable\": \"pw\",\n                \"variable_start\": 37,\n                \"variable_end\": 39,\n                \"value\": \"IhqSb1Gg\",\n                \"value_start\": 40,\n                \"value_end\": 48,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"-id:gildong.hong@example.com mailto:{1} -pwd:IhqSb1Gg\",\n                \"line_num\": 24,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"\",\n                \"variable\": \"pwd\",\n                \"variable_start\": 41,\n                \"variable_end\": 44,\n                \"value\": \"IhqSb1Gg\",\n                \"value_start\": 45,\n                \"value_end\": 53,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"ssh gildong.hong@98.76.54.32 mailto:{1} (password:IhqSb1Gg)\",\n                \"line_num\": 25,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"\",\n                \"variable\": \"password\",\n                \"variable_start\": 41,\n                \"variable_end\": 49,\n                \"value\": \"IhqSb1Gg\",\n                \"value_start\": 50,\n                \"value_end\": 58,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"id:gildong.hong@example.com mailto:{1} password:IhqSb1Gg\",\n                \"line_num\": 28,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"\",\n                \"variable\": \"password\",\n                \"variable_start\": 39,\n                \"variable_end\": 47,\n                \"value\": \"IhqSb1Gg\",\n                \"value_start\": 48,\n                \"value_end\": 56,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"ANY_password,default:IhqSb1Gg\",\n                \"line_num\": 31,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"\",\n                \"variable\": \"ANY_password,default\",\n                \"variable_start\": 0,\n                \"variable_end\": 20,\n                \"value\": \"IhqSb1Gg\",\n                \"value_start\": 21,\n                \"value_end\": 29,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"Secret\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"Key(ANYSecret):IhqSb1Gg\",\n                \"line_num\": 32,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"\",\n                \"variable\": \"ANYSecret)\",\n                \"variable_start\": 4,\n                \"variable_end\": 14,\n                \"value\": \"IhqSb1Gg\",\n                \"value_start\": 15,\n                \"value_end\": 23,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"98.76.54.32 ANY_PW:IhqSb1Gg\",\n                \"line_num\": 34,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"\",\n                \"variable\": \"ANY_PW\",\n                \"variable_start\": 12,\n                \"variable_end\": 18,\n                \"value\": \"IhqSb1Gg\",\n                \"value_start\": 19,\n                \"value_end\": 27,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"98.76.54.32(ID/PW:IhqSb1Gg)\",\n                \"line_num\": 36,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"\",\n                \"variable\": \"PW\",\n                \"variable_start\": 15,\n                \"variable_end\": 17,\n                \"value\": \"IhqSb1Gg\",\n                \"value_start\": 18,\n                \"value_end\": 26,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"gildong.hong@98.76.54.32 (pwd:IhqSb1Gg)\",\n                \"line_num\": 38,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"\",\n                \"variable\": \"pwd\",\n                \"variable_start\": 26,\n                \"variable_end\": 29,\n                \"value\": \"IhqSb1Gg\",\n                \"value_start\": 30,\n                \"value_end\": 38,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"password for master:IhqSb1Gg\",\n                \"line_num\": 43,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"\",\n                \"variable\": \"password for master\",\n                \"variable_start\": 0,\n                \"variable_end\": 19,\n                \"value\": \"IhqSb1Gg\",\n                \"value_start\": 20,\n                \"value_end\": 28,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"ID/Pass:xxxx:master/IhqSb1Gg xxxx:master/IhqSb1Gg\",\n                \"line_num\": 45,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"\",\n                \"variable\": \"Pass\",\n                \"variable_start\": 3,\n                \"variable_end\": 7,\n                \"value\": \"xxxx:master/IhqSb1Gg\",\n                \"value_start\": 8,\n                \"value_end\": 28,\n                \"entropy\": 3.92193\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"id:xxxx(ANYpw:IhqSb1Ga)\",\n                \"line_num\": 46,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"\",\n                \"variable\": \"ANYpw\",\n                \"variable_start\": 8,\n                \"variable_end\": 13,\n                \"value\": \"IhqSb1Ga\",\n                \"value_start\": 14,\n                \"value_end\": 22,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"gildong.hong@98.76.54.32,pw:IhqSb1Gg\",\n                \"line_num\": 47,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"\",\n                \"variable\": \"pw\",\n                \"variable_start\": 25,\n                \"variable_end\": 27,\n                \"value\": \"IhqSb1Gg\",\n                \"value_start\": 28,\n                \"value_end\": 36,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"98.76.54.32:xxxx(PW:IhqSb1Gg)\",\n                \"line_num\": 51,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"\",\n                \"variable\": \"PW\",\n                \"variable_start\": 17,\n                \"variable_end\": 19,\n                \"value\": \"IhqSb1Gg\",\n                \"value_start\": 20,\n                \"value_end\": 28,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"\\uacc4\\uc815/Password-xxxx:master/IhqSb1Gg\",\n                \"line_num\": 55,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"\",\n                \"variable\": \"Password-xxxx\",\n                \"variable_start\": 3,\n                \"variable_end\": 16,\n                \"value\": \"master/IhqSb1Gg\",\n                \"value_start\": 17,\n                \"value_end\": 32,\n                \"entropy\": 3.90689\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"gildong.hong@98.76.54.32 PW:IhqSb1Gg\",\n                \"line_num\": 56,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"\",\n                \"variable\": \"PW\",\n                \"variable_start\": 25,\n                \"variable_end\": 27,\n                \"value\": \"IhqSb1Gg\",\n                \"value_start\": 28,\n                \"value_end\": 36,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"ANY_user:xxxx ANY_pwd:IhqSb1Gg\",\n                \"line_num\": 61,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"\",\n                \"variable\": \"ANY_pwd\",\n                \"variable_start\": 14,\n                \"variable_end\": 21,\n                \"value\": \"IhqSb1Gg\",\n                \"value_start\": 22,\n                \"value_end\": 30,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"Acount name:xxxx Initial Password:IhqSb1Gg\",\n                \"line_num\": 62,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"\",\n                \"variable\": \"Password\",\n                \"variable_start\": 25,\n                \"variable_end\": 33,\n                \"value\": \"IhqSb1Gg\",\n                \"value_start\": 34,\n                \"value_end\": 42,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"Access wifi:xxxx(PW:IhqSb1Gg)\",\n                \"line_num\": 63,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"\",\n                \"variable\": \"PW\",\n                \"variable_start\": 17,\n                \"variable_end\": 19,\n                \"value\": \"IhqSb1Gg\",\n                \"value_start\": 20,\n                \"value_end\": 28,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"id/pw/port:master/IhqSb1Gg/xxxx\",\n                \"line_num\": 64,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"\",\n                \"variable\": \"pw/port\",\n                \"variable_start\": 3,\n                \"variable_end\": 10,\n                \"value\": \"master/IhqSb1Gg/xxxx\",\n                \"value_start\": 11,\n                \"value_end\": 31,\n                \"entropy\": 3.82193\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"-User:master -PasswordANY:IhqSb1Gg\",\n                \"line_num\": 66,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"\",\n                \"variable\": \"PasswordANY\",\n                \"variable_start\": 14,\n                \"variable_end\": 25,\n                \"value\": \"IhqSb1Gg\",\n                \"value_start\": 26,\n                \"value_end\": 34,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"98.76.54.32(ID/PW:master/IhqSb1Gg)\",\n                \"line_num\": 70,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"\",\n                \"variable\": \"PW\",\n                \"variable_start\": 15,\n                \"variable_end\": 17,\n                \"value\": \"master/IhqSb1Gg\",\n                \"value_start\": 18,\n                \"value_end\": 33,\n                \"entropy\": 3.90689\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"(ID&PWD):master/IhqSb1Gg\",\n                \"line_num\": 71,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"\",\n                \"variable\": \"PWD)\",\n                \"variable_start\": 4,\n                \"variable_end\": 8,\n                \"value\": \"master/IhqSb1Gg\",\n                \"value_start\": 9,\n                \"value_end\": 24,\n                \"entropy\": 3.90689\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"master@98.76.54.32(pw:IhqSb1Gg)\",\n                \"line_num\": 73,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"\",\n                \"variable\": \"pw\",\n                \"variable_start\": 19,\n                \"variable_end\": 21,\n                \"value\": \"IhqSb1Gg\",\n                \"value_start\": 22,\n                \"value_end\": 30,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"master@98.76.54.32,PW:IhqSb1Gg\",\n                \"line_num\": 74,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"\",\n                \"variable\": \"PW\",\n                \"variable_start\": 19,\n                \"variable_end\": 21,\n                \"value\": \"IhqSb1Gg\",\n                \"value_start\": 22,\n                \"value_end\": 30,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"98.76.54.32 pw:IhqSb1Gg\",\n                \"line_num\": 75,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"\",\n                \"variable\": \"pw\",\n                \"variable_start\": 12,\n                \"variable_end\": 14,\n                \"value\": \"IhqSb1Gg\",\n                \"value_start\": 15,\n                \"value_end\": 23,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"config:xxxx,PW:IhqSb1Gg\",\n                \"line_num\": 78,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"\",\n                \"variable\": \"PW\",\n                \"variable_start\": 12,\n                \"variable_end\": 14,\n                \"value\": \"IhqSb1Gg\",\n                \"value_start\": 15,\n                \"value_end\": 23,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"-dbpwd VAL:xxxx\",\n                \"line_num\": 80,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"\",\n                \"variable\": \"dbpwd VAL\",\n                \"variable_start\": 1,\n                \"variable_end\": 10,\n                \"value\": \"xxxx\",\n                \"value_start\": 11,\n                \"value_end\": 15,\n                \"entropy\": -0.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"scp gildong.hong@98.76.54.32 mailto:{1} pw:IhqSb1Gg\",\n                \"line_num\": 82,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"\",\n                \"variable\": \"pw\",\n                \"variable_start\": 40,\n                \"variable_end\": 42,\n                \"value\": \"IhqSb1Gg\",\n                \"value_start\": 43,\n                \"value_end\": 51,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"id:gildong.hong@xxx.com mailto:{1} pw:IhqSb1Gg\",\n                \"line_num\": 83,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"\",\n                \"variable\": \"pw\",\n                \"variable_start\": 35,\n                \"variable_end\": 37,\n                \"value\": \"IhqSb1Gg\",\n                \"value_start\": 38,\n                \"value_end\": 46,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"gildong.hong@98.76.54.32 mailto:{1} pw:IhqSb1Gg\",\n                \"line_num\": 84,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"\",\n                \"variable\": \"pw\",\n                \"variable_start\": 36,\n                \"variable_end\": 38,\n                \"value\": \"IhqSb1Gg\",\n                \"value_start\": 39,\n                \"value_end\": 47,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"ssh gildong.hong@98.76.54.32 mailto:{1},pw:IhqSb1Gg\",\n                \"line_num\": 85,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"\",\n                \"variable\": \"pw\",\n                \"variable_start\": 40,\n                \"variable_end\": 42,\n                \"value\": \"IhqSb1Gg\",\n                \"value_start\": 43,\n                \"value_end\": 51,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"(ssh gildong.hong@98.76.54.32 mailto{1}) pwd:IhqSb1Gg\",\n                \"line_num\": 87,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"\",\n                \"variable\": \"pwd\",\n                \"variable_start\": 41,\n                \"variable_end\": 44,\n                \"value\": \"IhqSb1Gg\",\n                \"value_start\": 45,\n                \"value_end\": 53,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"ssh gildong.hong@98.76.54.32 mailto:{1}, pw:IhqSb1Gg\",\n                \"line_num\": 90,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"\",\n                \"variable\": \"pw\",\n                \"variable_start\": 41,\n                \"variable_end\": 43,\n                \"value\": \"IhqSb1Gg\",\n                \"value_start\": 44,\n                \"value_end\": 52,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"ssh gildong.hong@98.76.54.32 mailto:{1} (pwd:IhqSb1Gg)\",\n                \"line_num\": 93,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"\",\n                \"variable\": \"pwd\",\n                \"variable_start\": 41,\n                \"variable_end\": 44,\n                \"value\": \"IhqSb1Gg\",\n                \"value_start\": 45,\n                \"value_end\": 53,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"gildong.hong@98.76.54.32 mailto:{1} (password:IhqSb1Gg)\",\n                \"line_num\": 94,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"\",\n                \"variable\": \"password\",\n                \"variable_start\": 37,\n                \"variable_end\": 45,\n                \"value\": \"IhqSb1Gg\",\n                \"value_start\": 46,\n                \"value_end\": 54,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"gildong.hong@98.76.54.32 mailto:{1} Password:IhqSb1Gg\",\n                \"line_num\": 96,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"\",\n                \"variable\": \"Password\",\n                \"variable_start\": 36,\n                \"variable_end\": 44,\n                \"value\": \"IhqSb1Gg\",\n                \"value_start\": 45,\n                \"value_end\": 53,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"gildong.hong@98.76.54.32 mailto:{1} (pass:IhqSb1Gg)\",\n                \"line_num\": 97,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"\",\n                \"variable\": \"pass\",\n                \"variable_start\": 37,\n                \"variable_end\": 41,\n                \"value\": \"IhqSb1Gg\",\n                \"value_start\": 42,\n                \"value_end\": 50,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"ssh gildong.hong@98.76.54.32 mailto:{1} pw:IhqSb1Gg\",\n                \"line_num\": 100,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"\",\n                \"variable\": \"pw\",\n                \"variable_start\": 40,\n                \"variable_end\": 42,\n                \"value\": \"IhqSb1Gg\",\n                \"value_start\": 43,\n                \"value_end\": 51,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"ssh gildong.hong@98.76.54.32 mailto:{1} pass:IhqSb1Gg\",\n                \"line_num\": 101,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"\",\n                \"variable\": \"pass\",\n                \"variable_start\": 40,\n                \"variable_end\": 44,\n                \"value\": \"IhqSb1Gg\",\n                \"value_start\": 45,\n                \"value_end\": 53,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"id:gildong.hong@xxx.com mailto:{1}/password:IhqSb1Gg\",\n                \"line_num\": 102,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"\",\n                \"variable\": \"password\",\n                \"variable_start\": 35,\n                \"variable_end\": 43,\n                \"value\": \"IhqSb1Gg\",\n                \"value_start\": 44,\n                \"value_end\": 52,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"ID PW gildong.hong@example.com mailto:{1} IhqSb1Gg\",\n                \"line_num\": 103,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"\",\n                \"variable\": \"PW gildong.hong@example.com mailto\",\n                \"variable_start\": 3,\n                \"variable_end\": 37,\n                \"value\": \"\",\n                \"value_start\": 38,\n                \"value_end\": 38,\n                \"entropy\": 0.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"ssh gildong.hong@98.76.54.32 mailto:{1}/password:IhqSb1Gg\",\n                \"line_num\": 104,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"\",\n                \"variable\": \"password\",\n                \"variable_start\": 40,\n                \"variable_end\": 48,\n                \"value\": \"IhqSb1Gg\",\n                \"value_start\": 49,\n                \"value_end\": 57,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"-ANYID:gildong.hong@example.com mailto:{1} -pw:IhqSb1Gg\",\n                \"line_num\": 105,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"\",\n                \"variable\": \"pw\",\n                \"variable_start\": 44,\n                \"variable_end\": 46,\n                \"value\": \"IhqSb1Gg\",\n                \"value_start\": 47,\n                \"value_end\": 55,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"ID:gildong.hong@xxxx.net mailto:{1} pw:IhqSb1Gg\",\n                \"line_num\": 106,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"\",\n                \"variable\": \"pw\",\n                \"variable_start\": 36,\n                \"variable_end\": 38,\n                \"value\": \"IhqSb1Gg\",\n                \"value_start\": 39,\n                \"value_end\": 47,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"ID/PW 98.76.54.32:xxx master/IhqSb1Gg\",\n                \"line_num\": 107,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"\",\n                \"variable\": \"PW 98.76.54.32\",\n                \"variable_start\": 3,\n                \"variable_end\": 17,\n                \"value\": \"\",\n                \"value_start\": 18,\n                \"value_end\": 18,\n                \"entropy\": 0.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"http://98.76.54.32:xxx(pw:IhqSb1Gg)\",\n                \"line_num\": 108,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"\",\n                \"variable\": \"pw\",\n                \"variable_start\": 23,\n                \"variable_end\": 25,\n                \"value\": \"IhqSb1Gg\",\n                \"value_start\": 26,\n                \"value_end\": 34,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"Docker Access Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"POSITIVE: dckr_pat_mcF-hLK_JoBxXUNJy1kU7-WSbk0\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/docker\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"dckr_pat_mcF-hLK_JoBxXUNJy1kU7-WSbk0\",\n                \"value_start\": 10,\n                \"value_end\": 46,\n                \"entropy\": 4.68354\n            }\n        ]\n    },\n    {\n        \"rule\": \"Docker Access Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"NEGATIVE: dckr_pat_EXAMPLE-EXAMPLE-EXAMPLE-123\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/docker\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"dckr_pat_EXAMPLE-EXAMPLE-EXAMPLE-123\",\n                \"value_start\": 10,\n                \"value_end\": 46,\n                \"entropy\": 3.89106\n            }\n        ]\n    },\n    {\n        \"rule\": \"Docker Access Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"POSITIVE: dckr_oat_fXUgJy1nU2WSbk_0vH2S-mcF-hLKJoB-\",\n                \"line_num\": 3,\n                \"path\": \"./tests/samples/docker\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"dckr_oat_fXUgJy1nU2WSbk_0vH2S-mcF-hLKJoB-\",\n                \"value_start\": 10,\n                \"value_end\": 51,\n                \"entropy\": 4.78414\n            }\n        ]\n    },\n    {\n        \"rule\": \"Docker Swarm Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"POSITIVE: SWMTKN-1-edmua5ub12inlget8wkvz35kckxkeyznuvc49brsy84wgfssrw-otjll8wdy3yikfrksskvqzqh1\",\n                \"line_num\": 4,\n                \"path\": \"./tests/samples/docker\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"SWMTKN-1-edmua5ub12inlget8wkvz35kckxkeyznuvc49brsy84wgfssrw-otjll8wdy3yikfrksskvqzqh1\",\n                \"value_start\": 10,\n                \"value_end\": 95,\n                \"entropy\": 5.06757\n            }\n        ]\n    },\n    {\n        \"rule\": \"Docker Swarm Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"NEGATIVE: SWMTKN-1-7here4ar3not7he7oken5you4re1ooking4or1samplingonly-nh7cr8ap4o4fl58ektr42c8ek\",\n                \"line_num\": 5,\n                \"path\": \"./tests/samples/docker\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"SWMTKN-1-7here4ar3not7he7oken5you4re1ooking4or1samplingonly-nh7cr8ap4o4fl58ektr42c8ek\",\n                \"value_start\": 10,\n                \"value_end\": 95,\n                \"entropy\": 4.65986\n            }\n        ]\n    },\n    {\n        \"rule\": \"Docker Swarm Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"POSITIVE: SWMKEY-1-fySn8TY4w5lKcWcJPIpKufejh9hxx5KYwx6XZigx3Q4\",\n                \"line_num\": 6,\n                \"path\": \"./tests/samples/docker\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"SWMKEY-1-fySn8TY4w5lKcWcJPIpKufejh9hxx5KYwx6XZigx3Q4\",\n                \"value_start\": 10,\n                \"value_end\": 62,\n                \"entropy\": 4.95515\n            }\n        ]\n    },\n    {\n        \"rule\": \"Docker Swarm Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"NEGATIVE: SWMKEY-1-7c37Cc8654o6pExampleKeyTestOnlytbdZEgtKxZu8\",\n                \"line_num\": 7,\n                \"path\": \"./tests/samples/docker\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"SWMKEY-1-7c37Cc8654o6pExampleKeyTestOnlytbdZEgtKxZu8\",\n                \"value_start\": 10,\n                \"value_end\": 62,\n                \"entropy\": 4.95006\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"        <mxCell id=\\\"ip0j-1\\\" value=\\\"&lt;div style=&quot;forced-color-adjust: none; margin: 0px; padding: 0px; color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: left; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; white-space: normal; background-color: rgb(255, 255, 255); text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial;&quot;&gt;- email: String&lt;/div&gt;&lt;div style=&quot;forced-color-adjust: none; margin: 0px; padding: 0px; color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: left; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; white-space: normal; background-color: rgb(255, 255, 255); text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial;&quot;&gt;- password: String&lt;/div&gt;&lt;div style=&quot;forced-color-adjust: none; margin: 0px; padding: 0px; color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: left; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; white-space: normal; background-color: rgb(255, 255, 255); text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial;&quot;&gt;- hash: String&lt;/div&gt;&lt;div style=&quot;forced-color-adjust: none; margin: 0px; padding: 0px; color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: left; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; white-space: normal; background-color: rgb(255, 255, 255); text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial;&quot;&gt;- salt: String&lt;/div&gt;\\\" style=\\\"rounded=0;whiteSpace=wrap;html=1;\\\" parent=\\\"1\\\" vertex=\\\"1\\\">\",\n                \"line_num\": 7,\n                \"path\": \"./tests/samples/drawio\",\n                \"info\": \"\",\n                \"variable\": \"password\",\n                \"variable_start\": 1178,\n                \"variable_end\": 1186,\n                \"value\": \"String&lt\",\n                \"value_start\": 1188,\n                \"value_end\": 1197,\n                \"entropy\": 2.9477\n            }\n        ]\n    },\n    {\n        \"rule\": \"Salt\",\n        \"severity\": \"low\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"        <mxCell id=\\\"ip0j-1\\\" value=\\\"&lt;div style=&quot;forced-color-adjust: none; margin: 0px; padding: 0px; color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: left; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; white-space: normal; background-color: rgb(255, 255, 255); text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial;&quot;&gt;- email: String&lt;/div&gt;&lt;div style=&quot;forced-color-adjust: none; margin: 0px; padding: 0px; color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: left; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; white-space: normal; background-color: rgb(255, 255, 255); text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial;&quot;&gt;- password: String&lt;/div&gt;&lt;div style=&quot;forced-color-adjust: none; margin: 0px; padding: 0px; color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: left; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; white-space: normal; background-color: rgb(255, 255, 255); text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial;&quot;&gt;- hash: String&lt;/div&gt;&lt;div style=&quot;forced-color-adjust: none; margin: 0px; padding: 0px; color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: left; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; white-space: normal; background-color: rgb(255, 255, 255); text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial;&quot;&gt;- salt: String&lt;/div&gt;\\\" style=\\\"rounded=0;whiteSpace=wrap;html=1;\\\" parent=\\\"1\\\" vertex=\\\"1\\\">\",\n                \"line_num\": 7,\n                \"path\": \"./tests/samples/drawio\",\n                \"info\": \"\",\n                \"variable\": \"salt\",\n                \"variable_start\": 2348,\n                \"variable_end\": 2352,\n                \"value\": \"String&lt\",\n                \"value_start\": 2354,\n                \"value_end\": 2363,\n                \"entropy\": 2.9477\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"        <mxCell id=\\\"ip0j-2\\\" value=\\\"&lt;div&gt;password is NsIdksKJdj&lt;/div&gt;&lt;div&gt;token is bace4d19-fa7e-b2e4-1afe-9129474bcd81&lt;br&gt;Password: &quot;Dw7^&amp;amp;nd&amp;lt;dj&quot;&lt;br&gt;&lt;/div&gt;\\\" style=\\\"rounded=0;whiteSpace=wrap;html=1;\\\" parent=\\\"1\\\" vertex=\\\"1\\\">\",\n                \"line_num\": 13,\n                \"path\": \"./tests/samples/drawio\",\n                \"info\": \"\",\n                \"variable\": \"Password\",\n                \"variable_start\": 146,\n                \"variable_end\": 154,\n                \"value\": \"Dw7^&amp;amp;nd&amp;lt;dj\",\n                \"value_start\": 162,\n                \"value_end\": 187,\n                \"entropy\": 3.59327\n            }\n        ]\n    },\n    {\n        \"rule\": \"UUID\",\n        \"severity\": \"info\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"        <mxCell id=\\\"ip0j-2\\\" value=\\\"&lt;div&gt;password is NsIdksKJdj&lt;/div&gt;&lt;div&gt;token is bace4d19-fa7e-b2e4-1afe-9129474bcd81&lt;br&gt;Password: &quot;Dw7^&amp;amp;nd&amp;lt;dj&quot;&lt;br&gt;&lt;/div&gt;\\\" style=\\\"rounded=0;whiteSpace=wrap;html=1;\\\" parent=\\\"1\\\" vertex=\\\"1\\\">\",\n                \"line_num\": 13,\n                \"path\": \"./tests/samples/drawio\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"bace4d19-fa7e-b2e4-1afe-9129474bcd81\",\n                \"value_start\": 100,\n                \"value_end\": 136,\n                \"entropy\": 3.60702\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"        <mxCell id=\\\"REcl-1\\\" value=\\\"&lt;div&gt;textpassword: Df34D&amp;lt;345&amp;amp;&amp;gt;gf&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;\\\" style=\\\"text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;\\\" parent=\\\"1\\\" vertex=\\\"1\\\">\",\n                \"line_num\": 16,\n                \"path\": \"./tests/samples/drawio\",\n                \"info\": \"\",\n                \"variable\": \"textpassword\",\n                \"variable_start\": 46,\n                \"variable_end\": 58,\n                \"value\": \"Df34D&amp\",\n                \"value_start\": 60,\n                \"value_end\": 69,\n                \"entropy\": 2.9477\n            }\n        ]\n    },\n    {\n        \"rule\": \"Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"        <mxCell id=\\\"REcl-8\\\" value=\\\"token: String\\\" style=\\\"text;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;spacingLeft=4;spacingRight=4;overflow=hidden;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rotatable=0;whiteSpace=wrap;html=1;\\\" parent=\\\"REcl-5\\\" vertex=\\\"1\\\">\",\n                \"line_num\": 28,\n                \"path\": \"./tests/samples/drawio\",\n                \"info\": \"\",\n                \"variable\": \"token\",\n                \"variable_start\": 35,\n                \"variable_end\": 40,\n                \"value\": \"String\",\n                \"value_start\": 42,\n                \"value_end\": 48,\n                \"entropy\": 2.58496\n            }\n        ]\n    },\n    {\n        \"rule\": \"Secret\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"        <mxCell id=\\\"REcl-7\\\" value=\\\"secret: &amp;gt;4&amp;lt;563^%$&amp;amp;5w\\\" style=\\\"text;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;spacingLeft=4;spacingRight=4;overflow=hidden;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rotatable=0;whiteSpace=wrap;html=1;\\\" parent=\\\"REcl-5\\\" vertex=\\\"1\\\">\",\n                \"line_num\": 31,\n                \"path\": \"./tests/samples/drawio\",\n                \"info\": \"\",\n                \"variable\": \"secret\",\n                \"variable_start\": 35,\n                \"variable_end\": 41,\n                \"value\": \"&amp\",\n                \"value_start\": 43,\n                \"value_end\": 47,\n                \"entropy\": 2.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"        <mxCell id=\\\"REcl-6\\\" value=\\\"pass: Dsfgh%$d&amp;lt;&amp;gt;s&amp;amp;\\\" style=\\\"text;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;spacingLeft=4;spacingRight=4;overflow=hidden;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rotatable=0;whiteSpace=wrap;html=1;\\\" parent=\\\"REcl-5\\\" vertex=\\\"1\\\">\",\n                \"line_num\": 34,\n                \"path\": \"./tests/samples/drawio\",\n                \"info\": \"\",\n                \"variable\": \"pass\",\n                \"variable_start\": 35,\n                \"variable_end\": 39,\n                \"value\": \"Dsfgh%$d&amp\",\n                \"value_start\": 41,\n                \"value_end\": 53,\n                \"entropy\": 3.58496\n            }\n        ]\n    },\n    {\n        \"rule\": \"UUID\",\n        \"severity\": \"info\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"        <mxCell id=\\\"jC_dE-1\\\" value=\\\"page2 secret is ce49dba1-e4fe-b2a7-4ffa-132bcd819474\\\" style=\\\"text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;\\\" vertex=\\\"1\\\" parent=\\\"1\\\">\",\n                \"line_num\": 45,\n                \"path\": \"./tests/samples/drawio\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"ce49dba1-e4fe-b2a7-4ffa-132bcd819474\",\n                \"value_start\": 52,\n                \"value_end\": 88,\n                \"entropy\": 3.68703\n            }\n        ]\n    },\n    {\n        \"rule\": \"Dropbox API secret (long term)\",\n        \"severity\": \"high\",\n        \"confidence\": \"weak\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"var g = '7rBynGo0b1cAAAAAAAAAAc72L3T6rQK51mB5a06ijnwRG91deTxvSqdZNAlxq8pZ'\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/dropbox_api_secret_long_term\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"7rBynGo0b1cAAAAAAAAAAc72L3T6rQK51mB5a06ijnwRG91deTxvSqdZNAlxq8pZ\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 4.89362\n            }\n        ]\n    },\n    {\n        \"rule\": \"Dropbox App secret\",\n        \"severity\": \"info\",\n        \"confidence\": \"weak\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"var app_unique_val_s = 'wpv1jq9xwanbn3n';\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/dropbox_app_secret\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"wpv1jq9xwanbn3n\",\n                \"value_start\": 24,\n                \"value_end\": 39,\n                \"entropy\": 3.45656\n            }\n        ]\n    },\n    {\n        \"rule\": \"Dropbox App secret\",\n        \"severity\": \"info\",\n        \"confidence\": \"weak\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"negative case: inconshreveable\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/dropbox_app_secret\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"inconshreveable\",\n                \"value_start\": 15,\n                \"value_end\": 30,\n                \"entropy\": 3.45656\n            }\n        ]\n    },\n    {\n        \"rule\": \"Dropbox OAuth2 API Access Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"var dropbox = 'sl.BdmpmC82mhhySscKk2oQGyE5l--8LdAQftLTXVGQhP39Z8FtAK1BhePhyevurA-Elt7ToIr6OpwzKAYE7RBqpu6VVyQU5WlCTL_Q7N4gElXahaWou6aPpOIwgGCIOq9aeC3YFoc';\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/dropbox_oauth_token\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"sl.BdmpmC82mhhySscKk2oQGyE5l--8LdAQftLTXVGQhP39Z8FtAK1BhePhyevurA-Elt7ToIr6OpwzKAYE7RBqpu6VVyQU5WlCTL_Q7N4gElXahaWou6aPpOIwgGCIOq9aeC3YFoc\",\n                \"value_start\": 15,\n                \"value_end\": 153,\n                \"entropy\": 5.61894\n            }\n        ]\n    },\n    {\n        \"rule\": \"Dynatrace API Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"dt0c01.ST2EY72KQINMH574WMNVI7YN.G3DFPBEJYMOD1DAEX454M7YWBUVEFOWKPRVMWFASS64NFH52PX6BNDVFFM572RZM\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/dynatrace_api.hs\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"dt0c01.ST2EY72KQINMH574WMNVI7YN.G3DFPBEJYMOD1DAEX454M7YWBUVEFOWKPRVMWFASS64NFH52PX6BNDVFFM572RZM\",\n                \"value_start\": 0,\n                \"value_end\": 96,\n                \"entropy\": 4.93241\n            }\n        ]\n    },\n    {\n        \"rule\": \"Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"# this is encrypted key that should be not found {\\\"secretKey\\\": \\\"ENC(2dfRFqV/cS6TzRd+JyO=)\\\"}\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/encrypted_credential\",\n                \"info\": \"\",\n                \"variable\": \"secretKey\",\n                \"variable_start\": 51,\n                \"variable_end\": 60,\n                \"value\": \"ENC(2dfRFqV/cS6TzRd+JyO=)\",\n                \"value_start\": 64,\n                \"value_end\": 89,\n                \"entropy\": 4.48386\n            }\n        ]\n    },\n    {\n        \"rule\": \"Secret\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"# this is encrypted key that should be not found {\\\"secretKey\\\": \\\"ENC(2dfRFqV/cS6TzRd+JyO=)\\\"}\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/encrypted_credential\",\n                \"info\": \"\",\n                \"variable\": \"secretKey\",\n                \"variable_start\": 51,\n                \"variable_end\": 60,\n                \"value\": \"ENC(2dfRFqV/cS6TzRd+JyO=)\",\n                \"value_start\": 64,\n                \"value_end\": 89,\n                \"entropy\": 4.48386\n            }\n        ]\n    },\n    {\n        \"rule\": \"Facebook Access Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"GI_REO_GI_FACEBOOK_TOKEN = \\\"EAACEb00Kse0BAlGy7KeQ5YnaCEd09Eose0cBAlGy7KeQ5Yna9CoDsup39tiYdoQ4jH9Coup39tiYdWoQ4jHFZD\\\"\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/facebook_key\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"EAACEb00Kse0BAlGy7KeQ5YnaCEd09Eose0cBAlGy7KeQ5Yna9CoDsup39tiYdoQ4jH9Coup39tiYdWoQ4jHFZD\",\n                \"value_start\": 28,\n                \"value_end\": 115,\n                \"entropy\": 4.93612\n            }\n        ]\n    },\n    {\n        \"rule\": \"Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"GI_REO_GI_FACEBOOK_TOKEN = \\\"EAACEb00Kse0BAlGy7KeQ5YnaCEd09Eose0cBAlGy7KeQ5Yna9CoDsup39tiYdoQ4jH9Coup39tiYdWoQ4jHFZD\\\"\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/facebook_key\",\n                \"info\": \"\",\n                \"variable\": \"GI_REO_GI_FACEBOOK_TOKEN\",\n                \"variable_start\": 0,\n                \"variable_end\": 24,\n                \"value\": \"EAACEb00Kse0BAlGy7KeQ5YnaCEd09Eose0cBAlGy7KeQ5Yna9CoDsup39tiYdoQ4jH9Coup39tiYdWoQ4jHFZD\",\n                \"value_start\": 28,\n                \"value_end\": 115,\n                \"entropy\": 4.93612\n            }\n        ]\n    },\n    {\n        \"rule\": \"Facebook App Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"1527194624358273|qbBf2-fdB9zZpqLA0_2nNzZDw2M\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/facebook_key\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"1527194624358273|qbBf2-fdB9zZpqLA0_2nNzZDw2M\",\n                \"value_start\": 0,\n                \"value_end\": 44,\n                \"entropy\": 4.60694\n            }\n        ]\n    },\n    {\n        \"rule\": \"Figma Personal Access Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"figd__fU7rxH-KUAmCv5vI78kKlnEF6bne_yvSvPLz3JO\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/figma\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"figd__fU7rxH-KUAmCv5vI78kKlnEF6bne_yvSvPLz3JO\",\n                \"value_start\": 0,\n                \"value_end\": 45,\n                \"entropy\": 4.98619\n            }\n        ]\n    },\n    {\n        \"rule\": \"Figma Personal Access Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"figd_h65Ugiu76WD3xf233a6KAmo9ZmbWNnNrny9Q6IHl\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/figma\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"figd_h65Ugiu76WD3xf233a6KAmo9ZmbWNnNrny9Q6IHl\",\n                \"value_start\": 0,\n                \"value_end\": 45,\n                \"entropy\": 4.85286\n            }\n        ]\n    },\n    {\n        \"rule\": \"Figma Personal Access Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"figd_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\",\n                \"line_num\": 3,\n                \"path\": \"./tests/samples/figma\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"figd_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\",\n                \"value_start\": 0,\n                \"value_end\": 45,\n                \"entropy\": 0.76125\n            }\n        ]\n    },\n    {\n        \"rule\": \"Firebase Domain\",\n        \"severity\": \"info\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"test-app-domain-42.firebaseapp.com\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/firebase_domain\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"test-app-domain-42.firebaseapp.com\",\n                \"value_start\": 0,\n                \"value_end\": 34,\n                \"entropy\": 3.98423\n            }\n        ]\n    },\n    {\n        \"rule\": \"Firebase Domain\",\n        \"severity\": \"info\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"test2.io.firebaseio.com\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/firebase_domain\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"test2.io.firebaseio.com\",\n                \"value_start\": 0,\n                \"value_end\": 23,\n                \"entropy\": 3.52271\n            }\n        ]\n    },\n    {\n        \"rule\": \"Github Classic Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"ghp_00000000000000000000000000000004WZ4EQ # classic\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/github_classic_token\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"ghp_00000000000000000000000000000004WZ4EQ\",\n                \"value_start\": 0,\n                \"value_end\": 41,\n                \"entropy\": 1.56292\n            }\n        ]\n    },\n    {\n        \"rule\": \"Github Classic Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"ghp_1010110010001010101001010101010101011001 # random\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/github_classic_token\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"ghp_1010110010001010101001010101010101011001\",\n                \"value_start\": 0,\n                \"value_end\": 44,\n                \"entropy\": 1.52877\n            }\n        ]\n    },\n    {\n        \"rule\": \"Github Fine-granted Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"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\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/github_fine_granted_token\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"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\",\n                \"value_start\": 0,\n                \"value_end\": 93,\n                \"entropy\": 5.41519\n            }\n        ]\n    },\n    {\n        \"rule\": \"Gitlab Prefix Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"glpat-8d5ri2n9g85LAnC9YW85.01.cgpAsnEmP # Personal access token, Impersonation token, Project access token, Group access token\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/gitlab_prefix_token\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"glpat-8d5ri2n9g85LAnC9YW85.01.cgpAsnEmP\",\n                \"value_start\": 0,\n                \"value_end\": 39,\n                \"entropy\": 4.59259\n            }\n        ]\n    },\n    {\n        \"rule\": \"Gitlab Prefix Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"gloas-7fc1974b38580e6ceca8c077863cd5e88745895dfcbe1ae3c36eab9c498103dc # OAuth Application Secret\",\n                \"line_num\": 3,\n                \"path\": \"./tests/samples/gitlab_prefix_token\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"gloas-7fc1974b38580e6ceca8c077863cd5e88745895dfcbe1ae3c36eab9c498103dc\",\n                \"value_start\": 0,\n                \"value_end\": 70,\n                \"entropy\": 4.0466\n            }\n        ]\n    },\n    {\n        \"rule\": \"Gitlab Prefix Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"gldt-9BeUoeWu2V9uUS3uLoMy # Deploy token\",\n                \"line_num\": 4,\n                \"path\": \"./tests/samples/gitlab_prefix_token\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"gldt-9BeUoeWu2V9uUS3uLoMy\",\n                \"value_start\": 0,\n                \"value_end\": 25,\n                \"entropy\": 4.13366\n            }\n        ]\n    },\n    {\n        \"rule\": \"Gitlab Prefix Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"glrt-2CR8_eVxiio-1QmzPZwa # Runner authentication token\",\n                \"line_num\": 5,\n                \"path\": \"./tests/samples/gitlab_prefix_token\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"glrt-2CR8_eVxiio-1QmzPZwa\",\n                \"value_start\": 0,\n                \"value_end\": 25,\n                \"entropy\": 4.48386\n            }\n        ]\n    },\n    {\n        \"rule\": \"Gitlab Prefix Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"glcbt-1375_cgpAsnEmP-79kcfRLyK_\",\n                \"line_num\": 6,\n                \"path\": \"./tests/samples/gitlab_prefix_token\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"glcbt-1375_cgpAsnEmP-79kcfRLyK_\",\n                \"value_start\": 0,\n                \"value_end\": 31,\n                \"entropy\": 4.54275\n            }\n        ]\n    },\n    {\n        \"rule\": \"Gitlab Prefix Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"glcbt-0_c1k_AsgyRp4mP-Kcn8fL # CI/CD Job token\",\n                \"line_num\": 7,\n                \"path\": \"./tests/samples/gitlab_prefix_token\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"glcbt-0_c1k_AsgyRp4mP-Kcn8fL\",\n                \"value_start\": 0,\n                \"value_end\": 28,\n                \"entropy\": 4.42325\n            }\n        ]\n    },\n    {\n        \"rule\": \"Gitlab Prefix Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"glptt-33276248c9748113e978392e5c074b7f974f8683 # Trigger token\",\n                \"line_num\": 8,\n                \"path\": \"./tests/samples/gitlab_prefix_token\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"glptt-33276248c9748113e978392e5c074b7f974f8683\",\n                \"value_start\": 0,\n                \"value_end\": 46,\n                \"entropy\": 3.96956\n            }\n        ]\n    },\n    {\n        \"rule\": \"Gitlab Prefix Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"glft-Aafqn5A31G-2VipZMh28 # Feed token\",\n                \"line_num\": 9,\n                \"path\": \"./tests/samples/gitlab_prefix_token\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"glft-Aafqn5A31G-2VipZMh28\",\n                \"value_start\": 0,\n                \"value_end\": 25,\n                \"entropy\": 4.32386\n            }\n        ]\n    },\n    {\n        \"rule\": \"Gitlab Prefix Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"glimt-1jpqzsnw2n71om0r9kgt06os3 # Incoming mail token\",\n                \"line_num\": 10,\n                \"path\": \"./tests/samples/gitlab_prefix_token\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"glimt-1jpqzsnw2n71om0r9kgt06os3\",\n                \"value_start\": 0,\n                \"value_end\": 31,\n                \"entropy\": 4.43807\n            }\n        ]\n    },\n    {\n        \"rule\": \"Gitlab Prefix Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"glagent-ZQmgbRr-Ydu5YehnXCGiiSLxjd53EkFnYapS7A4TwyNE8Y2XVg # GitLab agent for Kubernetes token\",\n                \"line_num\": 11,\n                \"path\": \"./tests/samples/gitlab_prefix_token\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"glagent-ZQmgbRr-Ydu5YehnXCGiiSLxjd53EkFnYapS7A4TwyNE8Y2XVg\",\n                \"value_start\": 0,\n                \"value_end\": 58,\n                \"entropy\": 5.18979\n            }\n        ]\n    },\n    {\n        \"rule\": \"Gitlab Prefix Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"_gitlab_session=8d2a78c080a3af1e6a4677be474432f2 # GitLab session cookies\",\n                \"line_num\": 12,\n                \"path\": \"./tests/samples/gitlab_prefix_token\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"_gitlab_session=8d2a78c080a3af1e6a4677be474432f2\",\n                \"value_start\": 0,\n                \"value_end\": 48,\n                \"entropy\": 4.32185\n            }\n        ]\n    },\n    {\n        \"rule\": \"Gitlab Prefix Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"glsoat-971om0ecn5A386r9k481 # SCIM Tokens\",\n                \"line_num\": 13,\n                \"path\": \"./tests/samples/gitlab_prefix_token\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"glsoat-971om0ecn5A386r9k481\",\n                \"value_start\": 0,\n                \"value_end\": 27,\n                \"entropy\": 4.45859\n            }\n        ]\n    },\n    {\n        \"rule\": \"Gitlab Prefix Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"glffct-AnRWYdo3Si_Xm2Q6n7zu # Feature Flags Client token\",\n                \"line_num\": 14,\n                \"path\": \"./tests/samples/gitlab_prefix_token\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"glffct-AnRWYdo3Si_Xm2Q6n7zu\",\n                \"value_start\": 0,\n                \"value_end\": 27,\n                \"entropy\": 4.60674\n            }\n        ]\n    },\n    {\n        \"rule\": \"Gitlab Prefix Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"glrtr-KZX7Mizo7RYFKh2JScz6aeqZ3WG8nxujE21QpZVIr # Registration runner token\",\n                \"line_num\": 15,\n                \"path\": \"./tests/samples/gitlab_prefix_token\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"glrtr-KZX7Mizo7RYFKh2JScz6aeqZ3WG8nxujE21QpZVIr\",\n                \"value_start\": 0,\n                \"value_end\": 47,\n                \"entropy\": 5.18204\n            }\n        ]\n    },\n    {\n        \"rule\": \"Gitlab Prefix Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"glwt-G9dr9LJjGiSfBdxzDVyHi7vSdDcAftOmJ # Workspace token\",\n                \"line_num\": 16,\n                \"path\": \"./tests/samples/gitlab_prefix_token\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"glwt-G9dr9LJjGiSfBdxzDVyHi7vSdDcAftOmJ\",\n                \"value_start\": 0,\n                \"value_end\": 38,\n                \"entropy\": 4.70175\n            }\n        ]\n    },\n    {\n        \"rule\": \"Gitlab Prefix Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"GR1348941jG6xeSsmN8DFVKoyBYu2 # Runner registration token\",\n                \"line_num\": 18,\n                \"path\": \"./tests/samples/gitlab_prefix_token\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"GR1348941jG6xeSsmN8DFVKoyBYu2\",\n                \"value_start\": 0,\n                \"value_end\": 29,\n                \"entropy\": 4.58212\n            }\n        ]\n    },\n    {\n        \"rule\": \"Google API Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"AIzaGiReoG-Cr0ckleCr0ckle12315618_12315 # Google API Key\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/google_creds\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"AIzaGiReoG-Cr0ckleCr0ckle12315618_12315\",\n                \"value_start\": 0,\n                \"value_end\": 39,\n                \"entropy\": 4.35298\n            }\n        ]\n    },\n    {\n        \"rule\": \"Google OAuth Secret\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"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 # Google OAuth Secret\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/google_creds\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"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\",\n                \"value_start\": 0,\n                \"value_end\": 35,\n                \"entropy\": 4.67214\n            }\n        ]\n    },\n    {\n        \"rule\": \"Google OAuth Access Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"ya29.zmZDrADaFxE_IS6fl4sbDxCpH-ltO2BoHEwXOglsXbgd_S # Google OAuth Access Token\",\n                \"line_num\": 3,\n                \"path\": \"./tests/samples/google_creds\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"ya29.zmZDrADaFxE_IS6fl4sbDxCpH-ltO2BoHEwXOglsXbgd_S\",\n                \"value_start\": 0,\n                \"value_end\": 51,\n                \"entropy\": 5.01537\n            }\n        ]\n    },\n    {\n        \"rule\": \"Google OAuth Refresh Token\",\n        \"severity\": \"medium\",\n        \"confidence\": \"weak\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"1//0T4eRe15N0tT4Et0kEHY0U4Rel0Ok1ng4-hPyg7SWC7tZ1WE5vZvtCwqrJF9rLsyiKFeDGT_0ZHafDhc4-Y2qij02mClU1InwQ_ # Google OAuth Refresh Token\",\n                \"line_num\": 4,\n                \"path\": \"./tests/samples/google_creds\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"1//0T4eRe15N0tT4Et0kEHY0U4Rel0Ok1ng4-hPyg7SWC7tZ1WE5vZvtCwqrJF9rLsyiKFeDGT_0ZHafDhc4-Y2qij02mClU1InwQ_\",\n                \"value_start\": 0,\n                \"value_end\": 102,\n                \"entropy\": 5.43821\n            }\n        ]\n    },\n    {\n        \"rule\": \"Google Multi\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"194206074328-qp89pdv6fi35vsi71258g1eh31q6h7c3.apps.googleusercontent.com\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/google_multi\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"194206074328-qp89pdv6fi35vsi71258g1eh31q6h7c3.apps.googleusercontent.com\",\n                \"value_start\": 0,\n                \"value_end\": 72,\n                \"entropy\": 4.80827\n            },\n            {\n                \"line\": \"4L2QMyTm6Rr0o46ytGiReoG1\",\n                \"line_num\": 4,\n                \"path\": \"./tests/samples/google_multi\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"4L2QMyTm6Rr0o46ytGiReoG1\",\n                \"value_start\": 0,\n                \"value_end\": 24,\n                \"entropy\": 4.08496\n            }\n        ]\n    },\n    {\n        \"rule\": \"Google Multi\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"\\\"id\\\":\\\"194206074328-qdv6fi3eh31q6h7c35vsi7p89p1258g1.apps.googleusercontent.com\\\",\\\"CEKPET\\\":\\\"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\\\",\",\n                \"line_num\": 18,\n                \"path\": \"./tests/samples/google_multi\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"194206074328-qdv6fi3eh31q6h7c35vsi7p89p1258g1.apps.googleusercontent.com\",\n                \"value_start\": 6,\n                \"value_end\": 78,\n                \"entropy\": 4.80827\n            },\n            {\n                \"line\": \"\\\"id\\\":\\\"194206074328-qdv6fi3eh31q6h7c35vsi7p89p1258g1.apps.googleusercontent.com\\\",\\\"CEKPET\\\":\\\"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\\\",\",\n                \"line_num\": 18,\n                \"path\": \"./tests/samples/google_multi\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"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\",\n                \"value_start\": 90,\n                \"value_end\": 125,\n                \"entropy\": 4.67214\n            }\n        ]\n    },\n    {\n        \"rule\": \"Google OAuth Secret\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"\\\"id\\\":\\\"194206074328-qdv6fi3eh31q6h7c35vsi7p89p1258g1.apps.googleusercontent.com\\\",\\\"CEKPET\\\":\\\"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\\\",\",\n                \"line_num\": 18,\n                \"path\": \"./tests/samples/google_multi\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"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\",\n                \"value_start\": 90,\n                \"value_end\": 125,\n                \"entropy\": 4.67214\n            }\n        ]\n    },\n    {\n        \"rule\": \"Grafana Provisioned API Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"grafana_policy = 'glc_eyJvIjoiMjA0NjMwIiwibiI6InRlc3QtdG9rZW4iLCJrIjoidklnbjJ2WHc5MTVXOWtNOWxsNHcyZHEyIiwibSI6eyJyIjoicHJvZC0wIn19'\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/grafana_access_policy_token\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"eyJvIjoiMjA0NjMwIiwibiI6InRlc3QtdG9rZW4iLCJrIjoidklnbjJ2WHc5MTVXOWtNOWxsNHcyZHEyIiwibSI6eyJyIjoicHJvZC0wIn19\",\n                \"value_start\": 22,\n                \"value_end\": 130,\n                \"entropy\": 5.1038\n            }\n        ]\n    },\n    {\n        \"rule\": \"Grafana Access Policy Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"grafana_policy = 'glc_eyJvIjoiMjA0NjMwIiwibiI6InRlc3QtdG9rZW4iLCJrIjoidklnbjJ2WHc5MTVXOWtNOWxsNHcyZHEyIiwibSI6eyJyIjoicHJvZC0wIn19'\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/grafana_access_policy_token\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"glc_eyJvIjoiMjA0NjMwIiwibiI6InRlc3QtdG9rZW4iLCJrIjoidklnbjJ2WHc5MTVXOWtNOWxsNHcyZHEyIiwibSI6eyJyIjoicHJvZC0wIn19\",\n                \"value_start\": 18,\n                \"value_end\": 130,\n                \"entropy\": 5.15841\n            }\n        ]\n    },\n    {\n        \"rule\": \"JSON Web Key\",\n        \"severity\": \"medium\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"grafana = 'eyJrIjoiMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCIsIm4iOiJ4eHh4IiwiaWQiOjIwNDM2MH0='\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/grafana_provisioned_api_key\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"eyJrIjoiMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCIsIm4iOiJ4eHh4IiwiaWQiOjIwNDM2MH0\",\n                \"value_start\": 11,\n                \"value_end\": 106,\n                \"entropy\": 3.77105\n            }\n        ]\n    },\n    {\n        \"rule\": \"Grafana Provisioned API Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"grafana = 'eyJrIjoiMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCIsIm4iOiJ4eHh4IiwiaWQiOjIwNDM2MH0='\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/grafana_provisioned_api_key\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"eyJrIjoiMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCIsIm4iOiJ4eHh4IiwiaWQiOjIwNDM2MH0=\",\n                \"value_start\": 11,\n                \"value_end\": 107,\n                \"entropy\": 3.81531\n            }\n        ]\n    },\n    {\n        \"rule\": \"Grafana Service Account Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"glsa_ThisI5NtTheTok3nYou8reLo0k1ngF0r_0a2a3df7\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/grafana_service_accounts\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"glsa_ThisI5NtTheTok3nYou8reLo0k1ngF0r_0a2a3df7\",\n                \"value_start\": 0,\n                \"value_end\": 46,\n                \"entropy\": 4.71879\n            }\n        ]\n    },\n    {\n        \"rule\": \"Groq API Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"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\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/groq_api_key\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"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\",\n                \"value_start\": 0,\n                \"value_end\": 56,\n                \"entropy\": 5.01691\n            }\n        ]\n    },\n    {\n        \"rule\": \"Groq API Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"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\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/groq_api_key\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"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\",\n                \"value_start\": 0,\n                \"value_end\": 56,\n                \"entropy\": 5.02567\n            }\n        ]\n    },\n    {\n        \"rule\": \"Groq API Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"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\",\n                \"line_num\": 3,\n                \"path\": \"./tests/samples/groq_api_key\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"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\",\n                \"value_start\": 0,\n                \"value_end\": 56,\n                \"entropy\": 5.02567\n            }\n        ]\n    },\n    {\n        \"rule\": \"Groq API Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"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\",\n                \"line_num\": 4,\n                \"path\": \"./tests/samples/groq_api_key\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"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\",\n                \"value_start\": 0,\n                \"value_end\": 56,\n                \"entropy\": 5.00343\n            }\n        ]\n    },\n    {\n        \"rule\": \"Hashicorp Terraform Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"Z28P3STmkBQi1Y.atlasv1.YE7RBqu6VVyQIOq9a1eC3YFU5Elt7ToIr6OwzKAWlCTQ7N4gElXaWou6aPpOIwGCoc0\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/hashicorp\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"Z28P3STmkBQi1Y.atlasv1.YE7RBqu6VVyQIOq9a1eC3YFU5Elt7ToIr6OwzKAWlCTQ7N4gElXaWou6aPpOIwGCoc0\",\n                \"value_start\": 0,\n                \"value_end\": 90,\n                \"entropy\": 5.47059\n            }\n        ]\n    },\n    {\n        \"rule\": \"Hashicorp Vault Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"hvs.atlasv1-Z28P3STmkBQi1Y-YE7RBqu6VVyQIOq9a1eC3YFU5Elt7ToIr6OwzKAWlCTQ7N4gElXaWou6aPpOIwGCoc0\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/hashicorp\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"hvs.atlasv1-Z28P3STmkBQi1Y-YE7RBqu6VVyQIOq9a1eC3YFU5Elt7ToIr6OwzKAWlCTQ7N4gElXaWou6aPpOIwGCoc0\",\n                \"value_start\": 0,\n                \"value_end\": 94,\n                \"entropy\": 5.53423\n            }\n        ]\n    },\n    {\n        \"rule\": \"Heroku Credentials\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"HRKU-RAjCYR7Mai1JAIhHASD6ITENvdVydAPCnNcAlrMrTLozPkj9_BGqh1J5P4Wf\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/heroku\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"HRKU-RAjCYR7Mai1JAIhHASD6ITENvdVydAPCnNcAlrMrTLozPkj9_BGqh1J5P4Wf\",\n                \"value_start\": 0,\n                \"value_end\": 65,\n                \"entropy\": 5.32822\n            }\n        ]\n    },\n    {\n        \"rule\": \"Heroku Credentials\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"HRKU-f1274537-88fb-deaf-beda-453bd9a496ef\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/heroku\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"HRKU-f1274537-88fb-deaf-beda-453bd9a496ef\",\n                \"value_start\": 0,\n                \"value_end\": 41,\n                \"entropy\": 4.0555\n            }\n        ]\n    },\n    {\n        \"rule\": \"Hugging Face User Access Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"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\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/huggingface\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"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\",\n                \"value_start\": 0,\n                \"value_end\": 37,\n                \"entropy\": 4.70256\n            }\n        ]\n    },\n    {\n        \"rule\": \"Hugging Face User Access Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"url/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/part\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/huggingface\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"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\",\n                \"value_start\": 4,\n                \"value_end\": 41,\n                \"entropy\": 4.77702\n            }\n        ]\n    },\n    {\n        \"rule\": \"Hugging Face User Access Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"hf_3478658437658347638475687346587374\",\n                \"line_num\": 5,\n                \"path\": \"./tests/samples/huggingface\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"hf_3478658437658347638475687346587374\",\n                \"value_start\": 0,\n                \"value_end\": 37,\n                \"entropy\": 2.89079\n            }\n        ]\n    },\n    {\n        \"rule\": \"Hugging Face User Access Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"hf_UdYjVqYvybBLEhIrwwEUYjOgkeyexample\",\n                \"line_num\": 6,\n                \"path\": \"./tests/samples/huggingface\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"hf_UdYjVqYvybBLEhIrwwEUYjOgkeyexample\",\n                \"value_start\": 0,\n                \"value_end\": 37,\n                \"entropy\": 4.62811\n            }\n        ]\n    },\n    {\n        \"rule\": \"Instagram Access Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"IGQVJWS3pUNmZA2MUJDVlRwLW9ac1lrU05nZAmpzWHQtWHFJSEFRMF9tWVpRdEd70HQ5Wk8wSnY0R0VEQnVQdUU0MnpxNWxocUYyNmZAXSTUtVVNrMmh1ZAHZAQQno2ZA0VHR0lLWkk1N1R5RDFvM0dmVEpIYQZGZX\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/instagram_access_token\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"IGQVJWS3pUNmZA2MUJDVlRwLW9ac1lrU05nZAmpzWHQtWHFJSEFRMF9tWVpRdEd70HQ5Wk8wSnY0R0VEQnVQdUU0MnpxNWxocUYyNmZAXSTUtVVNrMmh1ZAHZAQQno2ZA0VHR0lLWkk1N1R5RDFvM0dmVEpIYQZGZX\",\n                \"value_start\": 0,\n                \"value_end\": 162,\n                \"entropy\": 5.23164\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"+  \\\"password\\\": \\\"dkajco1\\\"\",\n                \"line_num\": 10,\n                \"path\": \"./tests/samples/iso_ir_111.patch\",\n                \"info\": \"\",\n                \"variable\": \"password\",\n                \"variable_start\": 4,\n                \"variable_end\": 12,\n                \"value\": \"dkajco1\",\n                \"value_start\": 16,\n                \"value_end\": 23,\n                \"entropy\": 2.80735\n            }\n        ]\n    },\n    {\n        \"rule\": \"Jfrog Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"cmVmdGtuOlRoZXJlIGFyZSBub3QgdGhlIHRva2VucyB5b3UncmUgbG9va2luZyA0\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/jfrog_n\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"cmVmdGtuOlRoZXJlIGFyZSBub3QgdGhlIHRva2VucyB5b3UncmUgbG9va2luZyA0\",\n                \"value_start\": 0,\n                \"value_end\": 64,\n                \"entropy\": 4.90977\n            }\n        ]\n    },\n    {\n        \"rule\": \"Jfrog Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"AKCp2UNCd8uK7hQoxZnFE4PGtRHnAcBHr43HgLcj7nJmWb4JhVUqBwa2iwXszftnogpo2EVF0\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/jfrog_n\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"AKCp2UNCd8uK7hQoxZnFE4PGtRHnAcBHr43HgLcj7nJmWb4JhVUqBwa2iwXszftnogpo2EVF0\",\n                \"value_start\": 0,\n                \"value_end\": 73,\n                \"entropy\": 5.38134\n            }\n        ]\n    },\n    {\n        \"rule\": \"Jira / Confluence PAT token\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"cmVmdGtuOjAxOjAxMjM0NTY3ODk6QWJjZGVmR2hpamtsbW5vUHFyc3R1dnd4eXow\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/jfrog_p\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"NTY3ODk6QWJjZGVmR2hpamtsbW5vUHFyc3R1dnd4eXow\",\n                \"value_start\": 20,\n                \"value_end\": 64,\n                \"entropy\": 5.23216\n            }\n        ]\n    },\n    {\n        \"rule\": \"Jfrog Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"cmVmdGtuOjAxOjAxMjM0NTY3ODk6QWJjZGVmR2hpamtsbW5vUHFyc3R1dnd4eXow\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/jfrog_p\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"cmVmdGtuOjAxOjAxMjM0NTY3ODk6QWJjZGVmR2hpamtsbW5vUHFyc3R1dnd4eXow\",\n                \"value_start\": 0,\n                \"value_end\": 64,\n                \"entropy\": 5.28891\n            }\n        ]\n    },\n    {\n        \"rule\": \"Jfrog Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"AKCp2UNCd8uK7hQoxZnFE4PGtRHnAcBHr43HgLcj7nJmWb4JhVUqBwa2iwXszftnogpo2EVFa\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/jfrog_p\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"AKCp2UNCd8uK7hQoxZnFE4PGtRHnAcBHr43HgLcj7nJmWb4JhVUqBwa2iwXszftnogpo2EVFa\",\n                \"value_start\": 0,\n                \"value_end\": 73,\n                \"entropy\": 5.35394\n            }\n        ]\n    },\n    {\n        \"rule\": \"Jira / Confluence PAT token\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"TP: https://www.example.com/api/verification/version2322/token/OTI2NjA3NjU1NTI2Oh2DOnASdOHoIhEGyqIuYrdkYaQZ\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/jira_confluence_pat\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"OTI2NjA3NjU1NTI2Oh2DOnASdOHoIhEGyqIuYrdkYaQZ\",\n                \"value_start\": 63,\n                \"value_end\": 107,\n                \"entropy\": 4.60694\n            }\n        ]\n    },\n    {\n        \"rule\": \"Jira / Confluence PAT token\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"TP: \\\"image/png\\\": \\\"iVBORx09VIskhxhCe7sh03R1dnENPiB66xQSIZjEYN13vafX/OTI2NjA3NjU1NTI2Oh2DOnASdOHoIhEGyqIuYrdkYaQZ/hZwUteHsmN+z+aoEAAAAvL+Q5FSQGyqIuYrdkYaQZuW1TvI=\\\\n\\\",\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/jira_confluence_pat\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"OTI2NjA3NjU1NTI2Oh2DOnASdOHoIhEGyqIuYrdkYaQZ\",\n                \"value_start\": 67,\n                \"value_end\": 111,\n                \"entropy\": 4.60694\n            }\n        ]\n    },\n    {\n        \"rule\": \"Jira / Confluence PAT token\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"FP: \\\"image/png\\\": \\\"iVBORx09VIskhxhCe7sh03R1dnENPiB66xQSIZjEYN13vafX/MDAwMToPTwEV1TLGOh2DOnASdOHoIhEGyqIuYrdkYaQZ/hZwUteHsmN+z+aoEAAAAvL+Q5FSQGyqIuYrdkYaQZuW1TvI=\\\\n\\\",\",\n                \"line_num\": 3,\n                \"path\": \"./tests/samples/jira_confluence_pat\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"MDAwMToPTwEV1TLGOh2DOnASdOHoIhEGyqIuYrdkYaQZ\",\n                \"value_start\": 67,\n                \"value_end\": 111,\n                \"entropy\": 4.7433\n            }\n        ]\n    },\n    {\n        \"rule\": \"JSON Web Key\",\n        \"severity\": \"medium\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"WwogICAgewogICAgICAgICJrdHkiOiAiRUMiLAogICAgICAgICJkIjogInNsYVFxeUhRUHVkT3BxMm1iRHNrdW04ck91OUlNa0xHaklOQUZXd2Zxci0iCiAgICB9LAogICAgewogICAgICAgICJrdHkiOiAiUlNBIiwKICAgICAgICAiZCI6ICItcGhaOE40R3V3WmNoeTdGQ01CMTRJQTM1ZEJVM3NXeTJPUnh3V044UGJLcUtPa1piOG1oNHZfZ1Fnd2c3ajE2dVNkOTFDT0JOUEdIMGhOemFIMmpPWSIKICAgIH0sCiAgICB7CiAgICAgICAgImt0eSI6ICJvY3QiLAogICAgICAgICJrIjogIldyTXdRZm9OYUhUZ1hVNWZadlJHQUQiCiAgICB9Cl0=\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/json_web_key\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"WwogICAgewogICAgICAgICJrdHkiOiAiRUMiLAogICAgICAgICJkIjogInNsYVFxeUhRUHVkT3BxMm1iRHNrdW04ck91OUlNa0xHaklOQUZXd2Zxci0iCiAgICB9LAogICAgewogICAgICAgICJrdHkiOiAiUlNBIiwKICAgICAgICAiZCI6ICItcGhaOE40R3V3WmNoeTdGQ01CMTRJQTM1ZEJVM3NXeTJPUnh3V044UGJLcUtPa1piOG1oNHZfZ1Fnd2c3ajE2dVNkOTFDT0JOUEdIMGhOemFIMmpPWSIKICAgIH0sCiAgICB7CiAgICAgICAgImt0eSI6ICJvY3QiLAogICAgICAgICJrIjogIldyTXdRZm9OYUhUZ1hVNWZadlJHQUQiCiAgICB9Cl0\",\n                \"value_start\": 0,\n                \"value_end\": 407,\n                \"entropy\": 5.27189\n            }\n        ]\n    },\n    {\n        \"rule\": \"JSON Web Token\",\n        \"severity\": \"medium\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"detected: eyJhbGciOiJSUzI1NiJ9Cg.eyJleHAiOjY1NTM2fQo.Ce7sh0ENPiBlE_dose0cBA\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/json_web_token\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"eyJhbGciOiJSUzI1NiJ9Cg.eyJleHAiOjY1NTM2fQo.Ce7sh0ENPiBlE_dose0cBA\",\n                \"value_start\": 10,\n                \"value_end\": 75,\n                \"entropy\": 5.03815\n            }\n        ]\n    },\n    {\n        \"rule\": \"JSON Web Token\",\n        \"severity\": \"medium\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"not detected: eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.NiIsInR5cCI6IkpXV.NiIsInR5cCI6IkpXV\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/json_web_token\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.NiIsInR5cCI6IkpXV.NiIsInR5cCI6IkpXV\",\n                \"value_start\": 14,\n                \"value_end\": 86,\n                \"entropy\": 4.3641\n            }\n        ]\n    },\n    {\n        \"rule\": \"JWK\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"        \\\"kty\\\": \\\"[EC]\\\",\",\n                \"line_num\": 3,\n                \"path\": \"./tests/samples/jwk.json\",\n                \"info\": \"\",\n                \"variable\": \"kty\",\n                \"variable_start\": 9,\n                \"variable_end\": 12,\n                \"value\": \"\\\"kty\\\": \\\"[EC\",\n                \"value_start\": 8,\n                \"value_end\": 19,\n                \"entropy\": 3.02717\n            },\n            {\n                \"line\": \"        \\\"d\\\": \\\"slaQqyHQPudOpq2mbDskum8rOu9IMkLGjINAFWwfqr-\\\"\",\n                \"line_num\": 4,\n                \"path\": \"./tests/samples/jwk.json\",\n                \"info\": \"\",\n                \"variable\": \"d\",\n                \"variable_start\": 9,\n                \"variable_end\": 10,\n                \"value\": \"slaQqyHQPudOpq2mbDskum8rOu9IMkLGjINAFWwfqr-\",\n                \"value_start\": 14,\n                \"value_end\": 57,\n                \"entropy\": 4.87953\n            }\n        ]\n    },\n    {\n        \"rule\": \"JWK\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"        \\\"kty\\\": \\\"RSA\\\",\",\n                \"line_num\": 7,\n                \"path\": \"./tests/samples/jwk.json\",\n                \"info\": \"\",\n                \"variable\": \"kty\",\n                \"variable_start\": 9,\n                \"variable_end\": 12,\n                \"value\": \"\\\"kty\\\": \\\"RSA\\\"\",\n                \"value_start\": 8,\n                \"value_end\": 20,\n                \"entropy\": 2.9183\n            },\n            {\n                \"line\": \"        \\\"d\\\": \\\"-phZ8N4GuwZchy7FCMB14IA35dBU3sWy2ORxwWN8PbKqKOkZb8mh4v_gQgwg7j16uSd91COBNPGH0hNzaH2jOY\\\"\",\n                \"line_num\": 10,\n                \"path\": \"./tests/samples/jwk.json\",\n                \"info\": \"\",\n                \"variable\": \"d\",\n                \"variable_start\": 9,\n                \"variable_end\": 10,\n                \"value\": \"-phZ8N4GuwZchy7FCMB14IA35dBU3sWy2ORxwWN8PbKqKOkZb8mh4v_gQgwg7j16uSd91COBNPGH0hNzaH2jOY\",\n                \"value_start\": 14,\n                \"value_end\": 100,\n                \"entropy\": 5.43459\n            }\n        ]\n    },\n    {\n        \"rule\": \"JWK\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"        \\\"kty\\\": \\\"oct\\\",\",\n                \"line_num\": 13,\n                \"path\": \"./tests/samples/jwk.json\",\n                \"info\": \"\",\n                \"variable\": \"kty\",\n                \"variable_start\": 9,\n                \"variable_end\": 12,\n                \"value\": \"\\\"kty\\\": \\\"oct\\\"\",\n                \"value_start\": 8,\n                \"value_end\": 20,\n                \"entropy\": 2.75163\n            },\n            {\n                \"line\": \"        \\\"k\\\": \\\"WrMwQfoNaHTgXU5fZvRGAD\\\"\",\n                \"line_num\": 16,\n                \"path\": \"./tests/samples/jwk.json\",\n                \"info\": \"\",\n                \"variable\": \"k\",\n                \"variable_start\": 9,\n                \"variable_end\": 10,\n                \"value\": \"WrMwQfoNaHTgXU5fZvRGAD\",\n                \"value_start\": 14,\n                \"value_end\": 36,\n                \"entropy\": 4.36852\n            }\n        ]\n    },\n    {\n        \"rule\": \"Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"var PKEY = `-----BEGIN OPENSSH PRIVATE KEY-----\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/key.go\",\n                \"info\": \"\",\n                \"variable\": \"PKEY\",\n                \"variable_start\": 4,\n                \"variable_end\": 8,\n                \"value\": \"-----BEGIN OPENSSH PRIVATE KEY-----\",\n                \"value_start\": 12,\n                \"value_end\": 47,\n                \"entropy\": 3.58716\n            }\n        ]\n    },\n    {\n        \"rule\": \"PEM Private Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"var PKEY = `-----BEGIN OPENSSH PRIVATE KEY-----\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/key.go\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"-----BEGIN OPENSSH PRIVATE KEY-----\",\n                \"value_start\": 12,\n                \"value_end\": 47,\n                \"entropy\": 3.58716\n            },\n            {\n                \"line\": \"b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAAAMwAAAAtzc2gtZWQyNTUx\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/key.go\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAAAMwAAAAtzc2gtZWQyNTUx\",\n                \"value_start\": 0,\n                \"value_end\": 76,\n                \"entropy\": 4.18903\n            },\n            {\n                \"line\": \"OQAAABWHkoN5N0V0OCSXOHWSOHAxRYMJSGc4clgVA0gJgFlIBAAAAJimRM7VpkTO1QAAAAtzc2gt\",\n                \"line_num\": 3,\n                \"path\": \"./tests/samples/key.go\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"OQAAABWHkoN5N0V0OCSXOHWSOHAxRYMJSGc4clgVA0gJgFlIBAAAAJimRM7VpkTO1QAAAAtzc2gt\",\n                \"value_start\": 0,\n                \"value_end\": 76,\n                \"entropy\": 4.74471\n            },\n            {\n                \"line\": \"ZWQyNTUxOQAAACBqIPMG94HL7zedFzsvi45mHS8ZuyLQXqvHpHobcdNCJAAAAFRoZXJlXzE1LU4w\",\n                \"line_num\": 4,\n                \"path\": \"./tests/samples/key.go\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"ZWQyNTUxOQAAACBqIPMG94HL7zedFzsvi45mHS8ZuyLQXqvHpHobcdNCJAAAAFRoZXJlXzE1LU4w\",\n                \"value_start\": 0,\n                \"value_end\": 76,\n                \"entropy\": 5.24555\n            },\n            {\n                \"line\": \"dF9UaGVLZXlZb3VBcmVMb29raW5nRm9S8wb3Mj0tZT1hc3A7ZHprejsuZm5tbmRmbmVuZm5pAAAA\",\n                \"line_num\": 5,\n                \"path\": \"./tests/samples/key.go\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"dF9UaGVLZXlZb3VBcmVMb29raW5nRm9S8wb3Mj0tZT1hc3A7ZHprejsuZm5tbmRmbmVuZm5pAAAA\",\n                \"value_start\": 0,\n                \"value_end\": 76,\n                \"entropy\": 4.94996\n            },\n            {\n                \"line\": \"EXRpemVuQGNyZWRzd2VlcGVyAQIDBA==\",\n                \"line_num\": 6,\n                \"path\": \"./tests/samples/key.go\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"EXRpemVuQGNyZWRzd2VlcGVyAQIDBA==\",\n                \"value_start\": 0,\n                \"value_end\": 32,\n                \"entropy\": 4.47641\n            },\n            {\n                \"line\": \"-----END OPENSSH PRIVATE KEY-----\",\n                \"line_num\": 7,\n                \"path\": \"./tests/samples/key.go\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"-----END OPENSSH PRIVATE KEY-----\",\n                \"value_start\": 0,\n                \"value_end\": 33,\n                \"entropy\": 3.46942\n            }\n        ]\n    },\n    {\n        \"rule\": \"Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"$key = 'gmUGWxhQW9KQWdhd0lCQVFRZ0ViVnpwrLzZYdDJPNG1PQjYxMXNPaFJ1\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/key.php\",\n                \"info\": \"\",\n                \"variable\": \"$key\",\n                \"variable_start\": 0,\n                \"variable_end\": 4,\n                \"value\": \"gmUGWxhQW9KQWdhd0lCQVFRZ0ViVnpwrLzZYdDJPNG1PQjYxMXNPaFJ1\",\n                \"value_start\": 8,\n                \"value_end\": 64,\n                \"entropy\": 4.96772\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"define( 'PASSWORD' , '2Arh5dA1Sn0ywiVYdnpwr3aLzZDJPNG' );\",\n                \"line_num\": 3,\n                \"path\": \"./tests/samples/key.php\",\n                \"info\": \"\",\n                \"variable\": \"PASSWORD\",\n                \"variable_start\": 9,\n                \"variable_end\": 17,\n                \"value\": \"2Arh5dA1Sn0ywiVYdnpwr3aLzZDJPNG\",\n                \"value_start\": 22,\n                \"value_end\": 53,\n                \"entropy\": 4.63162\n            }\n        ]\n    },\n    {\n        \"rule\": \"Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"pkey = (\\\"LS0tLS1CRUdJTiBQUklWQVRFIENDcUdTTTQ5QXdFSEJHMHdhd0lCQVFRZ0ViVn\\\"\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/key.py\",\n                \"info\": \"\",\n                \"variable\": \"pkey\",\n                \"variable_start\": 0,\n                \"variable_end\": 4,\n                \"value\": \"LS0tLS1CRUdJTiBQUklWQVRFIENDcUdTTTQ5QXdFSEJHMHdhd0lCQVFRZ0ViVn\",\n                \"value_start\": 9,\n                \"value_end\": 71,\n                \"entropy\": 4.71236\n            }\n        ]\n    },\n    {\n        \"rule\": \"Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"print(\\\"https://example.com/api/js?key=dhd0lCQVFRZ0ViVnpmUGWxhQW9KQWwrLzZYdDJPNG1PQjYxMXNPaFJB&bug=true\\\")\",\n                \"line_num\": 7,\n                \"path\": \"./tests/samples/key.py\",\n                \"info\": \"\",\n                \"variable\": \"key\",\n                \"variable_start\": 34,\n                \"variable_end\": 37,\n                \"value\": \"dhd0lCQVFRZ0ViVnpmUGWxhQW9KQWwrLzZYdDJPNG1PQjYxMXNPaFJB\",\n                \"value_start\": 38,\n                \"value_end\": 93,\n                \"entropy\": 4.96282\n            }\n        ]\n    },\n    {\n        \"rule\": \"Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"PKEY = \\\"\\\"\\\"-----BEGIN OPENSSH PRIVATE KEY-----\",\n                \"line_num\": 9,\n                \"path\": \"./tests/samples/key.py\",\n                \"info\": \"\",\n                \"variable\": \"PKEY\",\n                \"variable_start\": 0,\n                \"variable_end\": 4,\n                \"value\": \"-----BEGIN OPENSSH PRIVATE KEY-----\",\n                \"value_start\": 10,\n                \"value_end\": 45,\n                \"entropy\": 3.58716\n            }\n        ]\n    },\n    {\n        \"rule\": \"PEM Private Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"PKEY = \\\"\\\"\\\"-----BEGIN OPENSSH PRIVATE KEY-----\",\n                \"line_num\": 9,\n                \"path\": \"./tests/samples/key.py\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"-----BEGIN OPENSSH PRIVATE KEY-----\",\n                \"value_start\": 10,\n                \"value_end\": 45,\n                \"entropy\": 3.58716\n            },\n            {\n                \"line\": \"b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAAAMwAAAAtzc2gtZWQyNTUx\",\n                \"line_num\": 10,\n                \"path\": \"./tests/samples/key.py\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAAAMwAAAAtzc2gtZWQyNTUx\",\n                \"value_start\": 0,\n                \"value_end\": 76,\n                \"entropy\": 4.18903\n            },\n            {\n                \"line\": \"OQAAABWHkoN5N0V0OCSXOHWSOHAxRYMJSGc4clgVA0gJgFlIBAAAAJimRM7VpkTO1QAAAAtzc2gt\",\n                \"line_num\": 11,\n                \"path\": \"./tests/samples/key.py\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"OQAAABWHkoN5N0V0OCSXOHWSOHAxRYMJSGc4clgVA0gJgFlIBAAAAJimRM7VpkTO1QAAAAtzc2gt\",\n                \"value_start\": 0,\n                \"value_end\": 76,\n                \"entropy\": 4.74471\n            },\n            {\n                \"line\": \"ZWQyNTUxOQAAACBqIPMG94HL7zedFzsvi45mHS8ZuyLQXqvHpHobcdNCJAAAAFRoZXJlXzE1LU4w\",\n                \"line_num\": 12,\n                \"path\": \"./tests/samples/key.py\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"ZWQyNTUxOQAAACBqIPMG94HL7zedFzsvi45mHS8ZuyLQXqvHpHobcdNCJAAAAFRoZXJlXzE1LU4w\",\n                \"value_start\": 0,\n                \"value_end\": 76,\n                \"entropy\": 5.24555\n            },\n            {\n                \"line\": \"dF9UaGVLZXlZb3VBcmVMb29raW5nRm9S8wb3Mj0tZT1hc3A7ZHprejsuZm5tbmRmbmVuZm5pAAAA\",\n                \"line_num\": 13,\n                \"path\": \"./tests/samples/key.py\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"dF9UaGVLZXlZb3VBcmVMb29raW5nRm9S8wb3Mj0tZT1hc3A7ZHprejsuZm5tbmRmbmVuZm5pAAAA\",\n                \"value_start\": 0,\n                \"value_end\": 76,\n                \"entropy\": 4.94996\n            },\n            {\n                \"line\": \"EXRpemVuQGNyZWRzd2VlcGVyAQIDBA==\",\n                \"line_num\": 14,\n                \"path\": \"./tests/samples/key.py\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"EXRpemVuQGNyZWRzd2VlcGVyAQIDBA==\",\n                \"value_start\": 0,\n                \"value_end\": 32,\n                \"entropy\": 4.47641\n            },\n            {\n                \"line\": \"-----END OPENSSH PRIVATE KEY-----\\\"\\\"\\\"\",\n                \"line_num\": 15,\n                \"path\": \"./tests/samples/key.py\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"-----END OPENSSH PRIVATE KEY-----\",\n                \"value_start\": 0,\n                \"value_end\": 33,\n                \"entropy\": 3.46942\n            }\n        ]\n    },\n    {\n        \"rule\": \"Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"    \\\"key\\\": \\\"api_key\\\",\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/key_value.json\",\n                \"info\": \"\",\n                \"variable\": \"key\",\n                \"variable_start\": 5,\n                \"variable_end\": 8,\n                \"value\": \"api_key\",\n                \"value_start\": 12,\n                \"value_end\": 19,\n                \"entropy\": 2.80735\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"        \\\"pass_mask32\\\": \\\"0x31c45018\\\",\",\n                \"line_num\": 7,\n                \"path\": \"./tests/samples/key_value.json\",\n                \"info\": \"\",\n                \"variable\": \"pass_mask32\",\n                \"variable_start\": 9,\n                \"variable_end\": 20,\n                \"value\": \"0x31c45018\",\n                \"value_start\": 24,\n                \"value_end\": 34,\n                \"entropy\": 2.92193\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"        \\\"pass_mask64\\\": \\\"0x81103c1452dd61cd\\\",\",\n                \"line_num\": 8,\n                \"path\": \"./tests/samples/key_value.json\",\n                \"info\": \"\",\n                \"variable\": \"pass_mask64\",\n                \"variable_start\": 9,\n                \"variable_end\": 20,\n                \"value\": \"0x81103c1452dd61cd\",\n                \"value_start\": 24,\n                \"value_end\": 42,\n                \"entropy\": 3.2391\n            }\n        ]\n    },\n    {\n        \"rule\": \"LLAMA API Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"llx-gOpoyW2vlgfBcYEYlSu8x3Tk3lrtW1AWJU8nXQ6XOCZah4h1\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/llama\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"llx-gOpoyW2vlgfBcYEYlSu8x3Tk3lrtW1AWJU8nXQ6XOCZah4h1\",\n                \"value_start\": 0,\n                \"value_end\": 52,\n                \"entropy\": 5.03958\n            }\n        ]\n    },\n    {\n        \"rule\": \"LLAMA API Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"llx-vYx_tfO1AgW73_hwAET-u7p7YVDTBERNn4ij4a8wrDrGM6RT\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/llama\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"llx-vYx_tfO1AgW73_hwAET-u7p7YVDTBERNn4ij4a8wrDrGM6RT\",\n                \"value_start\": 0,\n                \"value_end\": 52,\n                \"entropy\": 5.05602\n            }\n        ]\n    },\n    {\n        \"rule\": \"MailChimp API Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"mailchimp = \\\"LRINSm5Vdi9BMCzCWSJ8M3TMysUHwDzB-us36\\\"\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/mailchimp_key\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"LRINSm5Vdi9BMCzCWSJ8M3TMysUHwDzB-us36\",\n                \"value_start\": 13,\n                \"value_end\": 50,\n                \"entropy\": 4.75662\n            }\n        ]\n    },\n    {\n        \"rule\": \"MailGun API Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"key-a25a4ac62a074cd52c668c6b9937cf40\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/mailgun\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"key-a25a4ac62a074cd52c668c6b9937cf40\",\n                \"value_start\": 0,\n                \"value_end\": 36,\n                \"entropy\": 3.91661\n            }\n        ]\n    },\n    {\n        \"rule\": \"MailGun API Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"a25a4ac62a074cd52c668c6b9937cf40-432f2836-db15b420\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/mailgun\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"a25a4ac62a074cd52c668c6b9937cf40-432f2836-db15b420\",\n                \"value_start\": 0,\n                \"value_end\": 50,\n                \"entropy\": 3.85669\n            }\n        ]\n    },\n    {\n        \"rule\": \"AWS Client ID\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"+  clid = \\\"AKIAQWADE5R42RDZ4JEM\\\"\",\n                \"line_num\": 45,\n                \"path\": \"./tests/samples/multifile.patch\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"AKIAQWADE5R42RDZ4JEM\",\n                \"value_start\": 11,\n                \"value_end\": 31,\n                \"entropy\": 3.68418\n            }\n        ]\n    },\n    {\n        \"rule\": \"AWS Multi\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"+  clid = \\\"AKIAQWADE5R42RDZ4JEM\\\"\",\n                \"line_num\": 45,\n                \"path\": \"./tests/samples/multifile.patch\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"AKIAQWADE5R42RDZ4JEM\",\n                \"value_start\": 11,\n                \"value_end\": 31,\n                \"entropy\": 3.68418\n            },\n            {\n                \"line\": \"+  token = \\\"V84C7sDU001tFFodKU95USNy97TkqXymnvsFmYhQ\\\"\",\n                \"line_num\": 46,\n                \"path\": \"./tests/samples/multifile.patch\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"V84C7sDU001tFFodKU95USNy97TkqXymnvsFmYhQ\",\n                \"value_start\": 12,\n                \"value_end\": 52,\n                \"entropy\": 4.78418\n            }\n        ]\n    },\n    {\n        \"rule\": \"Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"+  token = \\\"V84C7sDU001tFFodKU95USNy97TkqXymnvsFmYhQ\\\"\",\n                \"line_num\": 46,\n                \"path\": \"./tests/samples/multifile.patch\",\n                \"info\": \"\",\n                \"variable\": \"token\",\n                \"variable_start\": 3,\n                \"variable_end\": 8,\n                \"value\": \"V84C7sDU001tFFodKU95USNy97TkqXymnvsFmYhQ\",\n                \"value_start\": 12,\n                \"value_end\": 52,\n                \"entropy\": 4.78418\n            }\n        ]\n    },\n    {\n        \"rule\": \"AWS Client ID\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"+  clid = \\\"AKIAQWADE5R42RDZ4JEM\\\"\",\n                \"line_num\": 8,\n                \"path\": \"./tests/samples/multiline.patch\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"AKIAQWADE5R42RDZ4JEM\",\n                \"value_start\": 11,\n                \"value_end\": 31,\n                \"entropy\": 3.68418\n            }\n        ]\n    },\n    {\n        \"rule\": \"AWS Multi\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"+  clid = \\\"AKIAQWADE5R42RDZ4JEM\\\"\",\n                \"line_num\": 8,\n                \"path\": \"./tests/samples/multiline.patch\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"AKIAQWADE5R42RDZ4JEM\",\n                \"value_start\": 11,\n                \"value_end\": 31,\n                \"entropy\": 3.68418\n            },\n            {\n                \"line\": \"+  token = \\\"V84C7sDU001tFFodKU95USNy97TkqXymnvsFmYhQ\\\"\",\n                \"line_num\": 9,\n                \"path\": \"./tests/samples/multiline.patch\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"V84C7sDU001tFFodKU95USNy97TkqXymnvsFmYhQ\",\n                \"value_start\": 12,\n                \"value_end\": 52,\n                \"entropy\": 4.78418\n            }\n        ]\n    },\n    {\n        \"rule\": \"Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"+  token = \\\"V84C7sDU001tFFodKU95USNy97TkqXymnvsFmYhQ\\\"\",\n                \"line_num\": 9,\n                \"path\": \"./tests/samples/multiline.patch\",\n                \"info\": \"\",\n                \"variable\": \"token\",\n                \"variable_start\": 3,\n                \"variable_end\": 8,\n                \"value\": \"V84C7sDU001tFFodKU95USNy97TkqXymnvsFmYhQ\",\n                \"value_start\": 12,\n                \"value_end\": 52,\n                \"entropy\": 4.78418\n            }\n        ]\n    },\n    {\n        \"rule\": \"Netlify Token\",\n        \"severity\": \"medium\",\n        \"confidence\": \"weak\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"nfp_0i5OM4MV7L02wV3E6rrwiTwhvEkkkPJ9C3EP\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/netlify\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"nfp_0i5OM4MV7L02wV3E6rrwiTwhvEkkkPJ9C3EP\",\n                \"value_start\": 0,\n                \"value_end\": 40,\n                \"entropy\": 4.61531\n            }\n        ]\n    },\n    {\n        \"rule\": \"Netlify Token\",\n        \"severity\": \"medium\",\n        \"confidence\": \"weak\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"nfp_0i5OM4MV7L02wV3E6rrwiTwhvtestEXAMPLE\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/netlify\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"nfp_0i5OM4MV7L02wV3E6rrwiTwhvtestEXAMPLE\",\n                \"value_start\": 0,\n                \"value_end\": 40,\n                \"entropy\": 4.66531\n            }\n        ]\n    },\n    {\n        \"rule\": \"NKEY Seed\",\n        \"severity\": \"high\",\n        \"confidence\": \"weak\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"// SUAML2GCZ7IK7E7UD4VZ7ELPZW7DK2ZNL35WSMW3IORHC3BWBSDQXUQRBU\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/nkey_seed\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"SUAML2GCZ7IK7E7UD4VZ7ELPZW7DK2ZNL35WSMW3IORHC3BWBSDQXUQRBU\",\n                \"value_start\": 3,\n                \"value_end\": 61,\n                \"entropy\": 4.55826\n            }\n        ]\n    },\n    {\n        \"rule\": \"Nonce\",\n        \"severity\": \"low\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"nonce = 'bsfcvir57nt40rydvtbhs8lzbgljmet5'\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/nonce.py\",\n                \"info\": \"\",\n                \"variable\": \"nonce\",\n                \"variable_start\": 0,\n                \"variable_end\": 5,\n                \"value\": \"bsfcvir57nt40rydvtbhs8lzbgljmet5\",\n                \"value_start\": 9,\n                \"value_end\": 41,\n                \"entropy\": 4.39032\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"password: F1lT3ReDw17hQoT3s\",\n                \"line_num\": 3,\n                \"path\": \"./tests/samples/nonce.py\",\n                \"info\": \"\",\n                \"variable\": \"password\",\n                \"variable_start\": 0,\n                \"variable_end\": 8,\n                \"value\": \"F1lT3ReDw17hQoT3s\",\n                \"value_start\": 10,\n                \"value_end\": 27,\n                \"entropy\": 3.73452\n            }\n        ]\n    },\n    {\n        \"rule\": \"Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"key_wrap = 'KJHhJKhKU7yguyuyfrtsdESffhjgkhYT\\\\\",\n                \"line_num\": 7,\n                \"path\": \"./tests/samples/nonce.py\",\n                \"info\": \"\",\n                \"variable\": \"key_wrap\",\n                \"variable_start\": 0,\n                \"variable_end\": 8,\n                \"value\": \"KJHhJKhKU7yguyuyfrtsdESffhjgkhYT\",\n                \"value_start\": 12,\n                \"value_end\": 44,\n                \"entropy\": 4.11673\n            }\n        ]\n    },\n    {\n        \"rule\": \"Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"key_multi = '''KJHfdjs8767gr54534wsFHGf5hJKhK\",\n                \"line_num\": 11,\n                \"path\": \"./tests/samples/nonce.py\",\n                \"info\": \"\",\n                \"variable\": \"key_multi\",\n                \"variable_start\": 0,\n                \"variable_end\": 9,\n                \"value\": \"KJHfdjs8767gr54534wsFHGf5hJKhK\",\n                \"value_start\": 15,\n                \"value_end\": 45,\n                \"entropy\": 4.12323\n            }\n        ]\n    },\n    {\n        \"rule\": \"Notion Integration Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"ntn_123465789l62YMNJKXLKpjiCVEXbx4CBxkfprOA96Y15wZ\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/notion\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"ntn_123465789l62YMNJKXLKpjiCVEXbx4CBxkfprOA96Y15wZ\",\n                \"value_start\": 0,\n                \"value_end\": 50,\n                \"entropy\": 5.06876\n            }\n        ]\n    },\n    {\n        \"rule\": \"Notion Integration Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"ntn_123465789l62EXAMPLEKpjiCVEXbx4CBxkftestEXAMPLE\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/notion\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"ntn_123465789l62EXAMPLEKpjiCVEXbx4CBxkftestEXAMPLE\",\n                \"value_start\": 0,\n                \"value_end\": 50,\n                \"entropy\": 4.82147\n            }\n        ]\n    },\n    {\n        \"rule\": \"NPM Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"negative:npm_NFX6dCpmIWvQ7megnY0AtQwkoKzWcEXAMPLE\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/npm\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"npm_NFX6dCpmIWvQ7megnY0AtQwkoKzWcEXAMPLE\",\n                \"value_start\": 9,\n                \"value_end\": 49,\n                \"entropy\": 4.85306\n            }\n        ]\n    },\n    {\n        \"rule\": \"NPM Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"positive: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\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/npm\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"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\",\n                \"value_start\": 9,\n                \"value_end\": 49,\n                \"entropy\": 4.80306\n            }\n        ]\n    },\n    {\n        \"rule\": \"NTLM Token\",\n        \"severity\": \"medium\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"Positive: TlRMTVNTUAADAAAAGAAYAFYAAAAYABgAbgAAAAAAAABIAAAADgAOAEgAAAAAAAAAVgAAAAAAAACGAAAARmFLZURhVGEAAAAPQwByAGUAZABTAHcAZQBlAHCgZQBy3wAAAAAAAAAAAAAAAAAAAAAph0MQmDQmCVaJEmhiOGSYIXNJMoc2KLo=\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/ntlm\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"TlRMTVNTUAADAAAAGAAYAFYAAAAYABgAbgAAAAAAAABIAAAADgAOAEgAAAAAAAAAVgAAAAAAAACGAAAARmFLZURhVGEAAAAPQwByAGUAZABTAHcAZQBlAHCgZQBy3wAAAAAAAAAAAAAAAAAAAAAph0MQmDQmCVaJEmhiOGSYIXNJMoc2KLo=\",\n                \"value_start\": 10,\n                \"value_end\": 190,\n                \"entropy\": 3.79713\n            }\n        ]\n    },\n    {\n        \"rule\": \"NTLM Token\",\n        \"severity\": \"medium\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"Negative: TlRMTVNTUAADAAAAGAAYAFYAAAAYABgAbgAAAAAAAABIAAAADgAOAEgAAAAAAAAAVgAAAAAAAACGAAAARmThisIsAnExamplewByAGUAZABTAHcAZQBlAHCgZQBy3wAAAAAAAAAAAAAAAAAAAAAph0MQmDQmCVaJEmhiOGSYIXNJMoc2KLo=\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/ntlm\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"TlRMTVNTUAADAAAAGAAYAFYAAAAYABgAbgAAAAAAAABIAAAADgAOAEgAAAAAAAAAVgAAAAAAAACGAAAARmThisIsAnExamplewByAGUAZABTAHcAZQBlAHCgZQBy3wAAAAAAAAAAAAAAAAAAAAAph0MQmDQmCVaJEmhiOGSYIXNJMoc2KLo=\",\n                \"value_start\": 10,\n                \"value_end\": 190,\n                \"entropy\": 3.94022\n            }\n        ]\n    },\n    {\n        \"rule\": \"NuGet API key\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"k = 'oy2mlf2v7jl2firuegfqwzc4zxyebz3ethzd14g4hw4iam'\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/nuget_api_key\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"oy2mlf2v7jl2firuegfqwzc4zxyebz3ethzd14g4hw4iam\",\n                \"value_start\": 5,\n                \"value_end\": 51,\n                \"entropy\": 4.56129\n            }\n        ]\n    },\n    {\n        \"rule\": \"OpenAI Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"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\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/open_ai_token\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"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\",\n                \"value_start\": 0,\n                \"value_end\": 51,\n                \"entropy\": 5.22625\n            }\n        ]\n    },\n    {\n        \"rule\": \"OpenAI Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"sk-proj-qa25MV9c7Qu0EjDIEWdcT3BlbkFJ83uCF0K4yw7RzpY39bio\",\n                \"line_num\": 3,\n                \"path\": \"./tests/samples/open_ai_token\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"sk-proj-qa25MV9c7Qu0EjDIEWdcT3BlbkFJ83uCF0K4yw7RzpY39bio\",\n                \"value_start\": 0,\n                \"value_end\": 56,\n                \"entropy\": 5.25816\n            }\n        ]\n    },\n    {\n        \"rule\": \"OpenAI Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"sk-1234567c7Qu0EjDIEWdcT3BlbkFJ83uCF0K4yw7RzpY39bio\",\n                \"line_num\": 6,\n                \"path\": \"./tests/samples/open_ai_token\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"sk-1234567c7Qu0EjDIEWdcT3BlbkFJ83uCF0K4yw7RzpY39bio\",\n                \"value_start\": 0,\n                \"value_end\": 51,\n                \"entropy\": 5.1086\n            }\n        ]\n    },\n    {\n        \"rule\": \"OpenAI Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"sk-proj-asdfgasdfasdfdcQbzdcT3BlbkFJ83uCasdfgasdfgasdfjk\",\n                \"line_num\": 7,\n                \"path\": \"./tests/samples/open_ai_token\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"sk-proj-asdfgasdfasdfdcQbzdcT3BlbkFJ83uCasdfgasdfgasdfjk\",\n                \"value_start\": 0,\n                \"value_end\": 56,\n                \"entropy\": 4.12555\n            }\n        ]\n    },\n    {\n        \"rule\": \"OTP / 2FA Secret\",\n        \"severity\": \"info\",\n        \"confidence\": \"weak\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"WXFES7QNTET5DQYC\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/otp_2fa\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"WXFES7QNTET5DQYC\",\n                \"value_start\": 0,\n                \"value_end\": 16,\n                \"entropy\": 3.625\n            }\n        ]\n    },\n    {\n        \"rule\": \"OTP / 2FA Secret\",\n        \"severity\": \"info\",\n        \"confidence\": \"weak\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"JERZOR2XLQYTUQG7YBZYHLK3KSLRYTWB\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/otp_2fa\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"JERZOR2XLQYTUQG7YBZYHLK3KSLRYTWB\",\n                \"value_start\": 0,\n                \"value_end\": 32,\n                \"entropy\": 4.14032\n            }\n        ]\n    },\n    {\n        \"rule\": \"OTP / 2FA Secret\",\n        \"severity\": \"info\",\n        \"confidence\": \"weak\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"WXFES7QNTET5DQYC/WfRCqbCGkCJa8MRsXo0zxuGsIIM+5TQDRi93VZYUx0rGCOb8PO08LeqmfA1\",\n                \"line_num\": 8,\n                \"path\": \"./tests/samples/otp_2fa\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"WXFES7QNTET5DQYC\",\n                \"value_start\": 0,\n                \"value_end\": 16,\n                \"entropy\": 3.625\n            }\n        ]\n    },\n    {\n        \"rule\": \"OTP / 2FA Secret\",\n        \"severity\": \"info\",\n        \"confidence\": \"weak\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"fGDjHpfF6R0LniBVBBF5fk/JERZOR2XLQYTUQG7YBZYHLK3KSLRYTWB/p4N7XMkL7gf0ulmwlxSl\",\n                \"line_num\": 10,\n                \"path\": \"./tests/samples/otp_2fa\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"JERZOR2XLQYTUQG7YBZYHLK3KSLRYTWB\",\n                \"value_start\": 23,\n                \"value_end\": 55,\n                \"entropy\": 4.14032\n            }\n        ]\n    },\n    {\n        \"rule\": \"OTP / 2FA Secret\",\n        \"severity\": \"info\",\n        \"confidence\": \"weak\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"WXFES7QN4EXAMPLE\",\n                \"line_num\": 11,\n                \"path\": \"./tests/samples/otp_2fa\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"WXFES7QN4EXAMPLE\",\n                \"value_start\": 0,\n                \"value_end\": 16,\n                \"entropy\": 3.57782\n            }\n        ]\n    },\n    {\n        \"rule\": \"Secret\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"https://oauth.myapp.com/v3/access_token?app_id=my-client-id&app_secret=my-client-password&code=q4C1a20qS&redirect_uri=http%3A%2F%2Flocalhost%2Fdummy-demo\",\n                \"line_num\": 3,\n                \"path\": \"./tests/samples/pass_filtered\",\n                \"info\": \"\",\n                \"variable\": \"app_secret\",\n                \"variable_start\": 60,\n                \"variable_end\": 70,\n                \"value\": \"my-client-password\",\n                \"value_start\": 71,\n                \"value_end\": 89,\n                \"entropy\": 3.9477\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"password = \\\"0xAb19D82E7f546cC3\\\"\",\n                \"line_num\": 4,\n                \"path\": \"./tests/samples/pass_filtered\",\n                \"info\": \"\",\n                \"variable\": \"password\",\n                \"variable_start\": 0,\n                \"variable_end\": 8,\n                \"value\": \"0xAb19D82E7f546cC3\",\n                \"value_start\": 12,\n                \"value_end\": 30,\n                \"entropy\": 4.16993\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"password_id = 2938479\",\n                \"line_num\": 5,\n                \"path\": \"./tests/samples/pass_filtered\",\n                \"info\": \"\",\n                \"variable\": \"password_id\",\n                \"variable_start\": 0,\n                \"variable_end\": 11,\n                \"value\": \"2938479\",\n                \"value_start\": 14,\n                \"value_end\": 21,\n                \"entropy\": 2.52164\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"gi_reo_gi_passwd = \\\"cAc48k1Zd7\\\"; password_confirmation = \\\"cAc48k1Zd7\\\";\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/passwd.groovy\",\n                \"info\": \"\",\n                \"variable\": \"gi_reo_gi_passwd\",\n                \"variable_start\": 0,\n                \"variable_end\": 16,\n                \"value\": \"cAc48k1Zd7\",\n                \"value_start\": 20,\n                \"value_end\": 30,\n                \"entropy\": 3.12193\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"gi_reo_gi_passwd = \\\"cAc48k1Zd7\\\"; password_confirmation = \\\"cAc48k1Zd7\\\";\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/passwd.groovy\",\n                \"info\": \"\",\n                \"variable\": \"password_confirmation\",\n                \"variable_start\": 33,\n                \"variable_end\": 54,\n                \"value\": \"cAc48k1Zd7\",\n                \"value_start\": 58,\n                \"value_end\": 68,\n                \"entropy\": 3.12193\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"mypw: KrAcMe12345,\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/passwd.groovy\",\n                \"info\": \"\",\n                \"variable\": \"mypw\",\n                \"variable_start\": 0,\n                \"variable_end\": 4,\n                \"value\": \"KrAcMe12345\",\n                \"value_start\": 6,\n                \"value_end\": 17,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"masked_password = *****1*****2;\",\n                \"line_num\": 3,\n                \"path\": \"./tests/samples/passwd.groovy\",\n                \"info\": \"\",\n                \"variable\": \"masked_password\",\n                \"variable_start\": 0,\n                \"variable_end\": 15,\n                \"value\": \"*****1*****2\",\n                \"value_start\": 18,\n                \"value_end\": 30,\n                \"entropy\": 0.81669\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"password = \\\"cackle!\\\"\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/password.gradle\",\n                \"info\": \"\",\n                \"variable\": \"password\",\n                \"variable_start\": 0,\n                \"variable_end\": 8,\n                \"value\": \"cackle!\",\n                \"value_start\": 12,\n                \"value_end\": 19,\n                \"entropy\": 2.52164\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"+  \\\"password\\\": \\\"dkajco1\\\"\",\n                \"line_num\": 9,\n                \"path\": \"./tests/samples/password.patch\",\n                \"info\": \"\",\n                \"variable\": \"password\",\n                \"variable_start\": 4,\n                \"variable_end\": 12,\n                \"value\": \"dkajco1\",\n                \"value_start\": 16,\n                \"value_end\": 23,\n                \"entropy\": 2.80735\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"password = \\\"MYPSWRD!@#$%^&*\\\"\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/password.tfvars\",\n                \"info\": \"\",\n                \"variable\": \"password\",\n                \"variable_start\": 0,\n                \"variable_end\": 8,\n                \"value\": \"MYPSWRD!@#$%^&*\",\n                \"value_start\": 12,\n                \"value_end\": 27,\n                \"entropy\": 3.90689\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"#define PASSWORD 0x0dead1beef7cafe2\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/password_FALSE\",\n                \"info\": \"\",\n                \"variable\": \"PASSWORD\",\n                \"variable_start\": 8,\n                \"variable_end\": 16,\n                \"value\": \"0x0dead1beef7cafe2\",\n                \"value_start\": 17,\n                \"value_end\": 35,\n                \"entropy\": 3.28104\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"password = \\\"abc\\\"\",\n                \"line_num\": 3,\n                \"path\": \"./tests/samples/password_FALSE\",\n                \"info\": \"\",\n                \"variable\": \"password\",\n                \"variable_start\": 0,\n                \"variable_end\": 8,\n                \"value\": \"\",\n                \"value_start\": 11,\n                \"value_end\": 11,\n                \"entropy\": 0.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"M[@%]PW:2Z.Q?2M^S;`4G?E0C.@V&?0KY]]\\\"H3Y@6$#I4V*R^\\\"+B,2P6`A)UL\",\n                \"line_num\": 8,\n                \"path\": \"./tests/samples/password_FALSE\",\n                \"info\": \"\",\n                \"variable\": \"]PW\",\n                \"variable_start\": 4,\n                \"variable_end\": 7,\n                \"value\": \"2Z.Q?2M^S\",\n                \"value_start\": 8,\n                \"value_end\": 17,\n                \"entropy\": 2.9477\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"MYSQLPASS: Ce7shE0ENPiBlE_EdEose0cBAA\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/password_TRUE\",\n                \"info\": \"\",\n                \"variable\": \"MYSQLPASS\",\n                \"variable_start\": 0,\n                \"variable_end\": 9,\n                \"value\": \"Ce7shE0ENPiBlE_EdEose0cBAA\",\n                \"value_start\": 11,\n                \"value_end\": 37,\n                \"entropy\": 3.8693\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"my_pw: nCzx8A8#!\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/password_TRUE\",\n                \"info\": \"\",\n                \"variable\": \"my_pw\",\n                \"variable_start\": 0,\n                \"variable_end\": 5,\n                \"value\": \"nCzx8A8#!\",\n                \"value_start\": 7,\n                \"value_end\": 16,\n                \"entropy\": 2.9477\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"val password: String = \\\"exord13Paw64\\\", // scala\",\n                \"line_num\": 3,\n                \"path\": \"./tests/samples/password_TRUE\",\n                \"info\": \"\",\n                \"variable\": \"password\",\n                \"variable_start\": 4,\n                \"variable_end\": 12,\n                \"value\": \"exord13Paw64\",\n                \"value_start\": 24,\n                \"value_end\": 36,\n                \"entropy\": 3.58496\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"def connect(passwd: str = \\\"cq2tPr1a2\\\"): # python default arg\",\n                \"line_num\": 4,\n                \"path\": \"./tests/samples/password_TRUE\",\n                \"info\": \"\",\n                \"variable\": \"passwd\",\n                \"variable_start\": 12,\n                \"variable_end\": 18,\n                \"value\": \"cq2tPr1a2\",\n                \"value_start\": 27,\n                \"value_end\": 36,\n                \"entropy\": 2.9477\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"if passworsd == \\\"q4c1a2oPd\\\": # __eq__ separator\",\n                \"line_num\": 5,\n                \"path\": \"./tests/samples/password_TRUE\",\n                \"info\": \"\",\n                \"variable\": \"passworsd\",\n                \"variable_start\": 3,\n                \"variable_end\": 12,\n                \"value\": \"q4c1a2oPd\",\n                \"value_start\": 17,\n                \"value_end\": 26,\n                \"entropy\": 3.16993\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"if passworsd != \\\"x6s7djtEa\\\": # __ne__ separator\",\n                \"line_num\": 6,\n                \"path\": \"./tests/samples/password_TRUE\",\n                \"info\": \"\",\n                \"variable\": \"passworsd\",\n                \"variable_start\": 3,\n                \"variable_end\": 12,\n                \"value\": \"x6s7djtEa\",\n                \"value_start\": 17,\n                \"value_end\": 26,\n                \"entropy\": 3.16993\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"password=2bkJgtJDiLcq1t\",\n                \"line_num\": 7,\n                \"path\": \"./tests/samples/password_TRUE\",\n                \"info\": \"\",\n                \"variable\": \"password\",\n                \"variable_start\": 0,\n                \"variable_end\": 8,\n                \"value\": \"2bkJgtJDiLcq1t\",\n                \"value_start\": 9,\n                \"value_end\": 23,\n                \"entropy\": 3.52164\n            }\n        ]\n    },\n    {\n        \"rule\": \"CMD Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"RUN openssl x509 -req -days 365 -passin \\\"pass:nCzx8A8#!\\\" -sha256 -in server.csr -CA ca.pem -CAkey ca-key\",\n                \"line_num\": 8,\n                \"path\": \"./tests/samples/password_TRUE\",\n                \"info\": \"\",\n                \"variable\": \"passin\",\n                \"variable_start\": 33,\n                \"variable_end\": 39,\n                \"value\": \"nCzx8A8#!\",\n                \"value_start\": 46,\n                \"value_end\": 55,\n                \"entropy\": 2.9477\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"RUN openssl x509 -req -days 365 -passin \\\"pass:nCzx8A8#!\\\" -sha256 -in server.csr -CA ca.pem -CAkey ca-key\",\n                \"line_num\": 8,\n                \"path\": \"./tests/samples/password_TRUE\",\n                \"info\": \"\",\n                \"variable\": \"pass\",\n                \"variable_start\": 41,\n                \"variable_end\": 45,\n                \"value\": \"nCzx8A8#!\",\n                \"value_start\": 46,\n                \"value_end\": 55,\n                \"entropy\": 2.9477\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"MYSQL_DATABASE_USER=CRED;MYSQL_DATABASE_PASSWORD=2IWJD88FH4Y;\",\n                \"line_num\": 12,\n                \"path\": \"./tests/samples/password_TRUE\",\n                \"info\": \"\",\n                \"variable\": \"MYSQL_DATABASE_PASSWORD\",\n                \"variable_start\": 25,\n                \"variable_end\": 48,\n                \"value\": \"2IWJD88FH4Y\",\n                \"value_start\": 49,\n                \"value_end\": 60,\n                \"entropy\": 3.27761\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"#define password \\\"n84ASM54y4\\\"\",\n                \"line_num\": 15,\n                \"path\": \"./tests/samples/password_TRUE\",\n                \"info\": \"\",\n                \"variable\": \"password\",\n                \"variable_start\": 8,\n                \"variable_end\": 16,\n                \"value\": \"n84ASM54y4\",\n                \"value_start\": 18,\n                \"value_end\": 28,\n                \"entropy\": 2.84644\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"#define password {0x48, 0x65, 0x6C, 0x6C, 0x30}\",\n                \"line_num\": 16,\n                \"path\": \"./tests/samples/password_TRUE\",\n                \"info\": \"\",\n                \"variable\": \"password\",\n                \"variable_start\": 8,\n                \"variable_end\": 16,\n                \"value\": \"0x48, 0x65, 0x6C, 0x6C, 0x30\",\n                \"value_start\": 18,\n                \"value_end\": 46,\n                \"entropy\": 3.02613\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"%define PASSWORD \\\"n84ASM54y4\\\"\",\n                \"line_num\": 18,\n                \"path\": \"./tests/samples/password_TRUE\",\n                \"info\": \"\",\n                \"variable\": \"PASSWORD\",\n                \"variable_start\": 8,\n                \"variable_end\": 16,\n                \"value\": \"n84ASM54y4\",\n                \"value_start\": 18,\n                \"value_end\": 28,\n                \"entropy\": 2.84644\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"%global PASSWORD \\\"n84RPM54y4\\\"\",\n                \"line_num\": 19,\n                \"path\": \"./tests/samples/password_TRUE\",\n                \"info\": \"\",\n                \"variable\": \"PASSWORD\",\n                \"variable_start\": 8,\n                \"variable_end\": 16,\n                \"value\": \"n84RPM54y4\",\n                \"value_start\": 18,\n                \"value_end\": 28,\n                \"entropy\": 2.84644\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"SET password \\\"n83.bat47Fy4\\\"\",\n                \"line_num\": 21,\n                \"path\": \"./tests/samples/password_TRUE\",\n                \"info\": \"\",\n                \"variable\": \"password\",\n                \"variable_start\": 4,\n                \"variable_end\": 12,\n                \"value\": \"n83.bat47Fy4\",\n                \"value_start\": 14,\n                \"value_end\": 26,\n                \"entropy\": 3.4183\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"\\\"#define\\\\tpassword\\\\t\\\\\\\"n84ASM54y4\\\\\\\"\\\"\",\n                \"line_num\": 23,\n                \"path\": \"./tests/samples/password_TRUE\",\n                \"info\": \"\",\n                \"variable\": \"password\",\n                \"variable_start\": 10,\n                \"variable_end\": 18,\n                \"value\": \"n84ASM54y4\",\n                \"value_start\": 22,\n                \"value_end\": 32,\n                \"entropy\": 2.84644\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"WPA2_PASSWORD: e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\",\n                \"line_num\": 25,\n                \"path\": \"./tests/samples/password_TRUE\",\n                \"info\": \"\",\n                \"variable\": \"WPA2_PASSWORD\",\n                \"variable_start\": 0,\n                \"variable_end\": 13,\n                \"value\": \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\",\n                \"value_start\": 15,\n                \"value_end\": 79,\n                \"entropy\": 3.67082\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"+  \\\"password\\\": \\\"dkajco1\\\"\",\n                \"line_num\": 10,\n                \"path\": \"./tests/samples/password_utf16.patch\",\n                \"info\": \"\",\n                \"variable\": \"password\",\n                \"variable_start\": 4,\n                \"variable_end\": 12,\n                \"value\": \"dkajco1\",\n                \"value_start\": 16,\n                \"value_end\": 23,\n                \"entropy\": 2.80735\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"+  \\\"password\\\": \\\"dkajc\\u00f61\\\"\",\n                \"line_num\": 9,\n                \"path\": \"./tests/samples/password_western.patch\",\n                \"info\": \"\",\n                \"variable\": \"password\",\n                \"variable_start\": 4,\n                \"variable_end\": 12,\n                \"value\": \"dkajc\\u00f61\",\n                \"value_start\": 16,\n                \"value_end\": 23,\n                \"entropy\": 2.80735\n            }\n        ]\n    },\n    {\n        \"rule\": \"PayPal Braintree Access Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"access_token$production$gireogi121451781$abcaeaabadef01134517891121451781\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/paypal_key\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"access_token$production$gireogi121451781$abcaeaabadef01134517891121451781\",\n                \"value_start\": 0,\n                \"value_end\": 73,\n                \"entropy\": 4.39985\n            }\n        ]\n    },\n    {\n        \"rule\": \"PEM Private Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"str value = \\\"-----BEGIN RSA PRIVATE KEY-----\\\\n\\\" +\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/pem_key\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"-----BEGIN RSA PRIVATE KEY-----\",\n                \"value_start\": 13,\n                \"value_end\": 44,\n                \"entropy\": 3.38229\n            },\n            {\n                \"line\": \"\\\"MIICXQIBAAKBgQDwcEN7vZygGg6DvPpsw17hRD6S5N8+huaqs1JGXQfPhbvLTUsHdzGLVNQ/Z0wQVGdPiaJDflqhcT1IH8BLD4SHn+  \\\\n\\\"\",\n                \"line_num\": 3,\n                \"path\": \"./tests/samples/pem_key\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"\\\"MIICXQIBAAKBgQDwcEN7vZygGg6DvPpsw17hRD6S5N8+huaqs1JGXQfPhbvLTUsHdzGLVNQ/Z0wQVGdPiaJDflqhcT1IH8BLD4SHn+  \\\\n\\\"\",\n                \"value_start\": 0,\n                \"value_end\": 108,\n                \"entropy\": 5.52555\n            },\n            {\n                \"line\": \"\\t+ \\\"WuRIzX77P7oVKM2CoTA6VzT6s/bvr7HxFLl4NhohfyDsV0YCDc4I6EHGWMCUHZb0IWxzEGRWD3jbG8KAZUsQIDAQABAoGAOD7a2o\\\\r \\\\n\\\"\",\n                \"line_num\": 4,\n                \"path\": \"./tests/samples/pem_key\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"\\t+ \\\"WuRIzX77P7oVKM2CoTA6VzT6s/bvr7HxFLl4NhohfyDsV0YCDc4I6EHGWMCUHZb0IWxzEGRWD3jbG8KAZUsQIDAQABAoGAOD7a2o\\\\r \\\\n\\\"\",\n                \"value_start\": 0,\n                \"value_end\": 110,\n                \"entropy\": 5.49388\n            },\n            {\n                \"line\": \"\\\"  CRujY+PP0hS/4sHOBdDvnxa2wdW8NVNNagdCBhvP5Y1edBNMnkWOyuM4e7HzUgO0+8ndWis1OSJTz9EFTyHJm6GOn+/JR62NWNr   \\\"\",\n                \"line_num\": 5,\n                \"path\": \"./tests/samples/pem_key\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"\\\"  CRujY+PP0hS/4sHOBdDvnxa2wdW8NVNNagdCBhvP5Y1edBNMnkWOyuM4e7HzUgO0+8ndWis1OSJTz9EFTyHJm6GOn+/JR62NWNr   \\\"\",\n                \"value_start\": 0,\n                \"value_end\": 106,\n                \"entropy\": 5.44383\n            },\n            {\n                \"line\": \"\\t\\t\\\"9lfCb8cWq0eoOk3UUO9P+1nZNHjE/iDhuTi3x/5naW4SzdkZfxHo/NMI6i5w1ZnQ60CQQD9d0G9gBy6lPhC  \\\\\\\\\",\n                \"line_num\": 6,\n                \"path\": \"./tests/samples/pem_key\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"\\t\\t\\\"9lfCb8cWq0eoOk3UUO9P+1nZNHjE/iDhuTi3x/5naW4SzdkZfxHo/NMI6i5w1ZnQ60CQQD9d0G9gBy6lPhC  \\\\\\\\\",\n                \"value_start\": 0,\n                \"value_end\": 90,\n                \"entropy\": 5.53586\n            },\n            {\n                \"line\": \"\\\"\\\"\\\" mbHzYovVjSnyfzUtyWPNSrXNiUCR5vu2f6eCgSVzFZ0oHAv8nLaYnXrhyT25lwzNK5OhR/oPAkEA8tep3NmfxV \\\"\\\"\\\" +\",\n                \"line_num\": 7,\n                \"path\": \"./tests/samples/pem_key\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"\\\"\\\"\\\" mbHzYovVjSnyfzUtyWPNSrXNiUCR5vu2f6eCgSVzFZ0oHAv8nLaYnXrhyT25lwzNK5OhR/oPAkEA8tep3NmfxV \\\"\\\"\\\" +\",\n                \"value_start\": 0,\n                \"value_end\": 96,\n                \"entropy\": 5.46977\n            },\n            {\n                \"line\": \"QSBfKGfotblIG709xxfd6vHfDS0eZuTFUxkZDcayZDhMDjTMZxP8rokSbMaOSqUseUeYhx5TqFPwJAAhC0smyWz1ZjZ3eFIayN4yGRU+6B\\\\r\\\\n\",\n                \"line_num\": 8,\n                \"path\": \"./tests/samples/pem_key\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"QSBfKGfotblIG709xxfd6vHfDS0eZuTFUxkZDcayZDhMDjTMZxP8rokSbMaOSqUseUeYhx5TqFPwJAAhC0smyWz1ZjZ3eFIayN4yGRU+6B\\\\r\\\\n\",\n                \"value_start\": 0,\n                \"value_end\": 110,\n                \"entropy\": 5.55951\n            },\n            {\n                \"line\": \"\\\"amwXqhaPwKr7obS2HFiR7thKi9ODQk5oMpi8TCYMWEahgB+g9RMD0u6ZNQJBAMla\\\\\\\\\\\\\\\\nUJmySGuRnbAYu7PJURH90AOG0QOQ1Jp6yBMKgYIB\\\\\\\\\",\n                \"line_num\": 9,\n                \"path\": \"./tests/samples/pem_key\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"\\\"amwXqhaPwKr7obS2HFiR7thKi9ODQk5oMpi8TCYMWEahgB+g9RMD0u6ZNQJBAMla\\\\\\\\\\\\\\\\nUJmySGuRnbAYu7PJURH90AOG0QOQ1Jp6yBMKgYIB\\\\\\\\\",\n                \"value_start\": 0,\n                \"value_end\": 112,\n                \"entropy\": 5.49108\n            },\n            {\n                \"line\": \"Uaxk9J5Th8BXPyC1mclPMS7J\\\\\\\\\\\\\\\\ngMuobiFdIpryq51pvHkCQQDInvDaKI24Ho+cj6SCKnEO4kbjh/yx1XGwNmY0ld1i\\\\\\\\r5micHFiMI7/IcVZ4\\\\n\",\n                \"line_num\": 10,\n                \"path\": \"./tests/samples/pem_key\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"Uaxk9J5Th8BXPyC1mclPMS7J\\\\\\\\\\\\\\\\ngMuobiFdIpryq51pvHkCQQDInvDaKI24Ho+cj6SCKnEO4kbjh/yx1XGwNmY0ld1i\\\\\\\\r5micHFiMI7/IcVZ4\\\\n\",\n                \"value_start\": 0,\n                \"value_end\": 114,\n                \"entropy\": 5.57587\n            },\n            {\n                \"line\": \"2cl1OwdGjRdmO1LT6P1cl8UYIj/S\\\\n-----END RSA PRIVATE KEY-----\\\"\\\"\\\";\",\n                \"line_num\": 11,\n                \"path\": \"./tests/samples/pem_key\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"2cl1OwdGjRdmO1LT6P1cl8UYIj/S\\\\n-----END RSA PRIVATE KEY-----\\\"\\\"\\\";\",\n                \"value_start\": 0,\n                \"value_end\": 63,\n                \"entropy\": 4.72341\n            }\n        ]\n    },\n    {\n        \"rule\": \"PEM Private Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"char pk[] = \\\"\\\\\\\\n-----BEGIN EC PRIVATE KEY-----\\\\nMHcCAQEEID4VC4s0b2n3yvypHb2GO9prFUctYt\\\\r\\\\r\\\\n\\\\nHmGCMvpxkpexbHoAoGCCqGSM49\\\\\\\\\\\\\\\\\\\\nAwEHoUQDQgAE2GwUUuO9/dKl51bOryWzHF8wTSezSqdRIucGhDRsmDITLcNEZw3V\\\\\\\\\\\\\\\\rIaQP59Ufkz8NIkLeIAa1HZGZxCVMQ907FA==\\\\\\\\n-----END EC PRIVATE KEY-----\\\\n\\\";\",\n                \"line_num\": 14,\n                \"path\": \"./tests/samples/pem_key\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"-----BEGIN EC PRIVATE KEY-----\\\\nMHcCAQEEID4VC4s0b2n3yvypHb2GO9prFUctYt\\\\r\\\\r\\\\n\\\\nHmGCMvpxkpexbHoAoGCCqGSM49\\\\\\\\\\\\\\\\\\\\nAwEHoUQDQgAE2GwUUuO9/dKl51bOryWzHF8wTSezSqdRIucGhDRsmDITLcNEZw3V\\\\\\\\\\\\\\\\rIaQP59Ufkz8NIkLeIAa1HZGZxCVMQ907FA==\\\\\\\\n-----END EC PRIVATE KEY-----\",\n                \"value_start\": 16,\n                \"value_end\": 262,\n                \"entropy\": 5.56558\n            }\n        ]\n    },\n    {\n        \"rule\": \"PEM Private Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"-----BEGIN OPENSSH LOW ENTROPY PRIVATE KEY-----\",\n                \"line_num\": 27,\n                \"path\": \"./tests/samples/pem_key\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"-----BEGIN OPENSSH LOW ENTROPY PRIVATE KEY-----\",\n                \"value_start\": 0,\n                \"value_end\": 47,\n                \"entropy\": 3.8375\n            },\n            {\n                \"line\": \"12345678901231278634987284736283548102438723941563428762374129402103402394932746672734543664375t7323341253845186253784==\",\n                \"line_num\": 28,\n                \"path\": \"./tests/samples/pem_key\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"12345678901231278634987284736283548102438723941563428762374129402103402394932746672734543664375t7323341253845186253784==\",\n                \"value_start\": 0,\n                \"value_end\": 120,\n                \"entropy\": 3.30679\n            },\n            {\n                \"line\": \"-----END LOW ENTROPY PRIVATE KEY-----\",\n                \"line_num\": 29,\n                \"path\": \"./tests/samples/pem_key\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"-----END LOW ENTROPY PRIVATE KEY-----\",\n                \"value_start\": 0,\n                \"value_end\": 37,\n                \"entropy\": 3.55488\n            }\n        ]\n    },\n    {\n        \"rule\": \"PEM Private Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"  *  -----BEGIN PGP PRIVATE KEY BLOCK-----\",\n                \"line_num\": 35,\n                \"path\": \"./tests/samples/pem_key\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"-----BEGIN PGP PRIVATE KEY BLOCK-----\",\n                \"value_start\": 5,\n                \"value_end\": 42,\n                \"entropy\": 3.62218\n            },\n            {\n                \"line\": \"  *  Version: GnuPG v1.4.12 (GNU/Linux)\",\n                \"line_num\": 36,\n                \"path\": \"./tests/samples/pem_key\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"  *  Version: GnuPG v1.4.12 (GNU/Linux)\",\n                \"value_start\": 0,\n                \"value_end\": 39,\n                \"entropy\": 4.33255\n            },\n            {\n                \"line\": \"\",\n                \"line_num\": 37,\n                \"path\": \"./tests/samples/pem_key\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"\",\n                \"value_start\": 0,\n                \"value_end\": 0,\n                \"entropy\": 0.0\n            },\n            {\n                \"line\": \"  *  KzUsCyhuzSRrWk74aarzJ6i3z4wB01Y6wUn5rkbB8ig3eRjZtke1iX8c5cLtx3Mj\",\n                \"line_num\": 38,\n                \"path\": \"./tests/samples/pem_key\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"KzUsCyhuzSRrWk74aarzJ6i3z4wB01Y6wUn5rkbB8ig3eRjZtke1iX8c5cLtx3Mj\",\n                \"value_start\": 5,\n                \"value_end\": 69,\n                \"entropy\": 5.14032\n            },\n            {\n                \"line\": \"  *  SkMlXtGJEXbSEcN4wyPJkLZ6YxI76+WKuWlHZWdMXTrDYJLhvN6X7xUx4LgsGtb8\",\n                \"line_num\": 39,\n                \"path\": \"./tests/samples/pem_key\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"SkMlXtGJEXbSEcN4wyPJkLZ6YxI76+WKuWlHZWdMXTrDYJLhvN6X7xUx4LgsGtb8\",\n                \"value_start\": 5,\n                \"value_end\": 69,\n                \"entropy\": 5.09727\n            },\n            {\n                \"line\": \" //\\tGuVDoS4h4fZPyksjPyNpjUklFOZT6vTT2/QvOYxRTt/NLBleEpQEIHu6lHiwqsqB\",\n                \"line_num\": 40,\n                \"path\": \"./tests/samples/pem_key\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"GuVDoS4h4fZPyksjPyNpjUklFOZT6vTT2/QvOYxRTt/NLBleEpQEIHu6lHiwqsqB\",\n                \"value_start\": 4,\n                \"value_end\": 68,\n                \"entropy\": 5.20695\n            },\n            {\n                \"line\": \" ///\\t57KDXUMrZH/hk9Rr8mgdCT/evvhuKLBljh6ShBqn+jrMy101jHBlhxRefDjq9pmI\",\n                \"line_num\": 41,\n                \"path\": \"./tests/samples/pem_key\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"57KDXUMrZH/hk9Rr8mgdCT/evvhuKLBljh6ShBqn+jrMy101jHBlhxRefDjq9pmI\",\n                \"value_start\": 5,\n                \"value_end\": 69,\n                \"entropy\": 5.13876\n            },\n            {\n                \"line\": \"  //  UhZRwnRxgNb86LEEcgcK35SZCFnQu+POJWwWwWpkzpPiYHS+G66c3k0ApdIJjn2k\",\n                \"line_num\": 42,\n                \"path\": \"./tests/samples/pem_key\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"UhZRwnRxgNb86LEEcgcK35SZCFnQu+POJWwWwWpkzpPiYHS+G66c3k0ApdIJjn2k\",\n                \"value_start\": 6,\n                \"value_end\": 70,\n                \"entropy\": 5.19868\n            },\n            {\n                \"line\": \"  ///  q1yJq3TyI0Uc/snUIboAFHI5HIJHXQX/lwmeY/pDtuT6S+tf7XFMHXWWDtzb2xkI\",\n                \"line_num\": 43,\n                \"path\": \"./tests/samples/pem_key\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"q1yJq3TyI0Uc/snUIboAFHI5HIJHXQX/lwmeY/pDtuT6S+tf7XFMHXWWDtzb2xkI\",\n                \"value_start\": 7,\n                \"value_end\": 71,\n                \"entropy\": 5.13876\n            },\n            {\n                \"line\": \"// # /*iO/qjWpQtL6R1C03xMpECkmQaMOY/k9Hwg4JJa9YTe3DrehBz/NDw9iKaBHHKxf1*/\",\n                \"line_num\": 44,\n                \"path\": \"./tests/samples/pem_key\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"iO/qjWpQtL6R1C03xMpECkmQaMOY/k9Hwg4JJa9YTe3DrehBz/NDw9iKaBHHKxf1\",\n                \"value_start\": 7,\n                \"value_end\": 71,\n                \"entropy\": 5.17157\n            },\n            {\n                \"line\": \"# # # *  874RZktKcNFG9Yx0CZH7mRhAxiQG1iTbzLzM/rN+rb8DZnt8ijlp5/YzZeAVXUi9\",\n                \"line_num\": 45,\n                \"path\": \"./tests/samples/pem_key\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"874RZktKcNFG9Yx0CZH7mRhAxiQG1iTbzLzM/rN+rb8DZnt8ijlp5/YzZeAVXUi9\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.22641\n            },\n            {\n                \"line\": \"#+#+#+# *  IunznTXS1QmfDC6dVyRGfaJwzf6hk8RlM24JuZ3ATLaZ9sY5uZuXVa8syNwAGqVb\",\n                \"line_num\": 46,\n                \"path\": \"./tests/samples/pem_key\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"IunznTXS1QmfDC6dVyRGfaJwzf6hk8RlM24JuZ3ATLaZ9sY5uZuXVa8syNwAGqVb\",\n                \"value_start\": 11,\n                \"value_end\": 75,\n                \"entropy\": 5.17157\n            },\n            {\n                \"line\": \"  +  'yGeBfo8L8SigTUdhFrLc1AlgAGPh99fYyscpE+U+Tqm3Jl3vDLJ/VGGOLRlqLKgi' +\",\n                \"line_num\": 47,\n                \"path\": \"./tests/samples/pem_key\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"yGeBfo8L8SigTUdhFrLc1AlgAGPh99fYyscpE+U+Tqm3Jl3vDLJ/VGGOLRlqLKgi\",\n                \"value_start\": 6,\n                \"value_end\": 70,\n                \"entropy\": 5.10751\n            },\n            {\n                \"line\": \" +\\\"\\\" +\\\" 1DDOZJIuWH1Yo5/FUyH7x7McRO7ckDnCwknuXUlaCCzjomFZkoAUSym59+u0LlAh\\\"+\",\n                \"line_num\": 48,\n                \"path\": \"./tests/samples/pem_key\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"1DDOZJIuWH1Yo5/FUyH7x7McRO7ckDnCwknuXUlaCCzjomFZkoAUSym59+u0LlAh\",\n                \"value_start\": 8,\n                \"value_end\": 72,\n                \"entropy\": 5.10493\n            },\n            {\n                \"line\": \"  *  pBUvFiIZFQb3auylOTyOvXI4ZG8lPQfHKdpK3x2U4nUdCD9z7/awEpODLPWkdzjf\",\n                \"line_num\": 49,\n                \"path\": \"./tests/samples/pem_key\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"pBUvFiIZFQb3auylOTyOvXI4ZG8lPQfHKdpK3x2U4nUdCD9z7/awEpODLPWkdzjf\",\n                \"value_start\": 5,\n                \"value_end\": 69,\n                \"entropy\": 5.23407\n            },\n            {\n                \"line\": \"  *  gUjuP7eJrK/5p2iJ9PSz6+fytneqnUdwVbKOdlcj7UFnVUAIxlBiA2xdwVKqNo70\",\n                \"line_num\": 50,\n                \"path\": \"./tests/samples/pem_key\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"gUjuP7eJrK/5p2iJ9PSz6+fytneqnUdwVbKOdlcj7UFnVUAIxlBiA2xdwVKqNo70\",\n                \"value_start\": 5,\n                \"value_end\": 69,\n                \"entropy\": 5.15977\n            },\n            {\n                \"line\": \"  *  QMnczlCtGqUmeAwimQ+IyMkyV0KJYwV/PFCXjfQ2G/mnN88OtWcz793omSsWmwGc\",\n                \"line_num\": 51,\n                \"path\": \"./tests/samples/pem_key\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"QMnczlCtGqUmeAwimQ+IyMkyV0KJYwV/PFCXjfQ2G/mnN88OtWcz793omSsWmwGc\",\n                \"value_start\": 5,\n                \"value_end\": 69,\n                \"entropy\": 5.20892\n            },\n            {\n                \"line\": \"  *  iAViSZ0A0JWpTZHnZs8DDpmuDcydnyLMJDXHyOqtVe0lmWxpSTmfESFlSKeveYeY\",\n                \"line_num\": 52,\n                \"path\": \"./tests/samples/pem_key\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"iAViSZ0A0JWpTZHnZs8DDpmuDcydnyLMJDXHyOqtVe0lmWxpSTmfESFlSKeveYeY\",\n                \"value_start\": 5,\n                \"value_end\": 69,\n                \"entropy\": 4.94102\n            },\n            {\n                \"line\": \"  *  5Wq3vumtleWydYNgxgwwaPEApnr+uCk2J0Ye0+BjFRJHfPT4oBHzfrvWZq3lTnMJ\",\n                \"line_num\": 53,\n                \"path\": \"./tests/samples/pem_key\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"5Wq3vumtleWydYNgxgwwaPEApnr+uCk2J0Ye0+BjFRJHfPT4oBHzfrvWZq3lTnMJ\",\n                \"value_start\": 5,\n                \"value_end\": 69,\n                \"entropy\": 5.28891\n            },\n            {\n                \"line\": \"  *  HFNAoTz9q//Ty/CsKdla5HOsOgFJx42T12tb+N0eK9Bc5/Fj3FBLKtXUgI7gqOcw\",\n                \"line_num\": 54,\n                \"path\": \"./tests/samples/pem_key\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"HFNAoTz9q//Ty/CsKdla5HOsOgFJx42T12tb+N0eK9Bc5/Fj3FBLKtXUgI7gqOcw\",\n                \"value_start\": 5,\n                \"value_end\": 69,\n                \"entropy\": 5.14032\n            },\n            {\n                \"line\": \"  *  pFZSbyaPPMRZ/4kPx0+KaDZcZ7r2roCJFKxpeIeyeMXvLr0C2dAmB/oBWBuHuAsw\",\n                \"line_num\": 55,\n                \"path\": \"./tests/samples/pem_key\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"pFZSbyaPPMRZ/4kPx0+KaDZcZ7r2roCJFKxpeIeyeMXvLr0C2dAmB/oBWBuHuAsw\",\n                \"value_start\": 5,\n                \"value_end\": 69,\n                \"entropy\": 5.14032\n            },\n            {\n                \"line\": \"  *  ESn0CmT7gTwJ33lQHYBFAUeNMXPERcAFAWUXPxWGfgmOBBADCwDFcKVwnhM9UGTy\",\n                \"line_num\": 56,\n                \"path\": \"./tests/samples/pem_key\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"ESn0CmT7gTwJ33lQHYBFAUeNMXPERcAFAWUXPxWGfgmOBBADCwDFcKVwnhM9UGTy\",\n                \"value_start\": 5,\n                \"value_end\": 69,\n                \"entropy\": 5.09727\n            },\n            {\n                \"line\": \"  *  OBDjurirbyR6QM4cbq2qAzR0CRO6yyI9aXGkzy4P6y0LKQ0hJ9je2rp/4Ud2CdY4\",\n                \"line_num\": 57,\n                \"path\": \"./tests/samples/pem_key\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"OBDjurirbyR6QM4cbq2qAzR0CRO6yyI9aXGkzy4P6y0LKQ0hJ9je2rp/4Ud2CdY4\",\n                \"value_start\": 5,\n                \"value_end\": 69,\n                \"entropy\": 5.04087\n            },\n            {\n                \"line\": \"  *  idZTtlIeiFfpHqjCQLjH+zaEG2pqRGuBHxqeGTuJKcpTzDeJkUr278hNDUSFtCQI\",\n                \"line_num\": 58,\n                \"path\": \"./tests/samples/pem_key\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"idZTtlIeiFfpHqjCQLjH+zaEG2pqRGuBHxqeGTuJKcpTzDeJkUr278hNDUSFtCQI\",\n                \"value_start\": 5,\n                \"value_end\": 69,\n                \"entropy\": 5.14798\n            },\n            {\n                \"line\": \"  *  TGnx4JlcYHYLAvcjg0a2YhQyOcaS8iJhxaF+4yoMIh0DB5FA0V3ifF364h/o5wN7\",\n                \"line_num\": 59,\n                \"path\": \"./tests/samples/pem_key\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"TGnx4JlcYHYLAvcjg0a2YhQyOcaS8iJhxaF+4yoMIh0DB5FA0V3ifF364h/o5wN7\",\n                \"value_start\": 5,\n                \"value_end\": 69,\n                \"entropy\": 5.17923\n            },\n            {\n                \"line\": \"  *  /XOifXctwWKfR91qGtltlCWeVdFuumSOPG2hxLPW4HOlOWkhdOCRFtkqQuYd+bRz\",\n                \"line_num\": 60,\n                \"path\": \"./tests/samples/pem_key\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"/XOifXctwWKfR91qGtltlCWeVdFuumSOPG2hxLPW4HOlOWkhdOCRFtkqQuYd+bRz\",\n                \"value_start\": 5,\n                \"value_end\": 69,\n                \"entropy\": 4.99017\n            },\n            {\n                \"line\": \"  *  OoMgCLuFYDUvd7bso+IjrhPLTPHhr8V1CYz9jsKDXLvoz5XHvobkyijxOt+332SB\",\n                \"line_num\": 61,\n                \"path\": \"./tests/samples/pem_key\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"OoMgCLuFYDUvd7bso+IjrhPLTPHhr8V1CYz9jsKDXLvoz5XHvobkyijxOt+332SB\",\n                \"value_start\": 5,\n                \"value_end\": 69,\n                \"entropy\": 5.21461\n            },\n            {\n                \"line\": \"  *  4Rez5/vpHftx6pHbCa+LfdUZDYPeTUHgtTvqmbDMvwHMMwgMJP6gF6jyQINYXTIN\",\n                \"line_num\": 62,\n                \"path\": \"./tests/samples/pem_key\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"4Rez5/vpHftx6pHbCa+LfdUZDYPeTUHgtTvqmbDMvwHMMwgMJP6gF6jyQINYXTIN\",\n                \"value_start\": 5,\n                \"value_end\": 69,\n                \"entropy\": 5.07782\n            },\n            {\n                \"line\": \"  *  sTFVBS2exAu1uy/2onjE1ROZJqsKF6At24LzlZJZvKJRVh8n0Jrchs+8EluojWyv\",\n                \"line_num\": 63,\n                \"path\": \"./tests/samples/pem_key\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"sTFVBS2exAu1uy/2onjE1ROZJqsKF6At24LzlZJZvKJRVh8n0Jrchs+8EluojWyv\",\n                \"value_start\": 5,\n                \"value_end\": 69,\n                \"entropy\": 5.10907\n            },\n            {\n                \"line\": \"  *  ZIgdqdWv+SLPoZX7+2X/3DptmnL4PWZgjoW5n9fEkmr9LgblEpKp5z6vyN2kGdvk\",\n                \"line_num\": 64,\n                \"path\": \"./tests/samples/pem_key\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"ZIgdqdWv+SLPoZX7+2X/3DptmnL4PWZgjoW5n9fEkmr9LgblEpKp5z6vyN2kGdvk\",\n                \"value_start\": 5,\n                \"value_end\": 69,\n                \"entropy\": 5.09314\n            },\n            {\n                \"line\": \"  *  n57vMlC96VDbJkJ4ZwLx+XCdbSArsmOJ9QIKaxXSH2lV\",\n                \"line_num\": 65,\n                \"path\": \"./tests/samples/pem_key\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"n57vMlC96VDbJkJ4ZwLx+XCdbSArsmOJ9QIKaxXSH2lV\",\n                \"value_start\": 5,\n                \"value_end\": 49,\n                \"entropy\": 4.98773\n            },\n            {\n                \"line\": \"  *  =JG+I\",\n                \"line_num\": 66,\n                \"path\": \"./tests/samples/pem_key\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"=JG+I\",\n                \"value_start\": 5,\n                \"value_end\": 10,\n                \"entropy\": 2.32193\n            },\n            {\n                \"line\": \"  *  -----END PGP PRIVATE KEY BLOCK-----\",\n                \"line_num\": 67,\n                \"path\": \"./tests/samples/pem_key\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"-----END PGP PRIVATE KEY BLOCK-----\",\n                \"value_start\": 5,\n                \"value_end\": 40,\n                \"entropy\": 3.62274\n            }\n        ]\n    },\n    {\n        \"rule\": \"PEM Private Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"k = \\\"\\\\\\\"-----BEGIN PRIVATE KEY-----\\\\\\\\n\\\"\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/pem_key.p.code\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"-----BEGIN PRIVATE KEY-----\",\n                \"value_start\": 7,\n                \"value_end\": 34,\n                \"entropy\": 3.20029\n            },\n            {\n                \"line\": \" +   \\\"MIIBVAIBADANBgkqhkiG9w0BAQEFAASCAT4wggE6AgEAAkEAxAIxg6QtxmnJ0Bsj\\\\\\\\n\\\"\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/pem_key.p.code\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"MIIBVAIBADANBgkqhkiG9w0BAQEFAASCAT4wggE6AgEAAkEAxAIxg6QtxmnJ0Bsj\",\n                \"value_start\": 6,\n                \"value_end\": 70,\n                \"entropy\": 4.44143\n            },\n            {\n                \"line\": \" +   \\\"VRsEhjLB9lSY9CaFvvEbXK9eBezqR6x6epxm4w/bx1xAK1O9m4iyEN72+jhpZHZs\\\\\\\\n\\\"\",\n                \"line_num\": 3,\n                \"path\": \"./tests/samples/pem_key.p.code\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"VRsEhjLB9lSY9CaFvvEbXK9eBezqR6x6epxm4w/bx1xAK1O9m4iyEN72+jhpZHZs\",\n                \"value_start\": 6,\n                \"value_end\": 70,\n                \"entropy\": 5.16391\n            },\n            {\n                \"line\": \" +   \\\"6RZsxQIDAQABAkBbzksyxWtLS7Fi79MUwZrU4GFI50bc1E5AqN2QA/OeAg+tdgRC\\\\\\\\n\\\"\",\n                \"line_num\": 4,\n                \"path\": \"./tests/samples/pem_key.p.code\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"6RZsxQIDAQABAkBbzksyxWtLS7Fi79MUwZrU4GFI50bc1E5AqN2QA/OeAg+tdgRC\",\n                \"value_start\": 6,\n                \"value_end\": 70,\n                \"entropy\": 5.24586\n            },\n            {\n                \"line\": \" +   \\\"eTVV2eZEM750xZUCoqDwLsLeYrGFR7zy0VkBAiEA5ljPCFu3UIVOgZXhSr342mTX\\\\\\\\n\\\"\",\n                \"line_num\": 5,\n                \"path\": \"./tests/samples/pem_key.p.code\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"eTVV2eZEM750xZUCoqDwLsLeYrGFR7zy0VkBAiEA5ljPCFu3UIVOgZXhSr342mTX\",\n                \"value_start\": 6,\n                \"value_end\": 70,\n                \"entropy\": 5.28891\n            },\n            {\n                \"line\": \" +   \\\"vC9/t9XrGuHCQU8oOW0CIQDZ1mYBOniJmPD0h5j1wadmLkmmZRPUNyMTEHiBUEmB\\\\\\\\n\\\"\",\n                \"line_num\": 6,\n                \"path\": \"./tests/samples/pem_key.p.code\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"vC9/t9XrGuHCQU8oOW0CIQDZ1mYBOniJmPD0h5j1wadmLkmmZRPUNyMTEHiBUEmB\",\n                \"value_start\": 6,\n                \"value_end\": 70,\n                \"entropy\": 5.19102\n            },\n            {\n                \"line\": \" +   \\\"uQIgSpG1dB882PRO1eSPaoLVbN34eRNnZTv7QFiVak8V1oECIGk3tKdtPaGAnQoP\\\\\\\\n\\\"\",\n                \"line_num\": 7,\n                \"path\": \"./tests/samples/pem_key.p.code\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"uQIgSpG1dB882PRO1eSPaoLVbN34eRNnZTv7QFiVak8V1oECIGk3tKdtPaGAnQoP\",\n                \"value_start\": 6,\n                \"value_end\": 70,\n                \"entropy\": 5.04243\n            },\n            {\n                \"line\": \" +   \\\"oOM7eYbSXsKfWdeMFkX0E7CqPgcJAiEAlydP8ln92gy4LefZuIJn1/M5PEeRFKrq\\\\\\\\n\\\"\",\n                \"line_num\": 8,\n                \"path\": \"./tests/samples/pem_key.p.code\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"oOM7eYbSXsKfWdeMFkX0E7CqPgcJAiEAlydP8ln92gy4LefZuIJn1/M5PEeRFKrq\",\n                \"value_start\": 6,\n                \"value_end\": 70,\n                \"entropy\": 5.24586\n            },\n            {\n                \"line\": \" +   \\\"aAjRMKT7uCM=\\\\\\\\n\\\"\",\n                \"line_num\": 9,\n                \"path\": \"./tests/samples/pem_key.p.code\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"aAjRMKT7uCM=\",\n                \"value_start\": 6,\n                \"value_end\": 18,\n                \"entropy\": 3.4183\n            },\n            {\n                \"line\": \" +   \\\"-----END RSA PRIVATE KEY-----\\\\\\\"\\\";\",\n                \"line_num\": 10,\n                \"path\": \"./tests/samples/pem_key.p.code\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"-----END RSA PRIVATE KEY-----\",\n                \"value_start\": 6,\n                \"value_end\": 35,\n                \"entropy\": 3.24663\n            }\n        ]\n    },\n    {\n        \"rule\": \"PEM Private Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"#6 0.245 -----BEGIN PRIVATE KEY-----\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"-----BEGIN PRIVATE KEY-----\",\n                \"value_start\": 9,\n                \"value_end\": 36,\n                \"entropy\": 3.20029\n            },\n            {\n                \"line\": \"#6 0.245 MIITXgIBADALBglghkgBZQMEAxMEghNKMIITRgQgD1HmdulwXADuIR7CZpjn+kQ0\",\n                \"line_num\": 3,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"MIITXgIBADALBglghkgBZQMEAxMEghNKMIITRgQgD1HmdulwXADuIR7CZpjn+kQ0\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 4.69647\n            },\n            {\n                \"line\": \"#6 0.245 YQQLBsEKL+QJ4mm5BhsEghMg0QKJZBJu8a93tNmECcVyVI3601WKlimBrior84u+\",\n                \"line_num\": 4,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"YQQLBsEKL+QJ4mm5BhsEghMg0QKJZBJu8a93tNmECcVyVI3601WKlimBrior84u+\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 4.99586\n            },\n            {\n                \"line\": \"#6 0.245 9hLuy5J9PtjU05AGBBMW2LmlLopK1mROkYdqKofmVjQ625mx0+VmcrlcPBwO2Ows\",\n                \"line_num\": 5,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"9hLuy5J9PtjU05AGBBMW2LmlLopK1mROkYdqKofmVjQ625mx0+VmcrlcPBwO2Ows\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.13462\n            },\n            {\n                \"line\": \"#6 0.245 P0F354UFIsuK8u9gKDv1QUuJBcub6W/4aPBBmCSlKK6t4X6ODXmTZm0q4krMQsAk\",\n                \"line_num\": 6,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"P0F354UFIsuK8u9gKDv1QUuJBcub6W/4aPBBmCSlKK6t4X6ODXmTZm0q4krMQsAk\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.12086\n            },\n            {\n                \"line\": \"#6 0.245 doxhFgUQJS6SAAGTwoDjEIAckTAao1AQsQkUBA3SOEzQwDGTyJCQFI0IkRARl4kS\",\n                \"line_num\": 7,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"doxhFgUQJS6SAAGTwoDjEIAckTAao1AQsQkUBA3SOEzQwDGTyJCQFI0IkRARl4kS\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 4.78866\n            },\n            {\n                \"line\": \"#6 0.245 BInUAmzcgGHjBE3MmEXTQAFjiCnIFgAApYSToJAMFYASoBHaIHEUJy2KGIbSAhIB\",\n                \"line_num\": 8,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"BInUAmzcgGHjBE3MmEXTQAFjiCnIFgAApYSToJAMFYASoBHaIHEUJy2KGIbSAhIB\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 4.74561\n            },\n            {\n                \"line\": \"#6 0.245 QRKCGIUgkWkhMI4JIZHRhGWBllELxIxhkCRJwinIFGIMqTHJRm6jEoBJAI0SBQVD\",\n                \"line_num\": 9,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"QRKCGIUgkWkhMI4JIZHRhGWBllELxIxhkCRJwinIFGIMqTHJRm6jEoBJAI0SBQVD\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 4.89577\n            },\n            {\n                \"line\": \"#6 0.245 qBAgEQERJoVIgE0Ct42IMEJIMoxJAggSQwYhsiXjmEkMR3HZNAXRFiqjFgAkwUgE\",\n                \"line_num\": 10,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"qBAgEQERJoVIgE0Ct42IMEJIMoxJAggSQwYhsiXjmEkMR3HZNAXRFiqjFgAkwUgE\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 4.81189\n            },\n            {\n                \"line\": \"#6 0.245 A4YTFQ1aFgrYNo7TGApJBkTggC0kR0wDAJKUGDBBNoqjAAkTKWEBto0AAIYERWxE\",\n                \"line_num\": 11,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"A4YTFQ1aFgrYNo7TGApJBkTggC0kR0wDAJKUGDBBNoqjAAkTKWEBto0AAIYERWxE\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 4.74717\n            },\n            {\n                \"line\": \"#6 0.245 xEwiqYgUxxGAKICTkEQIwRDDFmgQhEGbEgySGDASuUhbIkWJtCAKgGGhBoXDImGY\",\n                \"line_num\": 12,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"xEwiqYgUxxGAKICTkEQIwRDDFmgQhEGbEgySGDASuUhbIkWJtCAKgGGhBoXDImGY\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 4.72227\n            },\n            {\n                \"line\": \"#6 0.245 JEULtzEQMCIhKY0jwGThQIwBQY6QhpDDGAwUQCHUJpDhAiwiIZJTME6kFipBGA3R\",\n                \"line_num\": 13,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"JEULtzEQMCIhKY0jwGThQIwBQY6QhpDDGAwUQCHUJpDhAiwiIZJTME6kFipBGA3R\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 4.71244\n            },\n            {\n                \"line\": \"#6 0.245 qCzDQDKiAiUDBDEZuGXhAnASMDCMNpAEsWChJBATpUFUMilgyIlgyEwYJoUZGVGY\",\n                \"line_num\": 14,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"qCzDQDKiAiUDBDEZuGXhAnASMDCMNpAEsWChJBATpUFUMilgyIlgyEwYJoUZGVGY\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 4.85947\n            },\n            {\n                \"line\": \"#6 0.245 ogjZhJHTECwUFgUjQCkBRgbMEI4blUSEyAHklAXklgUYw0xaSDIJIkGDFiJRkkiK\",\n                \"line_num\": 15,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"ogjZhJHTECwUFgUjQCkBRgbMEI4blUSEyAHklAXklgUYw0xaSDIJIkGDFiJRkkiK\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 4.86673\n            },\n            {\n                \"line\": \"#6 0.245 gCDTQITBBBGRsmGcBJIYBXIQp4yDtA3QmE3UJI0QgCVawCwLBRCKNDAcMoIDAxII\",\n                \"line_num\": 16,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"gCDTQITBBBGRsmGcBJIYBXIQp4yDtA3QmE3UJI0QgCVawCwLBRCKNDAcMoIDAxII\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 4.72006\n            },\n            {\n                \"line\": \"#6 0.245 RmJCsmCaAojIQg0MtQzDmEQZgYESQSQZpY0kqUDgOEoQgoRCREyMJE0YJkojyCgg\",\n                \"line_num\": 17,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"RmJCsmCaAojIQg0MtQzDmEQZgYESQSQZpY0kqUDgOEoQgoRCREyMJE0YJkojyCgg\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 4.49369\n            },\n            {\n                \"line\": \"#6 0.245 EQ5cGA4hNI0TBoKbIkiQOCyMAjIhl1DgKAlbwnCYKAzKQECCGHDiBJBJNBEiE4Ia\",\n                \"line_num\": 18,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"EQ5cGA4hNI0TBoKbIkiQOCyMAjIhl1DgKAlbwnCYKAzKQECCGHDiBJBJNBEiE4Ia\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 4.85141\n            },\n            {\n                \"line\": \"#6 0.245 xo0CIoRcNiUapW1UmGHLREVihg0ZRiYUxwzEwEHToCQDMIiSAFGaQAhSNIpaIo3g\",\n                \"line_num\": 19,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"xo0CIoRcNiUapW1UmGHLREVihg0ZRiYUxwzEwEHToCQDMIiSAFGaQAhSNIpaIo3g\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 4.92157\n            },\n            {\n                \"line\": \"#6 0.245 kgCjgoDAEEXKOGYYmGhaNArJGEQiCASkliCaIoohtAlRQhJIBE6EICFREm4DAnEK\",\n                \"line_num\": 20,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"kgCjgoDAEEXKOGYYmGhaNArJGEQiCASkliCaIoohtAlRQhJIBE6EICFREm4DAnEK\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 4.71436\n            },\n            {\n                \"line\": \"#6 0.245 pihYGGLKmIxiRC4DOEwaEwICwQxbEgAiBwILEWKKCE1aiAzYOI0joyGCxoAEBG3h\",\n                \"line_num\": 21,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"pihYGGLKmIxiRC4DOEwaEwICwQxbEgAiBwILEWKKCE1aiAzYOI0joyGCxoAEBG3h\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 4.69102\n            },\n            {\n                \"line\": \"#6 0.245 towIwBDkRFJaKI4CQEEKQ3ASuEEKQ24JOI4DIQYckyjJQDGRQIQKISUMImyQoGkA\",\n                \"line_num\": 22,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"towIwBDkRFJaKI4CQEEKQ3ASuEEKQ24JOI4DIQYckyjJQDGRQIQKISUMImyQoGkA\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 4.55202\n            },\n            {\n                \"line\": \"#6 0.245 NjEgRFLgFIKRQHEEJpAcCAIIhISbxgwLQU3koAxBIgoTFomElASihhBhME4jhiQA\",\n                \"line_num\": 23,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"NjEgRFLgFIKRQHEEJpAcCAIIhISbxgwLQU3koAxBIgoTFomElASihhBhME4jhiQA\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 4.70776\n            },\n            {\n                \"line\": \"#6 0.245 BgCSAkUioBHhKE2IkGUCkhBDEALcQJEYowwbF2lKCIETEUqSBFEKQGnBtpCYQoBU\",\n                \"line_num\": 24,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"BgCSAkUioBHhKE2IkGUCkhBDEALcQJEYowwbF2lKCIETEUqSBFEKQGnBtpCYQoBU\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 4.68689\n            },\n            {\n                \"line\": \"#6 0.245 tHFbJHEaiYxKAmEaB21buAgKNiFBpkUbMjIJsYCEhEVBIBHZMiAaRg0hCVAjMxDE\",\n                \"line_num\": 25,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"tHFbJHEaiYxKAmEaB21buAgKNiFBpkUbMjIJsYCEhEVBIBHZMiAaRg0hCVAjMxDE\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 4.85337\n            },\n            {\n                \"line\": \"#6 0.245 mADZMHAIEw4QoFFgKFIgMikiMmUJgZGLwmEBsQUihmBbJhIEMGYSN4iSRkDbECba\",\n                \"line_num\": 26,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"mADZMHAIEw4QoFFgKFIgMikiMmUJgZGLwmEBsQUihmBbJhIEMGYSN4iSRkDbECba\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 4.79657\n            },\n            {\n                \"line\": \"#6 0.245 BmghyVBJiGTjwClJRJIMyWUAQgWAIAmDEHCKwoiBEEJKEBFiMiXcRIGZwCCLwA1U\",\n                \"line_num\": 27,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"BmghyVBJiGTjwClJRJIMyWUAQgWAIAmDEHCKwoiBEEJKEBFiMiXcRIGZwCCLwA1U\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 4.76945\n            },\n            {\n                \"line\": \"#6 0.245 EDACECUiEDLQCEyLImIghxAZSEgks4SUOAULowVbOCCTtETJRHJjhkFEAmoQIEIY\",\n                \"line_num\": 28,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"EDACECUiEDLQCEyLImIghxAZSEgks4SUOAULowVbOCCTtETJRHJjhkFEAmoQIEIY\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 4.70126\n            },\n            {\n                \"line\": \"#6 0.245 GQWUhkEcBioKqJDQhAkjJwYYkw3MoAwZCCEDRGphtnEDkAnSyGSRxkUBQkojJGSI\",\n                \"line_num\": 29,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"GQWUhkEcBioKqJDQhAkjJwYYkw3MoAwZCCEDRGphtnEDkAnSyGSRxkUBQkojJGSI\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 4.74525\n            },\n            {\n                \"line\": \"#6 0.245 sAkYGBDRMmQJIg0bhIhcuCXgiGABCI1RNG4bw4zUKImRMAxSAi0MskRCEG0aA2Qi\",\n                \"line_num\": 30,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"sAkYGBDRMmQJIg0bhIhcuCXgiGABCI1RNG4bw4zUKImRMAxSAi0MskRCEG0aA2Qi\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 4.86517\n            },\n            {\n                \"line\": \"#6 0.245 AoDYpAwUoGgSpYgCQUVbFgGahIkMRBDUBASCoARauIWZKEyYmFHIyEGhRFCYiAzc\",\n                \"line_num\": 31,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"AoDYpAwUoGgSpYgCQUVbFgGahIkMRBDUBASCoARauIWZKEyYmFHIyEGhRFCYiAzc\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 4.84924\n            },\n            {\n                \"line\": \"#6 0.245 EojbGBGTtIwiRWhUsBBABlLCxgkMNooBIzAkEnICGGqLpkjkNFAKmGghCUTgEIJU\",\n                \"line_num\": 32,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"EojbGBGTtIwiRWhUsBBABlLCxgkMNooBIzAkEnICGGqLpkjkNFAKmGghCUTgEIJU\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 4.78518\n            },\n            {\n                \"line\": \"#6 0.245 lEhEgoESMREbkEXYtGELMxASxyQLoJHEiHEImBAEyGHZkiWTJjKgokWhuIghlRAa\",\n                \"line_num\": 33,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"lEhEgoESMREbkEXYtGELMxASxyQLoJHEiHEImBAEyGHZkiWTJjKgokWhuIghlRAa\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 4.73346\n            },\n            {\n                \"line\": \"#6 0.245 xSwckCRCRHARNooERYIiBU1TCAYMBopcNAaIJhHRgA0jgVFiBoaTIjBYBgXkooxZ\",\n                \"line_num\": 34,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"xSwckCRCRHARNooERYIiBU1TCAYMBopcNAaIJhHRgA0jgVFiBoaTIjBYBgXkooxZ\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 4.69143\n            },\n            {\n                \"line\": \"#6 0.245 GJASFABhsEWQGIWkkIHbIAhCwAmUopFjEoTMwECREi3YSBIgKGWcNnABJCCjMo4U\",\n                \"line_num\": 35,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"GJASFABhsEWQGIWkkIHbIAhCwAmUopFjEoTMwECREi3YSBIgKGWcNnABJCCjMo4U\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 4.86517\n            },\n            {\n                \"line\": \"#6 0.245 FyHgloRKOGSUFC0UBmYBSW3SooTSslEjKAHISIbMpDAcJWWLIi2MoHEMB2yQkklI\",\n                \"line_num\": 36,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"FyHgloRKOGSUFC0UBmYBSW3SooTSslEjKAHISIbMpDAcJWWLIi2MoHEMB2yQkklI\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 4.94712\n            },\n            {\n                \"line\": \"#6 0.245 BChIpAeQQHOr3D0Iep/D+4IgaEAVpnwPXeexBdx0o3BUailbyZ/noQlEd13bgvWN\",\n                \"line_num\": 37,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"BChIpAeQQHOr3D0Iep/D+4IgaEAVpnwPXeexBdx0o3BUailbyZ/noQlEd13bgvWN\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.09727\n            },\n            {\n                \"line\": \"#6 0.245 NSFX9xz99vb3aSIaargvQ4Hq4bUvZ/y/qgXCAgs2PcNXqDAHd1EPWV5TIs4l3Qug\",\n                \"line_num\": 38,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"NSFX9xz99vb3aSIaargvQ4Hq4bUvZ/y/qgXCAgs2PcNXqDAHd1EPWV5TIs4l3Qug\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.08548\n            },\n            {\n                \"line\": \"#6 0.245 TTdPyoEV7/+hokQ6ucVaSk7qiV0r/7DI2Kth2TlKbmiXRl9Lx/EshuhoiqWCxCjh\",\n                \"line_num\": 39,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"TTdPyoEV7/+hokQ6ucVaSk7qiV0r/7DI2Kth2TlKbmiXRl9Lx/EshuhoiqWCxCjh\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.09158\n            },\n            {\n                \"line\": \"#6 0.245 na22XUltZ62l2/8f+Bi3vIrEz7jrNWRdeVbVykqeHxwsTsc9oWnFpY7F+GATH0RO\",\n                \"line_num\": 40,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"na22XUltZ62l2/8f+Bi3vIrEz7jrNWRdeVbVykqeHxwsTsc9oWnFpY7F+GATH0RO\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.46875\n            },\n            {\n                \"line\": \"#6 0.245 1rD2oX9QyI6wcv4bePHzjtJuTz3V0w/bh4n+xmleu4chQwL2aLwlLa62jcKXgun8\",\n                \"line_num\": 41,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"1rD2oX9QyI6wcv4bePHzjtJuTz3V0w/bh4n+xmleu4chQwL2aLwlLa62jcKXgun8\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.15977\n            },\n            {\n                \"line\": \"#6 0.245 tXVVGteOYcsQVmS/YOMLveYAT8GmwWOd+4h4dCjWZB/6xI6DUv9pCYGbzNdZ5qt/\",\n                \"line_num\": 42,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"tXVVGteOYcsQVmS/YOMLveYAT8GmwWOd+4h4dCjWZB/6xI6DUv9pCYGbzNdZ5qt/\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.17923\n            },\n            {\n                \"line\": \"#6 0.245 x3r5LF4b4teVUFwqvPcGn2+h/MLZ8VcilPb7bfR0pcHaWqynggr6EtnMACOsQrp6\",\n                \"line_num\": 43,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"x3r5LF4b4teVUFwqvPcGn2+h/MLZ8VcilPb7bfR0pcHaWqynggr6EtnMACOsQrp6\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.35907\n            },\n            {\n                \"line\": \"#6 0.245 20lFJR/EHrv7uuXCyEaUVzi3pzq/J1u9EKXsuqtNFZWI0RA7Pdk7Sk/EV9tzeOJu\",\n                \"line_num\": 44,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"20lFJR/EHrv7uuXCyEaUVzi3pzq/J1u9EKXsuqtNFZWI0RA7Pdk7Sk/EV9tzeOJu\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.11517\n            },\n            {\n                \"line\": \"#6 0.245 ES62pC7vlJ1Wo8vpXx1wzEL3pKdnKxNCWfKaTO25qoo4t0+8WkM2w1oKWEAKVFBb\",\n                \"line_num\": 45,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"ES62pC7vlJ1Wo8vpXx1wzEL3pKdnKxNCWfKaTO25qoo4t0+8WkM2w1oKWEAKVFBb\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.11517\n            },\n            {\n                \"line\": \"#6 0.245 5Zus63oUSjTaLGPXdoE/wk5P6mW3BmwmFfKeHZuUNnBwlhIcrlnyFc7UklmNsUm9\",\n                \"line_num\": 46,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"5Zus63oUSjTaLGPXdoE/wk5P6mW3BmwmFfKeHZuUNnBwlhIcrlnyFc7UklmNsUm9\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.10751\n            },\n            {\n                \"line\": \"#6 0.245 WPDIyiFjey7GcRbVAXnl5JftLLPun9/Sl6WPoP9bsDpdTkKZFD3Jy0MAnA6gwi6G\",\n                \"line_num\": 47,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"WPDIyiFjey7GcRbVAXnl5JftLLPun9/Sl6WPoP9bsDpdTkKZFD3Jy0MAnA6gwi6G\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.22227\n            },\n            {\n                \"line\": \"#6 0.245 A1Un/skxl2PDwdSYu/Yqk2F7BSz5x/D9QUTnkXm/W0uG3wmFVMI08OYwtCB1xXW8\",\n                \"line_num\": 48,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"A1Un/skxl2PDwdSYu/Yqk2F7BSz5x/D9QUTnkXm/W0uG3wmFVMI08OYwtCB1xXW8\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.14032\n            },\n            {\n                \"line\": \"#6 0.245 kQbalUGvAscvoaXkkD2JjjZrxAOnkZxJqwzP84Sa33HEYMVPEtvucp2gd6du2weG\",\n                \"line_num\": 49,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"kQbalUGvAscvoaXkkD2JjjZrxAOnkZxJqwzP84Sa33HEYMVPEtvucp2gd6du2weG\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.24586\n            },\n            {\n                \"line\": \"#6 0.245 v8X1Qy6SePZ/L2pIQHHG0t5aO5fBmUc1UJh9BmG15oE0rzqEiopaCDbFkEguFjhs\",\n                \"line_num\": 50,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"v8X1Qy6SePZ/L2pIQHHG0t5aO5fBmUc1UJh9BmG15oE0rzqEiopaCDbFkEguFjhs\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.40211\n            },\n            {\n                \"line\": \"#6 0.245 2BI6NiY798TaKwkaWFy8irSLb3CvU8IrAm3VM9Lcp1vhwsnyGvMq78fC+SjxKcWQ\",\n                \"line_num\": 51,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"2BI6NiY798TaKwkaWFy8irSLb3CvU8IrAm3VM9Lcp1vhwsnyGvMq78fC+SjxKcWQ\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.3007\n            },\n            {\n                \"line\": \"#6 0.245 QwCdrsgLZerfct0uWaaA/1yVRH0g8ceBIuoj2Kkv9E6xTKeAwsMi9vhwqgkjsSG/\",\n                \"line_num\": 52,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"QwCdrsgLZerfct0uWaaA/1yVRH0g8ceBIuoj2Kkv9E6xTKeAwsMi9vhwqgkjsSG/\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.32782\n            },\n            {\n                \"line\": \"#6 0.245 Ts54V2KurNiPKb5WSwteBOD7TvkdwMfmK7jYMWH1oc98V70YxPgnkURW2IXs8H23\",\n                \"line_num\": 53,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"Ts54V2KurNiPKb5WSwteBOD7TvkdwMfmK7jYMWH1oc98V70YxPgnkURW2IXs8H23\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.35907\n            },\n            {\n                \"line\": \"#6 0.245 5EQsx7aiwzXBB5F5xIy3yNJIpFUGQGU1oy2L8FQhuKdyMjXEAEiuJtzdyTtgnoJR\",\n                \"line_num\": 54,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"5EQsx7aiwzXBB5F5xIy3yNJIpFUGQGU1oy2L8FQhuKdyMjXEAEiuJtzdyTtgnoJR\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.07212\n            },\n            {\n                \"line\": \"#6 0.245 7N0evDEzqUuUVvtXb32GoTuLzlPM32+cBbDr80mIphfmyr/RQLlZIxgv6LsV4pgU\",\n                \"line_num\": 55,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"7N0evDEzqUuUVvtXb32GoTuLzlPM32+cBbDr80mIphfmyr/RQLlZIxgv6LsV4pgU\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.33961\n            },\n            {\n                \"line\": \"#6 0.245 VTS/P3VLXRX6oclTn7UZ1+5L4dosP2pjoAmSEeQe9DiDDKb9DRcYRP09ePylma2i\",\n                \"line_num\": 56,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"VTS/P3VLXRX6oclTn7UZ1+5L4dosP2pjoAmSEeQe9DiDDKb9DRcYRP09ePylma2i\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.14032\n            },\n            {\n                \"line\": \"#6 0.245 2BD0oJ81P4A/tl9ojqyz4dSJuIo2deDaQs8cme0lNxAR0uO8FbiHnnkXFalberVl\",\n                \"line_num\": 57,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"2BD0oJ81P4A/tl9ojqyz4dSJuIo2deDaQs8cme0lNxAR0uO8FbiHnnkXFalberVl\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.23407\n            },\n            {\n                \"line\": \"#6 0.245 V1ZSX4aPC9DBvrxYL1hh51umejg5GoIOWVLZtAVThRVyhUEg1krkM0zNGGjT0o4E\",\n                \"line_num\": 58,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"V1ZSX4aPC9DBvrxYL1hh51umejg5GoIOWVLZtAVThRVyhUEg1krkM0zNGGjT0o4E\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.1757\n            },\n            {\n                \"line\": \"#6 0.245 R42sWTjNMxSB99ZQbpuySMtisaB2WPcdTdIWwnBytzy/XGezCicBJHMMCA36m4K/\",\n                \"line_num\": 59,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"R42sWTjNMxSB99ZQbpuySMtisaB2WPcdTdIWwnBytzy/XGezCicBJHMMCA36m4K/\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.19516\n            },\n            {\n                \"line\": \"#6 0.245 rkFyjWHI73ahgE3nsfg3zQui9bZMCThlRV07cFbsh4Vrz8V84kWceTIBTB/NMGIH\",\n                \"line_num\": 60,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"rkFyjWHI73ahgE3nsfg3zQui9bZMCThlRV07cFbsh4Vrz8V84kWceTIBTB/NMGIH\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.15977\n            },\n            {\n                \"line\": \"#6 0.245 N7gW2wDhlzJFmM1DI6fc/Yv1/zFEqW+GwAEmlCdBYd0KK2Uw+DjvuTpoUAj0N5EA\",\n                \"line_num\": 61,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"N7gW2wDhlzJFmM1DI6fc/Yv1/zFEqW+GwAEmlCdBYd0KK2Uw+DjvuTpoUAj0N5EA\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.17157\n            },\n            {\n                \"line\": \"#6 0.245 eKwQvUVLxerWkelYq7XTtuj+cf/ni9cwUUCaO8CZ3qfO6qlESAASZ3Zs8dLj2ScI\",\n                \"line_num\": 62,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"eKwQvUVLxerWkelYq7XTtuj+cf/ni9cwUUCaO8CZ3qfO6qlESAASZ3Zs8dLj2ScI\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.24173\n            },\n            {\n                \"line\": \"#6 0.245 7F4zmeFxp+adjBRR2vj0iTdckA5tSmEOANrJ7Ncq0JGZBuwKyAkUneJ+VPxGavrX\",\n                \"line_num\": 63,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"7F4zmeFxp+adjBRR2vj0iTdckA5tSmEOANrJ7Ncq0JGZBuwKyAkUneJ+VPxGavrX\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.28891\n            },\n            {\n                \"line\": \"#6 0.245 WvV5rQ7BNgz7+ZAKGjvq78AyQZVS9MEpxe6qKy7OMclg75op8zCJ54IzpGkfcPWa\",\n                \"line_num\": 64,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"WvV5rQ7BNgz7+ZAKGjvq78AyQZVS9MEpxe6qKy7OMclg75op8zCJ54IzpGkfcPWa\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.15821\n            },\n            {\n                \"line\": \"#6 0.245 NhOa5n1kEdNm2a5u6tzdxJVvpFEQDkta6OpfSX76YeNLpy7bSdBdBWmNzWkuDMFK\",\n                \"line_num\": 65,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"NhOa5n1kEdNm2a5u6tzdxJVvpFEQDkta6OpfSX76YeNLpy7bSdBdBWmNzWkuDMFK\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.04657\n            },\n            {\n                \"line\": \"#6 0.245 z2ZRcjbQFJ657Y7MWy7/4kzBPBG/OcNAi/9h1y+Sm84LZhLkH59okLFuklK5F/e4\",\n                \"line_num\": 66,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"z2ZRcjbQFJ657Y7MWy7/4kzBPBG/OcNAi/9h1y+Sm84LZhLkH59okLFuklK5F/e4\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.15977\n            },\n            {\n                \"line\": \"#6 0.245 QmGx1sx+wlPtQ3q1f9tFYFMAwpIWsCGFd3DDKyA5QTBSc2wfcyBgIcZotBV0Ic2H\",\n                \"line_num\": 67,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"QmGx1sx+wlPtQ3q1f9tFYFMAwpIWsCGFd3DDKyA5QTBSc2wfcyBgIcZotBV0Ic2H\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.11673\n            },\n            {\n                \"line\": \"#6 0.245 /Xa/US2QGYlpDtm/RDaq/kqlbMPZhBLE+M2W/dGYSuyPoL0GPC0bML0LLlavP5xB\",\n                \"line_num\": 68,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"/Xa/US2QGYlpDtm/RDaq/kqlbMPZhBLE+M2W/dGYSuyPoL0GPC0bML0LLlavP5xB\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 4.92197\n            },\n            {\n                \"line\": \"#6 0.245 4EuYIB54jmYwLcO7ZK8wpQhR6kk/gAwLnIDApOH5iiv+1sb0IJpjZmFmZUdUllpb\",\n                \"line_num\": 69,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"4EuYIB54jmYwLcO7ZK8wpQhR6kk/gAwLnIDApOH5iiv+1sb0IJpjZmFmZUdUllpb\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.20282\n            },\n            {\n                \"line\": \"#6 0.245 PppwUoy0NzBPjq/PksCd6fVWkmDpIuI+SLJyNhRNKEOTMTrVYuPSUvnFf9NaHkUi\",\n                \"line_num\": 70,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"PppwUoy0NzBPjq/PksCd6fVWkmDpIuI+SLJyNhRNKEOTMTrVYuPSUvnFf9NaHkUi\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.30836\n            },\n            {\n                \"line\": \"#6 0.245 ifzK2eAEfx2UBE7o+YQR+QC6/pJQIMX7FXQjx78cVTKlybuJkpDggsUJ25SszaMk\",\n                \"line_num\": 71,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"ifzK2eAEfx2UBE7o+YQR+QC6/pJQIMX7FXQjx78cVTKlybuJkpDggsUJ25SszaMk\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.24586\n            },\n            {\n                \"line\": \"#6 0.245 KA0xTnsP5gx8lUGmyWMuJ5JgDWUP1jOHdadTmX/xtEy5Wqw/DQKn2bG2NnpQrbIJ\",\n                \"line_num\": 72,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"KA0xTnsP5gx8lUGmyWMuJ5JgDWUP1jOHdadTmX/xtEy5Wqw/DQKn2bG2NnpQrbIJ\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.19102\n            },\n            {\n                \"line\": \"#6 0.245 EcXsCgMeziOzNqqJk9QrnAAu/eB1XdnhbC3UJ/caEI7gofJxMYiO20/OHtnkLhgf\",\n                \"line_num\": 73,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"EcXsCgMeziOzNqqJk9QrnAAu/eB1XdnhbC3UJ/caEI7gofJxMYiO20/OHtnkLhgf\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.22227\n            },\n            {\n                \"line\": \"#6 0.245 82N3qrG5oZP8oQVmgO4Ww58rWn2U5f9F+tFjrSjj8OR1NkY39x/kgRXg538T0TEL\",\n                \"line_num\": 74,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"82N3qrG5oZP8oQVmgO4Ww58rWn2U5f9F+tFjrSjj8OR1NkY39x/kgRXg538T0TEL\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.08392\n            },\n            {\n                \"line\": \"#6 0.245 JmFGqBYBW5YkhS4E6cQ+s8Me76ZYMcIEyrb7vGpQ6sATjVuendOfq/nG/E1vVoQ8\",\n                \"line_num\": 75,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"JmFGqBYBW5YkhS4E6cQ+s8Me76ZYMcIEyrb7vGpQ6sATjVuendOfq/nG/E1vVoQ8\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.25352\n            },\n            {\n                \"line\": \"#6 0.245 xSd1FGfwoVOhRp3I2ygdcz4l1RQzqunVff1A8ejjoMJ4+N/JUaL3rDF6KDPLuG1n\",\n                \"line_num\": 76,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"xSd1FGfwoVOhRp3I2ygdcz4l1RQzqunVff1A8ejjoMJ4+N/JUaL3rDF6KDPLuG1n\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.33195\n            },\n            {\n                \"line\": \"#6 0.245 aHkGr75LFfgMPc1oAqtMk5qdEfNqYBsbaPhu7GV9ewft3R8E5VJdTVu6ksE7+1HZ\",\n                \"line_num\": 77,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"aHkGr75LFfgMPc1oAqtMk5qdEfNqYBsbaPhu7GV9ewft3R8E5VJdTVu6ksE7+1HZ\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.16743\n            },\n            {\n                \"line\": \"#6 0.245 XnH5jM4u1p9NF4iQmQhQI8fOX6wqBDWcekGs+baJcxA+5zkYgffkUX+MRjMAHUAW\",\n                \"line_num\": 78,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"XnH5jM4u1p9NF4iQmQhQI8fOX6wqBDWcekGs+baJcxA+5zkYgffkUX+MRjMAHUAW\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.26118\n            },\n            {\n                \"line\": \"#6 0.245 hL1S3jeUuoh8YWqWkyCS/NDmEV0oFNey0hU/36YktwDByEMa6zAxDnQoRpq6dikI\",\n                \"line_num\": 79,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"hL1S3jeUuoh8YWqWkyCS/NDmEV0oFNey0hU/36YktwDByEMa6zAxDnQoRpq6dikI\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.21048\n            },\n            {\n                \"line\": \"#6 0.245 S//brXmHlWb++g5HLAPTV94FLiWnEEW7Ozn0HD6R5psyW0Csx2vt95FF3cmFziHd\",\n                \"line_num\": 80,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"S//brXmHlWb++g5HLAPTV94FLiWnEEW7Ozn0HD6R5psyW0Csx2vt95FF3cmFziHd\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.1757\n            },\n            {\n                \"line\": \"#6 0.245 M7nqiDw5byw8wT/6cZmU5TJqSz3fKFOt13VXuG80yEtaDr68gDjxas2Tb/wTE0ZN\",\n                \"line_num\": 81,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"M7nqiDw5byw8wT/6cZmU5TJqSz3fKFOt13VXuG80yEtaDr68gDjxas2Tb/wTE0ZN\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.22641\n            },\n            {\n                \"line\": \"#6 0.245 Y+4MmRj78Ffh74q87fX6FMQO1/HEKh7ltXGGNF5WlzEG8vVKHqbn487lBELkl00n\",\n                \"line_num\": 82,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"Y+4MmRj78Ffh74q87fX6FMQO1/HEKh7ltXGGNF5WlzEG8vVKHqbn487lBELkl00n\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 4.99017\n            },\n            {\n                \"line\": \"#6 0.245 uP16MZvPDTHzhQ4l/fKuBW7MpuczsUpdHgSwLIeJS5354WhLYONRRz8yXqo/mfNd\",\n                \"line_num\": 83,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"uP16MZvPDTHzhQ4l/fKuBW7MpuczsUpdHgSwLIeJS5354WhLYONRRz8yXqo/mfNd\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.38266\n            },\n            {\n                \"line\": \"#6 0.245 stWBI1ChlRmYkLyTri6kvajsDMPuGtDp/30UEi0zjVhwvJ9IcxrxArDOvlomTPsi\",\n                \"line_num\": 84,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"stWBI1ChlRmYkLyTri6kvajsDMPuGtDp/30UEi0zjVhwvJ9IcxrxArDOvlomTPsi\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.28477\n            },\n            {\n                \"line\": \"#6 0.245 YBJrUWXblmmC9bR14vf3CWR+PK7q8BIjL1D6P//IAtU+ub3UvbCS8EbNyJAbVuns\",\n                \"line_num\": 85,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"YBJrUWXblmmC9bR14vf3CWR+PK7q8BIjL1D6P//IAtU+ub3UvbCS8EbNyJAbVuns\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.14032\n            },\n            {\n                \"line\": \"#6 0.245 H8uWrQFtodTx7wQi5zaP97sP33deMtlEP1j0EQdwbrK1y/u1Fjk5V9lZmlWyDjMr\",\n                \"line_num\": 86,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"H8uWrQFtodTx7wQi5zaP97sP33deMtlEP1j0EQdwbrK1y/u1Fjk5V9lZmlWyDjMr\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.10493\n            },\n            {\n                \"line\": \"#6 0.245 zIr286q6AWWttxwb3p5SY7A14GLh0rCsiCwP+almEouRr8UzdczrotBq4vh9NtWb\",\n                \"line_num\": 87,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"zIr286q6AWWttxwb3p5SY7A14GLh0rCsiCwP+almEouRr8UzdczrotBq4vh9NtWb\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.28891\n            },\n            {\n                \"line\": \"#6 0.245 Dmu72duyz/6gP6tuwdDV7SnOS6ep1m/CnkxfB0eggCvHrIqwletSbpUAl2ddk578\",\n                \"line_num\": 88,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"Dmu72duyz/6gP6tuwdDV7SnOS6ep1m/CnkxfB0eggCvHrIqwletSbpUAl2ddk578\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.08548\n            },\n            {\n                \"line\": \"#6 0.245 YdwaNjMhKHGNHJetGZqIn2sJVxcbN2rBIBzgRoHGe+NTq82HD/AKv7OKUxOVBZ/T\",\n                \"line_num\": 89,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"YdwaNjMhKHGNHJetGZqIn2sJVxcbN2rBIBzgRoHGe+NTq82HD/AKv7OKUxOVBZ/T\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.14032\n            },\n            {\n                \"line\": \"#6 0.245 j8lwHWTgMP25Qt/7e2L916+HUfLVKj9YpOeEb1P81rRC7l9zRimlv1RYy4MsGdLj\",\n                \"line_num\": 90,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"j8lwHWTgMP25Qt/7e2L916+HUfLVKj9YpOeEb1P81rRC7l9zRimlv1RYy4MsGdLj\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.25352\n            },\n            {\n                \"line\": \"#6 0.245 S3hXz3e4hRXAb23bT06aoU3RhubgZo7trwHy5mzbzAdOGPEXviXw9+ihjY4kWAJU\",\n                \"line_num\": 91,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"S3hXz3e4hRXAb23bT06aoU3RhubgZo7trwHy5mzbzAdOGPEXviXw9+ihjY4kWAJU\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.16391\n            },\n            {\n                \"line\": \"#6 0.245 ADio3z2NMbz5ZYexpy5XyPmgOv0UECTdIjV+MYMFncdpZaO9YP4BG3c8k8z2R5OB\",\n                \"line_num\": 92,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"ADio3z2NMbz5ZYexpy5XyPmgOv0UECTdIjV+MYMFncdpZaO9YP4BG3c8k8z2R5OB\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.31602\n            },\n            {\n                \"line\": \"#6 0.245 YjYDCT0R2kez6mfVL2kp1T5FGuZIIaSSYRz+zxzGTFWHFsJFPutSrGF3oILueAMO\",\n                \"line_num\": 93,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"YjYDCT0R2kez6mfVL2kp1T5FGuZIIaSSYRz+zxzGTFWHFsJFPutSrGF3oILueAMO\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.09158\n            },\n            {\n                \"line\": \"#6 0.245 55mb2P24b44wCoVGNfFVDQOFE2DOOHvkgyvarxraYLmXVHfsZUSFDKLoEajb4bbd\",\n                \"line_num\": 94,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"55mb2P24b44wCoVGNfFVDQOFE2DOOHvkgyvarxraYLmXVHfsZUSFDKLoEajb4bbd\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 4.96658\n            },\n            {\n                \"line\": \"#6 0.245 UcSqmGsFbKmJA7mxRw3uAzgFwN5uneHaAOVcloDrvmfyrEsbtCYe0QbHJanETdPA\",\n                \"line_num\": 95,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"UcSqmGsFbKmJA7mxRw3uAzgFwN5uneHaAOVcloDrvmfyrEsbtCYe0QbHJanETdPA\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.3007\n            },\n            {\n                \"line\": \"#6 0.245 9webIXysF5t9KQRKAH+tKRpTM2XpxkLo5cZVfbnGCIGztuYYtr36I5wFCQBYprMY\",\n                \"line_num\": 96,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"9webIXysF5t9KQRKAH+tKRpTM2XpxkLo5cZVfbnGCIGztuYYtr36I5wFCQBYprMY\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.10907\n            },\n            {\n                \"line\": \"#6 0.245 VCvAGX7LtBkfK+UKp+IN1MIwp3FqXCyY569gWA/lNXkqOxLR2Q2C1zs0G5y9uym4\",\n                \"line_num\": 97,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"VCvAGX7LtBkfK+UKp+IN1MIwp3FqXCyY569gWA/lNXkqOxLR2Q2C1zs0G5y9uym4\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.33961\n            },\n            {\n                \"line\": \"#6 0.245 9EB0jFhFeH9pr2MWlFh+09iy+I2Gx2vqGT5huaPCi3g1sGUEsgXO+0K0FnkltKWL\",\n                \"line_num\": 98,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"9EB0jFhFeH9pr2MWlFh+09iy+I2Gx2vqGT5huaPCi3g1sGUEsgXO+0K0FnkltKWL\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.15977\n            },\n            {\n                \"line\": \"#6 0.245 2/fkKb37wmkLxOm1AGfK8+jzJgROpQp5LweN6c2gBDnJfHIWhk5mE+YhvyxgU6ks\",\n                \"line_num\": 99,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"2/fkKb37wmkLxOm1AGfK8+jzJgROpQp5LweN6c2gBDnJfHIWhk5mE+YhvyxgU6ks\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.27711\n            },\n            {\n                \"line\": \"#6 0.245 RUGiT43/IngQBwjH2IzE1BvaFhaLVnF5dAkjSVJX0NyVLdBLdEyotg8GHO2G0Y/c\",\n                \"line_num\": 100,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"RUGiT43/IngQBwjH2IzE1BvaFhaLVnF5dAkjSVJX0NyVLdBLdEyotg8GHO2G0Y/c\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.25352\n            },\n            {\n                \"line\": \"#6 0.245 JHhz9tMGqN1/18UhsBdrfahJIqeNrIBuxbNk2sXi3/26XXDHe8HzYz9IGzwttclP\",\n                \"line_num\": 101,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"JHhz9tMGqN1/18UhsBdrfahJIqeNrIBuxbNk2sXi3/26XXDHe8HzYz9IGzwttclP\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.05423\n            },\n            {\n                \"line\": \"#6 0.245 l9bwNLKlK6G6ey6CuGc+pk+ab+FTKYzDOYzUNuk9KVjks9abhojhKp+umdcg1ads\",\n                \"line_num\": 102,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"l9bwNLKlK6G6ey6CuGc+pk+ab+FTKYzDOYzUNuk9KVjks9abhojhKp+umdcg1ads\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 4.90408\n            },\n            {\n                \"line\": \"#6 0.245 sFq7BZk0ud5rvSuHXFGaxdhZRkcTgWCfO3RnIb1nnU2s9baNjE6EiQlgXxtsDbco\",\n                \"line_num\": 103,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"sFq7BZk0ud5rvSuHXFGaxdhZRkcTgWCfO3RnIb1nnU2s9baNjE6EiQlgXxtsDbco\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.40211\n            },\n            {\n                \"line\": \"#6 0.245 0sfTmAos3DRhn17vYxvBuIHQdsk9Lg2nRwJhKBhnQccl8k3fYTW8WZbBu9Ism+nS\",\n                \"line_num\": 104,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"0sfTmAos3DRhn17vYxvBuIHQdsk9Lg2nRwJhKBhnQccl8k3fYTW8WZbBu9Ism+nS\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.13266\n            },\n            {\n                \"line\": \"#6 0.245 Bvz56M5Z+5wf6DGFitWOPDcrgXAy/H1G4byIXU06YwWEcGj/Dyte3EOWEeU+68kQ\",\n                \"line_num\": 105,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"Bvz56M5Z+5wf6DGFitWOPDcrgXAy/H1G4byIXU06YwWEcGj/Dyte3EOWEeU+68kQ\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.14798\n            },\n            {\n                \"line\": \"#6 0.245 aANEEoU1dXIzisq6pQ0J8AKS\",\n                \"line_num\": 106,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"aANEEoU1dXIzisq6pQ0J8AKS\",\n                \"value_start\": 9,\n                \"value_end\": 33,\n                \"entropy\": 4.4183\n            },\n            {\n                \"line\": \"#6 0.245 -----END PRIVATE KEY-----\",\n                \"line_num\": 107,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"-----END PRIVATE KEY-----\",\n                \"value_start\": 9,\n                \"value_end\": 34,\n                \"entropy\": 3.04489\n            }\n        ]\n    },\n    {\n        \"rule\": \"PEM Private Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"{\\\"rsa512.log\\\": \\\"\\\\\\\\r\\\\\\\\n#5 [2/4] RUN openssl genrsa -out rsa512.pem 512 && cat rsa512.pem\\\\\\\\r\\\\\\\\n#5 0.228 -----BEGIN PRIVATE KEY-----\\\\\\\\r\\\\\\\\n#5 0.228 MIIBVQIBADANBgkqhkiG9w0BAQEFAASCAT8wggE7AgEAAkEAvKMMVSiEmVawE4EQ\\\\\\\\r\\\\\\\\n#5 0.228 GqXBumHAZco0bRhfhZjmeZ64SmmAM0NpM3j8hwhTyWHRXpW21gv8cumYJqb/ilf7\\\\\\\\r\\\\\\\\n#5 0.228 62oRDQIDAQABAkBYiY64SZQzBGUQQnt0hmgvOsI7BHUm31G2OtWyL7T/90UhnksH\\\\\\\\r\\\\\\\\n#5 0.228 w2YF31p/TJULL44SV3HpxiY+T1vOPl138ulhAiEA9LcC28UMotvF0z/CVofas5Fh\\\\\\\\r\\\\\\\\n#5 0.228 eKZSGLykNZ7FkKd0t+cCIQDFVgG6lreao/UzHcVk75fZG3lG3k0xvqdsZTIMAOjA\\\\\\\\r\\\\\\\\n#5 0.228 6wIgV033ehqJ0IxhvmUP2zkqoEeso5OK1IJwfyS+zUXA0V8CIQCvKySHvAgpRkd/\\\\\\\\r\\\\\\\\n#5 0.228 Y3r4mVICj8e859JASQwXRVECpL/3lwIhANcg6iGD9S4zdbvVxYjJogRVbi7U6YUU\\\\\\\\r\\\\\\\\n#5 0.228 ivYSmyJQhq+V\\\\\\\\r\\\\\\\\n#5 0.228 -----END PRIVATE KEY-----\\\\\\\\r\\\\\\\\n#5 DONE 0.3s\\\\\\\\r\\\\\\\\n\\\"}\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/pem_key.p.docker.log.json\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"-----BEGIN PRIVATE KEY-----\\\\\\\\r\\\\\\\\n#5 0.228 MIIBVQIBADANBgkqhkiG9w0BAQEFAASCAT8wggE7AgEAAkEAvKMMVSiEmVawE4EQ\\\\\\\\r\\\\\\\\n#5 0.228 GqXBumHAZco0bRhfhZjmeZ64SmmAM0NpM3j8hwhTyWHRXpW21gv8cumYJqb/ilf7\\\\\\\\r\\\\\\\\n#5 0.228 62oRDQIDAQABAkBYiY64SZQzBGUQQnt0hmgvOsI7BHUm31G2OtWyL7T/90UhnksH\\\\\\\\r\\\\\\\\n#5 0.228 w2YF31p/TJULL44SV3HpxiY+T1vOPl138ulhAiEA9LcC28UMotvF0z/CVofas5Fh\\\\\\\\r\\\\\\\\n#5 0.228 eKZSGLykNZ7FkKd0t+cCIQDFVgG6lreao/UzHcVk75fZG3lG3k0xvqdsZTIMAOjA\\\\\\\\r\\\\\\\\n#5 0.228 6wIgV033ehqJ0IxhvmUP2zkqoEeso5OK1IJwfyS+zUXA0V8CIQCvKySHvAgpRkd/\\\\\\\\r\\\\\\\\n#5 0.228 Y3r4mVICj8e859JASQwXRVECpL/3lwIhANcg6iGD9S4zdbvVxYjJogRVbi7U6YUU\\\\\\\\r\\\\\\\\n#5 0.228 ivYSmyJQhq+V\\\\\\\\r\\\\\\\\n#5 0.228 -----END PRIVATE KEY-----\",\n                \"value_start\": 102,\n                \"value_end\": 749,\n                \"entropy\": 5.8742\n            }\n        ]\n    },\n    {\n        \"rule\": \"BASE64 Private Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"{\\\"rsa512.log\\\": \\\"\\\\\\\\r\\\\\\\\n#5 [2/4] RUN openssl genrsa -out rsa512.pem 512 && cat rsa512.pem\\\\\\\\r\\\\\\\\n#5 0.228 -----BEGIN PRIVATE KEY-----\\\\\\\\r\\\\\\\\n#5 0.228 MIIBVQIBADANBgkqhkiG9w0BAQEFAASCAT8wggE7AgEAAkEAvKMMVSiEmVawE4EQ\\\\\\\\r\\\\\\\\n#5 0.228 GqXBumHAZco0bRhfhZjmeZ64SmmAM0NpM3j8hwhTyWHRXpW21gv8cumYJqb/ilf7\\\\\\\\r\\\\\\\\n#5 0.228 62oRDQIDAQABAkBYiY64SZQzBGUQQnt0hmgvOsI7BHUm31G2OtWyL7T/90UhnksH\\\\\\\\r\\\\\\\\n#5 0.228 w2YF31p/TJULL44SV3HpxiY+T1vOPl138ulhAiEA9LcC28UMotvF0z/CVofas5Fh\\\\\\\\r\\\\\\\\n#5 0.228 eKZSGLykNZ7FkKd0t+cCIQDFVgG6lreao/UzHcVk75fZG3lG3k0xvqdsZTIMAOjA\\\\\\\\r\\\\\\\\n#5 0.228 6wIgV033ehqJ0IxhvmUP2zkqoEeso5OK1IJwfyS+zUXA0V8CIQCvKySHvAgpRkd/\\\\\\\\r\\\\\\\\n#5 0.228 Y3r4mVICj8e859JASQwXRVECpL/3lwIhANcg6iGD9S4zdbvVxYjJogRVbi7U6YUU\\\\\\\\r\\\\\\\\n#5 0.228 ivYSmyJQhq+V\\\\\\\\r\\\\\\\\n#5 0.228 -----END PRIVATE KEY-----\\\\\\\\r\\\\\\\\n#5 DONE 0.3s\\\\\\\\r\\\\\\\\n\\\"}\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/pem_key.p.docker.log.json\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"MIIBVQIBADANBgkqhkiG9w0BAQEFAASCAT8wggE7AgEAAkEAvKMMVSiEmVawE4EQ\\\\\\\\r\\\\\\\\n\",\n                \"value_start\": 144,\n                \"value_end\": 214,\n                \"entropy\": 4.56642\n            }\n        ]\n    },\n    {\n        \"rule\": \"PEM Private Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"-----BEGIN PRIVATE KEY-----\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/pem_key.p.ec\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"-----BEGIN PRIVATE KEY-----\",\n                \"value_start\": 0,\n                \"value_end\": 27,\n                \"entropy\": 3.20029\n            },\n            {\n                \"line\": \"MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgyK82YrlPyJb7FLsk\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/pem_key.p.ec\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgyK82YrlPyJb7FLsk\",\n                \"value_start\": 0,\n                \"value_end\": 64,\n                \"entropy\": 4.72268\n            },\n            {\n                \"line\": \"1hg6SN+UI2R/QIVPPomtVY0yeH6hRANCAAStXqONgR32XCE3nfIkmYjk28Kn0wsK\",\n                \"line_num\": 3,\n                \"path\": \"./tests/samples/pem_key.p.ec\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"1hg6SN+UI2R/QIVPPomtVY0yeH6hRANCAAStXqONgR32XCE3nfIkmYjk28Kn0wsK\",\n                \"value_start\": 0,\n                \"value_end\": 64,\n                \"entropy\": 5.12852\n            },\n            {\n                \"line\": \"+7OCsLnRoqJfWJAf8MV5nbMDiox7WFgRSOtt+l3u3zjpOznhmQyeN62Y\",\n                \"line_num\": 4,\n                \"path\": \"./tests/samples/pem_key.p.ec\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"+7OCsLnRoqJfWJAf8MV5nbMDiox7WFgRSOtt+l3u3zjpOznhmQyeN62Y\",\n                \"value_start\": 0,\n                \"value_end\": 56,\n                \"entropy\": 5.24468\n            },\n            {\n                \"line\": \"-----END PRIVATE KEY-----\",\n                \"line_num\": 5,\n                \"path\": \"./tests/samples/pem_key.p.ec\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"-----END PRIVATE KEY-----\",\n                \"value_start\": 0,\n                \"value_end\": 25,\n                \"entropy\": 3.04489\n            }\n        ]\n    },\n    {\n        \"rule\": \"Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"const ecdsaPrivateKey = `-----BEGIN EC PRIVATE KEY-----\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/pem_key.p.go\",\n                \"info\": \"\",\n                \"variable\": \"ecdsaPrivateKey\",\n                \"variable_start\": 6,\n                \"variable_end\": 21,\n                \"value\": \"-----BEGIN EC PRIVATE KEY-----\",\n                \"value_start\": 25,\n                \"value_end\": 55,\n                \"entropy\": 3.30775\n            }\n        ]\n    },\n    {\n        \"rule\": \"PEM Private Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"const ecdsaPrivateKey = `-----BEGIN EC PRIVATE KEY-----\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/pem_key.p.go\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"-----BEGIN EC PRIVATE KEY-----\",\n                \"value_start\": 25,\n                \"value_end\": 55,\n                \"entropy\": 3.30775\n            },\n            {\n                \"line\": \"MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgv4Dj4ashv/uKUltV\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/pem_key.p.go\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgv4Dj4ashv/uKUltV\",\n                \"value_start\": 0,\n                \"value_end\": 64,\n                \"entropy\": 4.64072\n            },\n            {\n                \"line\": \"20VTUPnqXBPMDmPH43RG9WtK7cyhRANCAAQJameDIEe6M7PIpw6CPPAdHfN9+vxX\",\n                \"line_num\": 3,\n                \"path\": \"./tests/samples/pem_key.p.go\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"20VTUPnqXBPMDmPH43RG9WtK7cyhRANCAAQJameDIEe6M7PIpw6CPPAdHfN9+vxX\",\n                \"value_start\": 0,\n                \"value_end\": 64,\n                \"entropy\": 5.22641\n            },\n            {\n                \"line\": \"iptqkkBN/uRj9dkG5gDGhFzSqtSk8+d/b7VloKSdnH/nn4RxfMo6p1aC\",\n                \"line_num\": 4,\n                \"path\": \"./tests/samples/pem_key.p.go\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"iptqkkBN/uRj9dkG5gDGhFzSqtSk8+d/b7VloKSdnH/nn4RxfMo6p1aC\",\n                \"value_start\": 0,\n                \"value_end\": 56,\n                \"entropy\": 5.11058\n            },\n            {\n                \"line\": \"-----END EC PRIVATE KEY-----`\",\n                \"line_num\": 5,\n                \"path\": \"./tests/samples/pem_key.p.go\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"-----END EC PRIVATE KEY-----\",\n                \"value_start\": 0,\n                \"value_end\": 28,\n                \"entropy\": 3.16542\n            }\n        ]\n    },\n    {\n        \"rule\": \"PEM Private Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"    PRIVATE_KEY = \\\"-----BEGIN RSA PRIVATE KEY-----\\\\n\\\"\",\n                \"line_num\": 3,\n                \"path\": \"./tests/samples/pem_key.p.java\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"-----BEGIN RSA PRIVATE KEY-----\",\n                \"value_start\": 19,\n                \"value_end\": 50,\n                \"entropy\": 3.38229\n            },\n            {\n                \"line\": \"     +   \\\"MIIBVgIBADANBgkqhkiG9w0BAQEFAASCAUAwggE8AgEAAkEAplaRRGItayIi59+n\\\\n\\\"\",\n                \"line_num\": 4,\n                \"path\": \"./tests/samples/pem_key.p.java\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"MIIBVgIBADANBgkqhkiG9w0BAQEFAASCAUAwggE8AgEAAkEAplaRRGItayIi59+n\",\n                \"value_start\": 10,\n                \"value_end\": 74,\n                \"entropy\": 4.53081\n            },\n            {\n                \"line\": \"      +   \\\"FlVJfmQshKZo3MNry20h1xvoqks6Wndb0XLJ3s1A6Z2Qg+9xKHNT7QZTTGVatxrp\\\\n\\\"\",\n                \"line_num\": 5,\n                \"path\": \"./tests/samples/pem_key.p.java\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"FlVJfmQshKZo3MNry20h1xvoqks6Wndb0XLJ3s1A6Z2Qg+9xKHNT7QZTTGVatxrp\",\n                \"value_start\": 11,\n                \"value_end\": 75,\n                \"entropy\": 5.25352\n            },\n            {\n                \"line\": \"        +   \\\"CY1LcQIDAQABAkEAlXPKaercbBnryvLEqehPdGSFK1ppdZGQVOLlOOU2k2o5VpRP\\\\n\\\"\",\n                \"line_num\": 6,\n                \"path\": \"./tests/samples/pem_key.p.java\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"CY1LcQIDAQABAkEAlXPKaercbBnryvLEqehPdGSFK1ppdZGQVOLlOOU2k2o5VpRP\",\n                \"value_start\": 13,\n                \"value_end\": 77,\n                \"entropy\": 5.09727\n            },\n            {\n                \"line\": \"      +   \\\"AvHzS6VZsimd5XPxEIKPkJhWDLhRckpwOX6LkQIhAND0WUcohqwBHxvUvAexRxbI\\\\n\\\"\",\n                \"line_num\": 7,\n                \"path\": \"./tests/samples/pem_key.p.java\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"AvHzS6VZsimd5XPxEIKPkJhWDLhRckpwOX6LkQIhAND0WUcohqwBHxvUvAexRxbI\",\n                \"value_start\": 11,\n                \"value_end\": 75,\n                \"entropy\": 5.10907\n            },\n            {\n                \"line\": \"    +   \\\"FIizfZJfI9fC2dDepWvfAiEAy8npickbddF4NlWt+PVcPi9iSfe2h8LHZ/QLzNV5\\\\n\\\"\",\n                \"line_num\": 8,\n                \"path\": \"./tests/samples/pem_key.p.java\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"FIizfZJfI9fC2dDepWvfAiEAy8npickbddF4NlWt+PVcPi9iSfe2h8LHZ/QLzNV5\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.0629\n            },\n            {\n                \"line\": \"     +   \\\"Mq8CIQDMdXvyS+5S2hoVgnimUkoMOaUWCgOiOOP6mFfHsERPIwIhAMovKCnQwhLR\\\\n\\\"\",\n                \"line_num\": 9,\n                \"path\": \"./tests/samples/pem_key.p.java\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"Mq8CIQDMdXvyS+5S2hoVgnimUkoMOaUWCgOiOOP6mFfHsERPIwIhAMovKCnQwhLR\",\n                \"value_start\": 10,\n                \"value_end\": 74,\n                \"entropy\": 5.10907\n            },\n            {\n                \"line\": \"      +   \\\"YQAfX3yaCguUPWL/hjQJdodXZIGz5gv3AiBQ5WKTpyu8osL4CCi4aS6G/fSlCdu0\\\\n\\\"\",\n                \"line_num\": 10,\n                \"path\": \"./tests/samples/pem_key.p.java\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"YQAfX3yaCguUPWL/hjQJdodXZIGz5gv3AiBQ5WKTpyu8osL4CCi4aS6G/fSlCdu0\",\n                \"value_start\": 11,\n                \"value_end\": 75,\n                \"entropy\": 5.15211\n            },\n            {\n                \"line\": \"     +   \\\"GeGaqMojMT7//g==\\\\n\\\"\",\n                \"line_num\": 11,\n                \"path\": \"./tests/samples/pem_key.p.java\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"GeGaqMojMT7//g==\",\n                \"value_start\": 10,\n                \"value_end\": 26,\n                \"entropy\": 3.5\n            },\n            {\n                \"line\": \"      + \\\"-----END RSA PRIVATE KEY-----\\\\n\\\";\",\n                \"line_num\": 12,\n                \"path\": \"./tests/samples/pem_key.p.java\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"-----END RSA PRIVATE KEY-----\",\n                \"value_start\": 9,\n                \"value_end\": 38,\n                \"entropy\": 3.24663\n            }\n        ]\n    },\n    {\n        \"rule\": \"Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"    PRIVATE_KEY = \\\"-----BEGIN RSA PRIVATE KEY-----\\\\n\\\"\",\n                \"line_num\": 3,\n                \"path\": \"./tests/samples/pem_key.p.java\",\n                \"info\": \"\",\n                \"variable\": \"PRIVATE_KEY\",\n                \"variable_start\": 4,\n                \"variable_end\": 15,\n                \"value\": \"-----BEGIN RSA PRIVATE KEY-----\\\\n\",\n                \"value_start\": 19,\n                \"value_end\": 52,\n                \"entropy\": 3.56776\n            }\n        ]\n    },\n    {\n        \"rule\": \"PEM Private Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \" = \\\"\\\\\\\"-----BEGIN PRIVATE KEY-----\\\\\\\\n\\\"\",\n                \"line_num\": 16,\n                \"path\": \"./tests/samples/pem_key.p.java\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"-----BEGIN PRIVATE KEY-----\",\n                \"value_start\": 6,\n                \"value_end\": 33,\n                \"entropy\": 3.20029\n            },\n            {\n                \"line\": \" +   \\\"MIIBVAIBADANBgkqhkiG9w0BAQEFAASCAT4wggE6AgEAAkEAxAIxg6QtxmnJ0Bsj\\\\\\\\n\\\"\",\n                \"line_num\": 17,\n                \"path\": \"./tests/samples/pem_key.p.java\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"MIIBVAIBADANBgkqhkiG9w0BAQEFAASCAT4wggE6AgEAAkEAxAIxg6QtxmnJ0Bsj\",\n                \"value_start\": 6,\n                \"value_end\": 70,\n                \"entropy\": 4.44143\n            },\n            {\n                \"line\": \" +   \\\"VRsEhjLB9lSY9CaFvvEbXK9eBezqR6x6epxm4w/bx1xAK1O9m4iyEN72+jhpZHZs\\\\\\\\n\\\"\",\n                \"line_num\": 18,\n                \"path\": \"./tests/samples/pem_key.p.java\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"VRsEhjLB9lSY9CaFvvEbXK9eBezqR6x6epxm4w/bx1xAK1O9m4iyEN72+jhpZHZs\",\n                \"value_start\": 6,\n                \"value_end\": 70,\n                \"entropy\": 5.16391\n            },\n            {\n                \"line\": \" +   \\\"6RZsxQIDAQABAkBbzksyxWtLS7Fi79MUwZrU4GFI50bc1E5AqN2QA/OeAg+tdgRC\\\\\\\\n\\\"\",\n                \"line_num\": 19,\n                \"path\": \"./tests/samples/pem_key.p.java\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"6RZsxQIDAQABAkBbzksyxWtLS7Fi79MUwZrU4GFI50bc1E5AqN2QA/OeAg+tdgRC\",\n                \"value_start\": 6,\n                \"value_end\": 70,\n                \"entropy\": 5.24586\n            },\n            {\n                \"line\": \" +   \\\"eTVV2eZEM750xZUCoqDwLsLeYrGFR7zy0VkBAiEA5ljPCFu3UIVOgZXhSr342mTX\\\\\\\\n\\\"\",\n                \"line_num\": 20,\n                \"path\": \"./tests/samples/pem_key.p.java\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"eTVV2eZEM750xZUCoqDwLsLeYrGFR7zy0VkBAiEA5ljPCFu3UIVOgZXhSr342mTX\",\n                \"value_start\": 6,\n                \"value_end\": 70,\n                \"entropy\": 5.28891\n            },\n            {\n                \"line\": \" +   \\\"vC9/t9XrGuHCQU8oOW0CIQDZ1mYBOniJmPD0h5j1wadmLkmmZRPUNyMTEHiBUEmB\\\\\\\\n\\\"\",\n                \"line_num\": 21,\n                \"path\": \"./tests/samples/pem_key.p.java\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"vC9/t9XrGuHCQU8oOW0CIQDZ1mYBOniJmPD0h5j1wadmLkmmZRPUNyMTEHiBUEmB\",\n                \"value_start\": 6,\n                \"value_end\": 70,\n                \"entropy\": 5.19102\n            },\n            {\n                \"line\": \" +   \\\"uQIgSpG1dB882PRO1eSPaoLVbN34eRNnZTv7QFiVak8V1oECIGk3tKdtPaGAnQoP\\\\\\\\n\\\"\",\n                \"line_num\": 22,\n                \"path\": \"./tests/samples/pem_key.p.java\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"uQIgSpG1dB882PRO1eSPaoLVbN34eRNnZTv7QFiVak8V1oECIGk3tKdtPaGAnQoP\",\n                \"value_start\": 6,\n                \"value_end\": 70,\n                \"entropy\": 5.04243\n            },\n            {\n                \"line\": \" +   \\\"oOM7eYbSXsKfWdeMFkX0E7CqPgcJAiEAlydP8ln92gy4LefZuIJn1/M5PEeRFKrq\\\\\\\\n\\\"\",\n                \"line_num\": 23,\n                \"path\": \"./tests/samples/pem_key.p.java\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"oOM7eYbSXsKfWdeMFkX0E7CqPgcJAiEAlydP8ln92gy4LefZuIJn1/M5PEeRFKrq\",\n                \"value_start\": 6,\n                \"value_end\": 70,\n                \"entropy\": 5.24586\n            },\n            {\n                \"line\": \" +   \\\"aAjRMKT7uCM=\\\\\\\\n\\\"\",\n                \"line_num\": 24,\n                \"path\": \"./tests/samples/pem_key.p.java\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"aAjRMKT7uCM=\",\n                \"value_start\": 6,\n                \"value_end\": 18,\n                \"entropy\": 3.4183\n            },\n            {\n                \"line\": \" +   \\\"-----END RSA PRIVATE KEY-----\\\\\\\"\\\";\",\n                \"line_num\": 25,\n                \"path\": \"./tests/samples/pem_key.p.java\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"-----END RSA PRIVATE KEY-----\",\n                \"value_start\": 6,\n                \"value_end\": 35,\n                \"entropy\": 3.24663\n            }\n        ]\n    },\n    {\n        \"rule\": \"PEM Private Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"2026-04-26 12:36:01 -----BEGIN PRIVATE KEY-----\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"-----BEGIN PRIVATE KEY-----\",\n                \"value_start\": 20,\n                \"value_end\": 47,\n                \"entropy\": 3.20029\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 MIIMvgIBADALBglghkgBZQMEBAMEggyqMIIMpgRATqJGETTwhb2gxXF41z3G5ztP\",\n                \"line_num\": 3,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"MIIMvgIBADALBglghkgBZQMEBAMEggyqMIIMpgRATqJGETTwhb2gxXF41z3G5ztP\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 4.67767\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 I+dcZ5zCOnpcALAIw+OAqVHjisQypIBH6K/pqnrVYzZkwV6M4bLhesOMuserAgSC\",\n                \"line_num\": 4,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"I+dcZ5zCOnpcALAIw+OAqVHjisQypIBH6K/pqnrVYzZkwV6M4bLhesOMuserAgSC\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.06602\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 DGAygxLkWHaG9AEmQJsg1MeFxsNyehNphDUdaKHxVmXPYUNVm3J4c5+xBZigd8pa\",\n                \"line_num\": 5,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"DGAygxLkWHaG9AEmQJsg1MeFxsNyehNphDUdaKHxVmXPYUNVm3J4c5+xBZigd8pa\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.17157\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 LEIX4H6JKVWAwKs5UkCLw3uB434w+6mWMJlUjDwWZSGgEiRjS21nx6eKyLqlLE16\",\n                \"line_num\": 6,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"LEIX4H6JKVWAwKs5UkCLw3uB434w+6mWMJlUjDwWZSGgEiRjS21nx6eKyLqlLE16\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.10907\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 XAZ5Rg2oJAL5CVj8uAe7pUdweySS4EBgdMPJ9o0cEZDP5aD9yTSIeXzi1bgGJQ/s\",\n                \"line_num\": 7,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"XAZ5Rg2oJAL5CVj8uAe7pUdweySS4EBgdMPJ9o0cEZDP5aD9yTSIeXzi1bgGJQ/s\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.27298\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 aJ5DxXUVXDWTZgA05CHuojS/R1WlO2o30rxV4azc+Yr7IcR89i4wNGHUNQFmhhBF\",\n                \"line_num\": 8,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"aJ5DxXUVXDWTZgA05CHuojS/R1WlO2o30rxV4azc+Yr7IcR89i4wNGHUNQFmhhBF\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.4375\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 OYyA41Ls/ESNS1UGWwfCuZ89CBzjjBQZhxp4ELW+ZLa+1w3iUhJZEYoc9GQm7E+v\",\n                \"line_num\": 9,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"OYyA41Ls/ESNS1UGWwfCuZ89CBzjjBQZhxp4ELW+ZLa+1w3iUhJZEYoc9GQm7E+v\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.12086\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 VIQvl4RxKF8WZAc4uTaisTwcNAhYK5m5gpX5ZHLgBndWRjE32kOvask2BLdgjJig\",\n                \"line_num\": 10,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"VIQvl4RxKF8WZAc4uTaisTwcNAhYK5m5gpX5ZHLgBndWRjE32kOvask2BLdgjJig\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.2382\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 Fs9mKlRU+ZqIQxukBDO6xkHjSr1JxIP2HJNyiiZxgCUKSi/I5h4UObW1yjNv0Ymw\",\n                \"line_num\": 11,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"Fs9mKlRU+ZqIQxukBDO6xkHjSr1JxIP2HJNyiiZxgCUKSi/I5h4UObW1yjNv0Ymw\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.27711\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 FE/csKq4gcWvPD/QuFeW4XFQcZaoqkQVILnjVG10NqOTlDJaywMhcgjQq2QQlVXH\",\n                \"line_num\": 12,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"FE/csKq4gcWvPD/QuFeW4XFQcZaoqkQVILnjVG10NqOTlDJaywMhcgjQq2QQlVXH\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.07782\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 zMBgJI3W9qLDYFY69rN/xnL68wg5B1xv62ChNo4eTLlppGmNlLfX6YleXLYK2pTj\",\n                \"line_num\": 13,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"zMBgJI3W9qLDYFY69rN/xnL68wg5B1xv62ChNo4eTLlppGmNlLfX6YleXLYK2pTj\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.09571\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 cmIbK3nvQ7BGLAXVMMYFOkkht0mHVC4sS3mwdUtS2l5KECOq1R+g4mrrAUyGpI1B\",\n                \"line_num\": 14,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"cmIbK3nvQ7BGLAXVMMYFOkkht0mHVC4sS3mwdUtS2l5KECOq1R+g4mrrAUyGpI1B\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.34375\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 68+Eg5DkM86BUYI9N86V4cUtNGDbsmaJgCurGJHHupeJQhWj+Q2CNlXmSaP+mCau\",\n                \"line_num\": 15,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"68+Eg5DkM86BUYI9N86V4cUtNGDbsmaJgCurGJHHupeJQhWj+Q2CNlXmSaP+mCau\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.14384\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 GUEMVn/PVmqhSJIj+yEsojeZykecYXo7LMxiJkuX8HZ9R3ynOHdedcfV4DdAJc1E\",\n                \"line_num\": 16,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"GUEMVn/PVmqhSJIj+yEsojeZykecYXo7LMxiJkuX8HZ9R3ynOHdedcfV4DdAJc1E\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.22993\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 t51bOzjJlLIlUEQicJcXMCrBJ8pL1bHJGkT7t7gxnC72Qz7D2Czh20oJIgFTs1yJ\",\n                \"line_num\": 17,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"t51bOzjJlLIlUEQicJcXMCrBJ8pL1bHJGkT7t7gxnC72Qz7D2Czh20oJIgFTs1yJ\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.05423\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 kQSTxDFcMsakyRRZAAcDyGMGUnrMxIVSyrQDhIQrORaeiTDHcaS6pDuz5kkJsT+Y\",\n                \"line_num\": 18,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"kQSTxDFcMsakyRRZAAcDyGMGUnrMxIVSyrQDhIQrORaeiTDHcaS6pDuz5kkJsT+Y\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 4.86869\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 ki/ZkkAldBpX4sDD1zvC6LyWU1IlZcx9F5V7I0P/BrpSwrvjNQEIeW4tNR1+fEYW\",\n                \"line_num\": 19,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"ki/ZkkAldBpX4sDD1zvC6LyWU1IlZcx9F5V7I0P/BrpSwrvjNQEIeW4tNR1+fEYW\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.35907\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 fE7gewlJZbTCVqTcQ7wQ+kA7JEQkU6I8YaIXuiwiG55EuSsO2MzpApgFtmAcWlT4\",\n                \"line_num\": 20,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"fE7gewlJZbTCVqTcQ7wQ+kA7JEQkU6I8YaIXuiwiG55EuSsO2MzpApgFtmAcWlT4\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.24173\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 ybWzhp7kqwRFolOi6hb9y8y4aDRkRltYcTPswcjh40k1spoCRlwCcgahgTnuWJ8O\",\n                \"line_num\": 21,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"ybWzhp7kqwRFolOi6hb9y8y4aDRkRltYcTPswcjh40k1spoCRlwCcgahgTnuWJ8O\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.00352\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 qq4uxkY8xkFvJ4VqZjcl7AbhdJg3R5gqlbhPZmEXBn3teYbihzMCBRI3RTI5/Hy2\",\n                \"line_num\": 22,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"qq4uxkY8xkFvJ4VqZjcl7AbhdJg3R5gqlbhPZmEXBn3teYbihzMCBRI3RTI5/Hy2\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.23407\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 Yh4VhW+MqaukgRTPk50aKFjEs0vj6D1RpLRUmq/EI2GKZbtZc4MDR8kZWXsP5yqO\",\n                \"line_num\": 23,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"Yh4VhW+MqaukgRTPk50aKFjEs0vj6D1RpLRUmq/EI2GKZbtZc4MDR8kZWXsP5yqO\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.24586\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 o2OcG66cSXR5KrzmNRNdci1GNafm5qHiqj5NsnDax1B8t1hkpV+VMkZKGxGXt2YP\",\n                \"line_num\": 24,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"o2OcG66cSXR5KrzmNRNdci1GNafm5qHiqj5NsnDax1B8t1hkpV+VMkZKGxGXt2YP\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.12086\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 gx1/q1EgS5w2ciAuC8u5gitd1ie43B5lsysO0MY31Qy1eGO1Sj0g4pxM2szbpwso\",\n                \"line_num\": 25,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"gx1/q1EgS5w2ciAuC8u5gitd1ie43B5lsysO0MY31Qy1eGO1Sj0g4pxM2szbpwso\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 4.95282\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 0RZL8aKk645hElitcXDx8wUVc0Zm/Av4FsSiZkhFeKaHSAXJtTtlAkLMMTZaNwBA\",\n                \"line_num\": 26,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"0RZL8aKk645hElitcXDx8wUVc0Zm/Av4FsSiZkhFeKaHSAXJtTtlAkLMMTZaNwBA\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.05836\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 hqmHqqtalptZmwGz2F0dmXF9cy+gOxzaBhQbVcH8SDdchpgTl14B93qh2iY2RjxY\",\n                \"line_num\": 27,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"hqmHqqtalptZmwGz2F0dmXF9cy+gOxzaBhQbVcH8SDdchpgTl14B93qh2iY2RjxY\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.12086\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 Eb3kpsPG0cdLTAAahEALuMu26YFpglJXAkwSwSLPYsGRPHjJFiXfWBR05x5y5wdB\",\n                \"line_num\": 28,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"Eb3kpsPG0cdLTAAahEALuMu26YFpglJXAkwSwSLPYsGRPHjJFiXfWBR05x5y5wdB\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.10907\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 1jhhqlV6ZHO/osEJKb6tSHH0mYf0uMNu2speu2DgsjCjHHJwtSJMayfO1WZcSF+G\",\n                \"line_num\": 29,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"1jhhqlV6ZHO/osEJKb6tSHH0mYf0uMNu2speu2DgsjCjHHJwtSJMayfO1WZcSF+G\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.13462\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 wFXOY77MgB3VwMRcCoTMNwoBswcJeZRyNL+cHLZZcK0kpEJbBY60W5pHUceKrDDJ\",\n                \"line_num\": 30,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"wFXOY77MgB3VwMRcCoTMNwoBswcJeZRyNL+cHLZZcK0kpEJbBY60W5pHUceKrDDJ\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.02142\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 sr63qzPaUVNj0Vu2zFG8sEEMES55/JIKCoj6O66j821/qJ97RLPP5pKUpp2gCS7F\",\n                \"line_num\": 31,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"sr63qzPaUVNj0Vu2zFG8sEEMES55/JIKCoj6O66j821/qJ97RLPP5pKUpp2gCS7F\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.02298\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 GyCzMBiTsF4zNCr+FA1rQUCZqa50S3Gu90KANsv7VX1krJXXaSXQFaiDAyB+zL0f\",\n                \"line_num\": 32,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"GyCzMBiTsF4zNCr+FA1rQUCZqa50S3Gu90KANsv7VX1krJXXaSXQFaiDAyB+zL0f\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.04243\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 SQR7WrimYwMQaGX8c75+8L7NK2zdxMQH0chtdqv79WmoOn+fWGupCq7NlA32s7rb\",\n                \"line_num\": 33,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"SQR7WrimYwMQaGX8c75+8L7NK2zdxMQH0chtdqv79WmoOn+fWGupCq7NlA32s7rb\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.26532\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 Cq4auSoIF5ovQqw2F2wgi2nBpHwfF5ka6qSaQA4wiACrxkC255lCaAzy9jky4Ldt\",\n                \"line_num\": 34,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"Cq4auSoIF5ovQqw2F2wgi2nBpHwfF5ka6qSaQA4wiACrxkC255lCaAzy9jky4Ldt\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 4.84727\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 1iSmA7q2JSu8HEN8NG9AQqP+l44HRXFzJsF3cXTaOzKZKYlhlx5btb8F+M9aCgXi\",\n                \"line_num\": 35,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"1iSmA7q2JSu8HEN8NG9AQqP+l44HRXFzJsF3cXTaOzKZKYlhlx5btb8F+M9aCgXi\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.26532\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 pICqo0FqkQ03ULwswnF8yXsjpYkx63lc0pLStKn7dxI+cSOYYCu0cbxcBoZyqmH1\",\n                \"line_num\": 36,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"pICqo0FqkQ03ULwswnF8yXsjpYkx63lc0pLStKn7dxI+cSOYYCu0cbxcBoZyqmH1\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.07782\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 Kqmr2XMicIWCxQoiW4YT5UYfNsfwmRUWkJwmCahUFSzo5swUpBbeCo6bsEdkyxMM\",\n                \"line_num\": 37,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"Kqmr2XMicIWCxQoiW4YT5UYfNsfwmRUWkJwmCahUFSzo5swUpBbeCo6bsEdkyxMM\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.13618\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 I5bNV1cjSII5liHOyxnvZ77+giZAKglsiI3ZmmVh+l8fvDBDaLVmmMRfcwRHOxu1\",\n                \"line_num\": 38,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"I5bNV1cjSII5liHOyxnvZ77+giZAKglsiI3ZmmVh+l8fvDBDaLVmmMRfcwRHOxu1\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.04657\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 UMRr047T8ggKgEnyhQLK/FJh+Yp8ubo6wsTUwyyVcRULUVWeJbka6EDkMbPucHHb\",\n                \"line_num\": 39,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"UMRr047T8ggKgEnyhQLK/FJh+Yp8ubo6wsTUwyyVcRULUVWeJbka6EDkMbPucHHb\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.10141\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 vDdO61eP2yB+uQlwbBr1UquiQD1XrBHXFVwDw6rJoJxTkGQggaofpsUPa3F561LV\",\n                \"line_num\": 40,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"vDdO61eP2yB+uQlwbBr1UquiQD1XrBHXFVwDw6rJoJxTkGQggaofpsUPa3F561LV\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.11673\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 aQAFxU9BAgmdYb4uJxtlt46DCbx2tFW2OnoqQrpFW7nWlwmLJ2dUhIRkySTyhJpq\",\n                \"line_num\": 41,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"aQAFxU9BAgmdYb4uJxtlt46DCbx2tFW2OnoqQrpFW7nWlwmLJ2dUhIRkySTyhJpq\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.14798\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 K0hnrLThhA1tu8q3dTXOCDs+8csKnI9vVSqAFm6ax3lI6ilBFVIgyZi7dBI1TCKp\",\n                \"line_num\": 42,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"K0hnrLThhA1tu8q3dTXOCDs+8csKnI9vVSqAFm6ax3lI6ilBFVIgyZi7dBI1TCKp\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.18336\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 rDbvCzcWY6dxEUzHqTELG5sd955LQgoei2/86QDquRIgB2PGqblBYylUOA9tBTAv\",\n                \"line_num\": 43,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"rDbvCzcWY6dxEUzHqTELG5sd955LQgoei2/86QDquRIgB2PGqblBYylUOA9tBTAv\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.21461\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 wSVKoZuonI4ijDZz5yec2C9DiCZva6MbxASOLBl05qfeeDbzkhOWsas2ZpMRmaS8\",\n                \"line_num\": 44,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"wSVKoZuonI4ijDZz5yec2C9DiCZva6MbxASOLBl05qfeeDbzkhOWsas2ZpMRmaS8\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.26532\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 dI0Tmp732GkddM2R879ULHp0x4CI4Vh42mN/m22OInwW4mlPaUAy4MQUOWvuWb6/\",\n                \"line_num\": 45,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"dI0Tmp732GkddM2R879ULHp0x4CI4Vh42mN/m22OInwW4mlPaUAy4MQUOWvuWb6/\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.02752\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 o2/HcXJCoj9JsULCKXchFrawJHTgCTpi9BicMpmnPHpnpxlYRw77p4qWcmGqs2Yi\",\n                \"line_num\": 46,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"o2/HcXJCoj9JsULCKXchFrawJHTgCTpi9BicMpmnPHpnpxlYRw77p4qWcmGqs2Yi\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.02142\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 gQLAAQhZxzpT8MPgsomgC2nySQthEHsvF4XVbL60ImBv9Qig2hd7Jh4cI0D/+TdC\",\n                \"line_num\": 47,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"gQLAAQhZxzpT8MPgsomgC2nySQthEHsvF4XVbL60ImBv9Qig2hd7Jh4cI0D/+TdC\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.25\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 tky6B1MyPAxYCTN2QXXCo6CbdzMoVBhXuAI7prv2DA5zUwNCpxBKs2BgSIZ9677J\",\n                \"line_num\": 48,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"tky6B1MyPAxYCTN2QXXCo6CbdzMoVBhXuAI7prv2DA5zUwNCpxBKs2BgSIZ9677J\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.12852\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 RlxpsqbbVLVJl6BdbJcMRjIWEW0flKwbSb/PdEuEGheu5UuRZ4/MxrzrciW35CxX\",\n                \"line_num\": 49,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"RlxpsqbbVLVJl6BdbJcMRjIWEW0flKwbSb/PdEuEGheu5UuRZ4/MxrzrciW35CxX\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.12283\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 +XYlHBLCOQ6MCCSYtAy9olSBxQ1iMkiP0V20Crzm6JapZWxTC1EEFgMXAJERMXin\",\n                \"line_num\": 50,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"+XYlHBLCOQ6MCCSYtAy9olSBxQ1iMkiP0V20Crzm6JapZWxTC1EEFgMXAJERMXin\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.12696\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 NiY0wK8f8JFABRBxMZeHyBtT6EobR2Q1Ozcjmhb98rK6wUVhorCGV0mbZ4jzVFtH\",\n                \"line_num\": 51,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"NiY0wK8f8JFABRBxMZeHyBtT6EobR2Q1Ozcjmhb98rK6wUVhorCGV0mbZ4jzVFtH\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.23407\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 YD9UoTAQrI22NGLy+BupkM7OmaQ82SWZlZ8eiSqv5z7aBI8AAWOORHCYW07i9kCy\",\n                \"line_num\": 52,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"YD9UoTAQrI22NGLy+BupkM7OmaQ82SWZlZ8eiSqv5z7aBI8AAWOORHCYW07i9kCy\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.17923\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 OJ4nB3/Ko4OTiUeGYamtlj9/k7alhM5BE2fkEoygYFvL1cfFXMHH+wOEonSMi5qo\",\n                \"line_num\": 53,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"OJ4nB3/Ko4OTiUeGYamtlj9/k7alhM5BE2fkEoygYFvL1cfFXMHH+wOEonSMi5qo\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.24586\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 smQrWalr8aPEPGkXWYDjMsBZ4rHQ00z+cE3YiXJXMj2Y8JMY9LJrR1asaEY3IoBx\",\n                \"line_num\": 54,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"smQrWalr8aPEPGkXWYDjMsBZ4rHQ00z+cE3YiXJXMj2Y8JMY9LJrR1asaEY3IoBx\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 4.94712\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 ose+UxmIsZr1OD/Jy1euBJo0IQX3gnrvdGl9u8zQeCes+g5xl68gAU8n1J/Z4DoB\",\n                \"line_num\": 55,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"ose+UxmIsZr1OD/Jy1euBJo0IQX3gnrvdGl9u8zQeCes+g5xl68gAU8n1J/Z4DoB\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.02298\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 Y0mUMEgOuMu6aAvmQc/lqqP7lwrCKCfVe6SS6w2w3I9GrL2/3GkQkXJSc4rmZb7u\",\n                \"line_num\": 56,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"Y0mUMEgOuMu6aAvmQc/lqqP7lwrCKCfVe6SS6w2w3I9GrL2/3GkQkXJSc4rmZb7u\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.17923\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 JoAFyHleVFAnDFXlhLKFl0h3x7TD26LK2LApnLI344MvE6ZG9RFA6w2Q6JtRIEWU\",\n                \"line_num\": 57,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"JoAFyHleVFAnDFXlhLKFl0h3x7TD26LK2LApnLI344MvE6ZG9RFA6w2Q6JtRIEWU\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 4.98251\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 lheqsm3z9sfcOiHW/GWw0nTkC8btOFZ0uBTThDnHg0BvuXzmBDcle1GpXJdyzLyl\",\n                \"line_num\": 58,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"lheqsm3z9sfcOiHW/GWw0nTkC8btOFZ0uBTThDnHg0BvuXzmBDcle1GpXJdyzLyl\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.19102\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 cW4qlLb15J1zMb/hVBNGagquATVVclvcVKYGYkNsxGpWBC8/8iJTEUKEMwqti7PR\",\n                \"line_num\": 59,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"cW4qlLb15J1zMb/hVBNGagquATVVclvcVKYGYkNsxGpWBC8/8iJTEUKEMwqti7PR\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.18336\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 yh+r058rdhlVML+0F5aDJwjslkCppGpJF5nGQn4pwBzViz752YFUgRRz2jrhFYHE\",\n                \"line_num\": 60,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"yh+r058rdhlVML+0F5aDJwjslkCppGpJF5nGQn4pwBzViz752YFUgRRz2jrhFYHE\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.02711\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 KaVCtcczpnZhtqNMY49aRMaTphHu4YpgglMjbDuZ5wiK27Fq5RM+lF6sIG6SGycb\",\n                \"line_num\": 61,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"KaVCtcczpnZhtqNMY49aRMaTphHu4YpgglMjbDuZ5wiK27Fq5RM+lF6sIG6SGycb\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.15211\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 4whptwXeepJbATEQ55FWWckLVJ5lVWuZ0pCOMguparXRwXECzGnIHLxehCexiZqA\",\n                \"line_num\": 62,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"4whptwXeepJbATEQ55FWWckLVJ5lVWuZ0pCOMguparXRwXECzGnIHLxehCexiZqA\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.09727\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 QLJZNAFOyB3IhHZo5TrJY5sNIMXU94yraZLmQQ3cRMntNiW8kp6Pqj3I40bqlL3F\",\n                \"line_num\": 63,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"QLJZNAFOyB3IhHZo5TrJY5sNIMXU94yraZLmQQ3cRMntNiW8kp6Pqj3I40bqlL3F\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.25352\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 ahwNl8qwsjl44hMmWMfQk1c5OpCtkGJcIpIF08ILxDknAyBTQ35BJXMJ9XtI0nt2\",\n                \"line_num\": 64,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"ahwNl8qwsjl44hMmWMfQk1c5OpCtkGJcIpIF08ILxDknAyBTQ35BJXMJ9XtI0nt2\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.17157\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 OiGGA6YUqbb68bmXbEhzKQhulHs8GWh/sgXiN3NoI5ns6nU0a3e6Oz2BkXY708iM\",\n                \"line_num\": 65,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"OiGGA6YUqbb68bmXbEhzKQhulHs8GWh/sgXiN3NoI5ns6nU0a3e6Oz2BkXY708iM\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.05423\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 oxrQxsZ4uoM/pjlHG5xeOM62B3tpeghU5iFfOgr+hH9mGcOx4cSoNjn3a5gvMJqc\",\n                \"line_num\": 66,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"oxrQxsZ4uoM/pjlHG5xeOM62B3tpeghU5iFfOgr+hH9mGcOx4cSoNjn3a5gvMJqc\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.14798\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 Ycc60cOGalwlpLruUy4rdDwhInvsGAmaapDq8IxRpS/AIpij4Y/SmMl9uisvqBr9\",\n                \"line_num\": 67,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"Ycc60cOGalwlpLruUy4rdDwhInvsGAmaapDq8IxRpS/AIpij4Y/SmMl9uisvqBr9\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.03477\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 ypg1olTOJ8rk08AXY0Kl2D9lS5GK11g2VWtCgKiMdS/RvAXJnJGkdStVTGYiCnHJ\",\n                \"line_num\": 68,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"ypg1olTOJ8rk08AXY0Kl2D9lS5GK11g2VWtCgKiMdS/RvAXJnJGkdStVTGYiCnHJ\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 4.99173\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 OjgyHTrR2a+N2ZiYTldYtmF6H9pm/lfv6FNtw2cNQzqGoSSsrAHEugO0d94keir2\",\n                \"line_num\": 69,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"OjgyHTrR2a+N2ZiYTldYtmF6H9pm/lfv6FNtw2cNQzqGoSSsrAHEugO0d94keir2\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.24586\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 62w9ymkZWDurfZDVT8OIVWXhgKlR44rEMqSAR+iv6ap61WM2ZMFejOGy4XrDjLrH\",\n                \"line_num\": 70,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"62w9ymkZWDurfZDVT8OIVWXhgKlR44rEMqSAR+iv6ap61WM2ZMFejOGy4XrDjLrH\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.21048\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 qwI=\",\n                \"line_num\": 71,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"qwI=\",\n                \"value_start\": 20,\n                \"value_end\": 24,\n                \"entropy\": 2.0\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 -----END PRIVATE KEY-----\",\n                \"line_num\": 72,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"-----END PRIVATE KEY-----\",\n                \"value_start\": 20,\n                \"value_end\": 45,\n                \"entropy\": 3.04489\n            }\n        ]\n    },\n    {\n        \"rule\": \"PEM Private Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"{\\\"ML-KEM-1024.log\\\":\\\"\\\\r\\\\n\\\\r\\\\n#7 [4/4] RUN openssl genpkey -algorithm ML-KEM-1024 -out mlkem-privatekey.pem && cat mlkem-privatekey.pem\\\\r\\\\n2026-04-26 12:36:01 -----BEGIN PRIVATE KEY-----\\\\r\\\\n2026-04-26 12:36:01 MIIMvgIBADALBglghkgBZQMEBAMEggyqMIIMpgRATqJGETTwhb2gxXF41z3G5ztP\\\\r\\\\n2026-04-26 12:36:01 I+dcZ5zCOnpcALAIw+OAqVHjisQypIBH6K/pqnrVYzZkwV6M4bLhesOMuserAgSC\\\\r\\\\n2026-04-26 12:36:01 DGAygxLkWHaG9AEmQJsg1MeFxsNyehNphDUdaKHxVmXPYUNVm3J4c5+xBZigd8pa\\\\r\\\\n2026-04-26 12:36:01 LEIX4H6JKVWAwKs5UkCLw3uB434w+6mWMJlUjDwWZSGgEiRjS21nx6eKyLqlLE16\\\\r\\\\n2026-04-26 12:36:01 XAZ5Rg2oJAL5CVj8uAe7pUdweySS4EBgdMPJ9o0cEZDP5aD9yTSIeXzi1bgGJQ/s\\\\r\\\\n2026-04-26 12:36:01 aJ5DxXUVXDWTZgA05CHuojS/R1WlO2o30rxV4azc+Yr7IcR89i4wNGHUNQFmhhBF\\\\r\\\\n2026-04-26 12:36:01 OYyA41Ls/ESNS1UGWwfCuZ89CBzjjBQZhxp4ELW+ZLa+1w3iUhJZEYoc9GQm7E+v\\\\r\\\\n2026-04-26 12:36:01 VIQvl4RxKF8WZAc4uTaisTwcNAhYK5m5gpX5ZHLgBndWRjE32kOvask2BLdgjJig\\\\r\\\\n2026-04-26 12:36:01 Fs9mKlRU+ZqIQxukBDO6xkHjSr1JxIP2HJNyiiZxgCUKSi/I5h4UObW1yjNv0Ymw\\\\r\\\\n2026-04-26 12:36:01 FE/csKq4gcWvPD/QuFeW4XFQcZaoqkQVILnjVG10NqOTlDJaywMhcgjQq2QQlVXH\\\\r\\\\n2026-04-26 12:36:01 zMBgJI3W9qLDYFY69rN/xnL68wg5B1xv62ChNo4eTLlppGmNlLfX6YleXLYK2pTj\\\\r\\\\n2026-04-26 12:36:01 cmIbK3nvQ7BGLAXVMMYFOkkht0mHVC4sS3mwdUtS2l5KECOq1R+g4mrrAUyGpI1B\\\\r\\\\n2026-04-26 12:36:01 68+Eg5DkM86BUYI9N86V4cUtNGDbsmaJgCurGJHHupeJQhWj+Q2CNlXmSaP+mCau\\\\r\\\\n2026-04-26 12:36:01 GUEMVn/PVmqhSJIj+yEsojeZykecYXo7LMxiJkuX8HZ9R3ynOHdedcfV4DdAJc1E\\\\r\\\\n2026-04-26 12:36:01 t51bOzjJlLIlUEQicJcXMCrBJ8pL1bHJGkT7t7gxnC72Qz7D2Czh20oJIgFTs1yJ\\\\r\\\\n2026-04-26 12:36:01 kQSTxDFcMsakyRRZAAcDyGMGUnrMxIVSyrQDhIQrORaeiTDHcaS6pDuz5kkJsT+Y\\\\r\\\\n2026-04-26 12:36:01 ki/ZkkAldBpX4sDD1zvC6LyWU1IlZcx9F5V7I0P/BrpSwrvjNQEIeW4tNR1+fEYW\\\\r\\\\n2026-04-26 12:36:01 fE7gewlJZbTCVqTcQ7wQ+kA7JEQkU6I8YaIXuiwiG55EuSsO2MzpApgFtmAcWlT4\\\\r\\\\n2026-04-26 12:36:01 ybWzhp7kqwRFolOi6hb9y8y4aDRkRltYcTPswcjh40k1spoCRlwCcgahgTnuWJ8O\\\\r\\\\n2026-04-26 12:36:01 qq4uxkY8xkFvJ4VqZjcl7AbhdJg3R5gqlbhPZmEXBn3teYbihzMCBRI3RTI5/Hy2\\\\r\\\\n2026-04-26 12:36:01 Yh4VhW+MqaukgRTPk50aKFjEs0vj6D1RpLRUmq/EI2GKZbtZc4MDR8kZWXsP5yqO\\\\r\\\\n2026-04-26 12:36:01 o2OcG66cSXR5KrzmNRNdci1GNafm5qHiqj5NsnDax1B8t1hkpV+VMkZKGxGXt2YP\\\\r\\\\n2026-04-26 12:36:01 gx1/q1EgS5w2ciAuC8u5gitd1ie43B5lsysO0MY31Qy1eGO1Sj0g4pxM2szbpwso\\\\r\\\\n2026-04-26 12:36:01 0RZL8aKk645hElitcXDx8wUVc0Zm/Av4FsSiZkhFeKaHSAXJtTtlAkLMMTZaNwBA\\\\r\\\\n2026-04-26 12:36:01 hqmHqqtalptZmwGz2F0dmXF9cy+gOxzaBhQbVcH8SDdchpgTl14B93qh2iY2RjxY\\\\r\\\\n2026-04-26 12:36:01 Eb3kpsPG0cdLTAAahEALuMu26YFpglJXAkwSwSLPYsGRPHjJFiXfWBR05x5y5wdB\\\\r\\\\n2026-04-26 12:36:01 1jhhqlV6ZHO/osEJKb6tSHH0mYf0uMNu2speu2DgsjCjHHJwtSJMayfO1WZcSF+G\\\\r\\\\n2026-04-26 12:36:01 wFXOY77MgB3VwMRcCoTMNwoBswcJeZRyNL+cHLZZcK0kpEJbBY60W5pHUceKrDDJ\\\\r\\\\n2026-04-26 12:36:01 sr63qzPaUVNj0Vu2zFG8sEEMES55/JIKCoj6O66j821/qJ97RLPP5pKUpp2gCS7F\\\\r\\\\n2026-04-26 12:36:01 GyCzMBiTsF4zNCr+FA1rQUCZqa50S3Gu90KANsv7VX1krJXXaSXQFaiDAyB+zL0f\\\\r\\\\n2026-04-26 12:36:01 SQR7WrimYwMQaGX8c75+8L7NK2zdxMQH0chtdqv79WmoOn+fWGupCq7NlA32s7rb\\\\r\\\\n2026-04-26 12:36:01 Cq4auSoIF5ovQqw2F2wgi2nBpHwfF5ka6qSaQA4wiACrxkC255lCaAzy9jky4Ldt\\\\r\\\\n2026-04-26 12:36:01 1iSmA7q2JSu8HEN8NG9AQqP+l44HRXFzJsF3cXTaOzKZKYlhlx5btb8F+M9aCgXi\\\\r\\\\n2026-04-26 12:36:01 pICqo0FqkQ03ULwswnF8yXsjpYkx63lc0pLStKn7dxI+cSOYYCu0cbxcBoZyqmH1\\\\r\\\\n2026-04-26 12:36:01 Kqmr2XMicIWCxQoiW4YT5UYfNsfwmRUWkJwmCahUFSzo5swUpBbeCo6bsEdkyxMM\\\\r\\\\n2026-04-26 12:36:01 I5bNV1cjSII5liHOyxnvZ77+giZAKglsiI3ZmmVh+l8fvDBDaLVmmMRfcwRHOxu1\\\\r\\\\n2026-04-26 12:36:01 UMRr047T8ggKgEnyhQLK/FJh+Yp8ubo6wsTUwyyVcRULUVWeJbka6EDkMbPucHHb\\\\r\\\\n2026-04-26 12:36:01 vDdO61eP2yB+uQlwbBr1UquiQD1XrBHXFVwDw6rJoJxTkGQggaofpsUPa3F561LV\\\\r\\\\n2026-04-26 12:36:01 aQAFxU9BAgmdYb4uJxtlt46DCbx2tFW2OnoqQrpFW7nWlwmLJ2dUhIRkySTyhJpq\\\\r\\\\n2026-04-26 12:36:01 K0hnrLThhA1tu8q3dTXOCDs+8csKnI9vVSqAFm6ax3lI6ilBFVIgyZi7dBI1TCKp\\\\r\\\\n2026-04-26 12:36:01 rDbvCzcWY6dxEUzHqTELG5sd955LQgoei2/86QDquRIgB2PGqblBYylUOA9tBTAv\\\\r\\\\n2026-04-26 12:36:01 wSVKoZuonI4ijDZz5yec2C9DiCZva6MbxASOLBl05qfeeDbzkhOWsas2ZpMRmaS8\\\\r\\\\n2026-04-26 12:36:01 dI0Tmp732GkddM2R879ULHp0x4CI4Vh42mN/m22OInwW4mlPaUAy4MQUOWvuWb6/\\\\r\\\\n2026-04-26 12:36:01 o2/HcXJCoj9JsULCKXchFrawJHTgCTpi9BicMpmnPHpnpxlYRw77p4qWcmGqs2Yi\\\\r\\\\n2026-04-26 12:36:01 gQLAAQhZxzpT8MPgsomgC2nySQthEHsvF4XVbL60ImBv9Qig2hd7Jh4cI0D/+TdC\\\\r\\\\n2026-04-26 12:36:01 tky6B1MyPAxYCTN2QXXCo6CbdzMoVBhXuAI7prv2DA5zUwNCpxBKs2BgSIZ9677J\\\\r\\\\n2026-04-26 12:36:01 RlxpsqbbVLVJl6BdbJcMRjIWEW0flKwbSb/PdEuEGheu5UuRZ4/MxrzrciW35CxX\\\\r\\\\n2026-04-26 12:36:01 +XYlHBLCOQ6MCCSYtAy9olSBxQ1iMkiP0V20Crzm6JapZWxTC1EEFgMXAJERMXin\\\\r\\\\n2026-04-26 12:36:01 NiY0wK8f8JFABRBxMZeHyBtT6EobR2Q1Ozcjmhb98rK6wUVhorCGV0mbZ4jzVFtH\\\\r\\\\n2026-04-26 12:36:01 YD9UoTAQrI22NGLy+BupkM7OmaQ82SWZlZ8eiSqv5z7aBI8AAWOORHCYW07i9kCy\\\\r\\\\n2026-04-26 12:36:01 OJ4nB3/Ko4OTiUeGYamtlj9/k7alhM5BE2fkEoygYFvL1cfFXMHH+wOEonSMi5qo\\\\r\\\\n2026-04-26 12:36:01 smQrWalr8aPEPGkXWYDjMsBZ4rHQ00z+cE3YiXJXMj2Y8JMY9LJrR1asaEY3IoBx\\\\r\\\\n2026-04-26 12:36:01 ose+UxmIsZr1OD/Jy1euBJo0IQX3gnrvdGl9u8zQeCes+g5xl68gAU8n1J/Z4DoB\\\\r\\\\n2026-04-26 12:36:01 Y0mUMEgOuMu6aAvmQc/lqqP7lwrCKCfVe6SS6w2w3I9GrL2/3GkQkXJSc4rmZb7u\\\\r\\\\n2026-04-26 12:36:01 JoAFyHleVFAnDFXlhLKFl0h3x7TD26LK2LApnLI344MvE6ZG9RFA6w2Q6JtRIEWU\\\\r\\\\n2026-04-26 12:36:01 lheqsm3z9sfcOiHW/GWw0nTkC8btOFZ0uBTThDnHg0BvuXzmBDcle1GpXJdyzLyl\\\\r\\\\n2026-04-26 12:36:01 cW4qlLb15J1zMb/hVBNGagquATVVclvcVKYGYkNsxGpWBC8/8iJTEUKEMwqti7PR\\\\r\\\\n2026-04-26 12:36:01 yh+r058rdhlVML+0F5aDJwjslkCppGpJF5nGQn4pwBzViz752YFUgRRz2jrhFYHE\\\\r\\\\n2026-04-26 12:36:01 KaVCtcczpnZhtqNMY49aRMaTphHu4YpgglMjbDuZ5wiK27Fq5RM+lF6sIG6SGycb\\\\r\\\\n2026-04-26 12:36:01 4whptwXeepJbATEQ55FWWckLVJ5lVWuZ0pCOMguparXRwXECzGnIHLxehCexiZqA\\\\r\\\\n2026-04-26 12:36:01 QLJZNAFOyB3IhHZo5TrJY5sNIMXU94yraZLmQQ3cRMntNiW8kp6Pqj3I40bqlL3F\\\\r\\\\n2026-04-26 12:36:01 ahwNl8qwsjl44hMmWMfQk1c5OpCtkGJcIpIF08ILxDknAyBTQ35BJXMJ9XtI0nt2\\\\r\\\\n2026-04-26 12:36:01 OiGGA6YUqbb68bmXbEhzKQhulHs8GWh/sgXiN3NoI5ns6nU0a3e6Oz2BkXY708iM\\\\r\\\\n2026-04-26 12:36:01 oxrQxsZ4uoM/pjlHG5xeOM62B3tpeghU5iFfOgr+hH9mGcOx4cSoNjn3a5gvMJqc\\\\r\\\\n2026-04-26 12:36:01 Ycc60cOGalwlpLruUy4rdDwhInvsGAmaapDq8IxRpS/AIpij4Y/SmMl9uisvqBr9\\\\r\\\\n2026-04-26 12:36:01 ypg1olTOJ8rk08AXY0Kl2D9lS5GK11g2VWtCgKiMdS/RvAXJnJGkdStVTGYiCnHJ\\\\r\\\\n2026-04-26 12:36:01 OjgyHTrR2a+N2ZiYTldYtmF6H9pm/lfv6FNtw2cNQzqGoSSsrAHEugO0d94keir2\\\\r\\\\n2026-04-26 12:36:01 62w9ymkZWDurfZDVT8OIVWXhgKlR44rEMqSAR+iv6ap61WM2ZMFejOGy4XrDjLrH\\\\r\\\\n2026-04-26 12:36:01 qwI=\\\\r\\\\n2026-04-26 12:36:01 -----END PRIVATE KEY-----\\\\r\\\\n#7 DONE 0.3s\\\\r\\\\n\\\\r\\\\n#8 exporting to image\\\\r\\\\n#8 exporting layers 0.1s done\\\\r\\\\n#8 writing image sha256:3ed48eb4eb0c17e6baaf691a361afd8c75572517e5b729849da4e5344bf7f244 done\\\\r\\\\n#8 DONE 0.2s\\\"}\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/pem_key.p.log.json\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"-----BEGIN PRIVATE KEY-----\\\\r\\\\n2026-04-26 12:36:01 MIIMvgIBADALBglghkgBZQMEBAMEggyqMIIMpgRATqJGETTwhb2gxXF41z3G5ztP\\\\r\\\\n2026-04-26 12:36:01 I+dcZ5zCOnpcALAIw+OAqVHjisQypIBH6K/pqnrVYzZkwV6M4bLhesOMuserAgSC\\\\r\\\\n2026-04-26 12:36:01 DGAygxLkWHaG9AEmQJsg1MeFxsNyehNphDUdaKHxVmXPYUNVm3J4c5+xBZigd8pa\\\\r\\\\n2026-04-26 12:36:01 LEIX4H6JKVWAwKs5UkCLw3uB434w+6mWMJlUjDwWZSGgEiRjS21nx6eKyLqlLE16\\\\r\\\\n2026-04-26 12:36:01 XAZ5Rg2oJAL5CVj8uAe7pUdweySS4EBgdMPJ9o0cEZDP5aD9yTSIeXzi1bgGJQ/s\\\\r\\\\n2026-04-26 12:36:01 aJ5DxXUVXDWTZgA05CHuojS/R1WlO2o30rxV4azc+Yr7IcR89i4wNGHUNQFmhhBF\\\\r\\\\n2026-04-26 12:36:01 OYyA41Ls/ESNS1UGWwfCuZ89CBzjjBQZhxp4ELW+ZLa+1w3iUhJZEYoc9GQm7E+v\\\\r\\\\n2026-04-26 12:36:01 VIQvl4RxKF8WZAc4uTaisTwcNAhYK5m5gpX5ZHLgBndWRjE32kOvask2BLdgjJig\\\\r\\\\n2026-04-26 12:36:01 Fs9mKlRU+ZqIQxukBDO6xkHjSr1JxIP2HJNyiiZxgCUKSi/I5h4UObW1yjNv0Ymw\\\\r\\\\n2026-04-26 12:36:01 FE/csKq4gcWvPD/QuFeW4XFQcZaoqkQVILnjVG10NqOTlDJaywMhcgjQq2QQlVXH\\\\r\\\\n2026-04-26 12:36:01 zMBgJI3W9qLDYFY69rN/xnL68wg5B1xv62ChNo4eTLlppGmNlLfX6YleXLYK2pTj\\\\r\\\\n2026-04-26 12:36:01 cmIbK3nvQ7BGLAXVMMYFOkkht0mHVC4sS3mwdUtS2l5KECOq1R+g4mrrAUyGpI1B\\\\r\\\\n2026-04-26 12:36:01 68+Eg5DkM86BUYI9N86V4cUtNGDbsmaJgCurGJHHupeJQhWj+Q2CNlXmSaP+mCau\\\\r\\\\n2026-04-26 12:36:01 GUEMVn/PVmqhSJIj+yEsojeZykecYXo7LMxiJkuX8HZ9R3ynOHdedcfV4DdAJc1E\\\\r\\\\n2026-04-26 12:36:01 t51bOzjJlLIlUEQicJcXMCrBJ8pL1bHJGkT7t7gxnC72Qz7D2Czh20oJIgFTs1yJ\\\\r\\\\n2026-04-26 12:36:01 kQSTxDFcMsakyRRZAAcDyGMGUnrMxIVSyrQDhIQrORaeiTDHcaS6pDuz5kkJsT+Y\\\\r\\\\n2026-04-26 12:36:01 ki/ZkkAldBpX4sDD1zvC6LyWU1IlZcx9F5V7I0P/BrpSwrvjNQEIeW4tNR1+fEYW\\\\r\\\\n2026-04-26 12:36:01 fE7gewlJZbTCVqTcQ7wQ+kA7JEQkU6I8YaIXuiwiG55EuSsO2MzpApgFtmAcWlT4\\\\r\\\\n2026-04-26 12:36:01 ybWzhp7kqwRFolOi6hb9y8y4aDRkRltYcTPswcjh40k1spoCRlwCcgahgTnuWJ8O\\\\r\\\\n2026-04-26 12:36:01 qq4uxkY8xkFvJ4VqZjcl7AbhdJg3R5gqlbhPZmEXBn3teYbihzMCBRI3RTI5/Hy2\\\\r\\\\n2026-04-26 12:36:01 Yh4VhW+MqaukgRTPk50aKFjEs0vj6D1RpLRUmq/EI2GKZbtZc4MDR8kZWXsP5yqO\\\\r\\\\n2026-04-26 12:36:01 o2OcG66cSXR5KrzmNRNdci1GNafm5qHiqj5NsnDax1B8t1hkpV+VMkZKGxGXt2YP\\\\r\\\\n2026-04-26 12:36:01 gx1/q1EgS5w2ciAuC8u5gitd1ie43B5lsysO0MY31Qy1eGO1Sj0g4pxM2szbpwso\\\\r\\\\n2026-04-26 12:36:01 0RZL8aKk645hElitcXDx8wUVc0Zm/Av4FsSiZkhFeKaHSAXJtTtlAkLMMTZaNwBA\\\\r\\\\n2026-04-26 12:36:01 hqmHqqtalptZmwGz2F0dmXF9cy+gOxzaBhQbVcH8SDdchpgTl14B93qh2iY2RjxY\\\\r\\\\n2026-04-26 12:36:01 Eb3kpsPG0cdLTAAahEALuMu26YFpglJXAkwSwSLPYsGRPHjJFiXfWBR05x5y5wdB\\\\r\\\\n2026-04-26 12:36:01 1jhhqlV6ZHO/osEJKb6tSHH0mYf0uMNu2speu2DgsjCjHHJwtSJMayfO1WZcSF+G\\\\r\\\\n2026-04-26 12:36:01 wFXOY77MgB3VwMRcCoTMNwoBswcJeZRyNL+cHLZZcK0kpEJbBY60W5pHUceKrDDJ\\\\r\\\\n2026-04-26 12:36:01 sr63qzPaUVNj0Vu2zFG8sEEMES55/JIKCoj6O66j821/qJ97RLPP5pKUpp2gCS7F\\\\r\\\\n2026-04-26 12:36:01 GyCzMBiTsF4zNCr+FA1rQUCZqa50S3Gu90KANsv7VX1krJXXaSXQFaiDAyB+zL0f\\\\r\\\\n2026-04-26 12:36:01 SQR7WrimYwMQaGX8c75+8L7NK2zdxMQH0chtdqv79WmoOn+fWGupCq7NlA32s7rb\\\\r\\\\n2026-04-26 12:36:01 Cq4auSoIF5ovQqw2F2wgi2nBpHwfF5ka6qSaQA4wiACrxkC255lCaAzy9jky4Ldt\\\\r\\\\n2026-04-26 12:36:01 1iSmA7q2JSu8HEN8NG9AQqP+l44HRXFzJsF3cXTaOzKZKYlhlx5btb8F+M9aCgXi\\\\r\\\\n2026-04-26 12:36:01 pICqo0FqkQ03ULwswnF8yXsjpYkx63lc0pLStKn7dxI+cSOYYCu0cbxcBoZyqmH1\\\\r\\\\n2026-04-26 12:36:01 Kqmr2XMicIWCxQoiW4YT5UYfNsfwmRUWkJwmCahUFSzo5swUpBbeCo6bsEdkyxMM\\\\r\\\\n2026-04-26 12:36:01 I5bNV1cjSII5liHOyxnvZ77+giZAKglsiI3ZmmVh+l8fvDBDaLVmmMRfcwRHOxu1\\\\r\\\\n2026-04-26 12:36:01 UMRr047T8ggKgEnyhQLK/FJh+Yp8ubo6wsTUwyyVcRULUVWeJbka6EDkMbPucHHb\\\\r\\\\n2026-04-26 12:36:01 vDdO61eP2yB+uQlwbBr1UquiQD1XrBHXFVwDw6rJoJxTkGQggaofpsUPa3F561LV\\\\r\\\\n2026-04-26 12:36:01 aQAFxU9BAgmdYb4uJxtlt46DCbx2tFW2OnoqQrpFW7nWlwmLJ2dUhIRkySTyhJpq\\\\r\\\\n2026-04-26 12:36:01 K0hnrLThhA1tu8q3dTXOCDs+8csKnI9vVSqAFm6ax3lI6ilBFVIgyZi7dBI1TCKp\\\\r\\\\n2026-04-26 12:36:01 rDbvCzcWY6dxEUzHqTELG5sd955LQgoei2/86QDquRIgB2PGqblBYylUOA9tBTAv\\\\r\\\\n2026-04-26 12:36:01 wSVKoZuonI4ijDZz5yec2C9DiCZva6MbxASOLBl05qfeeDbzkhOWsas2ZpMRmaS8\\\\r\\\\n2026-04-26 12:36:01 dI0Tmp732GkddM2R879ULHp0x4CI4Vh42mN/m22OInwW4mlPaUAy4MQUOWvuWb6/\\\\r\\\\n2026-04-26 12:36:01 o2/HcXJCoj9JsULCKXchFrawJHTgCTpi9BicMpmnPHpnpxlYRw77p4qWcmGqs2Yi\\\\r\\\\n2026-04-26 12:36:01 gQLAAQhZxzpT8MPgsomgC2nySQthEHsvF4XVbL60ImBv9Qig2hd7Jh4cI0D/+TdC\\\\r\\\\n2026-04-26 12:36:01 tky6B1MyPAxYCTN2QXXCo6CbdzMoVBhXuAI7prv2DA5zUwNCpxBKs2BgSIZ9677J\\\\r\\\\n2026-04-26 12:36:01 RlxpsqbbVLVJl6BdbJcMRjIWEW0flKwbSb/PdEuEGheu5UuRZ4/MxrzrciW35CxX\\\\r\\\\n2026-04-26 12:36:01 +XYlHBLCOQ6MCCSYtAy9olSBxQ1iMkiP0V20Crzm6JapZWxTC1EEFgMXAJERMXin\\\\r\\\\n2026-04-26 12:36:01 NiY0wK8f8JFABRBxMZeHyBtT6EobR2Q1Ozcjmhb98rK6wUVhorCGV0mbZ4jzVFtH\\\\r\\\\n2026-04-26 12:36:01 YD9UoTAQrI22NGLy+BupkM7OmaQ82SWZlZ8eiSqv5z7aBI8AAWOORHCYW07i9kCy\\\\r\\\\n2026-04-26 12:36:01 OJ4nB3/Ko4OTiUeGYamtlj9/k7alhM5BE2fkEoygYFvL1cfFXMHH+wOEonSMi5qo\\\\r\\\\n2026-04-26 12:36:01 smQrWalr8aPEPGkXWYDjMsBZ4rHQ00z+cE3YiXJXMj2Y8JMY9LJrR1asaEY3IoBx\\\\r\\\\n2026-04-26 12:36:01 ose+UxmIsZr1OD/Jy1euBJo0IQX3gnrvdGl9u8zQeCes+g5xl68gAU8n1J/Z4DoB\\\\r\\\\n2026-04-26 12:36:01 Y0mUMEgOuMu6aAvmQc/lqqP7lwrCKCfVe6SS6w2w3I9GrL2/3GkQkXJSc4rmZb7u\\\\r\\\\n2026-04-26 12:36:01 JoAFyHleVFAnDFXlhLKFl0h3x7TD26LK2LApnLI344MvE6ZG9RFA6w2Q6JtRIEWU\\\\r\\\\n2026-04-26 12:36:01 lheqsm3z9sfcOiHW/GWw0nTkC8btOFZ0uBTThDnHg0BvuXzmBDcle1GpXJdyzLyl\\\\r\\\\n2026-04-26 12:36:01 cW4qlLb15J1zMb/hVBNGagquATVVclvcVKYGYkNsxGpWBC8/8iJTEUKEMwqti7PR\\\\r\\\\n2026-04-26 12:36:01 yh+r058rdhlVML+0F5aDJwjslkCppGpJF5nGQn4pwBzViz752YFUgRRz2jrhFYHE\\\\r\\\\n2026-04-26 12:36:01 KaVCtcczpnZhtqNMY49aRMaTphHu4YpgglMjbDuZ5wiK27Fq5RM+lF6sIG6SGycb\\\\r\\\\n2026-04-26 12:36:01 4whptwXeepJbATEQ55FWWckLVJ5lVWuZ0pCOMguparXRwXECzGnIHLxehCexiZqA\\\\r\\\\n2026-04-26 12:36:01 QLJZNAFOyB3IhHZo5TrJY5sNIMXU94yraZLmQQ3cRMntNiW8kp6Pqj3I40bqlL3F\\\\r\\\\n2026-04-26 12:36:01 ahwNl8qwsjl44hMmWMfQk1c5OpCtkGJcIpIF08ILxDknAyBTQ35BJXMJ9XtI0nt2\\\\r\\\\n2026-04-26 12:36:01 OiGGA6YUqbb68bmXbEhzKQhulHs8GWh/sgXiN3NoI5ns6nU0a3e6Oz2BkXY708iM\\\\r\\\\n2026-04-26 12:36:01 oxrQxsZ4uoM/pjlHG5xeOM62B3tpeghU5iFfOgr+hH9mGcOx4cSoNjn3a5gvMJqc\\\\r\\\\n2026-04-26 12:36:01 Ycc60cOGalwlpLruUy4rdDwhInvsGAmaapDq8IxRpS/AIpij4Y/SmMl9uisvqBr9\\\\r\\\\n2026-04-26 12:36:01 ypg1olTOJ8rk08AXY0Kl2D9lS5GK11g2VWtCgKiMdS/RvAXJnJGkdStVTGYiCnHJ\\\\r\\\\n2026-04-26 12:36:01 OjgyHTrR2a+N2ZiYTldYtmF6H9pm/lfv6FNtw2cNQzqGoSSsrAHEugO0d94keir2\\\\r\\\\n2026-04-26 12:36:01 62w9ymkZWDurfZDVT8OIVWXhgKlR44rEMqSAR+iv6ap61WM2ZMFejOGy4XrDjLrH\\\\r\\\\n2026-04-26 12:36:01 qwI=\\\\r\\\\n2026-04-26 12:36:01 -----END PRIVATE KEY-----\",\n                \"value_start\": 157,\n                \"value_end\": 6245,\n                \"entropy\": 5.8771\n            }\n        ]\n    },\n    {\n        \"rule\": \"Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"{\\\"ML-KEM-1024.log\\\":\\\"\\\\r\\\\n\\\\r\\\\n#7 [4/4] RUN openssl genpkey -algorithm ML-KEM-1024 -out mlkem-privatekey.pem && cat mlkem-privatekey.pem\\\\r\\\\n2026-04-26 12:36:01 -----BEGIN PRIVATE KEY-----\\\\r\\\\n2026-04-26 12:36:01 MIIMvgIBADALBglghkgBZQMEBAMEggyqMIIMpgRATqJGETTwhb2gxXF41z3G5ztP\\\\r\\\\n2026-04-26 12:36:01 I+dcZ5zCOnpcALAIw+OAqVHjisQypIBH6K/pqnrVYzZkwV6M4bLhesOMuserAgSC\\\\r\\\\n2026-04-26 12:36:01 DGAygxLkWHaG9AEmQJsg1MeFxsNyehNphDUdaKHxVmXPYUNVm3J4c5+xBZigd8pa\\\\r\\\\n2026-04-26 12:36:01 LEIX4H6JKVWAwKs5UkCLw3uB434w+6mWMJlUjDwWZSGgEiRjS21nx6eKyLqlLE16\\\\r\\\\n2026-04-26 12:36:01 XAZ5Rg2oJAL5CVj8uAe7pUdweySS4EBgdMPJ9o0cEZDP5aD9yTSIeXzi1bgGJQ/s\\\\r\\\\n2026-04-26 12:36:01 aJ5DxXUVXDWTZgA05CHuojS/R1WlO2o30rxV4azc+Yr7IcR89i4wNGHUNQFmhhBF\\\\r\\\\n2026-04-26 12:36:01 OYyA41Ls/ESNS1UGWwfCuZ89CBzjjBQZhxp4ELW+ZLa+1w3iUhJZEYoc9GQm7E+v\\\\r\\\\n2026-04-26 12:36:01 VIQvl4RxKF8WZAc4uTaisTwcNAhYK5m5gpX5ZHLgBndWRjE32kOvask2BLdgjJig\\\\r\\\\n2026-04-26 12:36:01 Fs9mKlRU+ZqIQxukBDO6xkHjSr1JxIP2HJNyiiZxgCUKSi/I5h4UObW1yjNv0Ymw\\\\r\\\\n2026-04-26 12:36:01 FE/csKq4gcWvPD/QuFeW4XFQcZaoqkQVILnjVG10NqOTlDJaywMhcgjQq2QQlVXH\\\\r\\\\n2026-04-26 12:36:01 zMBgJI3W9qLDYFY69rN/xnL68wg5B1xv62ChNo4eTLlppGmNlLfX6YleXLYK2pTj\\\\r\\\\n2026-04-26 12:36:01 cmIbK3nvQ7BGLAXVMMYFOkkht0mHVC4sS3mwdUtS2l5KECOq1R+g4mrrAUyGpI1B\\\\r\\\\n2026-04-26 12:36:01 68+Eg5DkM86BUYI9N86V4cUtNGDbsmaJgCurGJHHupeJQhWj+Q2CNlXmSaP+mCau\\\\r\\\\n2026-04-26 12:36:01 GUEMVn/PVmqhSJIj+yEsojeZykecYXo7LMxiJkuX8HZ9R3ynOHdedcfV4DdAJc1E\\\\r\\\\n2026-04-26 12:36:01 t51bOzjJlLIlUEQicJcXMCrBJ8pL1bHJGkT7t7gxnC72Qz7D2Czh20oJIgFTs1yJ\\\\r\\\\n2026-04-26 12:36:01 kQSTxDFcMsakyRRZAAcDyGMGUnrMxIVSyrQDhIQrORaeiTDHcaS6pDuz5kkJsT+Y\\\\r\\\\n2026-04-26 12:36:01 ki/ZkkAldBpX4sDD1zvC6LyWU1IlZcx9F5V7I0P/BrpSwrvjNQEIeW4tNR1+fEYW\\\\r\\\\n2026-04-26 12:36:01 fE7gewlJZbTCVqTcQ7wQ+kA7JEQkU6I8YaIXuiwiG55EuSsO2MzpApgFtmAcWlT4\\\\r\\\\n2026-04-26 12:36:01 ybWzhp7kqwRFolOi6hb9y8y4aDRkRltYcTPswcjh40k1spoCRlwCcgahgTnuWJ8O\\\\r\\\\n2026-04-26 12:36:01 qq4uxkY8xkFvJ4VqZjcl7AbhdJg3R5gqlbhPZmEXBn3teYbihzMCBRI3RTI5/Hy2\\\\r\\\\n2026-04-26 12:36:01 Yh4VhW+MqaukgRTPk50aKFjEs0vj6D1RpLRUmq/EI2GKZbtZc4MDR8kZWXsP5yqO\\\\r\\\\n2026-04-26 12:36:01 o2OcG66cSXR5KrzmNRNdci1GNafm5qHiqj5NsnDax1B8t1hkpV+VMkZKGxGXt2YP\\\\r\\\\n2026-04-26 12:36:01 gx1/q1EgS5w2ciAuC8u5gitd1ie43B5lsysO0MY31Qy1eGO1Sj0g4pxM2szbpwso\\\\r\\\\n2026-04-26 12:36:01 0RZL8aKk645hElitcXDx8wUVc0Zm/Av4FsSiZkhFeKaHSAXJtTtlAkLMMTZaNwBA\\\\r\\\\n2026-04-26 12:36:01 hqmHqqtalptZmwGz2F0dmXF9cy+gOxzaBhQbVcH8SDdchpgTl14B93qh2iY2RjxY\\\\r\\\\n2026-04-26 12:36:01 Eb3kpsPG0cdLTAAahEALuMu26YFpglJXAkwSwSLPYsGRPHjJFiXfWBR05x5y5wdB\\\\r\\\\n2026-04-26 12:36:01 1jhhqlV6ZHO/osEJKb6tSHH0mYf0uMNu2speu2DgsjCjHHJwtSJMayfO1WZcSF+G\\\\r\\\\n2026-04-26 12:36:01 wFXOY77MgB3VwMRcCoTMNwoBswcJeZRyNL+cHLZZcK0kpEJbBY60W5pHUceKrDDJ\\\\r\\\\n2026-04-26 12:36:01 sr63qzPaUVNj0Vu2zFG8sEEMES55/JIKCoj6O66j821/qJ97RLPP5pKUpp2gCS7F\\\\r\\\\n2026-04-26 12:36:01 GyCzMBiTsF4zNCr+FA1rQUCZqa50S3Gu90KANsv7VX1krJXXaSXQFaiDAyB+zL0f\\\\r\\\\n2026-04-26 12:36:01 SQR7WrimYwMQaGX8c75+8L7NK2zdxMQH0chtdqv79WmoOn+fWGupCq7NlA32s7rb\\\\r\\\\n2026-04-26 12:36:01 Cq4auSoIF5ovQqw2F2wgi2nBpHwfF5ka6qSaQA4wiACrxkC255lCaAzy9jky4Ldt\\\\r\\\\n2026-04-26 12:36:01 1iSmA7q2JSu8HEN8NG9AQqP+l44HRXFzJsF3cXTaOzKZKYlhlx5btb8F+M9aCgXi\\\\r\\\\n2026-04-26 12:36:01 pICqo0FqkQ03ULwswnF8yXsjpYkx63lc0pLStKn7dxI+cSOYYCu0cbxcBoZyqmH1\\\\r\\\\n2026-04-26 12:36:01 Kqmr2XMicIWCxQoiW4YT5UYfNsfwmRUWkJwmCahUFSzo5swUpBbeCo6bsEdkyxMM\\\\r\\\\n2026-04-26 12:36:01 I5bNV1cjSII5liHOyxnvZ77+giZAKglsiI3ZmmVh+l8fvDBDaLVmmMRfcwRHOxu1\\\\r\\\\n2026-04-26 12:36:01 UMRr047T8ggKgEnyhQLK/FJh+Yp8ubo6wsTUwyyVcRULUVWeJbka6EDkMbPucHHb\\\\r\\\\n2026-04-26 12:36:01 vDdO61eP2yB+uQlwbBr1UquiQD1XrBHXFVwDw6rJoJxTkGQggaofpsUPa3F561LV\\\\r\\\\n2026-04-26 12:36:01 aQAFxU9BAgmdYb4uJxtlt46DCbx2tFW2OnoqQrpFW7nWlwmLJ2dUhIRkySTyhJpq\\\\r\\\\n2026-04-26 12:36:01 K0hnrLThhA1tu8q3dTXOCDs+8csKnI9vVSqAFm6ax3lI6ilBFVIgyZi7dBI1TCKp\\\\r\\\\n2026-04-26 12:36:01 rDbvCzcWY6dxEUzHqTELG5sd955LQgoei2/86QDquRIgB2PGqblBYylUOA9tBTAv\\\\r\\\\n2026-04-26 12:36:01 wSVKoZuonI4ijDZz5yec2C9DiCZva6MbxASOLBl05qfeeDbzkhOWsas2ZpMRmaS8\\\\r\\\\n2026-04-26 12:36:01 dI0Tmp732GkddM2R879ULHp0x4CI4Vh42mN/m22OInwW4mlPaUAy4MQUOWvuWb6/\\\\r\\\\n2026-04-26 12:36:01 o2/HcXJCoj9JsULCKXchFrawJHTgCTpi9BicMpmnPHpnpxlYRw77p4qWcmGqs2Yi\\\\r\\\\n2026-04-26 12:36:01 gQLAAQhZxzpT8MPgsomgC2nySQthEHsvF4XVbL60ImBv9Qig2hd7Jh4cI0D/+TdC\\\\r\\\\n2026-04-26 12:36:01 tky6B1MyPAxYCTN2QXXCo6CbdzMoVBhXuAI7prv2DA5zUwNCpxBKs2BgSIZ9677J\\\\r\\\\n2026-04-26 12:36:01 RlxpsqbbVLVJl6BdbJcMRjIWEW0flKwbSb/PdEuEGheu5UuRZ4/MxrzrciW35CxX\\\\r\\\\n2026-04-26 12:36:01 +XYlHBLCOQ6MCCSYtAy9olSBxQ1iMkiP0V20Crzm6JapZWxTC1EEFgMXAJERMXin\\\\r\\\\n2026-04-26 12:36:01 NiY0wK8f8JFABRBxMZeHyBtT6EobR2Q1Ozcjmhb98rK6wUVhorCGV0mbZ4jzVFtH\\\\r\\\\n2026-04-26 12:36:01 YD9UoTAQrI22NGLy+BupkM7OmaQ82SWZlZ8eiSqv5z7aBI8AAWOORHCYW07i9kCy\\\\r\\\\n2026-04-26 12:36:01 OJ4nB3/Ko4OTiUeGYamtlj9/k7alhM5BE2fkEoygYFvL1cfFXMHH+wOEonSMi5qo\\\\r\\\\n2026-04-26 12:36:01 smQrWalr8aPEPGkXWYDjMsBZ4rHQ00z+cE3YiXJXMj2Y8JMY9LJrR1asaEY3IoBx\\\\r\\\\n2026-04-26 12:36:01 ose+UxmIsZr1OD/Jy1euBJo0IQX3gnrvdGl9u8zQeCes+g5xl68gAU8n1J/Z4DoB\\\\r\\\\n2026-04-26 12:36:01 Y0mUMEgOuMu6aAvmQc/lqqP7lwrCKCfVe6SS6w2w3I9GrL2/3GkQkXJSc4rmZb7u\\\\r\\\\n2026-04-26 12:36:01 JoAFyHleVFAnDFXlhLKFl0h3x7TD26LK2LApnLI344MvE6ZG9RFA6w2Q6JtRIEWU\\\\r\\\\n2026-04-26 12:36:01 lheqsm3z9sfcOiHW/GWw0nTkC8btOFZ0uBTThDnHg0BvuXzmBDcle1GpXJdyzLyl\\\\r\\\\n2026-04-26 12:36:01 cW4qlLb15J1zMb/hVBNGagquATVVclvcVKYGYkNsxGpWBC8/8iJTEUKEMwqti7PR\\\\r\\\\n2026-04-26 12:36:01 yh+r058rdhlVML+0F5aDJwjslkCppGpJF5nGQn4pwBzViz752YFUgRRz2jrhFYHE\\\\r\\\\n2026-04-26 12:36:01 KaVCtcczpnZhtqNMY49aRMaTphHu4YpgglMjbDuZ5wiK27Fq5RM+lF6sIG6SGycb\\\\r\\\\n2026-04-26 12:36:01 4whptwXeepJbATEQ55FWWckLVJ5lVWuZ0pCOMguparXRwXECzGnIHLxehCexiZqA\\\\r\\\\n2026-04-26 12:36:01 QLJZNAFOyB3IhHZo5TrJY5sNIMXU94yraZLmQQ3cRMntNiW8kp6Pqj3I40bqlL3F\\\\r\\\\n2026-04-26 12:36:01 ahwNl8qwsjl44hMmWMfQk1c5OpCtkGJcIpIF08ILxDknAyBTQ35BJXMJ9XtI0nt2\\\\r\\\\n2026-04-26 12:36:01 OiGGA6YUqbb68bmXbEhzKQhulHs8GWh/sgXiN3NoI5ns6nU0a3e6Oz2BkXY708iM\\\\r\\\\n2026-04-26 12:36:01 oxrQxsZ4uoM/pjlHG5xeOM62B3tpeghU5iFfOgr+hH9mGcOx4cSoNjn3a5gvMJqc\\\\r\\\\n2026-04-26 12:36:01 Ycc60cOGalwlpLruUy4rdDwhInvsGAmaapDq8IxRpS/AIpij4Y/SmMl9uisvqBr9\\\\r\\\\n2026-04-26 12:36:01 ypg1olTOJ8rk08AXY0Kl2D9lS5GK11g2VWtCgKiMdS/RvAXJnJGkdStVTGYiCnHJ\\\\r\\\\n2026-04-26 12:36:01 OjgyHTrR2a+N2ZiYTldYtmF6H9pm/lfv6FNtw2cNQzqGoSSsrAHEugO0d94keir2\\\\r\\\\n2026-04-26 12:36:01 62w9ymkZWDurfZDVT8OIVWXhgKlR44rEMqSAR+iv6ap61WM2ZMFejOGy4XrDjLrH\\\\r\\\\n2026-04-26 12:36:01 qwI=\\\\r\\\\n2026-04-26 12:36:01 -----END PRIVATE KEY-----\\\\r\\\\n#7 DONE 0.3s\\\\r\\\\n\\\\r\\\\n#8 exporting to image\\\\r\\\\n#8 exporting layers 0.1s done\\\\r\\\\n#8 writing image sha256:3ed48eb4eb0c17e6baaf691a361afd8c75572517e5b729849da4e5344bf7f244 done\\\\r\\\\n#8 DONE 0.2s\\\"}\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/pem_key.p.log.json\",\n                \"info\": \"\",\n                \"variable\": \"mlkem-privatekey.pem\\\\r\\\\n2026-04-26 12\",\n                \"variable_start\": 113,\n                \"variable_end\": 150,\n                \"value\": \"36:01\",\n                \"value_start\": 151,\n                \"value_end\": 156,\n                \"entropy\": 2.32193\n            }\n        ]\n    },\n    {\n        \"rule\": \"Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"{\\\"ML-KEM-1024.log\\\":\\\"\\\\r\\\\n\\\\r\\\\n#7 [4/4] RUN openssl genpkey -algorithm ML-KEM-1024 -out mlkem-privatekey.pem && cat mlkem-privatekey.pem\\\\r\\\\n2026-04-26 12:36:01 -----BEGIN PRIVATE KEY-----\\\\r\\\\n2026-04-26 12:36:01 MIIMvgIBADALBglghkgBZQMEBAMEggyqMIIMpgRATqJGETTwhb2gxXF41z3G5ztP\\\\r\\\\n2026-04-26 12:36:01 I+dcZ5zCOnpcALAIw+OAqVHjisQypIBH6K/pqnrVYzZkwV6M4bLhesOMuserAgSC\\\\r\\\\n2026-04-26 12:36:01 DGAygxLkWHaG9AEmQJsg1MeFxsNyehNphDUdaKHxVmXPYUNVm3J4c5+xBZigd8pa\\\\r\\\\n2026-04-26 12:36:01 LEIX4H6JKVWAwKs5UkCLw3uB434w+6mWMJlUjDwWZSGgEiRjS21nx6eKyLqlLE16\\\\r\\\\n2026-04-26 12:36:01 XAZ5Rg2oJAL5CVj8uAe7pUdweySS4EBgdMPJ9o0cEZDP5aD9yTSIeXzi1bgGJQ/s\\\\r\\\\n2026-04-26 12:36:01 aJ5DxXUVXDWTZgA05CHuojS/R1WlO2o30rxV4azc+Yr7IcR89i4wNGHUNQFmhhBF\\\\r\\\\n2026-04-26 12:36:01 OYyA41Ls/ESNS1UGWwfCuZ89CBzjjBQZhxp4ELW+ZLa+1w3iUhJZEYoc9GQm7E+v\\\\r\\\\n2026-04-26 12:36:01 VIQvl4RxKF8WZAc4uTaisTwcNAhYK5m5gpX5ZHLgBndWRjE32kOvask2BLdgjJig\\\\r\\\\n2026-04-26 12:36:01 Fs9mKlRU+ZqIQxukBDO6xkHjSr1JxIP2HJNyiiZxgCUKSi/I5h4UObW1yjNv0Ymw\\\\r\\\\n2026-04-26 12:36:01 FE/csKq4gcWvPD/QuFeW4XFQcZaoqkQVILnjVG10NqOTlDJaywMhcgjQq2QQlVXH\\\\r\\\\n2026-04-26 12:36:01 zMBgJI3W9qLDYFY69rN/xnL68wg5B1xv62ChNo4eTLlppGmNlLfX6YleXLYK2pTj\\\\r\\\\n2026-04-26 12:36:01 cmIbK3nvQ7BGLAXVMMYFOkkht0mHVC4sS3mwdUtS2l5KECOq1R+g4mrrAUyGpI1B\\\\r\\\\n2026-04-26 12:36:01 68+Eg5DkM86BUYI9N86V4cUtNGDbsmaJgCurGJHHupeJQhWj+Q2CNlXmSaP+mCau\\\\r\\\\n2026-04-26 12:36:01 GUEMVn/PVmqhSJIj+yEsojeZykecYXo7LMxiJkuX8HZ9R3ynOHdedcfV4DdAJc1E\\\\r\\\\n2026-04-26 12:36:01 t51bOzjJlLIlUEQicJcXMCrBJ8pL1bHJGkT7t7gxnC72Qz7D2Czh20oJIgFTs1yJ\\\\r\\\\n2026-04-26 12:36:01 kQSTxDFcMsakyRRZAAcDyGMGUnrMxIVSyrQDhIQrORaeiTDHcaS6pDuz5kkJsT+Y\\\\r\\\\n2026-04-26 12:36:01 ki/ZkkAldBpX4sDD1zvC6LyWU1IlZcx9F5V7I0P/BrpSwrvjNQEIeW4tNR1+fEYW\\\\r\\\\n2026-04-26 12:36:01 fE7gewlJZbTCVqTcQ7wQ+kA7JEQkU6I8YaIXuiwiG55EuSsO2MzpApgFtmAcWlT4\\\\r\\\\n2026-04-26 12:36:01 ybWzhp7kqwRFolOi6hb9y8y4aDRkRltYcTPswcjh40k1spoCRlwCcgahgTnuWJ8O\\\\r\\\\n2026-04-26 12:36:01 qq4uxkY8xkFvJ4VqZjcl7AbhdJg3R5gqlbhPZmEXBn3teYbihzMCBRI3RTI5/Hy2\\\\r\\\\n2026-04-26 12:36:01 Yh4VhW+MqaukgRTPk50aKFjEs0vj6D1RpLRUmq/EI2GKZbtZc4MDR8kZWXsP5yqO\\\\r\\\\n2026-04-26 12:36:01 o2OcG66cSXR5KrzmNRNdci1GNafm5qHiqj5NsnDax1B8t1hkpV+VMkZKGxGXt2YP\\\\r\\\\n2026-04-26 12:36:01 gx1/q1EgS5w2ciAuC8u5gitd1ie43B5lsysO0MY31Qy1eGO1Sj0g4pxM2szbpwso\\\\r\\\\n2026-04-26 12:36:01 0RZL8aKk645hElitcXDx8wUVc0Zm/Av4FsSiZkhFeKaHSAXJtTtlAkLMMTZaNwBA\\\\r\\\\n2026-04-26 12:36:01 hqmHqqtalptZmwGz2F0dmXF9cy+gOxzaBhQbVcH8SDdchpgTl14B93qh2iY2RjxY\\\\r\\\\n2026-04-26 12:36:01 Eb3kpsPG0cdLTAAahEALuMu26YFpglJXAkwSwSLPYsGRPHjJFiXfWBR05x5y5wdB\\\\r\\\\n2026-04-26 12:36:01 1jhhqlV6ZHO/osEJKb6tSHH0mYf0uMNu2speu2DgsjCjHHJwtSJMayfO1WZcSF+G\\\\r\\\\n2026-04-26 12:36:01 wFXOY77MgB3VwMRcCoTMNwoBswcJeZRyNL+cHLZZcK0kpEJbBY60W5pHUceKrDDJ\\\\r\\\\n2026-04-26 12:36:01 sr63qzPaUVNj0Vu2zFG8sEEMES55/JIKCoj6O66j821/qJ97RLPP5pKUpp2gCS7F\\\\r\\\\n2026-04-26 12:36:01 GyCzMBiTsF4zNCr+FA1rQUCZqa50S3Gu90KANsv7VX1krJXXaSXQFaiDAyB+zL0f\\\\r\\\\n2026-04-26 12:36:01 SQR7WrimYwMQaGX8c75+8L7NK2zdxMQH0chtdqv79WmoOn+fWGupCq7NlA32s7rb\\\\r\\\\n2026-04-26 12:36:01 Cq4auSoIF5ovQqw2F2wgi2nBpHwfF5ka6qSaQA4wiACrxkC255lCaAzy9jky4Ldt\\\\r\\\\n2026-04-26 12:36:01 1iSmA7q2JSu8HEN8NG9AQqP+l44HRXFzJsF3cXTaOzKZKYlhlx5btb8F+M9aCgXi\\\\r\\\\n2026-04-26 12:36:01 pICqo0FqkQ03ULwswnF8yXsjpYkx63lc0pLStKn7dxI+cSOYYCu0cbxcBoZyqmH1\\\\r\\\\n2026-04-26 12:36:01 Kqmr2XMicIWCxQoiW4YT5UYfNsfwmRUWkJwmCahUFSzo5swUpBbeCo6bsEdkyxMM\\\\r\\\\n2026-04-26 12:36:01 I5bNV1cjSII5liHOyxnvZ77+giZAKglsiI3ZmmVh+l8fvDBDaLVmmMRfcwRHOxu1\\\\r\\\\n2026-04-26 12:36:01 UMRr047T8ggKgEnyhQLK/FJh+Yp8ubo6wsTUwyyVcRULUVWeJbka6EDkMbPucHHb\\\\r\\\\n2026-04-26 12:36:01 vDdO61eP2yB+uQlwbBr1UquiQD1XrBHXFVwDw6rJoJxTkGQggaofpsUPa3F561LV\\\\r\\\\n2026-04-26 12:36:01 aQAFxU9BAgmdYb4uJxtlt46DCbx2tFW2OnoqQrpFW7nWlwmLJ2dUhIRkySTyhJpq\\\\r\\\\n2026-04-26 12:36:01 K0hnrLThhA1tu8q3dTXOCDs+8csKnI9vVSqAFm6ax3lI6ilBFVIgyZi7dBI1TCKp\\\\r\\\\n2026-04-26 12:36:01 rDbvCzcWY6dxEUzHqTELG5sd955LQgoei2/86QDquRIgB2PGqblBYylUOA9tBTAv\\\\r\\\\n2026-04-26 12:36:01 wSVKoZuonI4ijDZz5yec2C9DiCZva6MbxASOLBl05qfeeDbzkhOWsas2ZpMRmaS8\\\\r\\\\n2026-04-26 12:36:01 dI0Tmp732GkddM2R879ULHp0x4CI4Vh42mN/m22OInwW4mlPaUAy4MQUOWvuWb6/\\\\r\\\\n2026-04-26 12:36:01 o2/HcXJCoj9JsULCKXchFrawJHTgCTpi9BicMpmnPHpnpxlYRw77p4qWcmGqs2Yi\\\\r\\\\n2026-04-26 12:36:01 gQLAAQhZxzpT8MPgsomgC2nySQthEHsvF4XVbL60ImBv9Qig2hd7Jh4cI0D/+TdC\\\\r\\\\n2026-04-26 12:36:01 tky6B1MyPAxYCTN2QXXCo6CbdzMoVBhXuAI7prv2DA5zUwNCpxBKs2BgSIZ9677J\\\\r\\\\n2026-04-26 12:36:01 RlxpsqbbVLVJl6BdbJcMRjIWEW0flKwbSb/PdEuEGheu5UuRZ4/MxrzrciW35CxX\\\\r\\\\n2026-04-26 12:36:01 +XYlHBLCOQ6MCCSYtAy9olSBxQ1iMkiP0V20Crzm6JapZWxTC1EEFgMXAJERMXin\\\\r\\\\n2026-04-26 12:36:01 NiY0wK8f8JFABRBxMZeHyBtT6EobR2Q1Ozcjmhb98rK6wUVhorCGV0mbZ4jzVFtH\\\\r\\\\n2026-04-26 12:36:01 YD9UoTAQrI22NGLy+BupkM7OmaQ82SWZlZ8eiSqv5z7aBI8AAWOORHCYW07i9kCy\\\\r\\\\n2026-04-26 12:36:01 OJ4nB3/Ko4OTiUeGYamtlj9/k7alhM5BE2fkEoygYFvL1cfFXMHH+wOEonSMi5qo\\\\r\\\\n2026-04-26 12:36:01 smQrWalr8aPEPGkXWYDjMsBZ4rHQ00z+cE3YiXJXMj2Y8JMY9LJrR1asaEY3IoBx\\\\r\\\\n2026-04-26 12:36:01 ose+UxmIsZr1OD/Jy1euBJo0IQX3gnrvdGl9u8zQeCes+g5xl68gAU8n1J/Z4DoB\\\\r\\\\n2026-04-26 12:36:01 Y0mUMEgOuMu6aAvmQc/lqqP7lwrCKCfVe6SS6w2w3I9GrL2/3GkQkXJSc4rmZb7u\\\\r\\\\n2026-04-26 12:36:01 JoAFyHleVFAnDFXlhLKFl0h3x7TD26LK2LApnLI344MvE6ZG9RFA6w2Q6JtRIEWU\\\\r\\\\n2026-04-26 12:36:01 lheqsm3z9sfcOiHW/GWw0nTkC8btOFZ0uBTThDnHg0BvuXzmBDcle1GpXJdyzLyl\\\\r\\\\n2026-04-26 12:36:01 cW4qlLb15J1zMb/hVBNGagquATVVclvcVKYGYkNsxGpWBC8/8iJTEUKEMwqti7PR\\\\r\\\\n2026-04-26 12:36:01 yh+r058rdhlVML+0F5aDJwjslkCppGpJF5nGQn4pwBzViz752YFUgRRz2jrhFYHE\\\\r\\\\n2026-04-26 12:36:01 KaVCtcczpnZhtqNMY49aRMaTphHu4YpgglMjbDuZ5wiK27Fq5RM+lF6sIG6SGycb\\\\r\\\\n2026-04-26 12:36:01 4whptwXeepJbATEQ55FWWckLVJ5lVWuZ0pCOMguparXRwXECzGnIHLxehCexiZqA\\\\r\\\\n2026-04-26 12:36:01 QLJZNAFOyB3IhHZo5TrJY5sNIMXU94yraZLmQQ3cRMntNiW8kp6Pqj3I40bqlL3F\\\\r\\\\n2026-04-26 12:36:01 ahwNl8qwsjl44hMmWMfQk1c5OpCtkGJcIpIF08ILxDknAyBTQ35BJXMJ9XtI0nt2\\\\r\\\\n2026-04-26 12:36:01 OiGGA6YUqbb68bmXbEhzKQhulHs8GWh/sgXiN3NoI5ns6nU0a3e6Oz2BkXY708iM\\\\r\\\\n2026-04-26 12:36:01 oxrQxsZ4uoM/pjlHG5xeOM62B3tpeghU5iFfOgr+hH9mGcOx4cSoNjn3a5gvMJqc\\\\r\\\\n2026-04-26 12:36:01 Ycc60cOGalwlpLruUy4rdDwhInvsGAmaapDq8IxRpS/AIpij4Y/SmMl9uisvqBr9\\\\r\\\\n2026-04-26 12:36:01 ypg1olTOJ8rk08AXY0Kl2D9lS5GK11g2VWtCgKiMdS/RvAXJnJGkdStVTGYiCnHJ\\\\r\\\\n2026-04-26 12:36:01 OjgyHTrR2a+N2ZiYTldYtmF6H9pm/lfv6FNtw2cNQzqGoSSsrAHEugO0d94keir2\\\\r\\\\n2026-04-26 12:36:01 62w9ymkZWDurfZDVT8OIVWXhgKlR44rEMqSAR+iv6ap61WM2ZMFejOGy4XrDjLrH\\\\r\\\\n2026-04-26 12:36:01 qwI=\\\\r\\\\n2026-04-26 12:36:01 -----END PRIVATE KEY-----\\\\r\\\\n#7 DONE 0.3s\\\\r\\\\n\\\\r\\\\n#8 exporting to image\\\\r\\\\n#8 exporting layers 0.1s done\\\\r\\\\n#8 writing image sha256:3ed48eb4eb0c17e6baaf691a361afd8c75572517e5b729849da4e5344bf7f244 done\\\\r\\\\n#8 DONE 0.2s\\\"}\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/pem_key.p.log.json\",\n                \"info\": \"\",\n                \"variable\": \"KEY-----\\\\r\\\\n2026-04-26 12\",\n                \"variable_start\": 176,\n                \"variable_end\": 201,\n                \"value\": \"36:01\",\n                \"value_start\": 202,\n                \"value_end\": 207,\n                \"entropy\": 2.32193\n            }\n        ]\n    },\n    {\n        \"rule\": \"BASE64 Private Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"{\\\"ML-KEM-1024.log\\\":\\\"\\\\r\\\\n\\\\r\\\\n#7 [4/4] RUN openssl genpkey -algorithm ML-KEM-1024 -out mlkem-privatekey.pem && cat mlkem-privatekey.pem\\\\r\\\\n2026-04-26 12:36:01 -----BEGIN PRIVATE KEY-----\\\\r\\\\n2026-04-26 12:36:01 MIIMvgIBADALBglghkgBZQMEBAMEggyqMIIMpgRATqJGETTwhb2gxXF41z3G5ztP\\\\r\\\\n2026-04-26 12:36:01 I+dcZ5zCOnpcALAIw+OAqVHjisQypIBH6K/pqnrVYzZkwV6M4bLhesOMuserAgSC\\\\r\\\\n2026-04-26 12:36:01 DGAygxLkWHaG9AEmQJsg1MeFxsNyehNphDUdaKHxVmXPYUNVm3J4c5+xBZigd8pa\\\\r\\\\n2026-04-26 12:36:01 LEIX4H6JKVWAwKs5UkCLw3uB434w+6mWMJlUjDwWZSGgEiRjS21nx6eKyLqlLE16\\\\r\\\\n2026-04-26 12:36:01 XAZ5Rg2oJAL5CVj8uAe7pUdweySS4EBgdMPJ9o0cEZDP5aD9yTSIeXzi1bgGJQ/s\\\\r\\\\n2026-04-26 12:36:01 aJ5DxXUVXDWTZgA05CHuojS/R1WlO2o30rxV4azc+Yr7IcR89i4wNGHUNQFmhhBF\\\\r\\\\n2026-04-26 12:36:01 OYyA41Ls/ESNS1UGWwfCuZ89CBzjjBQZhxp4ELW+ZLa+1w3iUhJZEYoc9GQm7E+v\\\\r\\\\n2026-04-26 12:36:01 VIQvl4RxKF8WZAc4uTaisTwcNAhYK5m5gpX5ZHLgBndWRjE32kOvask2BLdgjJig\\\\r\\\\n2026-04-26 12:36:01 Fs9mKlRU+ZqIQxukBDO6xkHjSr1JxIP2HJNyiiZxgCUKSi/I5h4UObW1yjNv0Ymw\\\\r\\\\n2026-04-26 12:36:01 FE/csKq4gcWvPD/QuFeW4XFQcZaoqkQVILnjVG10NqOTlDJaywMhcgjQq2QQlVXH\\\\r\\\\n2026-04-26 12:36:01 zMBgJI3W9qLDYFY69rN/xnL68wg5B1xv62ChNo4eTLlppGmNlLfX6YleXLYK2pTj\\\\r\\\\n2026-04-26 12:36:01 cmIbK3nvQ7BGLAXVMMYFOkkht0mHVC4sS3mwdUtS2l5KECOq1R+g4mrrAUyGpI1B\\\\r\\\\n2026-04-26 12:36:01 68+Eg5DkM86BUYI9N86V4cUtNGDbsmaJgCurGJHHupeJQhWj+Q2CNlXmSaP+mCau\\\\r\\\\n2026-04-26 12:36:01 GUEMVn/PVmqhSJIj+yEsojeZykecYXo7LMxiJkuX8HZ9R3ynOHdedcfV4DdAJc1E\\\\r\\\\n2026-04-26 12:36:01 t51bOzjJlLIlUEQicJcXMCrBJ8pL1bHJGkT7t7gxnC72Qz7D2Czh20oJIgFTs1yJ\\\\r\\\\n2026-04-26 12:36:01 kQSTxDFcMsakyRRZAAcDyGMGUnrMxIVSyrQDhIQrORaeiTDHcaS6pDuz5kkJsT+Y\\\\r\\\\n2026-04-26 12:36:01 ki/ZkkAldBpX4sDD1zvC6LyWU1IlZcx9F5V7I0P/BrpSwrvjNQEIeW4tNR1+fEYW\\\\r\\\\n2026-04-26 12:36:01 fE7gewlJZbTCVqTcQ7wQ+kA7JEQkU6I8YaIXuiwiG55EuSsO2MzpApgFtmAcWlT4\\\\r\\\\n2026-04-26 12:36:01 ybWzhp7kqwRFolOi6hb9y8y4aDRkRltYcTPswcjh40k1spoCRlwCcgahgTnuWJ8O\\\\r\\\\n2026-04-26 12:36:01 qq4uxkY8xkFvJ4VqZjcl7AbhdJg3R5gqlbhPZmEXBn3teYbihzMCBRI3RTI5/Hy2\\\\r\\\\n2026-04-26 12:36:01 Yh4VhW+MqaukgRTPk50aKFjEs0vj6D1RpLRUmq/EI2GKZbtZc4MDR8kZWXsP5yqO\\\\r\\\\n2026-04-26 12:36:01 o2OcG66cSXR5KrzmNRNdci1GNafm5qHiqj5NsnDax1B8t1hkpV+VMkZKGxGXt2YP\\\\r\\\\n2026-04-26 12:36:01 gx1/q1EgS5w2ciAuC8u5gitd1ie43B5lsysO0MY31Qy1eGO1Sj0g4pxM2szbpwso\\\\r\\\\n2026-04-26 12:36:01 0RZL8aKk645hElitcXDx8wUVc0Zm/Av4FsSiZkhFeKaHSAXJtTtlAkLMMTZaNwBA\\\\r\\\\n2026-04-26 12:36:01 hqmHqqtalptZmwGz2F0dmXF9cy+gOxzaBhQbVcH8SDdchpgTl14B93qh2iY2RjxY\\\\r\\\\n2026-04-26 12:36:01 Eb3kpsPG0cdLTAAahEALuMu26YFpglJXAkwSwSLPYsGRPHjJFiXfWBR05x5y5wdB\\\\r\\\\n2026-04-26 12:36:01 1jhhqlV6ZHO/osEJKb6tSHH0mYf0uMNu2speu2DgsjCjHHJwtSJMayfO1WZcSF+G\\\\r\\\\n2026-04-26 12:36:01 wFXOY77MgB3VwMRcCoTMNwoBswcJeZRyNL+cHLZZcK0kpEJbBY60W5pHUceKrDDJ\\\\r\\\\n2026-04-26 12:36:01 sr63qzPaUVNj0Vu2zFG8sEEMES55/JIKCoj6O66j821/qJ97RLPP5pKUpp2gCS7F\\\\r\\\\n2026-04-26 12:36:01 GyCzMBiTsF4zNCr+FA1rQUCZqa50S3Gu90KANsv7VX1krJXXaSXQFaiDAyB+zL0f\\\\r\\\\n2026-04-26 12:36:01 SQR7WrimYwMQaGX8c75+8L7NK2zdxMQH0chtdqv79WmoOn+fWGupCq7NlA32s7rb\\\\r\\\\n2026-04-26 12:36:01 Cq4auSoIF5ovQqw2F2wgi2nBpHwfF5ka6qSaQA4wiACrxkC255lCaAzy9jky4Ldt\\\\r\\\\n2026-04-26 12:36:01 1iSmA7q2JSu8HEN8NG9AQqP+l44HRXFzJsF3cXTaOzKZKYlhlx5btb8F+M9aCgXi\\\\r\\\\n2026-04-26 12:36:01 pICqo0FqkQ03ULwswnF8yXsjpYkx63lc0pLStKn7dxI+cSOYYCu0cbxcBoZyqmH1\\\\r\\\\n2026-04-26 12:36:01 Kqmr2XMicIWCxQoiW4YT5UYfNsfwmRUWkJwmCahUFSzo5swUpBbeCo6bsEdkyxMM\\\\r\\\\n2026-04-26 12:36:01 I5bNV1cjSII5liHOyxnvZ77+giZAKglsiI3ZmmVh+l8fvDBDaLVmmMRfcwRHOxu1\\\\r\\\\n2026-04-26 12:36:01 UMRr047T8ggKgEnyhQLK/FJh+Yp8ubo6wsTUwyyVcRULUVWeJbka6EDkMbPucHHb\\\\r\\\\n2026-04-26 12:36:01 vDdO61eP2yB+uQlwbBr1UquiQD1XrBHXFVwDw6rJoJxTkGQggaofpsUPa3F561LV\\\\r\\\\n2026-04-26 12:36:01 aQAFxU9BAgmdYb4uJxtlt46DCbx2tFW2OnoqQrpFW7nWlwmLJ2dUhIRkySTyhJpq\\\\r\\\\n2026-04-26 12:36:01 K0hnrLThhA1tu8q3dTXOCDs+8csKnI9vVSqAFm6ax3lI6ilBFVIgyZi7dBI1TCKp\\\\r\\\\n2026-04-26 12:36:01 rDbvCzcWY6dxEUzHqTELG5sd955LQgoei2/86QDquRIgB2PGqblBYylUOA9tBTAv\\\\r\\\\n2026-04-26 12:36:01 wSVKoZuonI4ijDZz5yec2C9DiCZva6MbxASOLBl05qfeeDbzkhOWsas2ZpMRmaS8\\\\r\\\\n2026-04-26 12:36:01 dI0Tmp732GkddM2R879ULHp0x4CI4Vh42mN/m22OInwW4mlPaUAy4MQUOWvuWb6/\\\\r\\\\n2026-04-26 12:36:01 o2/HcXJCoj9JsULCKXchFrawJHTgCTpi9BicMpmnPHpnpxlYRw77p4qWcmGqs2Yi\\\\r\\\\n2026-04-26 12:36:01 gQLAAQhZxzpT8MPgsomgC2nySQthEHsvF4XVbL60ImBv9Qig2hd7Jh4cI0D/+TdC\\\\r\\\\n2026-04-26 12:36:01 tky6B1MyPAxYCTN2QXXCo6CbdzMoVBhXuAI7prv2DA5zUwNCpxBKs2BgSIZ9677J\\\\r\\\\n2026-04-26 12:36:01 RlxpsqbbVLVJl6BdbJcMRjIWEW0flKwbSb/PdEuEGheu5UuRZ4/MxrzrciW35CxX\\\\r\\\\n2026-04-26 12:36:01 +XYlHBLCOQ6MCCSYtAy9olSBxQ1iMkiP0V20Crzm6JapZWxTC1EEFgMXAJERMXin\\\\r\\\\n2026-04-26 12:36:01 NiY0wK8f8JFABRBxMZeHyBtT6EobR2Q1Ozcjmhb98rK6wUVhorCGV0mbZ4jzVFtH\\\\r\\\\n2026-04-26 12:36:01 YD9UoTAQrI22NGLy+BupkM7OmaQ82SWZlZ8eiSqv5z7aBI8AAWOORHCYW07i9kCy\\\\r\\\\n2026-04-26 12:36:01 OJ4nB3/Ko4OTiUeGYamtlj9/k7alhM5BE2fkEoygYFvL1cfFXMHH+wOEonSMi5qo\\\\r\\\\n2026-04-26 12:36:01 smQrWalr8aPEPGkXWYDjMsBZ4rHQ00z+cE3YiXJXMj2Y8JMY9LJrR1asaEY3IoBx\\\\r\\\\n2026-04-26 12:36:01 ose+UxmIsZr1OD/Jy1euBJo0IQX3gnrvdGl9u8zQeCes+g5xl68gAU8n1J/Z4DoB\\\\r\\\\n2026-04-26 12:36:01 Y0mUMEgOuMu6aAvmQc/lqqP7lwrCKCfVe6SS6w2w3I9GrL2/3GkQkXJSc4rmZb7u\\\\r\\\\n2026-04-26 12:36:01 JoAFyHleVFAnDFXlhLKFl0h3x7TD26LK2LApnLI344MvE6ZG9RFA6w2Q6JtRIEWU\\\\r\\\\n2026-04-26 12:36:01 lheqsm3z9sfcOiHW/GWw0nTkC8btOFZ0uBTThDnHg0BvuXzmBDcle1GpXJdyzLyl\\\\r\\\\n2026-04-26 12:36:01 cW4qlLb15J1zMb/hVBNGagquATVVclvcVKYGYkNsxGpWBC8/8iJTEUKEMwqti7PR\\\\r\\\\n2026-04-26 12:36:01 yh+r058rdhlVML+0F5aDJwjslkCppGpJF5nGQn4pwBzViz752YFUgRRz2jrhFYHE\\\\r\\\\n2026-04-26 12:36:01 KaVCtcczpnZhtqNMY49aRMaTphHu4YpgglMjbDuZ5wiK27Fq5RM+lF6sIG6SGycb\\\\r\\\\n2026-04-26 12:36:01 4whptwXeepJbATEQ55FWWckLVJ5lVWuZ0pCOMguparXRwXECzGnIHLxehCexiZqA\\\\r\\\\n2026-04-26 12:36:01 QLJZNAFOyB3IhHZo5TrJY5sNIMXU94yraZLmQQ3cRMntNiW8kp6Pqj3I40bqlL3F\\\\r\\\\n2026-04-26 12:36:01 ahwNl8qwsjl44hMmWMfQk1c5OpCtkGJcIpIF08ILxDknAyBTQ35BJXMJ9XtI0nt2\\\\r\\\\n2026-04-26 12:36:01 OiGGA6YUqbb68bmXbEhzKQhulHs8GWh/sgXiN3NoI5ns6nU0a3e6Oz2BkXY708iM\\\\r\\\\n2026-04-26 12:36:01 oxrQxsZ4uoM/pjlHG5xeOM62B3tpeghU5iFfOgr+hH9mGcOx4cSoNjn3a5gvMJqc\\\\r\\\\n2026-04-26 12:36:01 Ycc60cOGalwlpLruUy4rdDwhInvsGAmaapDq8IxRpS/AIpij4Y/SmMl9uisvqBr9\\\\r\\\\n2026-04-26 12:36:01 ypg1olTOJ8rk08AXY0Kl2D9lS5GK11g2VWtCgKiMdS/RvAXJnJGkdStVTGYiCnHJ\\\\r\\\\n2026-04-26 12:36:01 OjgyHTrR2a+N2ZiYTldYtmF6H9pm/lfv6FNtw2cNQzqGoSSsrAHEugO0d94keir2\\\\r\\\\n2026-04-26 12:36:01 62w9ymkZWDurfZDVT8OIVWXhgKlR44rEMqSAR+iv6ap61WM2ZMFejOGy4XrDjLrH\\\\r\\\\n2026-04-26 12:36:01 qwI=\\\\r\\\\n2026-04-26 12:36:01 -----END PRIVATE KEY-----\\\\r\\\\n#7 DONE 0.3s\\\\r\\\\n\\\\r\\\\n#8 exporting to image\\\\r\\\\n#8 exporting layers 0.1s done\\\\r\\\\n#8 writing image sha256:3ed48eb4eb0c17e6baaf691a361afd8c75572517e5b729849da4e5344bf7f244 done\\\\r\\\\n#8 DONE 0.2s\\\"}\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/pem_key.p.log.json\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"MIIMvgIBADALBglghkgBZQMEBAMEggyqMIIMpgRATqJGETTwhb2gxXF41z3G5ztP\\\\r\\\\n2026\",\n                \"value_start\": 208,\n                \"value_end\": 280,\n                \"entropy\": 4.9007\n            }\n        ]\n    },\n    {\n        \"rule\": \"PEM Private Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"-----BEGIN PRIVATE KEY-----\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/pem_key.p.rsa\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"-----BEGIN PRIVATE KEY-----\",\n                \"value_start\": 0,\n                \"value_end\": 27,\n                \"entropy\": 3.20029\n            },\n            {\n                \"line\": \"MIIBVQIBADANBgkqhkiG9w0BAQEFAASCAT8wggE7AgEAAkEA12FhURMjPmqRNZZl\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/pem_key.p.rsa\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"MIIBVQIBADANBgkqhkiG9w0BAQEFAASCAT8wggE7AgEAAkEA12FhURMjPmqRNZZl\",\n                \"value_start\": 0,\n                \"value_end\": 64,\n                \"entropy\": 4.67611\n            },\n            {\n                \"line\": \"teTEEoNqzPBXPBgBSqihi1qWbk3NthnycOSinUz7prfasLMlEDqcS68FFh1t5rrX\",\n                \"line_num\": 3,\n                \"path\": \"./tests/samples/pem_key.p.rsa\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"teTEEoNqzPBXPBgBSqihi1qWbk3NthnycOSinUz7prfasLMlEDqcS68FFh1t5rrX\",\n                \"value_start\": 0,\n                \"value_end\": 64,\n                \"entropy\": 5.10493\n            },\n            {\n                \"line\": \"WknouwIDAQABAkAySCW0C8e6lp536Diukk3EFLImTiXPfbsvdtbf9bIQ5eNrfOhV\",\n                \"line_num\": 4,\n                \"path\": \"./tests/samples/pem_key.p.rsa\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"WknouwIDAQABAkAySCW0C8e6lp536Diukk3EFLImTiXPfbsvdtbf9bIQ5eNrfOhV\",\n                \"value_start\": 0,\n                \"value_end\": 64,\n                \"entropy\": 5.21461\n            },\n            {\n                \"line\": \"z4MuDWaaLPkL49si36Li4nLu8op3i9QVIlThAiEA74ZnMHks7VhxqpneOxWC896e\",\n                \"line_num\": 5,\n                \"path\": \"./tests/samples/pem_key.p.rsa\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"z4MuDWaaLPkL49si36Li4nLu8op3i9QVIlThAiEA74ZnMHks7VhxqpneOxWC896e\",\n                \"value_start\": 0,\n                \"value_end\": 64,\n                \"entropy\": 4.97641\n            },\n            {\n                \"line\": \"gS3TOtNx8sYYYlfeyh8CIQDmMdWhVAOWhdWMwdSvDVo9Qxk7ZpZJzVH5c+vzSWOF\",\n                \"line_num\": 6,\n                \"path\": \"./tests/samples/pem_key.p.rsa\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"gS3TOtNx8sYYYlfeyh8CIQDmMdWhVAOWhdWMwdSvDVo9Qxk7ZpZJzVH5c+vzSWOF\",\n                \"value_start\": 0,\n                \"value_end\": 64,\n                \"entropy\": 5.17923\n            },\n            {\n                \"line\": \"5QIhAJsOHZSyjNPkskhnLQaAiXJHRcKIILpvEM/BTx2ylmWvAiAkN3z79+LkoMPb\",\n                \"line_num\": 7,\n                \"path\": \"./tests/samples/pem_key.p.rsa\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"5QIhAJsOHZSyjNPkskhnLQaAiXJHRcKIILpvEM/BTx2ylmWvAiAkN3z79+LkoMPb\",\n                \"value_start\": 0,\n                \"value_end\": 64,\n                \"entropy\": 5.25766\n            },\n            {\n                \"line\": \"dHeI3xnuf4sNvHMyw1n9XE6oJUjCPQIhAL7L9UoJKVXkKu+RtislM1+rx9j5qy01\",\n                \"line_num\": 8,\n                \"path\": \"./tests/samples/pem_key.p.rsa\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"dHeI3xnuf4sNvHMyw1n9XE6oJUjCPQIhAL7L9UoJKVXkKu+RtislM1+rx9j5qy01\",\n                \"value_start\": 0,\n                \"value_end\": 64,\n                \"entropy\": 5.35141\n            },\n            {\n                \"line\": \"24n7nBfD3ZXv\",\n                \"line_num\": 9,\n                \"path\": \"./tests/samples/pem_key.p.rsa\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"24n7nBfD3ZXv\",\n                \"value_start\": 0,\n                \"value_end\": 12,\n                \"entropy\": 3.4183\n            },\n            {\n                \"line\": \"-----END PRIVATE KEY-----\",\n                \"line_num\": 10,\n                \"path\": \"./tests/samples/pem_key.p.rsa\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"-----END PRIVATE KEY-----\",\n                \"value_start\": 0,\n                \"value_end\": 25,\n                \"entropy\": 3.04489\n            }\n        ]\n    },\n    {\n        \"rule\": \"Perplexity API Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"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\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/perplexity\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"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\",\n                \"value_start\": 0,\n                \"value_end\": 53,\n                \"entropy\": 5.08142\n            }\n        ]\n    },\n    {\n        \"rule\": \"Perplexity API Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"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\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/perplexity\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"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\",\n                \"value_start\": 0,\n                \"value_end\": 53,\n                \"entropy\": 4.89274\n            }\n        ]\n    },\n    {\n        \"rule\": \"Picatic API Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"sk_live_gireogicracklegireogicrackle1231\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/picatic_key\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"sk_live_gireogicracklegireogicrackle1231\",\n                \"value_start\": 0,\n                \"value_end\": 40,\n                \"entropy\": 3.7037\n            }\n        ]\n    },\n    {\n        \"rule\": \"Stripe Credentials\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"sk_live_gireogicracklegireogicrackle1231\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/picatic_key\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"sk_live_gireogicracklegireogicrackle1231\",\n                \"value_start\": 0,\n                \"value_end\": 40,\n                \"entropy\": 3.7037\n            }\n        ]\n    },\n    {\n        \"rule\": \"PostHog Credentials\",\n        \"severity\": \"medium\",\n        \"confidence\": \"weak\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"phc_cJMqv5nG7Qtd0sfIwasTG87lgnDfJVbrcOOAZMOf\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/posthog\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"phc_cJMqv5nG7Qtd0sfIwasTG87lgnDfJVbrcOOAZMOf\",\n                \"value_start\": 0,\n                \"value_end\": 44,\n                \"entropy\": 4.86251\n            }\n        ]\n    },\n    {\n        \"rule\": \"PostHog Credentials\",\n        \"severity\": \"medium\",\n        \"confidence\": \"weak\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"phs_dNrZRd5etgv1B1gRTkfUrTJnf0EaZ5r6hUouJgXtWwFTrq\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/posthog\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"phs_dNrZRd5etgv1B1gRTkfUrTJnf0EaZ5r6hUouJgXtWwFTrq\",\n                \"value_start\": 0,\n                \"value_end\": 50,\n                \"entropy\": 4.89366\n            }\n        ]\n    },\n    {\n        \"rule\": \"PostHog Credentials\",\n        \"severity\": \"medium\",\n        \"confidence\": \"weak\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"phr_dNrZRd5etgv1B1gRTKedUjAkFCcvNdBLoQz4W8GCYEVUySGUt\",\n                \"line_num\": 3,\n                \"path\": \"./tests/samples/posthog\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"phr_dNrZRd5etgv1B1gRTKedUjAkFCcvNdBLoQz4W8GCYEVUySGUt\",\n                \"value_start\": 0,\n                \"value_end\": 53,\n                \"entropy\": 5.07217\n            }\n        ]\n    },\n    {\n        \"rule\": \"PostHog Credentials\",\n        \"severity\": \"medium\",\n        \"confidence\": \"weak\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"pha_BkeaIpOESh8OGcD1bhPGh6kH9UjVGp6nnaC6vF4E7q9TcJr7GapdQMVDX\",\n                \"line_num\": 4,\n                \"path\": \"./tests/samples/posthog\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"pha_BkeaIpOESh8OGcD1bhPGh6kH9UjVGp6nnaC6vF4E7q9TcJr7GapdQMVDX\",\n                \"value_start\": 0,\n                \"value_end\": 61,\n                \"entropy\": 5.03312\n            }\n        ]\n    },\n    {\n        \"rule\": \"PostHog Credentials\",\n        \"severity\": \"medium\",\n        \"confidence\": \"weak\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"phx_5nYpKltuz4gvt7LessoO3swaOH41RJh6pzT1x1NoeTrKbTuAaxtVMA7JmMxp\",\n                \"line_num\": 5,\n                \"path\": \"./tests/samples/posthog\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"phx_5nYpKltuz4gvt7LessoO3swaOH41RJh6pzT1x1NoeTrKbTuAaxtVMA7JmMxp\",\n                \"value_start\": 0,\n                \"value_end\": 64,\n                \"entropy\": 5.04657\n            }\n        ]\n    },\n    {\n        \"rule\": \"Postman Credentials\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"PMAK-be68a955d73619000f121d77-1d6ce2aa99d4b222bcc9fc01f345cf3168\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/postman\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"PMAK-be68a955d73619000f121d77-1d6ce2aa99d4b222bcc9fc01f345cf3168\",\n                \"value_start\": 0,\n                \"value_end\": 64,\n                \"entropy\": 4.21698\n            }\n        ]\n    },\n    {\n        \"rule\": \"Postman Credentials\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"PMAT-9GP54SGZ7TS928P0BW1K3AN0WX\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/postman\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"PMAT-9GP54SGZ7TS928P0BW1K3AN0WX\",\n                \"value_start\": 0,\n                \"value_end\": 31,\n                \"entropy\": 4.3492\n            }\n        ]\n    },\n    {\n        \"rule\": \"UUID\",\n        \"severity\": \"info\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"   Print, crumple, throw away. line # 10 a0572bc9-7a3e-beef-cafe-9129474bcd81\",\n                \"line_num\": 10,\n                \"path\": \"./tests/samples/pretty.html\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"a0572bc9-7a3e-beef-cafe-9129474bcd81\",\n                \"value_start\": 41,\n                \"value_end\": 77,\n                \"entropy\": 3.84286\n            }\n        ]\n    },\n    {\n        \"rule\": \"Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"        <a href=\\\"http://localhost:8888/v1/api/get?token=zUkITxodk63bDVUMwIymb3zKTxICz85zC00cv0Gel1nE8O\\\">\",\n                \"line_num\": 79,\n                \"path\": \"./tests/samples/pretty.html\",\n                \"info\": \"\",\n                \"variable\": \"token\",\n                \"variable_start\": 50,\n                \"variable_end\": 55,\n                \"value\": \"zUkITxodk63bDVUMwIymb3zKTxICz85zC00cv0Gel1nE8O\",\n                \"value_start\": 56,\n                \"value_end\": 102,\n                \"entropy\": 4.79509\n            }\n        ]\n    },\n    {\n        \"rule\": \"Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"         http://localhost:8888/v1/api/get?token=zUkITxodk63bDVUMwIymb3zKTxICz85zC00cv0Gel1nE8O\",\n                \"line_num\": 80,\n                \"path\": \"./tests/samples/pretty.html\",\n                \"info\": \"\",\n                \"variable\": \"token\",\n                \"variable_start\": 42,\n                \"variable_end\": 47,\n                \"value\": \"zUkITxodk63bDVUMwIymb3zKTxICz85zC00cv0Gel1nE8O\",\n                \"value_start\": 48,\n                \"value_end\": 94,\n                \"entropy\": 4.79509\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"       147# password: Jd3OnNy^564eD5_sd\",\n                \"line_num\": 147,\n                \"path\": \"./tests/samples/pretty.html\",\n                \"info\": \"\",\n                \"variable\": \"password\",\n                \"variable_start\": 12,\n                \"variable_end\": 20,\n                \"value\": \"Jd3OnNy^564eD5_sd\",\n                \"value_start\": 22,\n                \"value_end\": 39,\n                \"entropy\": 3.85217\n            }\n        ]\n    },\n    {\n        \"rule\": \"UUID\",\n        \"severity\": \"info\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"        151# a0ce4d19-7a3e-beef-cafe-9129474bcd81\",\n                \"line_num\": 151,\n                \"path\": \"./tests/samples/pretty.html\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"a0ce4d19-7a3e-beef-cafe-9129474bcd81\",\n                \"value_start\": 13,\n                \"value_end\": 49,\n                \"entropy\": 3.74259\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"pwd = \\\"cackle!\\\"\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/pwd.gradle\",\n                \"info\": \"\",\n                \"variable\": \"pwd\",\n                \"variable_start\": 0,\n                \"variable_end\": 3,\n                \"value\": \"cackle!\",\n                \"value_start\": 7,\n                \"value_end\": 14,\n                \"entropy\": 2.52164\n            }\n        ]\n    },\n    {\n        \"rule\": \"PyPi API Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"pypi-AgEIcHlvdS5bcmcCJGDmMTllXWJjLTRhODAtNDBhYi01Y2Y4LThjNjcxZTg3MsRjOAACKlszLCJlPDYzYmUxOC0wNjQ3LTQ4AzQtODFhYy1jZGRlNTk2MGYxNDYiXQAABiDDbVAEnaUMn4zZHlFr5NWy7JEYfvoay--cVmKO5lr3Xp\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/pypi_token\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"pypi-AgEIcHlvdS5bcmcCJGDmMTllXWJjLTRhODAtNDBhYi01Y2Y4LThjNjcxZTg3MsRjOAACKlszLCJlPDYzYmUxOC0wNjQ3LTQ4AzQtODFhYy1jZGRlNTk2MGYxNDYiXQAABiDDbVAEnaUMn4zZHlFr5NWy7JEYfvoay--cVmKO5lr3Xp\",\n                \"value_start\": 0,\n                \"value_end\": 179,\n                \"entropy\": 5.5923\n            }\n        ]\n    },\n    {\n        \"rule\": \"RubyGems API Key\",\n        \"severity\": \"medium\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"rubygems_2676e0138d75572e758e2b2252713061b8f26caf7f21630d\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/rubygems\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"rubygems_2676e0138d75572e758e2b2252713061b8f26caf7f21630d\",\n                \"value_start\": 0,\n                \"value_end\": 57,\n                \"entropy\": 4.06282\n            }\n        ]\n    },\n    {\n        \"rule\": \"RubyGems API Key\",\n        \"severity\": \"medium\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"rubygems_12345674dc42cb40d2c69cbb66e7a9b6c8d7820bb7c09b8e\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/rubygems\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"rubygems_12345674dc42cb40d2c69cbb66e7a9b6c8d7820bb7c09b8e\",\n                \"value_start\": 0,\n                \"value_end\": 57,\n                \"entropy\": 4.09791\n            }\n        ]\n    },\n    {\n        \"rule\": \"Salesforce Credentials\",\n        \"severity\": \"medium\",\n        \"confidence\": \"weak\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"f_org_id 00Dee00000000000A5 00D0A53429897F6EA5\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/salesfoce\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"00D0A53429897F6EA5\",\n                \"value_start\": 28,\n                \"value_end\": 46,\n                \"entropy\": 3.57243\n            }\n        ]\n    },\n    {\n        \"rule\": \"Salesforce Credentials\",\n        \"severity\": \"medium\",\n        \"confidence\": \"weak\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"f_org_id 00Dee00000000000A5 00D0A53429897F6EA5\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/salesfoce\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"00Dee00000000000A5\",\n                \"value_start\": 9,\n                \"value_end\": 27,\n                \"entropy\": 1.38627\n            }\n        ]\n    },\n    {\n        \"rule\": \"Salesforce Credentials\",\n        \"severity\": \"medium\",\n        \"confidence\": \"weak\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"t_org_if 00DFT5H59PHLAN0IA 00DG9UE38D6ELk5l 00DyXD47kKDny11j 00Dh68fkeHGbDk92k\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/salesfoce\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"00DFT5H59PHLAN0IA\",\n                \"value_start\": 9,\n                \"value_end\": 26,\n                \"entropy\": 3.45482\n            }\n        ]\n    },\n    {\n        \"rule\": \"Salesforce Credentials\",\n        \"severity\": \"medium\",\n        \"confidence\": \"weak\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"t_org_if 00DFT5H59PHLAN0IA 00DG9UE38D6ELk5l 00DyXD47kKDny11j 00Dh68fkeHGbDk92k\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/salesfoce\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"00DG9UE38D6ELk5l\",\n                \"value_start\": 27,\n                \"value_end\": 43,\n                \"entropy\": 3.625\n            }\n        ]\n    },\n    {\n        \"rule\": \"Salesforce Credentials\",\n        \"severity\": \"medium\",\n        \"confidence\": \"weak\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"t_org_if 00DFT5H59PHLAN0IA 00DG9UE38D6ELk5l 00DyXD47kKDny11j 00Dh68fkeHGbDk92k\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/salesfoce\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"00Dh68fkeHGbDk92k\",\n                \"value_start\": 61,\n                \"value_end\": 78,\n                \"entropy\": 3.57247\n            }\n        ]\n    },\n    {\n        \"rule\": \"Salesforce Credentials\",\n        \"severity\": \"medium\",\n        \"confidence\": \"weak\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"t_org_if 00DFT5H59PHLAN0IA 00DG9UE38D6ELk5l 00DyXD47kKDny11j 00Dh68fkeHGbDk92k\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/salesfoce\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"00DyXD47kKDny11j\",\n                \"value_start\": 44,\n                \"value_end\": 60,\n                \"entropy\": 3.32782\n            }\n        ]\n    },\n    {\n        \"rule\": \"Salesforce Credentials\",\n        \"severity\": \"medium\",\n        \"confidence\": \"weak\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"t_token 00DUI000005AecQ!AR8Amtqc2drcmpoZ3dlanJoMzQ5ODc1OTg0Mzc5NzQ1OCsrKysKLS0tLQp.cm9jLVR5cGU6IDQsRU5DUllwwMzQ1NzY3MzQ1\",\n                \"line_num\": 3,\n                \"path\": \"./tests/samples/salesfoce\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"00DUI000005AecQ!AR8Amtqc2drcmpoZ3dlanJoMzQ5ODc1OTg0Mzc5NzQ1OCsrKysKLS0tLQp.cm9jLVR5cGU6IDQsRU5DUllwwMzQ1NzY3MzQ1\",\n                \"value_start\": 8,\n                \"value_end\": 120,\n                \"entropy\": 5.19811\n            }\n        ]\n    },\n    {\n        \"rule\": \"Salesforce Credentials\",\n        \"severity\": \"medium\",\n        \"confidence\": \"weak\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"t_client_id: 3MVGb3j9DpwrLFc90tWIy.nh7B89YzeymdX9VETUUokMus8xztUgf_5PksXuZmgYoNmvYcsk_qPpk1Y.zttO1\",\n                \"line_num\": 4,\n                \"path\": \"./tests/samples/salesfoce\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"3MVGb3j9DpwrLFc90tWIy.nh7B89YzeymdX9VETUUokMus8xztUgf_5PksXuZmgYoNmvYcsk_qPpk1Y.zttO1\",\n                \"value_start\": 13,\n                \"value_end\": 98,\n                \"entropy\": 5.45622\n            }\n        ]\n    },\n    {\n        \"rule\": \"Salt\",\n        \"severity\": \"low\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"var Himalayan_salt = \\\"$hal$1te$TnnGdhednJsdQ5nfetwZ\\\";\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/salt.hs\",\n                \"info\": \"\",\n                \"variable\": \"Himalayan_salt\",\n                \"variable_start\": 4,\n                \"variable_end\": 18,\n                \"value\": \"$hal$1te$TnnGdhednJsdQ5nfetwZ\",\n                \"value_start\": 22,\n                \"value_end\": 51,\n                \"entropy\": 3.9523\n            }\n        ]\n    },\n    {\n        \"rule\": \"Salt\",\n        \"severity\": \"low\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"salt1 = b\\\"\\\\x23!\\\\xae2389x&543@\\\"\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/salt.py\",\n                \"info\": \"\",\n                \"variable\": \"salt1\",\n                \"variable_start\": 0,\n                \"variable_end\": 5,\n                \"value\": \"\\\\x23!\\\\xae2389x&543@\",\n                \"value_start\": 10,\n                \"value_end\": 29,\n                \"entropy\": 3.53689\n            }\n        ]\n    },\n    {\n        \"rule\": \"Salt\",\n        \"severity\": \"low\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"salt2 = r\\\"\\\"\\\"\\\\0x12\\\\0x3s\\\"\\\"\\\"\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/salt.py\",\n                \"info\": \"\",\n                \"variable\": \"salt2\",\n                \"variable_start\": 0,\n                \"variable_end\": 5,\n                \"value\": \"\\\\0x12\\\\0x3s\",\n                \"value_start\": 12,\n                \"value_end\": 22,\n                \"entropy\": 2.72193\n            }\n        ]\n    },\n    {\n        \"rule\": \"Salt\",\n        \"severity\": \"low\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"salt3 = u\\\"\\\\u0020827634876\\\"\",\n                \"line_num\": 3,\n                \"path\": \"./tests/samples/salt.py\",\n                \"info\": \"\",\n                \"variable\": \"salt3\",\n                \"variable_start\": 0,\n                \"variable_end\": 5,\n                \"value\": \"\\\\u0020827634876\",\n                \"value_start\": 10,\n                \"value_end\": 25,\n                \"entropy\": 3.05656\n            }\n        ]\n    },\n    {\n        \"rule\": \"Salt\",\n        \"severity\": \"low\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"salt4 = {\\\"salt5\\\": \\\"my124%#$@s\\\\x04clt\\\\0\\\"}\",\n                \"line_num\": 4,\n                \"path\": \"./tests/samples/salt.py\",\n                \"info\": \"\",\n                \"variable\": \"salt4\",\n                \"variable_start\": 0,\n                \"variable_end\": 5,\n                \"value\": \"salt5\",\n                \"value_start\": 10,\n                \"value_end\": 15,\n                \"entropy\": 2.32193\n            }\n        ]\n    },\n    {\n        \"rule\": \"Salt\",\n        \"severity\": \"low\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"json_escaped = \\\"{\\\\\\\\\\\\\\\"salt8\\\\\\\\\\\\\\\":\\\\\\\\\\\\\\\"4b9a6d8b638eb0c6\\\\\\\\\\\\\\\"}\\\"\",\n                \"line_num\": 5,\n                \"path\": \"./tests/samples/salt.py\",\n                \"info\": \"\",\n                \"variable\": \"salt8\",\n                \"variable_start\": 21,\n                \"variable_end\": 26,\n                \"value\": \"4b9a6d8b638eb0c6\",\n                \"value_start\": 35,\n                \"value_end\": 51,\n                \"entropy\": 3.28064\n            }\n        ]\n    },\n    {\n        \"rule\": \"Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"#define AESKEY {0x35, 0x34, 0x65, 0x9b, 0x1c, 0x2e, 023, 010, 041, 033, 043, 000, \\\\\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/sample.h\",\n                \"info\": \"\",\n                \"variable\": \"AESKEY\",\n                \"variable_start\": 8,\n                \"variable_end\": 14,\n                \"value\": \"0x35, 0x34, 0x65, 0x9b, 0x1c, 0x2e, 023, 010, 041, 033, 043, 000, \\\\\",\n                \"value_start\": 16,\n                \"value_end\": 83,\n                \"entropy\": 3.24263\n            }\n        ]\n    },\n    {\n        \"rule\": \"Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"<a href=\\\"http://example.com?token=&quot;g1re0g1T0keN3zWx&quot;\\\">TokenRequest</a>\",\n                \"line_num\": 9,\n                \"path\": \"./tests/samples/sample.html\",\n                \"info\": \"\",\n                \"variable\": \"token\",\n                \"variable_start\": 28,\n                \"variable_end\": 33,\n                \"value\": \"g1re0g1T0keN3zWx\",\n                \"value_start\": 40,\n                \"value_end\": 56,\n                \"entropy\": 3.5\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"  <label for=\\\"password\\\">Password:</label>\",\n                \"line_num\": 11,\n                \"path\": \"./tests/samples/sample.html\",\n                \"info\": \"\",\n                \"variable\": \"Password\",\n                \"variable_start\": 24,\n                \"variable_end\": 32,\n                \"value\": \"\",\n                \"value_start\": 33,\n                \"value_end\": 33,\n                \"entropy\": 0.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"    placeholder=\\\"Your password: &quot;g1re0g1Pa5$w0Rd&quot;\\\"\",\n                \"line_num\": 16,\n                \"path\": \"./tests/samples/sample.html\",\n                \"info\": \"\",\n                \"variable\": \"Your password\",\n                \"variable_start\": 17,\n                \"variable_end\": 30,\n                \"value\": \"g1re0g1Pa5$w0Rd\",\n                \"value_start\": 38,\n                \"value_end\": 53,\n                \"entropy\": 3.50689\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \" <button onclick=\\\"alert(&quot;password:g1re0g2Pa5$w0Rd&quot;)\\\">ShowPass</button>\",\n                \"line_num\": 21,\n                \"path\": \"./tests/samples/sample.html\",\n                \"info\": \"\",\n                \"variable\": \"password\",\n                \"variable_start\": 30,\n                \"variable_end\": 38,\n                \"value\": \"g1re0g2Pa5$w0Rd\",\n                \"value_start\": 39,\n                \"value_end\": 54,\n                \"entropy\": 3.64022\n            }\n        ]\n    },\n    {\n        \"rule\": \"Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"SECRET_CREDENTIAL_API_KEY = \\\\\",\n                \"line_num\": 8,\n                \"path\": \"./tests/samples/sample.py\",\n                \"info\": \"\",\n                \"variable\": \"SECRET_CREDENTIAL_API_KEY\",\n                \"variable_start\": 0,\n                \"variable_end\": 25,\n                \"value\": \"\",\n                \"value_start\": 28,\n                \"value_end\": 28,\n                \"entropy\": 0.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"API\",\n        \"severity\": \"low\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"SECRET_CREDENTIAL_API_KEY = \\\\\",\n                \"line_num\": 8,\n                \"path\": \"./tests/samples/sample.py\",\n                \"info\": \"\",\n                \"variable\": \"SECRET_CREDENTIAL_API_KEY\",\n                \"variable_start\": 0,\n                \"variable_end\": 25,\n                \"value\": \"\",\n                \"value_start\": 28,\n                \"value_end\": 28,\n                \"entropy\": 0.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"Credential\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"SECRET_CREDENTIAL_API_KEY = \\\\\",\n                \"line_num\": 8,\n                \"path\": \"./tests/samples/sample.py\",\n                \"info\": \"\",\n                \"variable\": \"SECRET_CREDENTIAL_API_KEY\",\n                \"variable_start\": 0,\n                \"variable_end\": 25,\n                \"value\": \"\",\n                \"value_start\": 28,\n                \"value_end\": 28,\n                \"entropy\": 0.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"Secret\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"SECRET_CREDENTIAL_API_KEY = \\\\\",\n                \"line_num\": 8,\n                \"path\": \"./tests/samples/sample.py\",\n                \"info\": \"\",\n                \"variable\": \"SECRET_CREDENTIAL_API_KEY\",\n                \"variable_start\": 0,\n                \"variable_end\": 25,\n                \"value\": \"\",\n                \"value_start\": 28,\n                \"value_end\": 28,\n                \"entropy\": 0.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"Auth\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"AUTH = (\\\"Basic \\\"\",\n                \"line_num\": 11,\n                \"path\": \"./tests/samples/sample.py\",\n                \"info\": \"\",\n                \"variable\": \"AUTH\",\n                \"variable_start\": 0,\n                \"variable_end\": 4,\n                \"value\": \"\",\n                \"value_start\": 15,\n                \"value_end\": 15,\n                \"entropy\": 0.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"Auth\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"AUTH_CREDENTIAL_SECRET = \\\\\",\n                \"line_num\": 14,\n                \"path\": \"./tests/samples/sample.py\",\n                \"info\": \"\",\n                \"variable\": \"AUTH_CREDENTIAL_SECRET\",\n                \"variable_start\": 0,\n                \"variable_end\": 22,\n                \"value\": \"\",\n                \"value_start\": 25,\n                \"value_end\": 25,\n                \"entropy\": 0.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"Credential\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"AUTH_CREDENTIAL_SECRET = \\\\\",\n                \"line_num\": 14,\n                \"path\": \"./tests/samples/sample.py\",\n                \"info\": \"\",\n                \"variable\": \"AUTH_CREDENTIAL_SECRET\",\n                \"variable_start\": 0,\n                \"variable_end\": 22,\n                \"value\": \"\",\n                \"value_start\": 25,\n                \"value_end\": 25,\n                \"entropy\": 0.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"Secret\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"AUTH_CREDENTIAL_SECRET = \\\\\",\n                \"line_num\": 14,\n                \"path\": \"./tests/samples/sample.py\",\n                \"info\": \"\",\n                \"variable\": \"AUTH_CREDENTIAL_SECRET\",\n                \"variable_start\": 0,\n                \"variable_end\": 22,\n                \"value\": \"\",\n                \"value_start\": 25,\n                \"value_end\": 25,\n                \"entropy\": 0.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"API_SECRET_KEY = \\\\\",\n                \"line_num\": 17,\n                \"path\": \"./tests/samples/sample.py\",\n                \"info\": \"\",\n                \"variable\": \"API_SECRET_KEY\",\n                \"variable_start\": 0,\n                \"variable_end\": 14,\n                \"value\": \"\",\n                \"value_start\": 17,\n                \"value_end\": 17,\n                \"entropy\": 0.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"API\",\n        \"severity\": \"low\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"API_SECRET_KEY = \\\\\",\n                \"line_num\": 17,\n                \"path\": \"./tests/samples/sample.py\",\n                \"info\": \"\",\n                \"variable\": \"API_SECRET_KEY\",\n                \"variable_start\": 0,\n                \"variable_end\": 14,\n                \"value\": \"\",\n                \"value_start\": 17,\n                \"value_end\": 17,\n                \"entropy\": 0.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"Secret\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"API_SECRET_KEY = \\\\\",\n                \"line_num\": 17,\n                \"path\": \"./tests/samples/sample.py\",\n                \"info\": \"\",\n                \"variable\": \"API_SECRET_KEY\",\n                \"variable_start\": 0,\n                \"variable_end\": 14,\n                \"value\": \"\",\n                \"value_start\": 17,\n                \"value_end\": 17,\n                \"entropy\": 0.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"Nonce\",\n        \"severity\": \"low\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"AUTH_SECRET_NONCE = \\\\\",\n                \"line_num\": 20,\n                \"path\": \"./tests/samples/sample.py\",\n                \"info\": \"\",\n                \"variable\": \"AUTH_SECRET_NONCE\",\n                \"variable_start\": 0,\n                \"variable_end\": 17,\n                \"value\": \"\",\n                \"value_start\": 20,\n                \"value_end\": 20,\n                \"entropy\": 0.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"Auth\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"AUTH_SECRET_NONCE = \\\\\",\n                \"line_num\": 20,\n                \"path\": \"./tests/samples/sample.py\",\n                \"info\": \"\",\n                \"variable\": \"AUTH_SECRET_NONCE\",\n                \"variable_start\": 0,\n                \"variable_end\": 17,\n                \"value\": \"\",\n                \"value_start\": 20,\n                \"value_end\": 20,\n                \"entropy\": 0.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"Secret\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"AUTH_SECRET_NONCE = \\\\\",\n                \"line_num\": 20,\n                \"path\": \"./tests/samples/sample.py\",\n                \"info\": \"\",\n                \"variable\": \"AUTH_SECRET_NONCE\",\n                \"variable_start\": 0,\n                \"variable_end\": 17,\n                \"value\": \"\",\n                \"value_start\": 20,\n                \"value_end\": 20,\n                \"entropy\": 0.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"PASSWORD = \\\\\",\n                \"line_num\": 23,\n                \"path\": \"./tests/samples/sample.py\",\n                \"info\": \"\",\n                \"variable\": \"PASSWORD\",\n                \"variable_start\": 0,\n                \"variable_end\": 8,\n                \"value\": \"\",\n                \"value_start\": 11,\n                \"value_end\": 11,\n                \"entropy\": 0.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"Secret\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"SECRET = os.getenv(  #\",\n                \"line_num\": 29,\n                \"path\": \"./tests/samples/sample.py\",\n                \"info\": \"\",\n                \"variable\": \"SECRET\",\n                \"variable_start\": 0,\n                \"variable_end\": 6,\n                \"value\": \"os.getenv(\",\n                \"value_start\": 9,\n                \"value_end\": 19,\n                \"entropy\": 3.12193\n            }\n        ]\n    },\n    {\n        \"rule\": \"Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"X_Auth_Tokens = [\",\n                \"line_num\": 33,\n                \"path\": \"./tests/samples/sample.py\",\n                \"info\": \"\",\n                \"variable\": \"X_Auth_Tokens\",\n                \"variable_start\": 0,\n                \"variable_end\": 13,\n                \"value\": \"\",\n                \"value_start\": 16,\n                \"value_end\": 16,\n                \"entropy\": 0.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"Auth\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"X_Auth_Tokens = [\",\n                \"line_num\": 33,\n                \"path\": \"./tests/samples/sample.py\",\n                \"info\": \"\",\n                \"variable\": \"X_Auth_Tokens\",\n                \"variable_start\": 0,\n                \"variable_end\": 13,\n                \"value\": \"\",\n                \"value_start\": 16,\n                \"value_end\": 16,\n                \"entropy\": 0.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \" -H 'postman-token: }{\\\\loch\\\\ul\\\\ulc0\\\\loch\",\n                \"line_num\": 24,\n                \"path\": \"./tests/samples/sample.rtf\",\n                \"info\": \"\",\n                \"variable\": \"postman-token\",\n                \"variable_start\": 5,\n                \"variable_end\": 18,\n                \"value\": \"}{\\\\loch\\\\ul\\\\ulc0\\\\loch\",\n                \"value_start\": 20,\n                \"value_end\": 40,\n                \"entropy\": 2.98418\n            }\n        ]\n    },\n    {\n        \"rule\": \"UUID\",\n        \"severity\": \"info\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"81f50f8d-4c1a-de4d-8e3f-c1bc8b429a36}{\\\\loch\",\n                \"line_num\": 25,\n                \"path\": \"./tests/samples/sample.rtf\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"81f50f8d-4c1a-de4d-8e3f-c1bc8b429a36\",\n                \"value_start\": 0,\n                \"value_end\": 36,\n                \"entropy\": 3.84286\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"%define bld %(if [[ \\\"%{password}\\\" =~ \\\"himmelsrand\\\"  ]]; then echo \\\"y\\\"; else echo \\\"n\\\"; fi)\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/sample.spec\",\n                \"info\": \"\",\n                \"variable\": \"%{password}\",\n                \"variable_start\": 21,\n                \"variable_end\": 32,\n                \"value\": \"himmelsrand\",\n                \"value_start\": 38,\n                \"value_end\": 49,\n                \"entropy\": 3.27761\n            }\n        ]\n    },\n    {\n        \"rule\": \"Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"%define token 4b9a6d8b4bc56fbfa1c638eb0c6cab3746bf32ac7bfa89a6d8b638eb0c619ff2\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/sample.spec\",\n                \"info\": \"\",\n                \"variable\": \"token\",\n                \"variable_start\": 8,\n                \"variable_end\": 13,\n                \"value\": \"4b9a6d8b4bc56fbfa1c638eb0c6cab3746bf32ac7bfa89a6d8b638eb0c619ff2\",\n                \"value_start\": 14,\n                \"value_end\": 78,\n                \"entropy\": 3.73644\n            }\n        ]\n    },\n    {\n        \"rule\": \"Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"    <Image>AKIAGIREOGIAWSKEY321==</Image>\",\n                \"line_num\": 3,\n                \"path\": \"./tests/samples/sample.tm7\",\n                \"info\": \"\",\n                \"variable\": \"AKIAGIREOGIAWSKEY321\",\n                \"variable_start\": 11,\n                \"variable_end\": 31,\n                \"value\": \"\",\n                \"value_start\": 33,\n                \"value_end\": 33,\n                \"entropy\": 0.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"AWS Client ID\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"    <Image>AKIAGIREOGIAWSKEY321==</Image>\",\n                \"line_num\": 3,\n                \"path\": \"./tests/samples/sample.tm7\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"AKIAGIREOGIAWSKEY321\",\n                \"value_start\": 11,\n                \"value_end\": 31,\n                \"entropy\": 3.54644\n            }\n        ]\n    },\n    {\n        \"rule\": \"UUID\",\n        \"severity\": \"info\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"    <Key>17205d79-dead-beef-a311-26312ad6ea36</Key>\",\n                \"line_num\": 4,\n                \"path\": \"./tests/samples/sample.tm7\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"17205d79-dead-beef-a311-26312ad6ea36\",\n                \"value_start\": 9,\n                \"value_end\": 45,\n                \"entropy\": 3.60702\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"    <Value>May password:6Ew1ThY0u</Value>\",\n                \"line_num\": 5,\n                \"path\": \"./tests/samples/sample.tm7\",\n                \"info\": \"\",\n                \"variable\": \"password\",\n                \"variable_start\": 15,\n                \"variable_end\": 23,\n                \"value\": \"6Ew1ThY0u\",\n                \"value_start\": 24,\n                \"value_end\": 33,\n                \"entropy\": 3.16993\n            }\n        ]\n    },\n    {\n        \"rule\": \"API\",\n        \"severity\": \"low\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"apiVersion: bitnami.com/v1alpha1\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/sealed_secrets.yaml\",\n                \"info\": \"\",\n                \"variable\": \"apiVersion\",\n                \"variable_start\": 0,\n                \"variable_end\": 10,\n                \"value\": \"bitnami.com/v1alpha1\",\n                \"value_start\": 12,\n                \"value_end\": 32,\n                \"entropy\": 3.78418\n            }\n        ]\n    },\n    {\n        \"rule\": \"API\",\n        \"severity\": \"low\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"    API: AgA3efuxQHUQ58YFsWHvDhu9H/HnD9TY/C99632x5B50vXyItxHQHkTJ1Gj31cuRgokY3/+N34jQhbdX4SUNh3CeDq+Ay52B7iqBHtz+vbSmsBX5ORYCTL80W4pd8R3B5Hm5IyOnvTeFX456GoCechrVRGOSw4VjEwgClxxL/xI8vXOQ/K2PWJ3oDiFyibOibRFCQsJtcZn8IDkq7u4mFkPDEiRNu41TrN5PS9tGTkI6MTBxZWp5Krb1iLhif0O40j1IyoBbIoDI3yqwbBcpITlmA+6s1UOQomfl/eOf1jlA8ix5/WQ8PMIhxr5f2WsM6haNt6aYjB+GsmuA0qhZ7zytAEYDvJ6hRnGKcyFX3FoTypU7iNQ/KE21oO3RQhj+hzdR+u5NisxJhg9nQz5Of1jlA8ix5/WQ8PMIhxr5f2WIymiuRAdctx+O2ejctswFVoAapxwqZ3LFVxC0aHXXc5AW92UnHTjmnmEv20uvasg7HJKVJ7Npqgx6tIMYFsYnJJkTlnN3JWtATBVRVEnRRpEkVe3C+TbT7JZAlrSWdCuYvvhr6wlIHhVI3B4rdlgCuxTcNSH441RKZFzEDXsPL/5mTcjpExLrkhsz7L+Yy042xmaP1118Fjn/IRd03jLsFbv6QkXPHXekDI6rzy8rVysyzu3VvPQLHiC6DUgu3p3dYMYgWpolRz123456d===\",\n                \"line_num\": 9,\n                \"path\": \"./tests/samples/sealed_secrets.yaml\",\n                \"info\": \"\",\n                \"variable\": \"API\",\n                \"variable_start\": 4,\n                \"variable_end\": 7,\n                \"value\": \"AgA3efuxQHUQ58YFsWHvDhu9H/HnD9TY/C99632x5B50vXyItxHQHkTJ1Gj31cuRgokY3/+N34jQhbdX4SUNh3CeDq+Ay52B7iqBHtz+vbSmsBX5ORYCTL80W4pd8R3B5Hm5IyOnvTeFX456GoCechrVRGOSw4VjEwgClxxL/xI8vXOQ/K2PWJ3oDiFyibOibRFCQsJtcZn8IDkq7u4mFkPDEiRNu41TrN5PS9tGTkI6MTBxZWp5Krb1iLhif0O40j1IyoBbIoDI3yqwbBcpITlmA+6s1UOQomfl/eOf1jlA8ix5/WQ8PMIhxr5f2WsM6haNt6aYjB+GsmuA0qhZ7zytAEYDvJ6hRnGKcyFX3FoTypU7iNQ/KE21oO3RQhj+hzdR+u5NisxJhg9nQz5Of1jlA8ix5/WQ8PMIhxr5f2WIymiuRAdctx+O2ejctswFVoAapxwqZ3LFVxC0aHXXc5AW92UnHTjmnmEv20uvasg7HJKVJ7Npqgx6tIMYFsYnJJkTlnN3JWtATBVRVEnRRpEkVe3C+TbT7JZAlrSWdCuYvvhr6wlIHhVI3B4rdlgCuxTcNSH441RKZFzEDXsPL/5mTcjpExLrkhsz7L+Yy042xmaP1118Fjn/IRd03jLsFbv6QkXPHXekDI6rzy8rVysyzu3VvPQLHiC6DUgu3p3dYMYgWpolRz123456d===\",\n                \"value_start\": 9,\n                \"value_end\": 713,\n                \"entropy\": 5.94887\n            }\n        ]\n    },\n    {\n        \"rule\": \"Auth\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"    AUTH: AgBBiBMOJxOs213QLtsh0WervLN+kdqwhsihaev4RJNevdLb4j4CC7YM/oLRkWxL9rG91LUO0aHzWy2S56df6UaE7DOF9llDDv4RJNevdLb4j4CC7YM/oLRkWxL9rG91LUAGo2DVFx2zgmbEXo2bzrSiVEDKMsPALGx+gtp24WSwmUlhdOx/2r4eR/O0s2exFrqKizPKPXcvwc4m3e8FLC+lyK9X7PuJvHPfO1XvOfBZbEMHEs+kTK8kdALLOJgph3pHp7FsgLQDMWaqGgjNvcwylwGs4nrdCf2BKDHzBj8MpUK2pIthFVDd3199gGLaxVvHYUH4YIxXuqoaGmnH30Xve+gC23tNnJkatnbMTqv2A1EIHzVkjaqk1y9ybOXQYXSZUbkE5DWRymh32LdsIJPdZ+e+ulH6Hjd11++G70AsUnrJ1MnMEXWDKUlWcD5Ymw1m0cAmtyPHjOOgfJen1dCEQrbi2zoP+aF8LAVrQaSR5hsefJ6UonAzHjM6W5KikdSr7sYZMVlkwf4lByf6a2LAVViNbWq6FV5ywhyDroKU9vjwfq9tu0pY0VP+k11/tikGp9jJ7Oi2KbqCsvxbYt70DB4GlMfmX47I0zhVgdAzmo8vH49jheO+bQK7j1rHwl/RSlb/ZB8sS5AUuQrc3AgU0+KgUOTB5bCHGE90tuuqWPcDMxMQNPopQzNcuwpVVMLV5DPL9dRW0bf5es5p=\",\n                \"line_num\": 10,\n                \"path\": \"./tests/samples/sealed_secrets.yaml\",\n                \"info\": \"\",\n                \"variable\": \"AUTH\",\n                \"variable_start\": 4,\n                \"variable_end\": 8,\n                \"value\": \"AgBBiBMOJxOs213QLtsh0WervLN+kdqwhsihaev4RJNevdLb4j4CC7YM/oLRkWxL9rG91LUO0aHzWy2S56df6UaE7DOF9llDDv4RJNevdLb4j4CC7YM/oLRkWxL9rG91LUAGo2DVFx2zgmbEXo2bzrSiVEDKMsPALGx+gtp24WSwmUlhdOx/2r4eR/O0s2exFrqKizPKPXcvwc4m3e8FLC+lyK9X7PuJvHPfO1XvOfBZbEMHEs+kTK8kdALLOJgph3pHp7FsgLQDMWaqGgjNvcwylwGs4nrdCf2BKDHzBj8MpUK2pIthFVDd3199gGLaxVvHYUH4YIxXuqoaGmnH30Xve+gC23tNnJkatnbMTqv2A1EIHzVkjaqk1y9ybOXQYXSZUbkE5DWRymh32LdsIJPdZ+e+ulH6Hjd11++G70AsUnrJ1MnMEXWDKUlWcD5Ymw1m0cAmtyPHjOOgfJen1dCEQrbi2zoP+aF8LAVrQaSR5hsefJ6UonAzHjM6W5KikdSr7sYZMVlkwf4lByf6a2LAVViNbWq6FV5ywhyDroKU9vjwfq9tu0pY0VP+k11/tikGp9jJ7Oi2KbqCsvxbYt70DB4GlMfmX47I0zhVgdAzmo8vH49jheO+bQK7j1rHwl/RSlb/ZB8sS5AUuQrc3AgU0+KgUOTB5bCHGE90tuuqWPcDMxMQNPopQzNcuwpVVMLV5DPL9dRW0bf5es5p=\",\n                \"value_start\": 10,\n                \"value_end\": 735,\n                \"entropy\": 5.94525\n            }\n        ]\n    },\n    {\n        \"rule\": \"Credential\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"    CREDENTIAL: AgCF+MstUt6Fka8q26+dOorzSfePXb17SX+N9AUk+VHs9WkCKgkds498SMeUVo1ppHWF5Ky4PF3fC4oy62szpXqD6B7G1bgZr+Ne0yLrU2t0IqVEstar0wcivfxhJekoYQxYPwcubV1IqkhXFaIpJvwL6p4pFfvhFBnZANI7OOsjva3LtBOzReZeRB6ChvMXvDnke61oj/pCT6e9JOb5XcszPQYkVVyebTSLaLEpaINe82WOMJfr+SRNQVmCoT+0O2UJP8m5rgwf0U6KXB7pV7wil1AJyzu3VvPQLHiC6DUgu3p3dYMYgWpolRzdVoqr9nG8T1fxiMcZm1WrtJ/2bO8muqg==/NjXeWbH8e/Z4ZmJYE5PEXGwP83PxoJT1iuHCEXdnP9rr1Jv05H2h0EHeOTrsbQW7WrfouGbhjDW1KiSVz0JxcGF0eSldPGE1BgJmnh/JkdjnPVgdkO1WAc5nxKM3lY/EuXdODga/1xnQV+AHPp9PMo8qjP7ZQbLSV9uN46uudOmvcunP4OJVNKo0gWn/QSPSG8UFa2HSOAVXHNCjMPXJRP891iZccndelKb+bkQuvGoMQWuUwP2b1Hzq4ZvblmMNSJPiMXtx/mWJOekWXI7onHNf0f6MNP/2VHVY7jEx2LnWp42hHVlssHvUB3xORP8/QCdIcZbKdqKxY38FczwMli/I7pTYjL1bbs8XX8NKBwFw/UwWpOczW2IYgZtiYyE46J4VI=\",\n                \"line_num\": 11,\n                \"path\": \"./tests/samples/sealed_secrets.yaml\",\n                \"info\": \"\",\n                \"variable\": \"CREDENTIAL\",\n                \"variable_start\": 4,\n                \"variable_end\": 14,\n                \"value\": \"AgCF+MstUt6Fka8q26+dOorzSfePXb17SX+N9AUk+VHs9WkCKgkds498SMeUVo1ppHWF5Ky4PF3fC4oy62szpXqD6B7G1bgZr+Ne0yLrU2t0IqVEstar0wcivfxhJekoYQxYPwcubV1IqkhXFaIpJvwL6p4pFfvhFBnZANI7OOsjva3LtBOzReZeRB6ChvMXvDnke61oj/pCT6e9JOb5XcszPQYkVVyebTSLaLEpaINe82WOMJfr+SRNQVmCoT+0O2UJP8m5rgwf0U6KXB7pV7wil1AJyzu3VvPQLHiC6DUgu3p3dYMYgWpolRzdVoqr9nG8T1fxiMcZm1WrtJ/2bO8muqg==/NjXeWbH8e/Z4ZmJYE5PEXGwP83PxoJT1iuHCEXdnP9rr1Jv05H2h0EHeOTrsbQW7WrfouGbhjDW1KiSVz0JxcGF0eSldPGE1BgJmnh/JkdjnPVgdkO1WAc5nxKM3lY/EuXdODga/1xnQV+AHPp9PMo8qjP7ZQbLSV9uN46uudOmvcunP4OJVNKo0gWn/QSPSG8UFa2HSOAVXHNCjMPXJRP891iZccndelKb+bkQuvGoMQWuUwP2b1Hzq4ZvblmMNSJPiMXtx/mWJOekWXI7onHNf0f6MNP/2VHVY7jEx2LnWp42hHVlssHvUB3xORP8/QCdIcZbKdqKxY38FczwMli/I7pTYjL1bbs8XX8NKBwFw/UwWpOczW2IYgZtiYyE46J4VI=\",\n                \"value_start\": 16,\n                \"value_end\": 756,\n                \"entropy\": 5.9484\n            }\n        ]\n    },\n    {\n        \"rule\": \"Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"    KEY: AgDuO7+GU7lQXiQNk6M9C+fdDtuMEdMY8pp+/Rjvsk4SZNPvowrzzYJwGYYrqJdH67S7d/dikS+GlFUVvn1ML9PGzYmDmmTUp+sbG+kJil1Xl2n05bN1+tcWRXIvFsStLM5LLgeHDXyhAFk2KsfH02f9FlidcmBHVc4xWnR8Y0fIB5hX591E5/xDawGU6lBKBX3mr1r91eBIZdkwaBVSq0IvW2MSHT1KbwUpB44VbEbolM2essIQ0NW5aEWPynfkwutzsGFL8KNhQSA7z5FBCZOSG6jdY74Z+C5O+V3nvV54SWb5gxwgA5khdYNieblqcab2OFW8Q3gHhxwbAwENt9W3WK3D5RtNdXWNFdIr1Kyd6S0qqimJHWdf0qqBV6k2SIyDMfexlIGlTQPhPoGifJnMbl6qqZV9pcZeSa605ptpNad8Y4eFeYcMK93wgdYWU2Qn/T11zCVqzFpqQ01elyE15moUlkdgrDSw+OeZkCtZ8+p28BF/Xjw3FuwrCroHvQ33Nmc0UJ/hrVCNoCjmKt+P3/ll6BJRE41N4WIgMmUGmaNIrHCc9cKEBeR4AdDuQsAEWNcDL5li9x9oK+jeWJ5TXsLRSHEZgZCmh2C5fMPZXcbRZNhQZy1jb94NZJsawED8ymP8bD3ItJv/wS4Z7WpUcMTEwj9MDt4cvUz22NhEfd4HKXQszGt0gAuPkx/5TIquj+oHqsKBs/QPr6w5uh7qQKXptQF5eAByOU==\",\n                \"line_num\": 12,\n                \"path\": \"./tests/samples/sealed_secrets.yaml\",\n                \"info\": \"\",\n                \"variable\": \"KEY\",\n                \"variable_start\": 4,\n                \"variable_end\": 7,\n                \"value\": \"AgDuO7+GU7lQXiQNk6M9C+fdDtuMEdMY8pp+/Rjvsk4SZNPvowrzzYJwGYYrqJdH67S7d/dikS+GlFUVvn1ML9PGzYmDmmTUp+sbG+kJil1Xl2n05bN1+tcWRXIvFsStLM5LLgeHDXyhAFk2KsfH02f9FlidcmBHVc4xWnR8Y0fIB5hX591E5/xDawGU6lBKBX3mr1r91eBIZdkwaBVSq0IvW2MSHT1KbwUpB44VbEbolM2essIQ0NW5aEWPynfkwutzsGFL8KNhQSA7z5FBCZOSG6jdY74Z+C5O+V3nvV54SWb5gxwgA5khdYNieblqcab2OFW8Q3gHhxwbAwENt9W3WK3D5RtNdXWNFdIr1Kyd6S0qqimJHWdf0qqBV6k2SIyDMfexlIGlTQPhPoGifJnMbl6qqZV9pcZeSa605ptpNad8Y4eFeYcMK93wgdYWU2Qn/T11zCVqzFpqQ01elyE15moUlkdgrDSw+OeZkCtZ8+p28BF/Xjw3FuwrCroHvQ33Nmc0UJ/hrVCNoCjmKt+P3/ll6BJRE41N4WIgMmUGmaNIrHCc9cKEBeR4AdDuQsAEWNcDL5li9x9oK+jeWJ5TXsLRSHEZgZCmh2C5fMPZXcbRZNhQZy1jb94NZJsawED8ymP8bD3ItJv/wS4Z7WpUcMTEwj9MDt4cvUz22NhEfd4HKXQszGt0gAuPkx/5TIquj+oHqsKBs/QPr6w5uh7qQKXptQF5eAByOU==\",\n                \"value_start\": 9,\n                \"value_end\": 753,\n                \"entropy\": 5.96239\n            }\n        ]\n    },\n    {\n        \"rule\": \"Nonce\",\n        \"severity\": \"low\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"    __NONCE: AQ+n0Tth3F1Lt3ReDe+BrQwTzNcs7y+OFND0M/+ipSM+5xE91lsQWW0j1dxGh4PEJtVN0U1oVAL+ZVEIw0IpBDaQQYqkxkkp/+Aj1lp3UgUtGUyX+/CxXFnoK04XZzdpWxcwYeBUikykI5YUUQVldaoTql4BugUy733PXFK91q4UpPK0Dne5yCRKvpqSLWVgigXbUogfRugfYgTgkiGEPsv3izNgRWycIDUInfvpzVvODk1gz6/1nW7xISgLCdcewkRgO6l0WGuOn2dWcndURMOooj4ljD9Aw7g4eIu5hf/B5sCOYh7fB33QxOlAmiMZoliEo6WWGP7P8hneYli7YnRfvvqx7Yh30E3qokRKQXsT+OuSZgK1kKK5yzroO\",\n                \"line_num\": 13,\n                \"path\": \"./tests/samples/sealed_secrets.yaml\",\n                \"info\": \"\",\n                \"variable\": \"__NONCE\",\n                \"variable_start\": 4,\n                \"variable_end\": 11,\n                \"value\": \"AQ+n0Tth3F1Lt3ReDe+BrQwTzNcs7y+OFND0M/+ipSM+5xE91lsQWW0j1dxGh4PEJtVN0U1oVAL+ZVEIw0IpBDaQQYqkxkkp/+Aj1lp3UgUtGUyX+/CxXFnoK04XZzdpWxcwYeBUikykI5YUUQVldaoTql4BugUy733PXFK91q4UpPK0Dne5yCRKvpqSLWVgigXbUogfRugfYgTgkiGEPsv3izNgRWycIDUInfvpzVvODk1gz6/1nW7xISgLCdcewkRgO6l0WGuOn2dWcndURMOooj4ljD9Aw7g4eIu5hf/B5sCOYh7fB33QxOlAmiMZoliEo6WWGP7P8hneYli7YnRfvvqx7Yh30E3qokRKQXsT+OuSZgK1kKK5yzroO\",\n                \"value_start\": 13,\n                \"value_end\": 394,\n                \"entropy\": 5.81513\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"    PASSWORD: AQABhq+jhk0OUxVhswdFEm9IL/8utYAozLhaQ4wumxrpKkH1g0ic/ppWtf2EKuXEzYgQeDHWRSLYEEKY6tGMaYNt2DK75DhrilsRd0p+OVcVVei/v18I0ZNRbBqhApiu2C7jAIBd4wtOXysSY0P/gq3dWJNywvybZ+qj+L6NBsVvwghSQex3ZfO3gQYrIqKbehSBvhBPxAeuYGdEpHyI0eeIBxTH2cu+URfUcA06czLh8bkvBXHSGLgi5IWca1W2V0B1/x6tMPVR19W06CzCu8OSIiehHzzgimBkMoZHC8fJQvuHwePWEnwvWOEVxqcZmSoUqLL1qS6jVtzIViqSbGDay9wyXyoG96/YELVe3OEzAIjtQieZG65JH9A5RF07EB1Kev+w\",\n                \"line_num\": 14,\n                \"path\": \"./tests/samples/sealed_secrets.yaml\",\n                \"info\": \"\",\n                \"variable\": \"PASSWORD\",\n                \"variable_start\": 4,\n                \"variable_end\": 12,\n                \"value\": \"AQABhq+jhk0OUxVhswdFEm9IL/8utYAozLhaQ4wumxrpKkH1g0ic/ppWtf2EKuXEzYgQeDHWRSLYEEKY6tGMaYNt2DK75DhrilsRd0p+OVcVVei/v18I0ZNRbBqhApiu2C7jAIBd4wtOXysSY0P/gq3dWJNywvybZ+qj+L6NBsVvwghSQex3ZfO3gQYrIqKbehSBvhBPxAeuYGdEpHyI0eeIBxTH2cu+URfUcA06czLh8bkvBXHSGLgi5IWca1W2V0B1/x6tMPVR19W06CzCu8OSIiehHzzgimBkMoZHC8fJQvuHwePWEnwvWOEVxqcZmSoUqLL1qS6jVtzIViqSbGDay9wyXyoG96/YELVe3OEzAIjtQieZG65JH9A5RF07EB1Kev+w\",\n                \"value_start\": 14,\n                \"value_end\": 406,\n                \"entropy\": 5.84758\n            }\n        ]\n    },\n    {\n        \"rule\": \"Salt\",\n        \"severity\": \"low\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"    SALT: AQBo2FMJiLQM8T3kRNyvAPoKupDDc3RPl/ZOQtuP/KLJ3sDk0qmKMUsimsbpyjIFzuEciskHzabIBhzRuABZCB4b+GLQ3KxiG3T14XANi9mtj1utEceL7Y1rcJ5jOc7x/s1Ce9RczMXkLS+iJrzQ38hcUdOIBnVbkGixyqvCn0tVcurbQy775rGQKsAAvO56aTCHpS4joP3rizqK3Zk4oGSj43K2EC/Tgt20PPTWMyCBBWhccriVozmV8kIhhluOB8Wz5lbOD98HK++RyFE8Uwvq8E7l04RA1+UvrA3Wowq+IY3PdcLGAKkH+C2OIitncl6MXz3phwnt5oPcg+V1OCTcb/S3IjLrey7G06Kx/CZ97rdArHeR5E2bc/0\",\n                \"line_num\": 15,\n                \"path\": \"./tests/samples/sealed_secrets.yaml\",\n                \"info\": \"\",\n                \"variable\": \"SALT\",\n                \"variable_start\": 4,\n                \"variable_end\": 8,\n                \"value\": \"AQBo2FMJiLQM8T3kRNyvAPoKupDDc3RPl/ZOQtuP/KLJ3sDk0qmKMUsimsbpyjIFzuEciskHzabIBhzRuABZCB4b+GLQ3KxiG3T14XANi9mtj1utEceL7Y1rcJ5jOc7x/s1Ce9RczMXkLS+iJrzQ38hcUdOIBnVbkGixyqvCn0tVcurbQy775rGQKsAAvO56aTCHpS4joP3rizqK3Zk4oGSj43K2EC/Tgt20PPTWMyCBBWhccriVozmV8kIhhluOB8Wz5lbOD98HK++RyFE8Uwvq8E7l04RA1+UvrA3Wowq+IY3PdcLGAKkH+C2OIitncl6MXz3phwnt5oPcg+V1OCTcb/S3IjLrey7G06Kx/CZ97rdArHeR5E2bc/0\",\n                \"value_start\": 10,\n                \"value_end\": 389,\n                \"entropy\": 5.85103\n            }\n        ]\n    },\n    {\n        \"rule\": \"Secret\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"    SECRET: AQC/4e1KLjq5yozJK7OSdaPCpSIrNC8ZhfgJ/rnmBPDly0de/kBhauPOl62fCY0Abn4ToV9IKgAr8o+ijkpg1SNtZoWk9cVX8R8xqGgN88+cIj7rrrrN8w0Y3vUz4pRJNbL4hbVF6L9ioyt8iXufJniiSBKfyaLG+JbOkFcLgbElIXW5zB0FiIq2NHOvxSCuFtoTSrzBOoqnshacJF8Qp71PHZZX/FIKb9S1Wbu85Y3Pl3/UEknd6303vzqECvVd0q5uLxXTPgx6Ug3fulpmIQxuGdYUvQBJSn9hi2Xscvo9u/oLJG6oALUa3TBwKxpJWDjtLB+a2QV07yi9u6+Uu+DvhpB72aKAA9pvbFsNNpci3jutMS1UtJP7gW2cw==\",\n                \"line_num\": 16,\n                \"path\": \"./tests/samples/sealed_secrets.yaml\",\n                \"info\": \"\",\n                \"variable\": \"SECRET\",\n                \"variable_start\": 4,\n                \"variable_end\": 10,\n                \"value\": \"AQC/4e1KLjq5yozJK7OSdaPCpSIrNC8ZhfgJ/rnmBPDly0de/kBhauPOl62fCY0Abn4ToV9IKgAr8o+ijkpg1SNtZoWk9cVX8R8xqGgN88+cIj7rrrrN8w0Y3vUz4pRJNbL4hbVF6L9ioyt8iXufJniiSBKfyaLG+JbOkFcLgbElIXW5zB0FiIq2NHOvxSCuFtoTSrzBOoqnshacJF8Qp71PHZZX/FIKb9S1Wbu85Y3Pl3/UEknd6303vzqECvVd0q5uLxXTPgx6Ug3fulpmIQxuGdYUvQBJSn9hi2Xscvo9u/oLJG6oALUa3TBwKxpJWDjtLB+a2QV07yi9u6+Uu+DvhpB72aKAA9pvbFsNNpci3jutMS1UtJP7gW2cw==\",\n                \"value_start\": 12,\n                \"value_end\": 395,\n                \"entropy\": 5.90879\n            }\n        ]\n    },\n    {\n        \"rule\": \"Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"    TOKEN: AQDRjFz5B59a6LrvuLJJ6gPwtBT8pudeNH57O1g4UfOYNqH5IncHt0jK/unn0IX/V8Jpoc0aeHVNV66luEsjjCkMqIFNi73VStq4sDFrTwQQZCU6aa5rQJB5zQ2eh5HCsUs1oGKPaR3ByKhnEbpE4sgpJ5OwI4QVqkzQwadxj2GUCyagk3G5f1tPNxVXq6spBCQfzmGYuHOMi/QA4kfJtArnl0kWPwmzwTd1TwAEzXTvodgnv8W8obls4eQA5Tl0CcfxfSd5jnLvNDQIYHdlNJvZXQu9FzoZyocfqYCxMLCeW5BQ1+kY/cWNMbk+TaiVaklhkEgkusVZoCKjXoSpShFr4JryD9g/A48Q8u/nx6renGGdvlWEIf4OzGK1KA=\",\n                \"line_num\": 17,\n                \"path\": \"./tests/samples/sealed_secrets.yaml\",\n                \"info\": \"\",\n                \"variable\": \"TOKEN\",\n                \"variable_start\": 4,\n                \"variable_end\": 9,\n                \"value\": \"AQDRjFz5B59a6LrvuLJJ6gPwtBT8pudeNH57O1g4UfOYNqH5IncHt0jK/unn0IX/V8Jpoc0aeHVNV66luEsjjCkMqIFNi73VStq4sDFrTwQQZCU6aa5rQJB5zQ2eh5HCsUs1oGKPaR3ByKhnEbpE4sgpJ5OwI4QVqkzQwadxj2GUCyagk3G5f1tPNxVXq6spBCQfzmGYuHOMi/QA4kfJtArnl0kWPwmzwTd1TwAEzXTvodgnv8W8obls4eQA5Tl0CcfxfSd5jnLvNDQIYHdlNJvZXQu9FzoZyocfqYCxMLCeW5BQ1+kY/cWNMbk+TaiVaklhkEgkusVZoCKjXoSpShFr4JryD9g/A48Q8u/nx6renGGdvlWEIf4OzGK1KA=\",\n                \"value_start\": 11,\n                \"value_end\": 394,\n                \"entropy\": 5.89729\n            }\n        ]\n    },\n    {\n        \"rule\": \"Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"          \\\"key\\\": \\\"keys\\\",\",\n                \"line_num\": 25,\n                \"path\": \"./tests/samples/sealed_secrets.yaml\",\n                \"info\": \"\",\n                \"variable\": \"key\",\n                \"variable_start\": 11,\n                \"variable_end\": 14,\n                \"value\": \"keys\",\n                \"value_start\": 18,\n                \"value_end\": 22,\n                \"entropy\": 2.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"Secret\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"if string(secret) == \\\"cackle!\\\" {\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/secret.go\",\n                \"info\": \"\",\n                \"variable\": \"secret)\",\n                \"variable_start\": 10,\n                \"variable_end\": 17,\n                \"value\": \"cackle!\",\n                \"value_start\": 22,\n                \"value_end\": 29,\n                \"entropy\": 2.52164\n            }\n        ]\n    },\n    {\n        \"rule\": \"Secret\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"        Secret: []byte{333, 9, 100, 114, 245, 164, 134, 217,225,26,0,       172, 39, 248,  203, 201},\",\n                \"line_num\": 3,\n                \"path\": \"./tests/samples/secret.go\",\n                \"info\": \"\",\n                \"variable\": \"Secret\",\n                \"variable_start\": 8,\n                \"variable_end\": 14,\n                \"value\": \"333, 9, 100, 114, 245, 164, 134, 217,225,26,0,       172, 39, 248,  203, 201\",\n                \"value_start\": 23,\n                \"value_end\": 99,\n                \"entropy\": 3.10882\n            }\n        ]\n    },\n    {\n        \"rule\": \"PEM Private Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"var SECRET = `-----BEGIN OPENSSH PRIVATE KEY-----\",\n                \"line_num\": 7,\n                \"path\": \"./tests/samples/secret.go\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"-----BEGIN OPENSSH PRIVATE KEY-----\",\n                \"value_start\": 14,\n                \"value_end\": 49,\n                \"entropy\": 3.58716\n            },\n            {\n                \"line\": \"b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAAAMwAAAAtzc2gtZWQyNTUx\",\n                \"line_num\": 8,\n                \"path\": \"./tests/samples/secret.go\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAAAMwAAAAtzc2gtZWQyNTUx\",\n                \"value_start\": 0,\n                \"value_end\": 76,\n                \"entropy\": 4.18903\n            },\n            {\n                \"line\": \"OQAAABWHkoN5N0V0OCSXOHWSOHAxRYMJSGc4clgVA0gJgFlIBAAAAJimRM7VpkTO1QAAAAtzc2gt\",\n                \"line_num\": 9,\n                \"path\": \"./tests/samples/secret.go\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"OQAAABWHkoN5N0V0OCSXOHWSOHAxRYMJSGc4clgVA0gJgFlIBAAAAJimRM7VpkTO1QAAAAtzc2gt\",\n                \"value_start\": 0,\n                \"value_end\": 76,\n                \"entropy\": 4.74471\n            },\n            {\n                \"line\": \"ZWQyNTUxOQAAACBqIPMG94HL7zedFzsvi45mHS8ZuyLQXqvHpHobcdNCJAAAAFRoZXJlXzE1LU4w\",\n                \"line_num\": 10,\n                \"path\": \"./tests/samples/secret.go\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"ZWQyNTUxOQAAACBqIPMG94HL7zedFzsvi45mHS8ZuyLQXqvHpHobcdNCJAAAAFRoZXJlXzE1LU4w\",\n                \"value_start\": 0,\n                \"value_end\": 76,\n                \"entropy\": 5.24555\n            },\n            {\n                \"line\": \"dF9UaGVLZXlZb3VBcmVMb29raW5nRm9S8wb3Mj0tZT1hc3A7ZHprejsuZm5tbmRmbmVuZm5pAAAA\",\n                \"line_num\": 11,\n                \"path\": \"./tests/samples/secret.go\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"dF9UaGVLZXlZb3VBcmVMb29raW5nRm9S8wb3Mj0tZT1hc3A7ZHprejsuZm5tbmRmbmVuZm5pAAAA\",\n                \"value_start\": 0,\n                \"value_end\": 76,\n                \"entropy\": 4.94996\n            },\n            {\n                \"line\": \"EXRpemVuQGNyZWRzd2VlcGVyAQIDBA==\",\n                \"line_num\": 12,\n                \"path\": \"./tests/samples/secret.go\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"EXRpemVuQGNyZWRzd2VlcGVyAQIDBA==\",\n                \"value_start\": 0,\n                \"value_end\": 32,\n                \"entropy\": 4.47641\n            },\n            {\n                \"line\": \"-----END OPENSSH PRIVATE KEY-----\",\n                \"line_num\": 13,\n                \"path\": \"./tests/samples/secret.go\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"-----END OPENSSH PRIVATE KEY-----\",\n                \"value_start\": 0,\n                \"value_end\": 33,\n                \"entropy\": 3.46942\n            }\n        ]\n    },\n    {\n        \"rule\": \"Secret\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"var SECRET = `-----BEGIN OPENSSH PRIVATE KEY-----\",\n                \"line_num\": 7,\n                \"path\": \"./tests/samples/secret.go\",\n                \"info\": \"\",\n                \"variable\": \"SECRET\",\n                \"variable_start\": 4,\n                \"variable_end\": 10,\n                \"value\": \"-----BEGIN OPENSSH PRIVATE KEY-----\",\n                \"value_start\": 14,\n                \"value_end\": 49,\n                \"entropy\": 3.58716\n            }\n        ]\n    },\n    {\n        \"rule\": \"Secret\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"var secret_looks_like_linux_path_1=\\\"/VnpmUGWxhQW9KQAwrL2ZYdDJPNG1PQjYxMXNPaF\\\"\",\n                \"line_num\": 17,\n                \"path\": \"./tests/samples/secret.go\",\n                \"info\": \"\",\n                \"variable\": \"secret_looks_like_linux_path_1\",\n                \"variable_start\": 4,\n                \"variable_end\": 34,\n                \"value\": \"/VnpmUGWxhQW9KQAwrL2ZYdDJPNG1PQjYxMXNPaF\",\n                \"value_start\": 36,\n                \"value_end\": 76,\n                \"entropy\": 4.83418\n            }\n        ]\n    },\n    {\n        \"rule\": \"Secret\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"var secret_looks_like_linux_path_2=\\\"VnpmUGWxhQW/9KQAwrL2ZYd/DJPNG1PQjYxMXNPF\\\"\",\n                \"line_num\": 18,\n                \"path\": \"./tests/samples/secret.go\",\n                \"info\": \"\",\n                \"variable\": \"secret_looks_like_linux_path_2\",\n                \"variable_start\": 4,\n                \"variable_end\": 34,\n                \"value\": \"VnpmUGWxhQW/9KQAwrL2ZYd/DJPNG1PQjYxMXNPF\",\n                \"value_start\": 36,\n                \"value_end\": 76,\n                \"entropy\": 4.78418\n            }\n        ]\n    },\n    {\n        \"rule\": \"Secret\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"var secret_looks_like_linux_path_3=\\\"VnpmUGWxhQW/9KQAwrL2ZYdDJPNG1PQjYxMXNPF=\\\"\",\n                \"line_num\": 19,\n                \"path\": \"./tests/samples/secret.go\",\n                \"info\": \"\",\n                \"variable\": \"secret_looks_like_linux_path_3\",\n                \"variable_start\": 4,\n                \"variable_end\": 34,\n                \"value\": \"VnpmUGWxhQW/9KQAwrL2ZYdDJPNG1PQjYxMXNPF=\",\n                \"value_start\": 36,\n                \"value_end\": 76,\n                \"entropy\": 4.83418\n            }\n        ]\n    },\n    {\n        \"rule\": \"Secret\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"var secret_looks_like_linux_path__=\\\"VnpmUGWxhQW/9KQAwrL2ZYd/DJPNG1PQjEXAMbLE\\\"\",\n                \"line_num\": 20,\n                \"path\": \"./tests/samples/secret.go\",\n                \"info\": \"\",\n                \"variable\": \"secret_looks_like_linux_path__\",\n                \"variable_start\": 4,\n                \"variable_end\": 34,\n                \"value\": \"VnpmUGWxhQW/9KQAwrL2ZYd/DJPNG1PQjEXAMbLE\",\n                \"value_start\": 36,\n                \"value_end\": 76,\n                \"entropy\": 4.85306\n            }\n        ]\n    },\n    {\n        \"rule\": \"Secret\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"LEGACY_GITHUB_SECRET = \\\"fa87409ad3a4589fd279c501b3d2e174855ee9f4\\\"\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/secret.groovy\",\n                \"info\": \"\",\n                \"variable\": \"LEGACY_GITHUB_SECRET\",\n                \"variable_start\": 0,\n                \"variable_end\": 20,\n                \"value\": \"fa87409ad3a4589fd279c501b3d2e174855ee9f4\",\n                \"value_start\": 24,\n                \"value_end\": 64,\n                \"entropy\": 3.80869\n            }\n        ]\n    },\n    {\n        \"rule\": \"SendGrid API Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"SG.gireogigireogigi.gireogigireogigi\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/sendgrid_api_key\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"SG.gireogigireogigi.gireogigireogigi\",\n                \"value_start\": 0,\n                \"value_end\": 36,\n                \"entropy\": 2.60219\n            }\n        ]\n    },\n    {\n        \"rule\": \"Grafana Provisioned API Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"sntrys_eyJpYXQiOjE3NDEyNjQzNTYuMDAwMCwidXJsIjoiaHR0cHM6Ly9zZW50cnkuaW8iLCJyZWdpb25fdXJsIjoiaHR0cHM6Ly91YS5zZW50cnkuaW8iLCJvcmciOiIifQ==v8D-whr2cUQK91Civi4yNoLRjC3MDZH5I2aMcs_j5GDv\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/sentry\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"eyJpYXQiOjE3NDEyNjQzNTYuMDAwMCwidXJsIjoiaHR0cHM6Ly9zZW50cnkuaW8iLCJyZWdpb25fdXJsIjoiaHR0cHM6Ly91YS5zZW50cnkuaW8iLCJvcmciOiIifQ==v8D-whr2cUQK91Civi4yNoLRjC3MDZH5I2aMcs_j5GDv\",\n                \"value_start\": 7,\n                \"value_end\": 179,\n                \"entropy\": 5.50522\n            }\n        ]\n    },\n    {\n        \"rule\": \"Sentry Organization Auth Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"sntrys_eyJpYXQiOjE3NDEyNjQzNTYuMDAwMCwidXJsIjoiaHR0cHM6Ly9zZW50cnkuaW8iLCJyZWdpb25fdXJsIjoiaHR0cHM6Ly91YS5zZW50cnkuaW8iLCJvcmciOiIifQ==v8D-whr2cUQK91Civi4yNoLRjC3MDZH5I2aMcs_j5GDv\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/sentry\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"sntrys_eyJpYXQiOjE3NDEyNjQzNTYuMDAwMCwidXJsIjoiaHR0cHM6Ly9zZW50cnkuaW8iLCJyZWdpb25fdXJsIjoiaHR0cHM6Ly91YS5zZW50cnkuaW8iLCJvcmciOiIifQ==v8D-whr2cUQK91Civi4yNoLRjC3MDZH5I2aMcs_j5GDv\",\n                \"value_start\": 0,\n                \"value_end\": 179,\n                \"entropy\": 5.53873\n            }\n        ]\n    },\n    {\n        \"rule\": \"Sentry User Auth Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"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\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/sentry\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"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\",\n                \"value_start\": 0,\n                \"value_end\": 71,\n                \"entropy\": 4.14384\n            }\n        ]\n    },\n    {\n        \"rule\": \"Shopify Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"    \\\"shopyfy_k\\\": \\\"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\\\",\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/shopify_token\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"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\",\n                \"value_start\": 18,\n                \"value_end\": 56,\n                \"entropy\": 3.80396\n            }\n        ]\n    },\n    {\n        \"rule\": \"Slack Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"xapp-1-A0F6JEP4877-3425459257038-ff6379c940d5ed64f2cf3c820578dcebe5e83dccc0ebd89574184af9b9d2c1be\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/slack_token.hs\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"xapp-1-A0F6JEP4877-3425459257038-ff6379c940d5ed64f2cf3c820578dcebe5e83dccc0ebd89574184af9b9d2c1be\",\n                \"value_start\": 0,\n                \"value_end\": 97,\n                \"entropy\": 4.32216\n            }\n        ]\n    },\n    {\n        \"rule\": \"Slack Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"xoxb-391809548274-4236212766789-i8EoyACELx2FYnSOkRPEpePN\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/slack_token.hs\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"xoxb-391809548274-4236212766789-i8EoyACELx2FYnSOkRPEpePN\",\n                \"value_start\": 0,\n                \"value_end\": 56,\n                \"entropy\": 4.71996\n            }\n        ]\n    },\n    {\n        \"rule\": \"Slack Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"xoxp-1-Mi0yLTM5MTgwOTU0ODI3NC0xMDUzMjc0NTg2MzIxLTQyMzYyMTI3NjY3ODktMzQyNTQ1OTI1NzAzOC1mZjYzNzljOTQwZDVlZDY0ZjJjZjNjODIwNTc4ZGNlYmU1ZTgzZGNjYzBlYmQ4OTU3NDE4NGFmOWI5ZDJjMWJl\",\n                \"line_num\": 3,\n                \"path\": \"./tests/samples/slack_token.hs\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"xoxp-1-Mi0yLTM5MTgwOTU0ODI3NC0xMDUzMjc0NTg2MzIxLTQyMzYyMTI3NjY3ODktMzQyNTQ1OTI1NzAzOC1mZjYzNzljOTQwZDVlZDY0ZjJjZjNjODIwNTc4ZGNlYmU1ZTgzZGNjYzBlYmQ4OTU3NDE4NGFmOWI5ZDJjMWJl\",\n                \"value_start\": 0,\n                \"value_end\": 171,\n                \"entropy\": 4.93756\n            }\n        ]\n    },\n    {\n        \"rule\": \"Slack Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"xoxe-1-My0xLTM5MTgwOTU0ODI3NC00MjM2MjEyNzY2Nzg5LTM0MjU0NTkyNTcwMzgtZmY2Mzc5Yzk0MGQ1ZWQ2NGYyY2YzYzgyMDU3OGRjZWJlNWU4M2RjY2MwZWJkODk1NzQxODRhZjliOWQyYzFiZQ\",\n                \"line_num\": 4,\n                \"path\": \"./tests/samples/slack_token.hs\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"xoxe-1-My0xLTM5MTgwOTU0ODI3NC00MjM2MjEyNzY2Nzg5LTM0MjU0NTkyNTcwMzgtZmY2Mzc5Yzk0MGQ1ZWQ2NGYyY2YzYzgyMDU3OGRjZWJlNWU4M2RjY2MwZWJkODk1NzQxODRhZjliOWQyYzFiZQ\",\n                \"value_start\": 0,\n                \"value_end\": 153,\n                \"entropy\": 4.95538\n            }\n        ]\n    },\n    {\n        \"rule\": \"Slack Webhook\",\n        \"severity\": \"medium\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"    \\\"hook\\\": \\\"https://hooks.slack.com/services/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\\\",\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/slack_webhook.template\",\n                \"info\": \"\",\n                \"variable\": \"hooks.slack.com/services\",\n                \"variable_start\": 21,\n                \"variable_end\": 45,\n                \"value\": \"/T1029384756/B102984756/sjsbfzowhhqbsgftrvajxzpg\",\n                \"value_start\": 45,\n                \"value_end\": 93,\n                \"entropy\": 4.76184\n            }\n        ]\n    },\n    {\n        \"rule\": \"SonarQube Credentials\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"'sonar.login': 'squ_944fb17dc1ca18eb2750b6238e5c5ad27b68aaab',\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/sonarqube\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"squ_944fb17dc1ca18eb2750b6238e5c5ad27b68aaab\",\n                \"value_start\": 16,\n                \"value_end\": 60,\n                \"entropy\": 4.10151\n            }\n        ]\n    },\n    {\n        \"rule\": \"SonarQube Credentials\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"-Dsonar.login=squ_5f6278f46c0697b8ce6a07cfaabf363b5a97a984\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/sonarqube\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"squ_5f6278f46c0697b8ce6a07cfaabf363b5a97a984\",\n                \"value_start\": 14,\n                \"value_end\": 58,\n                \"entropy\": 3.954\n            }\n        ]\n    },\n    {\n        \"rule\": \"Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"SONAR_TOKEN=sqp_abcdef123455678908359f980be71580cd3da370\",\n                \"line_num\": 3,\n                \"path\": \"./tests/samples/sonarqube\",\n                \"info\": \"\",\n                \"variable\": \"SONAR_TOKEN\",\n                \"variable_start\": 0,\n                \"variable_end\": 11,\n                \"value\": \"sqp_abcdef123455678908359f980be71580cd3da370\",\n                \"value_start\": 12,\n                \"value_end\": 56,\n                \"entropy\": 4.13523\n            }\n        ]\n    },\n    {\n        \"rule\": \"SonarQube Credentials\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"SONAR_TOKEN=sqp_abcdef123455678908359f980be71580cd3da370\",\n                \"line_num\": 3,\n                \"path\": \"./tests/samples/sonarqube\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"sqp_abcdef123455678908359f980be71580cd3da370\",\n                \"value_start\": 12,\n                \"value_end\": 56,\n                \"entropy\": 4.13523\n            }\n        ]\n    },\n    {\n        \"rule\": \"SQL Password\",\n        \"severity\": \"medium\",\n        \"confidence\": \"weak\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'SqLpa5sW0rD';\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/sql_password\",\n                \"info\": \"\",\n                \"variable\": \"ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY\",\n                \"variable_start\": 0,\n                \"variable_end\": 70,\n                \"value\": \"SqLpa5sW0rD\",\n                \"value_start\": 72,\n                \"value_end\": 83,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"SQL Password\",\n        \"severity\": \"medium\",\n        \"confidence\": \"weak\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"'create user name identified by 'SqLpa5sW0rD' --\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/sql_password\",\n                \"info\": \"\",\n                \"variable\": \"create user name identified by\",\n                \"variable_start\": 1,\n                \"variable_end\": 31,\n                \"value\": \"SqLpa5sW0rD\",\n                \"value_start\": 33,\n                \"value_end\": 44,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"SQL Password\",\n        \"severity\": \"medium\",\n        \"confidence\": \"weak\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"exec(\\\"CREATE USER ExposedTest ACCOUNT UNLOCK IDENTIFIED BY SqLpa5sW0rD\\\");\",\n                \"line_num\": 3,\n                \"path\": \"./tests/samples/sql_password\",\n                \"info\": \"\",\n                \"variable\": \"CREATE USER ExposedTest ACCOUNT UNLOCK IDENTIFIED BY\",\n                \"variable_start\": 6,\n                \"variable_end\": 58,\n                \"value\": \"SqLpa5sW0rD\",\n                \"value_start\": 59,\n                \"value_end\": 70,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"SQL Password\",\n        \"severity\": \"medium\",\n        \"confidence\": \"weak\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"\\uff1a`CREATE USER 'haproxy'@'%' IDENTIFIED BY 'SqLpa5sW0rD';`\",\n                \"line_num\": 4,\n                \"path\": \"./tests/samples/sql_password\",\n                \"info\": \"\",\n                \"variable\": \"CREATE USER 'haproxy'@'%' IDENTIFIED BY\",\n                \"variable_start\": 2,\n                \"variable_end\": 41,\n                \"value\": \"SqLpa5sW0rD\",\n                \"value_start\": 43,\n                \"value_end\": 54,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"SQL Password\",\n        \"severity\": \"medium\",\n        \"confidence\": \"weak\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"exec(\\\"CREATE USER ExposedTest ACCOUNT UNLOCK IDENTIFIED BY SqLpa5sW0rD\\\");\",\n                \"line_num\": 5,\n                \"path\": \"./tests/samples/sql_password\",\n                \"info\": \"\",\n                \"variable\": \"CREATE USER ExposedTest ACCOUNT UNLOCK IDENTIFIED BY\",\n                \"variable_start\": 6,\n                \"variable_end\": 58,\n                \"value\": \"SqLpa5sW0rD\",\n                \"value_start\": 59,\n                \"value_end\": 70,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"SQL Password\",\n        \"severity\": \"medium\",\n        \"confidence\": \"weak\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"expected_statement = \\\"\\\"\\\"CREATE USER foo WITH ENCRYPTED PASSWORD 'SqLpa5sW0rD' CREATEDB;\",\n                \"line_num\": 6,\n                \"path\": \"./tests/samples/sql_password\",\n                \"info\": \"\",\n                \"variable\": \"CREATE USER foo WITH ENCRYPTED PASSWORD\",\n                \"variable_start\": 24,\n                \"variable_end\": 63,\n                \"value\": \"SqLpa5sW0rD\",\n                \"value_start\": 65,\n                \"value_end\": 76,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"SQL Password\",\n        \"severity\": \"medium\",\n        \"confidence\": \"weak\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"CREATE USER $TEST_USER_NAME WITH SUPERUSER LOGIN NOINHERIT PASSWORD '$TEST_USER_PASS' CREATEROLE; -- todo filter\",\n                \"line_num\": 7,\n                \"path\": \"./tests/samples/sql_password\",\n                \"info\": \"\",\n                \"variable\": \"CREATE USER $TEST_USER_NAME WITH SUPERUSER LOGIN NOINHERIT PASSWORD\",\n                \"variable_start\": 0,\n                \"variable_end\": 67,\n                \"value\": \"$TEST_USER_PASS\",\n                \"value_start\": 69,\n                \"value_end\": 84,\n                \"entropy\": 2.97356\n            }\n        ]\n    },\n    {\n        \"rule\": \"SQL Password\",\n        \"severity\": \"medium\",\n        \"confidence\": \"weak\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"CREATE USER foo WITH ENCRYPTED PASSWORD 'SqLpa5sW0rD' CREATEDB;\",\n                \"line_num\": 8,\n                \"path\": \"./tests/samples/sql_password\",\n                \"info\": \"\",\n                \"variable\": \"CREATE USER foo WITH ENCRYPTED PASSWORD\",\n                \"variable_start\": 0,\n                \"variable_end\": 39,\n                \"value\": \"SqLpa5sW0rD\",\n                \"value_start\": 41,\n                \"value_end\": 52,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"ALTER LOGIN username WITH PASSWORD = 'SqLpa5sW0rD';\",\n                \"line_num\": 9,\n                \"path\": \"./tests/samples/sql_password\",\n                \"info\": \"\",\n                \"variable\": \"PASSWORD\",\n                \"variable_start\": 26,\n                \"variable_end\": 34,\n                \"value\": \"SqLpa5sW0rD\",\n                \"value_start\": 38,\n                \"value_end\": 49,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"SQL Password\",\n        \"severity\": \"medium\",\n        \"confidence\": \"weak\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"ALTER LOGIN username WITH PASSWORD = 'SqLpa5sW0rD';\",\n                \"line_num\": 9,\n                \"path\": \"./tests/samples/sql_password\",\n                \"info\": \"\",\n                \"variable\": \"ALTER LOGIN username WITH PASSWORD =\",\n                \"variable_start\": 0,\n                \"variable_end\": 36,\n                \"value\": \"SqLpa5sW0rD\",\n                \"value_start\": 38,\n                \"value_end\": 49,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"SQL Password\",\n        \"severity\": \"medium\",\n        \"confidence\": \"weak\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"ALTER ROLE postgres PASSWORD 'SqLpa5sW0rD'; SELECT pg_reload_conf()\\\"\",\n                \"line_num\": 10,\n                \"path\": \"./tests/samples/sql_password\",\n                \"info\": \"\",\n                \"variable\": \"ALTER ROLE postgres PASSWORD\",\n                \"variable_start\": 0,\n                \"variable_end\": 28,\n                \"value\": \"SqLpa5sW0rD\",\n                \"value_start\": 30,\n                \"value_end\": 41,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"SQL Password\",\n        \"severity\": \"medium\",\n        \"confidence\": \"weak\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"ALTER USER username WITH PASSWORD 'SqLpa5sW0rD';\",\n                \"line_num\": 11,\n                \"path\": \"./tests/samples/sql_password\",\n                \"info\": \"\",\n                \"variable\": \"ALTER USER username WITH PASSWORD\",\n                \"variable_start\": 0,\n                \"variable_end\": 33,\n                \"value\": \"SqLpa5sW0rD\",\n                \"value_start\": 35,\n                \"value_end\": 46,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"CREATE LOGIN username WITH PASSWORD = 'SqLpa5sW0rD';\",\n                \"line_num\": 12,\n                \"path\": \"./tests/samples/sql_password\",\n                \"info\": \"\",\n                \"variable\": \"PASSWORD\",\n                \"variable_start\": 27,\n                \"variable_end\": 35,\n                \"value\": \"SqLpa5sW0rD\",\n                \"value_start\": 39,\n                \"value_end\": 50,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"SQL Password\",\n        \"severity\": \"medium\",\n        \"confidence\": \"weak\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"CREATE LOGIN username WITH PASSWORD = 'SqLpa5sW0rD';\",\n                \"line_num\": 12,\n                \"path\": \"./tests/samples/sql_password\",\n                \"info\": \"\",\n                \"variable\": \"CREATE LOGIN username WITH PASSWORD =\",\n                \"variable_start\": 0,\n                \"variable_end\": 37,\n                \"value\": \"SqLpa5sW0rD\",\n                \"value_start\": 39,\n                \"value_end\": 50,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"SQL Password\",\n        \"severity\": \"medium\",\n        \"confidence\": \"weak\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"CREATE USER chuck WITH PASSWORD 'SqLpa5sW0rD' SUPERUSER;\",\n                \"line_num\": 13,\n                \"path\": \"./tests/samples/sql_password\",\n                \"info\": \"\",\n                \"variable\": \"CREATE USER chuck WITH PASSWORD\",\n                \"variable_start\": 0,\n                \"variable_end\": 31,\n                \"value\": \"SqLpa5sW0rD\",\n                \"value_start\": 33,\n                \"value_end\": 44,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"SQL Password\",\n        \"severity\": \"medium\",\n        \"confidence\": \"weak\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"CREATE USER IF NOT EXISTS sandy WITH PASSWORD 'SqLpa5sW0rD' NOSUPERUSER;\",\n                \"line_num\": 14,\n                \"path\": \"./tests/samples/sql_password\",\n                \"info\": \"\",\n                \"variable\": \"CREATE USER IF NOT EXISTS sandy WITH PASSWORD\",\n                \"variable_start\": 0,\n                \"variable_end\": 45,\n                \"value\": \"SqLpa5sW0rD\",\n                \"value_start\": 47,\n                \"value_end\": 58,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"SQL Password\",\n        \"severity\": \"medium\",\n        \"confidence\": \"weak\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"CREATE USER myuser WITH PASSWORD 'SqLpa5sW0rD';\",\n                \"line_num\": 15,\n                \"path\": \"./tests/samples/sql_password\",\n                \"info\": \"\",\n                \"variable\": \"CREATE USER myuser WITH PASSWORD\",\n                \"variable_start\": 0,\n                \"variable_end\": 32,\n                \"value\": \"SqLpa5sW0rD\",\n                \"value_start\": 34,\n                \"value_end\": 45,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"SQL Password\",\n        \"severity\": \"medium\",\n        \"confidence\": \"weak\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"CREATE USER username WITH PASSWORD 'SqLpa5sW0rD';\",\n                \"line_num\": 16,\n                \"path\": \"./tests/samples/sql_password\",\n                \"info\": \"\",\n                \"variable\": \"CREATE USER username WITH PASSWORD\",\n                \"variable_start\": 0,\n                \"variable_end\": 34,\n                \"value\": \"SqLpa5sW0rD\",\n                \"value_start\": 36,\n                \"value_end\": 47,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"SQL Password\",\n        \"severity\": \"medium\",\n        \"confidence\": \"weak\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"ALTER USER 'username'@'localhost' IDENTIFIED BY 'SqLpa5sW0rD';\",\n                \"line_num\": 17,\n                \"path\": \"./tests/samples/sql_password\",\n                \"info\": \"\",\n                \"variable\": \"ALTER USER 'username'@'localhost' IDENTIFIED BY\",\n                \"variable_start\": 0,\n                \"variable_end\": 47,\n                \"value\": \"SqLpa5sW0rD\",\n                \"value_start\": 49,\n                \"value_end\": 60,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"SQL Password\",\n        \"severity\": \"medium\",\n        \"confidence\": \"weak\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"ALTER USER 'super_user'@'10.10.10.%' identified by 'SqLpa5sW0rD';\",\n                \"line_num\": 18,\n                \"path\": \"./tests/samples/sql_password\",\n                \"info\": \"\",\n                \"variable\": \"ALTER USER 'super_user'@'10.10.10.%' identified by\",\n                \"variable_start\": 0,\n                \"variable_end\": 50,\n                \"value\": \"SqLpa5sW0rD\",\n                \"value_start\": 52,\n                \"value_end\": 63,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"SQL Password\",\n        \"severity\": \"medium\",\n        \"confidence\": \"weak\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"ALTER USER username IDENTIFIED BY SqLpa5sW0rD;\",\n                \"line_num\": 19,\n                \"path\": \"./tests/samples/sql_password\",\n                \"info\": \"\",\n                \"variable\": \"ALTER USER username IDENTIFIED BY\",\n                \"variable_start\": 0,\n                \"variable_end\": 33,\n                \"value\": \"SqLpa5sW0rD\",\n                \"value_start\": 34,\n                \"value_end\": 45,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"SQL Password\",\n        \"severity\": \"medium\",\n        \"confidence\": \"weak\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"CREATE USER username IDENTIFIED BY SqLpa5sW0rD;\",\n                \"line_num\": 20,\n                \"path\": \"./tests/samples/sql_password\",\n                \"info\": \"\",\n                \"variable\": \"CREATE USER username IDENTIFIED BY\",\n                \"variable_start\": 0,\n                \"variable_end\": 34,\n                \"value\": \"SqLpa5sW0rD\",\n                \"value_start\": 35,\n                \"value_end\": 46,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"SQL Password\",\n        \"severity\": \"medium\",\n        \"confidence\": \"weak\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"CREATE USER 'username'@'localhost' IDENTIFIED BY 'SqLpa5sW0rD';\",\n                \"line_num\": 21,\n                \"path\": \"./tests/samples/sql_password\",\n                \"info\": \"\",\n                \"variable\": \"CREATE USER 'username'@'localhost' IDENTIFIED BY\",\n                \"variable_start\": 0,\n                \"variable_end\": 48,\n                \"value\": \"SqLpa5sW0rD\",\n                \"value_start\": 50,\n                \"value_end\": 61,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"SQL Password\",\n        \"severity\": \"medium\",\n        \"confidence\": \"weak\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"mysql -u root -pdbadmin -e \\\"CREATE USER 'cactiuser'@'localhost' IDENTIFIED BY 'SqLpa5sW0rD';\\\"\\u2013          \",\n                \"line_num\": 22,\n                \"path\": \"./tests/samples/sql_password\",\n                \"info\": \"\",\n                \"variable\": \"CREATE USER 'cactiuser'@'localhost' IDENTIFIED BY\",\n                \"variable_start\": 28,\n                \"variable_end\": 77,\n                \"value\": \"SqLpa5sW0rD\",\n                \"value_start\": 79,\n                \"value_end\": 90,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"SQL Password\",\n        \"severity\": \"medium\",\n        \"confidence\": \"weak\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"-c \\\"CREATE ROLE scram_test login password 'SqLpa5sW0rD'\\\"\",\n                \"line_num\": 23,\n                \"path\": \"./tests/samples/sql_password\",\n                \"info\": \"\",\n                \"variable\": \"CREATE ROLE scram_test login password\",\n                \"variable_start\": 4,\n                \"variable_end\": 41,\n                \"value\": \"SqLpa5sW0rD\",\n                \"value_start\": 43,\n                \"value_end\": 54,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"SQL Password\",\n        \"severity\": \"medium\",\n        \"confidence\": \"weak\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"CREATE ROLE app_admin WITH LOGIN PASSWORD SqLpa5sW0rD;\",\n                \"line_num\": 24,\n                \"path\": \"./tests/samples/sql_password\",\n                \"info\": \"\",\n                \"variable\": \"CREATE ROLE app_admin WITH LOGIN PASSWORD\",\n                \"variable_start\": 0,\n                \"variable_end\": 41,\n                \"value\": \"SqLpa5sW0rD\",\n                \"value_start\": 42,\n                \"value_end\": 53,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"SQL Password\",\n        \"severity\": \"medium\",\n        \"confidence\": \"weak\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"CREATE ROLE flask_admin_geo LOGIN PASSWORD 'SqLpa5sW0rD';\",\n                \"line_num\": 25,\n                \"path\": \"./tests/samples/sql_password\",\n                \"info\": \"\",\n                \"variable\": \"CREATE ROLE flask_admin_geo LOGIN PASSWORD\",\n                \"variable_start\": 0,\n                \"variable_end\": 42,\n                \"value\": \"SqLpa5sW0rD\",\n                \"value_start\": 44,\n                \"value_end\": 55,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"SQL Password\",\n        \"severity\": \"medium\",\n        \"confidence\": \"weak\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"create role forum_example_graph_demo login password 'SqLpa5sW0rD';\",\n                \"line_num\": 26,\n                \"path\": \"./tests/samples/sql_password\",\n                \"info\": \"\",\n                \"variable\": \"create role forum_example_graph_demo login password\",\n                \"variable_start\": 0,\n                \"variable_end\": 51,\n                \"value\": \"SqLpa5sW0rD\",\n                \"value_start\": 53,\n                \"value_end\": 64,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"SQL Password\",\n        \"severity\": \"medium\",\n        \"confidence\": \"weak\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"create role forum_example_graph login password 'SqLpa5sW0rD';\",\n                \"line_num\": 27,\n                \"path\": \"./tests/samples/sql_password\",\n                \"info\": \"\",\n                \"variable\": \"create role forum_example_graph login password\",\n                \"variable_start\": 0,\n                \"variable_end\": 46,\n                \"value\": \"SqLpa5sW0rD\",\n                \"value_start\": 48,\n                \"value_end\": 59,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"SQL Password\",\n        \"severity\": \"medium\",\n        \"confidence\": \"weak\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"SET PASSWORD FOR 'username'@'localhost' = PASSWORD('SqLpa5sW0rD');\",\n                \"line_num\": 28,\n                \"path\": \"./tests/samples/sql_password\",\n                \"info\": \"\",\n                \"variable\": \"SET PASSWORD FOR 'username'@'localhost' = PASSWORD\",\n                \"variable_start\": 0,\n                \"variable_end\": 50,\n                \"value\": \"SqLpa5sW0rD\",\n                \"value_start\": 52,\n                \"value_end\": 63,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"SET PASSWORD FOR 'username'@'localhost' = PASSWORD('SqLpa5sW0rD');\",\n                \"line_num\": 28,\n                \"path\": \"./tests/samples/sql_password\",\n                \"info\": \"\",\n                \"variable\": \"PASSWORD FOR\",\n                \"variable_start\": 4,\n                \"variable_end\": 16,\n                \"value\": \"username\",\n                \"value_start\": 18,\n                \"value_end\": 26,\n                \"entropy\": 2.75\n            }\n        ]\n    },\n    {\n        \"rule\": \"SQL Password\",\n        \"severity\": \"medium\",\n        \"confidence\": \"weak\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"insert into mysql.user values(PASSWORD('SqLpa5sW0rD') );\",\n                \"line_num\": 29,\n                \"path\": \"./tests/samples/sql_password\",\n                \"info\": \"\",\n                \"variable\": \"insert into mysql.user values(PASSWORD\",\n                \"variable_start\": 0,\n                \"variable_end\": 38,\n                \"value\": \"SqLpa5sW0rD\",\n                \"value_start\": 40,\n                \"value_end\": 51,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"Auth\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"UPDATE mysql.user SET authentication_string = PASSWORD ('SqLpa5sW0rD') WHERE User = 'username';\",\n                \"line_num\": 30,\n                \"path\": \"./tests/samples/sql_password\",\n                \"info\": \"\",\n                \"variable\": \"authentication_string\",\n                \"variable_start\": 22,\n                \"variable_end\": 43,\n                \"value\": \"SqLpa5sW0rD\",\n                \"value_start\": 57,\n                \"value_end\": 68,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"SQL Password\",\n        \"severity\": \"medium\",\n        \"confidence\": \"weak\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"UPDATE mysql.user SET authentication_string = PASSWORD ('SqLpa5sW0rD') WHERE User = 'username';\",\n                \"line_num\": 30,\n                \"path\": \"./tests/samples/sql_password\",\n                \"info\": \"\",\n                \"variable\": \"UPDATE mysql.user SET authentication_string = PASSWORD\",\n                \"variable_start\": 0,\n                \"variable_end\": 54,\n                \"value\": \"SqLpa5sW0rD\",\n                \"value_start\": 57,\n                \"value_end\": 68,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"SQL Password\",\n        \"severity\": \"medium\",\n        \"confidence\": \"weak\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"ALTER USER 'test'@'1.1.1.1' IDENTIFIED WITH 'mysql_native_password' AS '*92FD05ADCA2EC9D1E10C096DEB1618BC2470E409' REQUIRE NONE PASSWORD EXPIRE DEFAULT ACCOUNT UNLOCK; -- old MySQL hash scheme with sha1\",\n                \"line_num\": 31,\n                \"path\": \"./tests/samples/sql_password\",\n                \"info\": \"\",\n                \"variable\": \"ALTER USER 'test'@'1.1.1.1' IDENTIFIED WITH 'mysql_native_password' AS\",\n                \"variable_start\": 0,\n                \"variable_end\": 70,\n                \"value\": \"*92FD05ADCA2EC9D1E10C096DEB1618BC2470E409\",\n                \"value_start\": 72,\n                \"value_end\": 113,\n                \"entropy\": 3.78769\n            }\n        ]\n    },\n    {\n        \"rule\": \"SQL Password\",\n        \"severity\": \"medium\",\n        \"confidence\": \"weak\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"sh -c 'echo CREATE USER typeorm_mg IDENTIFIED BY SqLpa5sW0rD\\\\; >>tmp.sql;'\",\n                \"line_num\": 32,\n                \"path\": \"./tests/samples/sql_password\",\n                \"info\": \"\",\n                \"variable\": \"CREATE USER typeorm_mg IDENTIFIED BY\",\n                \"variable_start\": 12,\n                \"variable_end\": 48,\n                \"value\": \"SqLpa5sW0rD\\\\;\",\n                \"value_start\": 49,\n                \"value_end\": 62,\n                \"entropy\": 3.70044\n            }\n        ]\n    },\n    {\n        \"rule\": \"SQL Password\",\n        \"severity\": \"medium\",\n        \"confidence\": \"weak\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"ALTER USER 'super_user'@'10.10.%' PASSWORD EXPIRE INTERVAL 90 DAY;\",\n                \"line_num\": 34,\n                \"path\": \"./tests/samples/sql_password\",\n                \"info\": \"\",\n                \"variable\": \"ALTER USER 'super_user'@'10.10.%' PASSWORD\",\n                \"variable_start\": 0,\n                \"variable_end\": 42,\n                \"value\": \"EXPIRE\",\n                \"value_start\": 43,\n                \"value_end\": 49,\n                \"entropy\": 2.25163\n            }\n        ]\n    },\n    {\n        \"rule\": \"SQL Password\",\n        \"severity\": \"medium\",\n        \"confidence\": \"weak\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"ALTER USER 'super_user'@'10.1.%' PASSWORD HISTORY 1;\",\n                \"line_num\": 35,\n                \"path\": \"./tests/samples/sql_password\",\n                \"info\": \"\",\n                \"variable\": \"ALTER USER 'super_user'@'10.1.%' PASSWORD\",\n                \"variable_start\": 0,\n                \"variable_end\": 41,\n                \"value\": \"HISTORY\",\n                \"value_start\": 42,\n                \"value_end\": 49,\n                \"entropy\": 2.80735\n            }\n        ]\n    },\n    {\n        \"rule\": \"SQL Password\",\n        \"severity\": \"medium\",\n        \"confidence\": \"weak\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"ALTER USER 'username'@'%' PASSWORD EXPIRE INTERVAL 90 DAY;\",\n                \"line_num\": 36,\n                \"path\": \"./tests/samples/sql_password\",\n                \"info\": \"\",\n                \"variable\": \"ALTER USER 'username'@'%' PASSWORD\",\n                \"variable_start\": 0,\n                \"variable_end\": 34,\n                \"value\": \"EXPIRE\",\n                \"value_start\": 35,\n                \"value_end\": 41,\n                \"entropy\": 2.25163\n            }\n        ]\n    },\n    {\n        \"rule\": \"SQL Password\",\n        \"severity\": \"medium\",\n        \"confidence\": \"weak\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"alter user \\\"bob\\\"@\\\"localhost\\\" identified with sha256_password by '<enter password>';\",\n                \"line_num\": 38,\n                \"path\": \"./tests/samples/sql_password\",\n                \"info\": \"\",\n                \"variable\": \"alter user \\\"bob\\\"@\\\"localhost\\\" identified with sha256_password by\",\n                \"variable_start\": 0,\n                \"variable_end\": 63,\n                \"value\": \"<enter password>\",\n                \"value_start\": 65,\n                \"value_end\": 81,\n                \"entropy\": 3.625\n            }\n        ]\n    },\n    {\n        \"rule\": \"Square Access Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"    \\\"SQT\\\": \\\"EAAAEEPtuW9FnP_CuCV-3DFPB54M7YWBUVEFOWKPRVMWEJYMODIDAEX4FASS64NF\\\",\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/square_access_token\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"EAAAEEPtuW9FnP_CuCV-3DFPB54M7YWBUVEFOWKPRVMWEJYMODIDAEX4FASS64NF\",\n                \"value_start\": 12,\n                \"value_end\": 76,\n                \"entropy\": 4.66018\n            }\n        ]\n    },\n    {\n        \"rule\": \"Square Credentials\",\n        \"severity\": \"medium\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"sq0atp-GIREOGICR0CKLE12W45A78\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/square_client_id\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"sq0atp-GIREOGICR0CKLE12W45A78\",\n                \"value_start\": 0,\n                \"value_end\": 29,\n                \"entropy\": 4.44419\n            }\n        ]\n    },\n    {\n        \"rule\": \"Square Credentials\",\n        \"severity\": \"medium\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"20241204_112356 Colored line: \\\"\\u001b[94msq0csp-ST2dsfwyVI7Ydj343EY72hb48ehKQINMST2ds_fwyVI\\u001b[0m\\\";\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/square_oauth_secret\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"sq0csp-ST2dsfwyVI7Ydj343EY72hb48ehKQINMST2ds_fwyVI\",\n                \"value_start\": 36,\n                \"value_end\": 86,\n                \"entropy\": 4.75856\n            }\n        ]\n    },\n    {\n        \"rule\": \"Stripe Credentials\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"pk_test_Tph4NiI7TYooMQaujxvdEDq5\",\n                \"line_num\": 3,\n                \"path\": \"./tests/samples/stripe_credentials\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"pk_test_Tph4NiI7TYooMQaujxvdEDq5\",\n                \"value_start\": 0,\n                \"value_end\": 32,\n                \"entropy\": 4.6875\n            }\n        ]\n    },\n    {\n        \"rule\": \"Stripe Credentials\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"rk_live_TsS4QI2dNfwyVM7YdjI78ehK\",\n                \"line_num\": 4,\n                \"path\": \"./tests/samples/stripe_credentials\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"rk_live_TsS4QI2dNfwyVM7YdjI78ehK\",\n                \"value_start\": 0,\n                \"value_end\": 32,\n                \"entropy\": 4.6875\n            }\n        ]\n    },\n    {\n        \"rule\": \"Stripe Credentials\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"sk_test_T1z4jtdp7dcC39HqLyjWareD\",\n                \"line_num\": 5,\n                \"path\": \"./tests/samples/stripe_credentials\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"sk_test_T1z4jtdp7dcC39HqLyjWareD\",\n                \"value_start\": 0,\n                \"value_end\": 32,\n                \"entropy\": 4.53891\n            }\n        ]\n    },\n    {\n        \"rule\": \"Stripe Credentials\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"pk_live_KQI2pIpqzh1Nv2ZXfJBqUJItqoO5WdI6zUkITxodxICz85zC00cv0Gk63bDVUMwIymb3zKTeiqfU588jyYJdNYekpiI56wY0IIx\",\n                \"line_num\": 6,\n                \"path\": \"./tests/samples/stripe_credentials\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"pk_live_KQI2pIpqzh1Nv2ZXfJBqUJItqoO5WdI6zUkITxodxICz85zC00cv0Gk63bDVUMwIymb3zKTeiqfU588jyYJdNYekpiI56wY0IIx\",\n                \"value_start\": 0,\n                \"value_end\": 107,\n                \"entropy\": 5.24966\n            }\n        ]\n    },\n    {\n        \"rule\": \"Stripe Credentials\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"sk_test_KQI2pIpqzh1Nv2ZXfyfDQUTUQ63Cw359VjKMwtfJ000DsiXxtcVuxT40W8QRSYWZLQZxszLqOMkbYwYWDV1xKCmRKWR3kgSpi9h\",\n                \"line_num\": 7,\n                \"path\": \"./tests/samples/stripe_credentials\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"sk_test_KQI2pIpqzh1Nv2ZXfyfDQUTUQ63Cw359VjKMwtfJ000DsiXxtcVuxT40W8QRSYWZLQZxszLqOMkbYwYWDV1xKCmRKWR3kgSpi9h\",\n                \"value_start\": 0,\n                \"value_end\": 107,\n                \"entropy\": 5.44092\n            }\n        ]\n    },\n    {\n        \"rule\": \"Stripe Credentials\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"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\",\n                \"line_num\": 8,\n                \"path\": \"./tests/samples/stripe_credentials\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"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\",\n                \"value_start\": 0,\n                \"value_end\": 107,\n                \"entropy\": 5.50064\n            }\n        ]\n    },\n    {\n        \"rule\": \"Stripe Credentials\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"whsec_IsQVcHgjVWTBwlClIsICTD0mpDr4gJ4m\",\n                \"line_num\": 9,\n                \"path\": \"./tests/samples/stripe_credentials\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"whsec_IsQVcHgjVWTBwlClIsICTD0mpDr4gJ4m\",\n                \"value_start\": 0,\n                \"value_end\": 38,\n                \"entropy\": 4.47135\n            }\n        ]\n    },\n    {\n        \"rule\": \"Stripe Credentials\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"whsec_Q4KGL7AstjhYfzCtzK2RTB2EmncHgjVW\",\n                \"line_num\": 10,\n                \"path\": \"./tests/samples/stripe_credentials\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"whsec_Q4KGL7AstjhYfzCtzK2RTB2EmncHgjVW\",\n                \"value_start\": 0,\n                \"value_end\": 38,\n                \"entropy\": 4.82687\n            }\n        ]\n    },\n    {\n        \"rule\": \"Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"    \\\"info\\\": \\\"Structure can be combined if keys exists: key - value\\\",\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/struct.json\",\n                \"info\": \"\",\n                \"variable\": \"Structure can be combined if keys exists\",\n                \"variable_start\": 13,\n                \"variable_end\": 53,\n                \"value\": \"\",\n                \"value_start\": 55,\n                \"value_end\": 55,\n                \"entropy\": 0.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"    \\\"key\\\": \\\"password\\\",\",\n                \"line_num\": 3,\n                \"path\": \"./tests/samples/struct.json\",\n                \"info\": \"\",\n                \"variable\": \"key\",\n                \"variable_start\": 5,\n                \"variable_end\": 8,\n                \"value\": \"password\",\n                \"value_start\": 12,\n                \"value_end\": 20,\n                \"entropy\": 2.75\n            }\n        ]\n    },\n    {\n        \"rule\": \"Telegram Bot API Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"508627689:AAEuLPKs-EhrjrYGnz60bnYNZqakf6HJxc0\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/telegram_api_key\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"508627689:AAEuLPKs-EhrjrYGnz60bnYNZqakf6HJxc0\",\n                \"value_start\": 0,\n                \"value_end\": 45,\n                \"entropy\": 4.94174\n            }\n        ]\n    },\n    {\n        \"rule\": \"Grafana Provisioned API Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"eyJUaGVyZSBpcyBub3QgdGhlIEpTT04geW91IGFyZSBsb29raW5nIGZvciJ9CjwvYm9keT4KPC9o\",\n                \"line_num\": 17,\n                \"path\": \"./tests/samples/test.eml\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"eyJUaGVyZSBpcyBub3QgdGhlIEpTT04geW91IGFyZSBsb29raW5nIGZvciJ9CjwvYm9keT4KPC9o\",\n                \"value_start\": 0,\n                \"value_end\": 76,\n                \"entropy\": 5.28235\n            }\n        ]\n    },\n    {\n        \"rule\": \"JSON Web Key\",\n        \"severity\": \"medium\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"eyJUaGVyZSBpcyBub3QgdGhlIEpTT04geW91IGFyZSBsb29raW5nIGZvciJ9CjwvYm9keT4KPC9o\",\n                \"line_num\": 17,\n                \"path\": \"./tests/samples/test.eml\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"eyJUaGVyZSBpcyBub3QgdGhlIEpTT04geW91IGFyZSBsb29raW5nIGZvciJ9CjwvYm9keT4KPC9o\",\n                \"value_start\": 0,\n                \"value_end\": 76,\n                \"entropy\": 5.28235\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"        <td class=\\\"confluenceTd\\\">Password:\",\n                \"line_num\": 82,\n                \"path\": \"./tests/samples/test.html\",\n                \"info\": \"\",\n                \"variable\": \"Password\",\n                \"variable_start\": 33,\n                \"variable_end\": 41,\n                \"value\": \"\",\n                \"value_start\": 42,\n                \"value_end\": 42,\n                \"entropy\": 0.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"Facebook Access Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"                    <td><img src=\\\"data:image/jpg;base64,/9j/4AAQSkZJRgABAQIAHAAcAAD/2wBDAAMCAgMCAgMDAwMEAwMEBQgFBQQEBQoHBwYIDAoMDAsKCwsNDhIQDQ4RDgsLEBYQERMUFRUVDA8XGBYUGBIUFRT/2wBDAQMEBAUEBQkFBQkUDQsNFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBT/wAARCAEAAQADAREAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoLz8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwD9U6ACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgD83f21f+CrbfCXxjqXgT4W6fZavrWmuYNQ1y/BktoJh96KJFI3svQsTgHjBwaAPmLwF/wWG+N/h7Xo7jxGuieKtKMmZbJ7JbVwncJJHjB92DUAfrf+zl+0L4Y/aa+GFh4z8LyOsExMN1YzkedZzgDdFIB3GQQRwQQRQB6hQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQBieN7u70/wAF6/dWALX0Gn3EkAHUyCNiv6gUAfy8Xt3Pf3txc3UjS3M0jSSyP95nJyxPuSTQBDQB+o3/AAQ+1bUv7b+KmmbnOji3sbkqfuLPulXI9yo/QUAfrFQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAjKHUqwBBGCD3oA/GD9uH/AIJi+NfBfjrV/Fvwt0SbxN4P1GZ7ttMsBvutOdjlkEfV48k7SuSBwRxkgHx/8Gf2c/iJ8f8AX5dI8D+GLzWZ7eRY7qcLsgtC2cebI2FT7rdTng8UAfur+w5+yVafskfCX+xZrmLUfE+qSi81i+iHyNJjCxJkZ2IMgZ6kseM4oA+i6ACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgBsn3G+hoA/NL/AIIx/f8Ajn/2F7P/ANuaAP0voAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgDxD9o79sT4Zfsx6S8ni7XUfWHjLW+hWBEt7P6fID8i/7TYFAH5pf8ExP2vfAPwD8VeOtJ8eXFzoEHi68t7qz1KaLNtDtMvEpHKg+YPmxt4OSKbTW5KkpbM/Y/Rta0/xFpltqWl3tvqOn3KCSG6tZBJHIp6FWHBFIou0AFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQBx/xQ+Lvg74L+GZtf8AGniCy8P6XEDiW6kw0hxnaiD5nb2UE0Afmx8ZP+Cl3xI/aB1e68H/ALPHh660nTiTHP4nvIx9o2njcufkgHu2W9ADXZhsJWxcuWjG/wCR5ePzPCZZT9pipqPl1fojiPhj+xtp1hqzeJviNqUvjjxTcP58pu3aSASHnLbvmlPu3HtX3OCyKlQtOv70vw/4J+NZxxnisZelg/3cO/2n/l8vvPW/iL8FfB/xS0VdN13RoJUiTZb3ECiOa3Hby2HQe3T2r2sTgqGKhyVY/wCaPkcBm+Ny2r7XD1Gr7p6p+qPDPDen/Hj9iDVJNV+F+uTeLvBIfzLjw/dqZV2d90OeDj+OIg+oxXw2NyOth7zo+9H8T9lyfjHCY61LFfu5/wDkr+fT5/efdH7Lv/BS74Z/tBNa6LrEy+BPGr4jOlapKBDPJ3EMxwGOf4Ww3sa+Z2P0FNNXR9egggEHINAxaACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoA8q+O/7T/wANv2btJivfHfiODS5JwTb2Eama6uMddkS5Yj3OB70AfJupf8FmPhxcXYtPC/gLxf4kumyI41hhiLHtwHZv0NXGEpu0VdmVSrTox5qkkl3bsUpv+CkXxo8SR7/DH7PEtpGw+WXW9VMePQ7SiEivSp5Vjamqpv56fmfP1uJMpoO0q6v5Xf5HI6/+1v8Atm6yp/s7wj4N0JWH/LMpK4+hecj8xXV/YWO/lX3o858Y5Ov+Xj/8Bf8AkfI3xW+A/wC0f8bvE0uveN5W8Qak5O1rnU4dkQ/uxoGCovsoFP8AsLHfyr70L/XLJ/8An4//AAFna+FvDX7TfgrRbfStE0bw9p1jAoVYoEtFB9zg8k9zXt0qWcUIKFOMUl6Hx+JxHC2LqOtXqTlJ9+Y1vtH7WX/Ptov52v8A8VW1877R/A5uXhDvL/yYPtH7WX/Ptov52v8A8VRfO+0fwDl4Q7y/8mD7R+1l/wA+2i/na/8AxVF877R/AOXhDvL/AMmPKPiD+zR8cPiZrg1fWPD2jx3+3Dy2MttbmQ5+8+0jcfc15OJyvMcVPnqQV/KyPp8BxFkOW0vY0KsuXzUnb0vse+fBj4mftm/BDw/FoentpviLSYSBDbeILmK6aFR/CknmK4X2LEDtiuP+wsd/KvvR6f8Arlk//Px/+Av/ACPcNF/bs/ab0cAa98FfD+tAEZbTNVFu2O/V3GfyqJZLjo/Y/FGsOLsnn/y+t6p/5HQn/gqZqfheJn8a/AXxfo8affuNNmjvIgO53YUD864quAxVHWdNr5Hr4fOsuxTtRrxb9bP7md58J/8Agqd8Cfilrdvo8ur3/hLUbhxHEviG2EMLseg81WZF5OPmIrgPaPruKVJ4kkjdZI3AZXU5DA9CDQA+gAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgDF8beKrXwN4O13xHfZ+xaTYz302OuyNC5/RaAPwz+GngbVv23/ip4o+J3xE1G4m003mwWsUhG49VgQ/wRIhUccnPXOTX0mUZZHGt1Kvwr8WfAcU8RTyiMaGHX7ySvd9F/mfY3h7wd4V+GWiumk6Zp+g6dboXlkjRYwFA5Z3PJ6ckmv0GnRo4aFoRUUj8Or4vF5jVvWm5yfz+5Hz342/bVm1TxE3hv4VeGLnxlqhYotysTvGx6ZjjQbnHudo+tfMYviCFNuGHjzeb2P0PK+B6teKq4+fIn9lb/PovxNmx+HX7cfie3W/tvBlvpUEoDLBMtnEQD/syOWH414Us+xrd00vkfZw4LyiKs4t+sn+liz/wpn9uv/oX7L/vvT//AIql/buO/mX3Iv8A1Nyf/n2//AmH/Cmf26/+hfsv++9P/wDiqP7dx38y+5B/qbk//Pt/+BMP+FM/t1/9C/Zf996f/wDFUf27jv5l9yD/AFNyf/n2/wDwJh/wpn9uv/oX7L/vvT//AIqj+3cd/MvuQf6m5P8A8+3/AOBMP+FM/t1/9C/Zf996f/8AFUf27jv5l9yD/U3J/wDn2/8AwJh/wpn9uv8A6F+y/wC+9P8A/iqP7dx38y+5B/qbk/8Az7f/AIExP+FM/t1/9C/Z/wDfen//ABVH9u47+Zfcg/1Nyf8A59v/AMCZyniX4qftK/AGVJfib8NHuNKHMl1Fb7Rt7nzYSyD8RXVR4hxMH+9ipL7jzcVwLgKsX9XnKD+9f5/ie0/Br4/+FPjdprSaNcGDUYlzc6XdYE8Xvjoy/wC0P0r7HBZhRx0b03r1XU/Kc2yPF5NO1dXi9pLZ/wCT8jmPjx+yr4X+LmlXV1Y2kGi+KFUtDf26BFlbssqj7wPTPUfpXLj8qo4yLcVaff8AzPRyTibF5VUUZyc6XVPp6dvyPZ/+CR3x01/xZ4J8WfCzxVcS3Oq+CJ0S1kmbc62zMyGIt3COjAezAdAK/MZwdOThLdH9E0qsa1ONWD0kk16M/QWoNQoAKACgAoAKACgAoAKACgAoAKACgAoAKACgDiPjj4ePi34MeO9FU4fUNDvbZT6M0DgfqRQB+TH/AAT11COf4Q6xaLjzLfV5Gb1w0UeP5Gv0Xh6SeFlHs/0R+D8d03HMYTezivwbMb9o3xP4g+Ofxf0r4IeDpzDFJIratcrnaON7B8fwInzEd2IHavMz7HylP6rTei3/AMj6HgvJIQpf2lXV5P4fJd/Vn6Rfse/sweD/AIIeFEGiaZGJFwjX0yAz3Ug+9K7fXgDoOcCvjT9XPpWgAoAKACgAoAKACgAoAz9d0Ky8R6ZNY38KzwSqQQwBx7igD8q/2yP2Q5fhfrN58UPhdCNE8SaDIbq/06zTbDdwjlpFQcA7eWUcMM9+u9CtPD1FVpuzRx4zCUcdQlh68bxl/X3nb/Cf4lWXxS+HWleKbbbClzDmeLP+plXiRT9CD+GK/WsJiY4qhGtHr/TP5hzPL6mW4yeEnrZ6eaezMX/gj7APEnxd+O3i6M5t7iaGOI+0k88n8lWvyfEz9pWnNdW/zP6bwFJ0MJSpPeMUvwP1HrmO8KACgAoAKACgAoAKACgAoAKACgAoAKACgAoAiuoFuraaFxlJEKMPUEYNAH4b/sZX8ngz44/E7wLKSfLuJyvHAe3uGjbj3D/pX2HDla1SdLur/d/w5+V8e4Xnw9HEr7La+/8A4Y7X/gnLp6+Lviv8WfHF4gkvjMsMbsclBNLI7Af9+1H4V8viJurWnN9Wz9GwNGOHwtKlHaMUvwP198F2q2nhTS0UYBgV/wAWG4/zrnO4+Xv+Cgfw6+LHxAtPBC/C5dVMlq94b86XqP2PhhD5e4713fdfHXHPrX2vDWJy/DSqvH2s7Wur979Gc9VSduU+Of8AhnD9rb+74s/8KQf/AB+vuv7U4c7Q/wDAP/tTn5KpzHjFv2j/ANmm90fXvEet+JdDaeYravdax9qjlZQCysnmOpGD0YYNduHWSZupUaEIystbRs/vsiX7SGrP1j/Z3+KMnxn+CvhPxlPAttdanabriJBhRMjNHJt/2d6MR7EV+LZng1gMZUwyd1F6em6/A74S5opno1eYWfEn7fP7a0nwntn8BeBr8J4wuFBv9Qhwx02IjIVT2lYY/wB0HPUiv0Dhrh9Y5/WsUv3a2X8z/wAkc1Wry+6tz4m8K/Hr45fAXX/Dvi3UdW8RPY6tGLyC3124lltdSt92G4ckYPqMEZBHBGfv62WZVmdOph6cY3jo3FJOL+RzKc4O7P1s+Anx48NftC+ArbxJ4enw3Ed7YSMPOs5scxuP5HoRyK/FMyy6vlld0Ky9H0a7o74TU1dHpFeWWeOfGnT4n1iBnRXS5tikikZDAEg5/A4oA/J7wLrT/CL4e/tF6DasyW/hzU7mKy2knyzKXiQD6FF5r6/K8RKll+I8tvmrH5ZxHgI4nO8Ev5t/SLv+R9Yf8EUfDv2H4D+NdZKjdqHiDyQ2OSsUEeB+cjfnXyB+pn6KUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFAH4r6NosXgv/gpX8WNJciPz7i/lhXpnzWjnAH/AAFifwr6Xh9pYyz6p/ofn3HEXLKk10kv1LH7DOqR/Cr9pT4l/DnUW+zSai5msQ5x5nlOzKB6kxS7v+AmvHxtF0MROm+jZ9XlOKjjcDRrx6xX37P8T9gvAl6t94S011OdkQiPsV+X+lcR6x8uf8FCv2fviD8d7TwNH4DsVvX0x7xrstex2+0SCHZ99hnOxunpX2/DOZYPLpVXi38VraX2uc9aEpW5T40/4d6/tDf9AOP/AMHUH/xyvvP9Z8m7/wDkr/yOb2VQ8z+N37NvxK+Ben6XeeO9OFnbX8rxWzrfR3GXUAkYVjjg17GXZtgcxlKOEeq30sRKEo/Efqp+wD/yaN8P/wDrldf+lc1fjPEn/I2r+q/JHfS+BHp/xnvPGNj8L/EU/gCzt77xatq32CG5fapfuR2LAZKg4BIAJFeRgY4eWJgsW2qd9bFyvb3dz80/2NP2QNc+OvxH1Dxp8SbW7Gg6dfyNdxairLNqd6Gy8bA87VbO8+vy+uP1nPs9pZdho4XAtc0lpbaMf830+84qdNzd5H6NfG34D+Fvjr8PJ/CWu2aR24TNjcwIBJYygYR4/THTHQjg1+WZfmNfLsQsRRevXzXZnZKCmrM+CP2Vf2b/AI2fBD9qm40bTnFjodkFk1bUpVZrC/sWJ2bVyN0jYbaOqEHPAOf0jOs2yzMcrVSavN/CusZdfl+f5ctOE4zsfp9X5Gdp4T+0B4u0/wAOy3mo6hcpb6fpFi09zK5wEABdv0xQB+RsE8uq/sxfGfx5fxtbt4v1kzW6ueSn2hdv/jzuPwr6vC0/ZZTWqS+0/wAmj81zDELEcTYWhDX2abfzTf5WP0p/4JR+HP7A/Yu8LTFAr6neXt6xAxuzOyA/lGB+FfKH6UfX9ABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQB+Uv/AAU78BXXwM/aV8C/HfSrR30rUmSy1YxjgTRrtOfd4SQPeOu3B4h4WvCt2f4dTyc1wKzLBVMK/tLT13X4nnv7Rvwt1Hxj/wAI/wDGD4ZXRfxJpsUd0jWZy11CPmRk9WUEjb/ECR2wfs83wH12CxWH1dvvR+S8L528orSy3He7G/X7Mut/Jn03+xZ/wUc8E+OLSLw542v4PB/iViEkhv28q3kmHBMbtwA391iCD6jmvgGraM/b01JXR99Wd/bahbpPa3EVzA4yskLhlYexHWkMnoAq32lWWphBeWcF2EyVE8Svt9cZHFUpSjswJLW0gsYFgtoY7eFc7Y4lCqOc8AUm23dgTUgGpGsYIRQoJJIAxyepoAdQAhIHU4oA81+MX7Rfw/8Agboc2oeLPFGmaZIqny7WW4XzpGHYIMsfwFAH5T/GP4/+Kf27fGEvgzwPBdaV4D+0CbWNZuE2NcKDkAj+FePlj6njOADXpYHA1MdU5Y7dX2Pn85zmhk9B1KjvJ/DHq3/l3ZhftLWY1u7+Hn7PXgGASXt3c28bQRc7B92MPj6tI3+7nvX0WeVoUKUMFS2W/wCn+Z8LwdhK2LxNXOMTvK6Xq92vTY/ZP4S/DnTvhF8M/DPgzSgfsGiWEVlGx6vtXDOfdjkn3NfFn60dbQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAcJ8b/g14d+Pvwy1rwR4nt/O0zUotokUDzLeUcpKhPRlbBH5dDQB+QjXPj7/gnx46k8BfEewuNV8BXMzNpWt2yFo9hP3oz+rRE5U5Iznn6XK83eD/AHVXWH5H5/xHwvHNf9pw1o1fwl6+fmdz4i+Dnwc/abtm1vTLm2bUJRufUNGmWOfOP+WsZHJ/3lzX1FTBYDM17SDV+63+Z+cYfNs64dl7CqnyrpJXXyf+TOIj/YY13w9Msnhf4q6tpOw/u9qSRsg7DdHKP5CvKnw2vsVfvX/BPpaXiBL/AJe4f7pf5o07b4TftO+EiToHx11OZFPCz6tdgt9Q28fma5J8OV18M0/vPUp8e4KX8SlJfc/8jbt/iT+3L4TZTb+NrXXlQcCT7HKMe/mRKTXJLIcbHZJ/M9OnxplE/ilKPrH/ACubNp+2/wDto+Fo1/tLwRpGuop5f+zlZ2/78zD/ANBrkllONhvTZ6lPibKKuixCXrdfmi3df8FFP2tdaKQ6b8I9K02XoXl0u52n8ZJgP1rNZZjJOypP7jafEOVQV3iI/ff8jFvP2jv25/FhcRy6d4ejc/dhtrKPZ9Cxdv1NdUckx0vsW+aPOqcXZPT/AOXt/RP/ACMe9sf2yfFzA6r8ZJdOVhgi11BoMD0IgiWuuPD2KfxNL5/8A8ypx1lsfgjJ/JL9TFu/2Vvi94qiK+JfjfrF2rHLwm6up0/8elA/SuqPDc/tVF9x5lTj+iv4eHb9Wl+jLOhfsE+ENLuf7Q8V+JtS1/Z8ziVlto2H+0clsf8AAhXoUuHsPT96rJv8EeJieOcfXXJhqai36yf+X4Fjx9+0p4M+EmkxeC/hTpltrevyN9ntbTSYt9vFIeASV5lfPYZJPU08VmuGwFP2OESb8tl/mTlvDWYZ1XWKzNtRe9/ifkl0X9I+qf8Agnf+xDrHwxv7v4vfFQNc/EnWlZ7e0uCHbTonHzM3pKwOCBwq8DvXwFSpKrNzm7tn7dQoU8NSjRpK0YqyR96VmbhQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFAHO+PPh54a+KHhq68P+LNEstf0e5GJLS+iEiH3GehHYjBFAHwj8Sf+CNngnUdUk1P4c+NdZ8C3JYsttIPtcMZ9EbckijPqzVUZSg7xdjOdOFVcs0mvPU+Q/ih+yr8Wvg98dNF+HGufFu7srPXbbzdH8R3FzcpaXcoIDQfeJSQHsTzlf71d9PFYmcuX2rXzZ4+Iy/AUoOp9Wi/+3V/kbWufsVfG7QbgRz/ABZlaNvuSreXe1v1r6DD4LGYmN44jXtdnw+OzjKsBPlqYFNPZ2jZmb/wyV8Zf+itzf8AgZdf411/2Rj/APoI/Fnmf60ZJ/0Ar7oh/wAMlfGX/orc3/gZdf40f2Rj/wDoI/Fh/rRkn/QCvuiH/DJXxl/6K3N/4GXX+NH9kY//AKCPxYf60ZJ/0Ar7oh/wyV8Zf+itzf8AgZdf40f2Rj/+gj8WH+tGSf8AQCvuiH/DJPxl/wCitTf+Bl1/jR/ZGP8A+gj8WH+tGSf9AP4RMz4p/s2/FX4P/Dq58W+IfjFLBEpEdrYLeXZuLyU/cjjXP3j+g5NeHilicM2nXbt2bPsMueX5gk1glG/dR27nu3wq/wCCTXjn4p+EdC1r4nfFXVdOF/bpcy6Esb3E9sG5CM8km0NjGflODkc4rxp16tTSc2/Vn1dHBYbDu9GlGL8kkfcH7O37DHwl/ZpZLzwzoP27xAF2trurMLi699hwFjz/ALAFYHYfQNABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFAGX4m8UaR4L0K81rXtStdI0mzjMtxeXkojijUdyx4oA/NX9oP/gqD4k+Jut3HgL9nDR7i9uZMxzeKZ4eVHQtCjDCL/00k/Be9dFDD1cTPkpRuzhxmOw+X0nWxM1GP9bdzlP2Fv2h/H3wD/aZn+Fnxe8RXmsWPi5UktL7UL17lIr1hlCjv0VzujI4G4LWuLwlTB1PZVdznyzM8PmtD6xh3pdrXdWP0U/aS/Z18M/tNfDS78JeI0eFs+fYalBxPYXA+5LGf5joRkVxHrHwLpHxz8Yfsr+JY/hd+0XYSXGl58rR/HEUTSW95COFMhAySBjJ+8v8QP3q9fDY6VJq7s+58vmOT08RF8sU090/0PoSx8M6J4x0uHVvDGs299p1wu+KaCUTRMPZlP8AjX19DN3b94r+aPyzF8Lw5n7GTi+z/q/5lWb4e6tGflWGUf7MmP54r0Y5nh3vdfI8GfDuOjtZ/P8AzsRL4D1ljg26L7mRf8at5lhl9r8GZLIMe/sL70XbX4bX8jDz54YV/wBklj/n8a555rSXwJs7qXDWJk/3k0l9/wDkee/F/wDaB+Gn7OFuU1C9/wCEi8WMALbQ7JhLcO5+7lRxGCe7c+gNeBjM2nJOLdl2R9vlXDFKnJTS5n3f6I0v2Yf2Y/HHxw+IWnfG3482osY7I+d4W8DuD5diDys8yH+PoQDznBOMBR8lVqyqu7P07D4aGGjyw+89V/4KK/tQ/wDDNXwHuzpN0IfGXiItp2jqh+eIkfvZx6bFPB/vMtYnWfn98If2lf2jv2ObTTda8TLeePfAWool1eWOo3L3ElnvwW/etl4X56HKZ969XEZZicNTVWcdGvu9T5vA8QZfj68sPSn7ybVn1813/M/T/wDZs/a6+HX7UmgC98IasE1SJA15od5iO8tT3ymfmXP8S5FeUfSHtVABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFADJpo7eMySusaDqznAH40AKrq6hlIZTyCDkGgDxT9rr9mKx/ax+FB8GXuu3fh4x3aX0F3aoJF8xAwCyISN6/N0yDkA0Afni/wDwTd/aW/Z5a7l+GHinRvEunSP5klrGywSykcDMcylc49Hrvw2OxGD/AIMrJni5hk2CzSzxULtbO7TX3Hzt+00nxunh0h/iL8MNR8Na1os/mW+v2llKiAcHbvUtGfmCkENwRx3rfG5jPHRiqsVddUcWU5DSyapOWGqPklvF6697n7OfscfFjV/jZ+zd4K8Wa/ZTWWs3Vp5N2JoynnSRMYzKAez7dw+teSfTnf8AxH+GHhX4u+F7nw74w0Kz1/R7gfNbXkYYKezKeqsOzAgigD4I8af8EtfF3wx1e51z9nn4o33hgyMXOhavMxhPookUEMPQSI31rSFSUPhZjUo06ytONzjZ9U/bn+Gp+zap8NtL8axRZH2u0SOUyeh/cyqf/HAfWuqOMqLfU8yeVUJbXRWg+Nv7ZOulraw/Z/8Asc+dvm3NhPEoP1klVcfjVfXZ9kZrKKPWTNjT/wBmf9tD48yCLxj4u034X6DMcSwafIon2d9qw5Y/RpRWEsTUl1OyngMPS1Ub+p9Pfs1/8E7Phf8As73kOuNby+MvGane2va2A7I56tFHyqH35b/armPQStoj6loGfhj+2f8AEzxx8Y/23NSdPBOqeIrbwjeHTdK8PC0lcMkTf6xlRSSHkw59V2jOK3oVFRqRqON7dDjxlCWKoToRm48ytdbrvY9K0r4HftnfHmHy20Sy+Hmi3K7WOoGO1Ow9QVPmTdD0wOnavXr53jKyaTUV5I+WwfCGV4RqTi5yXVv9FZH0F+xr/wAEtrn9nT4naV8QvEnjv+1tasEkEWnaTbtFblnQo3mSMdzgbicbVyceleCfan6BUARC5haYwiVDKBuMYYbgPXFAEtABQAUAFABQAUAFABQAUAFABQAUAFAFbUdRt9KtJLm6kEcSDknv7D1NXGDm+WJlUqwoxc5uyPy//wCCs+pfEvx3onhT/hGLfU5fBdtJO1/aaWrs3nfL5bzBOSu3fjsD+BrqrYZ04prXuebhcwjXnJS07H52eCf2jfiz8KJ0j8O+PfEmh+SeLVb6Tyl9jE5K/gRXEesnfY+jPAP/AAV2+PXhHy49WutF8X26nkanYCOQj03wlP1BoGfSXgH/AILdaJc+XF40+G97YE8Nc6JfLOv12SBD/wCPGgD6N8C/8FPP2dviBHHDN4wPh+aUYNvr9nJAF9mfDR/+PYoA+pNG1Gw1fSbS90q4t7vTbiJZbee1cNFJGRlWUjggj0oAu0AFABQAUAFABQAUAeL/ABb/AGuPgz8CNVuLPxh410vStaVQ0thEGnu8EZG6ONWYcdN2KAPmDx9/wWg+E2g+bH4X8N+IfFUyj5JZI0soWP1clwP+AUAfN/j3/gtR8TdZMkfhTwh4f8NQnIWS7Ml7KPfOUXp22mgD5u8f/t8fH34kLJHqnxK1e1t3yDb6S62KYP8A1xCn8zQAfstyfF7W/jx4V17wnca/c6kmowyXGqSNNJCIdw8zznY4KFd2Qx5rWnTlOSSRzV68KMHJvU/oD8JeM4PEUQhl2w3yj5o88P7r/hW1fDuk7rY5cHjo4lcr0l/Wx0tch6YUAFABQAUAFABQAUAFABQAUAVtR1GDSrOS5uXEcSDJPr7D3q4Rc3yxMqlSNKLnN2SPHPE/ia48SXpdyY7dD+6hzwo9T717tGiqUbdT4rF4qWKnd7dEYtdBwnL+K/hZ4O8dRlPEPhbR9aB73tlHK35kZFRKEZbo1hVqU/hk0eHeMv8AgnX8FfFgke30K68PXDdJNJvHQA/7j7l/SueWFpS6WO+GZYiG7v6nhfjL/gkzE3mSeFPHrpxlLfWLMNz6GSMj/wBArnlgv5Wd8M4f24fceH+Kf+CbXxp8Pzqtlpmm6/CzbRLp9+gxz1Il2EfrXNLCVFtqd8Mzw8t3Y/Yf9hf4Zat8Hv2YvCHhPXb0XmrWKzG42PvSFnmdxEp7hQwFc9Sm6cuVndQrRxEOeGx75WZ0BQAUAFABQAUAFAH4fftR/sH/ABc8X/tIeNtX0Kxh17SNZ1We9g1OW9jjCo7k7HDMGBXpwDkAY9K6/qtR2sjzHmOHTak9UL4O/wCCUfjHUCj+JvF+kaPGfvRWEUl2/wCZ2D+dbRwUn8TOOeb018EWz3Pwb/wS5+FuheXJrmo634llA+ZJJ1tomP8Auxjd/wCPfnXTHB01vqcE81rS+FJHuvg39lz4T/EAACRvAWiwzR8rcXFsLiUH13ybj0tdEaNOOyOCeLr1Pimz063torSJYoIkhjXokahQPwFbHK3fcsQTyWsySxOY5EO5WU4INJpNWY4ycGpRep634M8YJ4gg8ichL+MfMOgkH94f1FeJiKDpO62PscDjViY8sviX4nT1xnqhQAUAFABQAUAFABQAUAUNd13T/DGjXurateQ6fpllC1xc3Vw4SOKNRlmYnoABQB+fXwn/AGz/ABH+1h+0p4qtPD6Ja/CTQLDZbpLCBNcztIAk7N1UsBJhegUDPJr0cFfmZ4Ob8vs433uem/ED4+eBvhf4r8PeG/EmtpYaxr0gjsrfy2csSwRSxUEICxwC2BnPpXpSqRg1GT3PnqeHqVYucFojvbm5is7aW4ndYoYkMjuxwFUDJJ/CtTnSu7I8d/Z4/al8NftIXXiiLw9Y31ouh3CRGW7C7bhHLbJEwTjOw8HnkVhSrRq3t0OzE4SeGUed7npPjLx54d+HmlJqfibWrLQtPeVYFub+ZYkZ26KCe/B/KtZSUVeTOaFOdR2grs2oZo7iFJYnWSJ1DI6HIYHkEHuKoz2H0Aei/CnUMx3tkx6ETKPrwf6V5WNjqpH02UVNJU36noNeYfRBQAUAFABQAUAUtavxpmk3d0esUZYfXHH64rSnHnmomFep7KlKfZHg7EsSSck8k19Ifn24lAHOXnxG8L6f4zs/CNzr1hB4mu4TPBpTzgTyIM/MF69j+R9Knminy31NVSm4Oolp3L/ivxFbeEPC+r67eLI9pplpLezLEMuUjQuwA9cA02+VNsmEXOSiup57+zp+0V4f/aS8G3OvaHbz2D2ly1rc2N2VMsTYypO0kYYHIP1HasqVVVVdHRicNPCz5ZGr8T/j34H+Dmq6Bp3i3Wl0q61yUw2atE7hiCoLMVBCKCy8nA5pzqRptKT3IpYepWTcFexT/aQ8Z+MPh/8ABXxJ4p8BXMVv4i0mBb6GWSISjy0dWlwp4J2bqmvf2bsbYLlWIjzHp/7F37XWhftZ/DGHVYGisfFdgqw61pCtzDLj/WIDyY3wSD25B5FfPH3R9CUAFABQAUAFABQAUARzzx2sEk00ixQxqXeRzhVUckknoKAPxc/4KU/t/v8AGzVbj4beAL9k8CWMu3UL+Ekf2tMp6A/88VPT+8eegFAHpn7Amm6T8Dv2UNY+IfiCRLO31KabUp5mGG+zxZjjQepLK+B3LivZwyVOk5s+TzByr4lUo9ND5P8Ahl4x1P8Aak/bh8Ma7rO7bdaut1HbE7ltra3DSxxD2AQDPqSe9cUJOtXTZ69WEcJg5Rj2/M+2f+Civxu/4Vf8EpfD9jN5eueKi1jHtOGjtgAZ3/EEJ/wP2r0MVU5IWW7PCy2h7WtzPaJ5P/wSTgH9jfEmbHP2ixQH/gMxrDBbSOzON4fM4n/gqb8Wf7d8faD4Bs5t1rosH228VTx9olHyA+6xjP8A20rPGTvJQXQ3ymjywdV9T9A/hTqkVv8ABPwhqVzIEhTw/aXErt2UW6MSfwr04P3E/I+drK9aSXd/mfKv7D37WHir43/Grx1o3iHU/tWlSwvqGkWrRIn2aNZgvlgqAT8jrnOfu+9ceHrSqTaZ62PwkKFGEoLXqfWmlftN+CvAX7Q3hr4a6nfzW/iTXIh5K+SfJ+fcI1Z+gZihwPbtkU8VKLjyPfcnLaVSM1WXw7M+s68Y+tCgAoAKACgAoA8H/a8/aN8Ifs7eCNLu/Ft7Nbxatei2hitojLK+0bmO0fwrwSfp3Irqw8owlzyPNx1OpWp+yp7v9Dxn9pH4qS/Dj9nnxT4z0W6VLuPT1fT7jaGHmSlVjYA8HBcHB9K9irPkpuSPlcNR9rXjTl31OB/YH+PGsfHP4PXM/iW/Go+I9Jv3tLm4KqjSxsA8bFVAHQlenO2ssNUdSHvbnRmGHjh6toKyZ8d/tw/EG9+H/wC3FbeJNPdhd6HFp8yBTjcFUOy/RgxB9jXDiJONfmXQ9rAU1UwfI+tz9FfHOu2Xjz9nzxFq+mSiew1bw1c3Fu4/iSS2Yj+depJqVNtdj5qnF066i+j/AFPzD/4J7fG//hU/xxttJv7jydB8ThdPuN5+VJ8/uH/76JX6P7V5GFqck7PZn1WY0PbUeZbxPpX/AIKv+E1vfh14M8RomZLDUpLN3A/gmj3DJ+sQ/M1142N4qR5eUTtUlDujrf2CPj/b/Hb4R3fgTxLOtz4g0a1NnMsxy15YsuxX56kA7G/4CT1q8NV9pDllujHMMO8PV9rDZ/mfBXg34keL/wBiv9pDU7zw5cNHfaDqM1jcWspIivrZZMGOQf3WUA57HBHSvInHkk4n1VKftKcZrqj95v2b/wBovwp+038NbHxb4XuV+cCO+092HnWM+PmikH8j0IwRUGp6pQAUAFABQAUAFAH5H/8ABVD9tfxxB4v1r4LaLp934U0OFUF/qDkrNq0bqGAjI+7CckHHLEEHA4oA/McAsQAMk8AUAfX/AO2Z8ZotK8DeC/gd4cuVbS/Dmm2v9sywN8s90IlxF7hSSx/2iO613YipaKpR6HjYKhecsTPdt2KH/BMzTIbv9pUXs5Crp2jXdyrscBSdiZP/AAF2pYRfvLlZo7Yey6tHAftj/HF/jt8btX1S2mMmhaeTp+lrn5fJQnMg/wB9tzfQj0rKvU9pNvodGCofV6KT3erPqv8A4Jg61ZeDfg98UvEupSiDT7G5jnnkPZIoGc/oa7cG1GEpM8nNYudWnBbs+Cfib46vfib8QfEHirUCTdateSXTKTnYpPyp9FXCj2FebOTnJyfU+gpU1SpqC6H6cfFr4qDwJ/wTu0W9jmEd9rHh2y0i15wS0sSo+PpGHP4V6858uHT7o+Wo0faY5rs2z4r/AOCf3iv/AIRX9qbwmGk8uHUhPp0mTgHzI2Kj/vtU/HFefhZctVHuZjDnw0vLU2P28fG15Y/tj6vqum3DQ3uhNY/ZZQeYpIo0kBH0Y5p4p3qsnLY2w0fO5+3f7N/xmsP2gPgp4V8c2JRTqdorXUKHPkXK/LNGf91ww+mK5D1D0ugAoAKACgAoA/CX/gqn+0Enxm/aOuNB02487w/4ORtLhKnKyXOc3Dj/AIEAn/bP3oA9P/a8+Ihm/YE+GMCv+91+HTY3GeWSKDe3/jyJXq15fuI+dj5nB0/9tm+1zzH/AIJdfEgeGvjNqvhW4l2WviKxJiUng3EOXX80Mn5CscHO03Hudea0uakprocB/wAFDbsXf7V/i3H/ACzitI/yto6zxX8VnRlqtho/M+rv+CfvxVHxA/Zs8VeBb2cPqPh62uIoVZvma0mRyn/fLb1+m2u3DT5qbi+h5GY0fZ4iNVbP8z8w4pXglSSNikiEMrKcEEdCK8c+q3P0d+L/AMV7f9or/gnTPr0zrNruj3FnDqK90uY5URnx/to+7/gftXrTn7XD36nzNGi8NjuXo72Phn4J/FrVvgj8StG8XaQxMtlKBPBnC3EB4kib2I/I4PavNpzdOSkj3q9GNem6cj039ui70XxJ8a4vGPh6dbjSfFekWmrRuvZipidT/tAxcjscitsTZz5l1OXAKUaPs57xbRyn7NP7TPjL9l34hQeJfCdz5kb4jvtKmY/Z7+LP3HA7+jDkH8QeU9I/oe+EPj2b4o/DHw14tn0a68PTaxYx3jaZe/6233DO1v5g4HBHAoA6+gAoAKACgAoA8x+OP7Nnw6/aL0NdN8d+G7bV/KBFveDMd1bZ7xyrhl+mcHuKAPzM+PP/AARl8W+Hp7jUfhT4hg8S2AO9NJ1ZhbXieyyD92/47PxoA+Ffij8EfiN8KNTmj8deEta0K4ZyXuNQtn8uRs8kS8o/1DGgSVtEUPh58T9Z+GS+IW0SQQXGtaXJpMs4JDxRSMhcr7kKV/4Ea0hNwvbqZVaUatubo7nI1mbHtHhv42p4R/Za8R/D/T5GTVvEevLPeMoI22SQx8Z/2nGMeit610Kpy0nBdWcMqHPiY1Xsl+J4vXOdx9FftIfGuDxh8H/gz4F064EttoWgwz34RsgXTLsCn3VFz/20rqq1OaEILojzcLQcKtSo+rPF/hx4pk8D/EHw34hjJDaXqNvecHHCSKxH5A1hCXLJM7asPaU5Q7o6n9pbxfB48+PfjrXrScXNneapKbeYdGiU7EP/AHyoq60uao2jLCwdOhCL7H3B/wAEbv2j08NeMNZ+EWsXQjstcJ1DSDI2At0q4kiH++igj3jPrWJ1H6+0AFABQAUAeCftvftDw/s1fs9+IfE0UqLr1yn9n6PETy13ICFbHcINzn/d96AP517u6mv7qa5uJXnuJnaSSVzlnYnJJPckmgD2j4z/ABWi8X/A/wCDHhaG482TQdOvDdKGzsdrhlQEdiEjH4EV01J80IR7HBQouFarN9Wjzj4Y+Obv4Z/ELw94qsS32jSb2K6CqcF1VvmT6MuV/GsYS5JKSOqrTVWm4Pqd5+154w07x7+0R4t1/SLpL3TL57eW3mjOQym2i/UHIPuDWleSlUbRz4ODp0Ixluv8yH9l/wCNLfA74ow6vOz/ANj31tLp2pRoMkwyLjcB3KsFb8CO9FGp7OV+g8XQ9vT5VutUeSPje205GeKwOw67wr8UNZ8JeDPFvha0cPpHiWGGK7hfOFaKVZEkX34I+jewrSM3GLj3MZ0oznGb3RytpaT39zHb20MlxcSHakUSFmY+gA5NZmx9QfBj/gnP8ePjh9ib/hG5/DGhquE1DxKzWyIhJJ2REGQ8knhcZJ5oFZI/TP8AZd/4JdfDT4Bz2mueIcePfFsOHS61CEC0tnHOYoORkf3nJPHGKBn2eAFAAGAOABQAtABQAUAFABQAUAFAFe/0+11S2e2vbaG7t3GGinjDow9weDQB4N8Qf2B/gH8S2lk1b4baRbXMmc3Okq1jJk98wlQfxBoA+ffF3/BF74QaxJJJoXiPxP4eLElY/PiuY19sOm7H/As+9AHkmu/8EPLwEnRvivA47LfaMVJ/FZTQBxWo/wDBE34nwyf6F458K3UfrKLiJvyEbfzoAoD/AIIr/F8nB8VeEQPXz7j/AONUAa+k/wDBEn4izn/iZfEDwzZr/wBO0NxOf1VKAO10z/gh2xiT+0PiyBJ/F9m0XI/DdNQB7x+z7/wSg+G3wO8c6N4wuvEGt+Kdc0idLq0+0FLe3SZeVfYgycHnBYj60Afb1ABQAUAFAHi/7UP7J/gz9rLwlp+h+L5NQtf7Ona5srzTZxHJC7LtJwwKsCOxFAHxH4g/4IfaU7yNofxUvIVP3I9Q0lJCPqySLn8qAPN9b/4IlfEe1b/iU+PvDWoJ/wBPUM9u35BXH60Acvd/8EZvjhESINW8Izjsft8y5/8AINADbX/gjR8cpSPP1TwjB641CZsf+QaAOk0b/gib8TbmQf2n458L2EfrAtxO35FFH60AeleF/wDgh9p8bo3iP4p3M6j70el6UsZP0Z5Gx/3yaAPcfA3/AASJ+AXhRo5dUsta8VzL/wBBTUWSM8f3IQn6k0AfTPw7+Anw5+E0QTwf4J0Pw+QMebZWSLKfrJjcfxNAHfUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAfDn7Vn/AAVI8J/AzxTc+C/BejP4/wDGVvJ5FykUpS0tpe8ZdQWkcHgqo4PBOeKAPB/+Hqnx+8GNFrHjX4HJbeGXILS/Yb2ywpPaaTcuceo5oA+7/wBlz9rbwP8AtYeEJdW8KzyWuo2m1dR0W8wLmzY9M44ZDg4YcHHY8UAfJvx+/wCCnXxD+F/7Rnir4XeFvhlZ+LptJuBDb/Z2uJLmdfJSUny4wTwGOcdhmgDH8Pf8FevE/hLxJZWfxc+DWoeEtKumC/bIRPFLGO7CKaNd4HfDA0AffPiT4rWK/A7WPiN4Zmt9ZsIdBuNasJMnyrhUgaVAccgHaAe45oA/N3w3/wAFePjF4ytpbjQPgfBrlvC/lyS6at5cIjYztJRCAcc4NAHv37JP7cPxY+PXxgt/CnjD4RTeCtGks57g6nLbXaDegG1AZFC5OT78UAcx+1N/wUi8efA/9pLVfhZ4V+Hdj4umgjtntdsk5uZzJbrKVEaA5Iy3TsKAON0v/gr74s8Ga3bW3xV+CWo+G7CZsGeBpoZVGeSsc8ah8ezCgD9A/g58Z/CPx58C2Xi3wXqqaro9z8u4ArJDIPvRyIeUcZ5B/lQB83/tl/8ABQyz/Zw8WWHgHwj4bfxx8RL1Ub+z1ZhFbb/9WrBAWd24IRccdSMigDwg/wDBTv47fCXVNOm+MPwJl0rw/fSrGlxbWtzZy89kMu9HbHRCVJ9aAPqr9qP9qfXfg5+zXp/xb8I+GBqttLJbPc6drsUtpNBBNwGZMblYOUBBHQ5oA9B/Zh+Nkf7Q/wAC/Cnj5beKzn1W3JubWFiyQTo7JIgJ5IDKcZ7YoA+V/wBtL/gpnf8A7MPxuh8CaJ4Z03xBDBZQXGoXFzcOjwSSFjsAXjiPY3P96gD7r8Pa5aeJ9A03WLCVZrLULaO6gkU5DRuoZSD9CKAPkn4Gftw6/wDHP9r3xn8LNK8N6cnhLw01352uCV2nkELiIYX7oLSHr6A96APNv2pf+Clnjr4G/tG6z8MPDPw8sPFb2iwG2KvO1zOZIFlIEaA5xk9OwoA4b/h6R+0D/wBG6Xf/AIBah/8AG6APq39sf9q7W/2Y/gF4e8fWGg2Wr6hqF5a2s1jeO8aJ5sLyMQRyCCmMGgD5J03/AIKtfHXWbC3vtP8A2fpL6yuEEkNzbW19JHKp6MrCMgg+ooA+wv2Mv2jvG/7RHgfxJrXjbwM/gS/029Ftb2UsM8Zmj8oP5mJQCRkkcDHBoA+ONC/4K2/GHxjquqWPhf4K23iV9PkKT/2X9ruDGNxCswRTtztOM+hoA9K+CH/BWW31v4iWngr4v+A7n4bajeSpDDeu0gijdjhRNHKqvGCeN3I9cDmgD6Z/bL/aE1H9mX4D6l4/0nS7XW7m0uraBbS7kZI3WWQITuXnjOaAPh3R/wDgrF8cPEWmw6jpXwDOp6fOCYruzgvZYpACQdrqhB5BHB7UAfW37En7T3j79pK18Wy+Ofh9J4CfSXtltI5YJ4zciQSFz+9UZxsXp60AfK2sf8FY/irJ8SPFPhTwx8H7TxTNol/c2pGnfap5THFMY/MZI1YqCQPbJxQB1fwu/wCCujReObLwz8ZPhvefDw3bqi6hmULBuOA0sMqK4TPVgTj0oA/Rm3uIru3ingkWWGVQ6SIcqykZBB7gigDyT9rr4nXfwc/Zr+IPi/T38rUdP0txaSYzsnkIijb8GdT+FAHxx/wSD/Z00KX4eX3xl120j1fxVq9/Pb2N1dDzGtoo22yOuekjyb8t1wB6mgD9HNT0uz1rT7iw1C1hvbK4QxTW9xGHjkUjBVlPBBoA8Y+Af7Gnww/Zu8Q69rng3RWttW1eWQyXE0pfyIWfcLeIdEjHGBjPAyeKAPhDwIcf8Fsdf/673X/pqFAH05/wVV1bwha/sieJbXxBJZtq9xLbjRYZGXzzciZDujHXhN+SO2aAON/Y/tdXtf8AglVrA1ZZU3+HtektBL1+zlZzGR7Hkj2IoA+Yf+CZn7avwv8A2Yvhp4t0Xx5qN9ZX+o6ut5bra2MlwrRiFEySo4OVPFAH6D/A79vr4Q/tEePIvCHgvU9RvNakt5LoR3OnSQII0A3Hcwx3HHvQB8WfEn/lNb4c/wCu9n/6bKAP08+IPw58N/FTwrf+HPFWj2utaPexmOW3uoww5HVSeVYdQw5BoA/MP/gnTJqP7PP7dXxP+CC3klz4fk+1eUjtkb4GVoZMdNxhcgn6elAGH+2Vo/jb9k79viH4+f8ACMS+JvCd1NFdxTEMYVP2YQSQs4B8pxgspPHIPPIoA+uvhF/wUg+AP7RDWOjatdr4d1aSaOSHTPFVuixGdWDIUl+aPcGAwSQcjgUAe9/tD/DaH4yfArxt4QZUk/tfSZ4YCRkCXbuiYfRwp/CgD4l/4Iy/E/f8JvHvgXVJvJm8M6l9vWOQ/wCqgmUhx9A8Tk/71AHyFd/C2+/bV1v9p74wh53XQEa/0tU5Em2XKofpawtx6sKAPvf9ir9peFP+CdF14qv7gSX3gPTbywnDNkkwIWtwc+qNEKAOI/4Ix/DqeL4f+PfiXqSs9/4j1QWkU79Xjhy8jZPrJKwP+5QB4h+0P8T9B+DH/BXFPGnieaW30HSXtpbqWCIyuqtpuwYUcn5nFAH2B/w9u/Z0/wCg7rH/AIJp/wDCgDjv+Cw2ow6v+yJ4dv7fd5F14gs549wwdrW85GR9DQBi/sz/APBTT4FfDH9n74e+E9e1nVIdZ0bRbayu44tKlkVZUQBgGAwRkdRQB9d/Af8Aaa8C/tPeFNb1nwHd3d5YabMbO4e7tWtyJDGHwA3J4I596APgL/gi7/yU343f9c7P/wBHXNAHSf8ABbJPCS+B/AMji2Hjgai4gaPb9o+xeW3mbu+zf5ePfp3oA639uVtVf/glpoDa55n9sGx0E3Xnff8AMzFnd7+vvQByP7GP/BRz4KfBb9mbwP4L8Uatqdtr2lQTR3UUGmSyopa4lcYZRg/Ky0Afan7O/wC1h8Pf2o4Ncm8A3t5ex6M0SXbXdm9vtMgcoBu6/cagD4C/4JhED9u/48ZOP3Wpf+nNKAO//wCC1GqeET8IPCNjcPZSeNP7YElmqlTcpa+U/nE9whYx9eCQKAPsr9lC11ay/Zn+F8Gu+YNWj8O2S3Am++G8lcA574xQBP8AtPfC2X41fs/+O/BVsFN5q2lyxWu/p56/PFn/AIGq0AfAX/BK79rDQfhjo2q/A74i3aeFNXsdSml02TU2EMZdmxLbOxwFcOCRnruI7UAfpB4y+LXgz4feG7nX/EPifS9K0i3QyPdT3SBSPRecsT2AyTQB86fsj/t/2f7WHxM8W+GtJ8F6nZ6TpRee017cGge33bU85TgxyPyQo3cZ6YNAHwF8Yvg5qnx6/wCCpvjbwXo3iWXwjqF9du8erQK7PCI9PRyAFZTyFI696AOT/aJ/Zcuf2Uf2gfh8vxe1m/8AiN8P9TlSS41IPLE7xq+2aLLO5BQFHwD8wOBjrQB+w/xct9FtP2U/GsPhyO2i0BPB18LBLMAQiD7G/l7McbduMUAfnT/wSk+BPwk+LHwq8Z33xD8M6Frmo2utLBbS6rjekXkIdq5I4ySaAP0N+GP7OnwT+GfiuLWvA3hPw9ouvrE8SXOmECXy2HzLwxyDj9KAPz/+J00dv/wWp8PSSusUazWeXc4A/wCJZ60Afof8bP2m/h18AvCd5rnirxNYW5ijZoNPiuFe6unA4SOMHJJ456DPJFAHwB/wTF8MeIPjt+1F8Sf2h9Zs5LPTJ3uYbQsPleedwSiH+IRRKFJH94UAfb+qftgfBu4+Mp+EV94m0648QSwv50c5VrQSggfZnkPy+aQSdnsQeeKAPjz/AIKn/s4fA7wZ8F5vGej6ZpXhTxy95DHYxaSVhGobn/eK0CkKcJubeBkbRz2oA+nv+Cb3iHxB4n/Y3+H954klmuL1YZ4IZrgkvJbRzOkJJPJ+RVAPoBQB+Zvx18Yar+xL+1n8etJ0iCVLPxhpN3b2flnYI1vdsqSj2RjIox6fWgD78/4Jc/Bi38IfsbWD6jajzvGb3GpXSOPvwSDyogfYxID/AMCoA/LXxn47179m3RPjr8APLm+y6rrkEQfdgRx28zNux381PJ6dh9KAP2y/Y4+Fw+Dn7Mvw+8MPCILyDS47i8Xv9om/ey5/4E5H4UAfnP8AG3wn4d8c/wDBYW10LxZY2mp+HryS2S7tL7/UyKNM3ANyP4gp/CgD7w/4Yz/Zj/6J74N/8d/+KoA8S/4LFW1vZfskeH7e0VUtYvENnHCqHICCCcKAfTGKANj9lP8AZT/Z78V/s2/DXWfEPgjwrfa5faDa3F7c3e3zZZWjBZm+bqTQB9Q/C/4U/Dz4T+H9Wsfh3oml6HYXTma5h0ojY8mzAZgCecAD8KAPxW/Yt/Z7+JXx98dfES3+HPxEk+H0+mNG97LHcTxfaleWUIP3RGdpVuv96gD7d+Cv/BKBtP8AiPaeNvjN4/uPiRqFnKs0Ni3mNFI6nK+dJKxZ1B52AAevHFAHo3/BWdQn7FXiJVAVRqOngAdAPtC0AcB+wt+zD8BfHf7KXgDXfFvgzwzqfiG8t52u7u+2+dIwuZVG7LD+EKPoBQB9hfCD4O/DP4SR6onw50DSNCS+MbXq6SRiQru2FgCem5sfU0AfjP8AAn9mzXv2m/2tPi9oPh/xxceBLqwvNSvZL62SRmlT7fs8v5HQ4y4PX+HpQBpeHPgLov7OH7fvhzwb8dZZPF+gXMkT2WsXMjpDcPJ/qJpAxYsglBRkLYzyeOCAfuUiqiKqAKgGAF6AUAOoA+Uf2pf+CcXwx/ac1SXX5/tHhPxdIMSaxpSqRcEdDNEflc/7Qw3vQB846F/wRJ00apB/b/xW1C/0iI/8e1npqxSEegZpHC/98mgD77+CPwG8Ffs8eC4fDHgfR49L09TvmkJ3z3MneSWQ8u316dBgUAeMaH+wpa6L+2be/tADxhNLdXUkrnQjp4CKHtfs+BN5meOG+77e9AHfftafsvaH+1l8LG8IavetpFxFdR3llqsUIle1kU4YhSRkMpZSMjqD2oAr/DD9nDUvAX7M+ofCDUvGsviOCTTLvSbPWJrHypba3mjZFVk8xt+zcccrwAO2aAPjFP8Agh9pUednxev1z1xoiD/2vQB7N+yd/wAE0LT9ln4uweOYPiFd+JHjs57M2M+mCBSJAPm3CVuRj0oAo/tP/wDBLuy/aV+Ner/ESb4i3fh2e/jt4xZQaWswi8qFI87zKpJO3PQYzj3oA5nwD/wRh+HOi6xDf+MPGWu+MkjbJtAiWcUoHQMQWfH0YUAfefgzwXoXw88M2Hh7w1pVtoui2MYit7K0jCRxqPb19SeT3oA+VP2of+CYnw1/aK1+48TWFzc+BvFdwd9xe6ZErwXT/wB+WE4y3+0pUnvmgDx7wN/wRd8P2viS1vvHHxH1PxTplswb+zre1+z+aAfutIzuQp7hQD7igD9F/D3h/TvCmhWGjaRZxafpdhAltbWsC7UijUYVQPQAUAfJ37ZX/BOjRf2u/Hmj+KpfFs/hS/srD7BMILBbn7QodmQkmRcEbmHfr7UAfVPg7wvZeCPCejeHtOQR2GlWcVlAoGMJGgVf0FAHyH8fP+CZPhv47ftERfFK48VTaSsktnNe6LHp6ypdGHaGzIZBt3qqqfl4680AfaSIsaKqgKqjAA6AUAfCn7Tn/BLSx/aS+NOt/EKf4i3WgTaksCfYYdKWYRCOJY/vmVc5256DrigDy7/hyHpv/RYdR/8ABKv/AMfoA+uv2pf2SIP2m/gpoXw8uPE0mgRaXdW1yb+KyE7S+VC8eNhdcZ356npj3oA+RB/wRC0xQAPjBqAA6AaIv/x+gD62/Y4/ZAg/ZF8EeIvDtv4qm8UJrF6L03E9mLdoj5Qj24DtkfLntQBhfsb/ALDFr+yL4k8Z6vb+MJvEz+JEhV4pbAWwgMbyNkESNnPmEfhQB9TUAeP/ALVn7PUP7UPwc1DwDca2/h6K8uYLhr6O2E7L5UgfAQsvXGM5oA+IF/4IgaYigL8X9QUDsNEX/wCP0AfUv7Ff7FNv+x1aeLILfxfP4rXXntnJnshbmAxCQcYkbdnzPbGO+aAKP7NH7Clr+zl8cvG/xHh8YTa7L4oS5WTT5NPECwGW5WfIcSNuxt29BnOaANP9s39iLQP2wtM8Pfa9Zk8Ma5osztBq1vaid2hYfNEVLLxuCsDnjB9aAPbvhn4Y1XwV4C0PQda10+JtR061S1k1Z7fyHuQowrsm5vm2gZOeTk8ZxQB09ABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFAH//2Q==\\\">xml capability</img></td>\",\n                \"line_num\": 111,\n                \"path\": \"./tests/samples/test.html\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"EAACRvAWiwzR8rcXFsLiUH13ybj0tdEaNOOyOCeLr1Pimz063torSJYoIkhjXokahQPwFbHK3fcsQTyWsySxOY5EO5WU4INJpNWY4ycGpRep634M8YJ4gg8ichL\",\n                \"value_start\": 12742,\n                \"value_end\": 12865,\n                \"entropy\": 5.54188\n            }\n        ]\n    },\n    {\n        \"rule\": \"Grafana Provisioned API Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"token in text: eyJrIjoiMDAwMDAwNDAwMDAwODAwNDAwMDAwMDAwNDAwMDAwMDAwMDAwMDAyMSIsIm4iOiJ4eHh4IiwiaWQiOjQzMDh9Cg\",\n                \"line_num\": 18,\n                \"path\": \"./tests/samples/test2.eml\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"eyJrIjoiMDAwMDAwNDAwMDAwODAwNDAwMDAwMDAwNDAwMDAwMDAwMDAwMDAyMSIsIm4iOiJ4eHh4IiwiaWQiOjQzMDh9Cg\",\n                \"value_start\": 15,\n                \"value_end\": 109,\n                \"entropy\": 4.02967\n            }\n        ]\n    },\n    {\n        \"rule\": \"Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"token in text: eyJrIjoiMDAwMDAwNDAwMDAwODAwNDAwMDAwMDAwNDAwMDAwMDAwMDAwMDAyMSIsIm4iOiJ4eHh4IiwiaWQiOjQzMDh9Cg\",\n                \"line_num\": 18,\n                \"path\": \"./tests/samples/test2.eml\",\n                \"info\": \"\",\n                \"variable\": \"token in text\",\n                \"variable_start\": 0,\n                \"variable_end\": 13,\n                \"value\": \"eyJrIjoiMDAwMDAwNDAwMDAwODAwNDAwMDAwMDAwNDAwMDAwMDAwMDAwMDAyMSIsIm4iOiJ4eHh4IiwiaWQiOjQzMDh9Cg\",\n                \"value_start\": 15,\n                \"value_end\": 109,\n                \"entropy\": 4.02967\n            }\n        ]\n    },\n    {\n        \"rule\": \"JSON Web Key\",\n        \"severity\": \"medium\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"token in text: eyJrIjoiMDAwMDAwNDAwMDAwODAwNDAwMDAwMDAwNDAwMDAwMDAwMDAwMDAyMSIsIm4iOiJ4eHh4IiwiaWQiOjQzMDh9Cg\",\n                \"line_num\": 18,\n                \"path\": \"./tests/samples/test2.eml\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"eyJrIjoiMDAwMDAwNDAwMDAwODAwNDAwMDAwMDAwNDAwMDAwMDAwMDAwMDAyMSIsIm4iOiJ4eHh4IiwiaWQiOjQzMDh9Cg\",\n                \"value_start\": 15,\n                \"value_end\": 109,\n                \"entropy\": 4.02967\n            }\n        ]\n    },\n    {\n        \"rule\": \"Together AI API Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"tgp_v1_45j-rhExaIPrLzTp--mCXcQwaWyNYUK86IG0_XWnNqc\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/together\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"tgp_v1_45j-rhExaIPrLzTp--mCXcQwaWyNYUK86IG0_XWnNqc\",\n                \"value_start\": 0,\n                \"value_end\": 50,\n                \"entropy\": 5.13366\n            }\n        ]\n    },\n    {\n        \"rule\": \"Together AI API Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"tgp_v1_LRvIfXDN2VjuqCi5zcGzrM3oIwIOhhIZd9H8JmE2CpR\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/together\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"tgp_v1_LRvIfXDN2VjuqCi5zcGzrM3oIwIOhhIZd9H8JmE2CpR\",\n                \"value_start\": 0,\n                \"value_end\": 50,\n                \"entropy\": 5.16386\n            }\n        ]\n    },\n    {\n        \"rule\": \"Together AI API Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"tgp_v1_LRvIfXDN2VjuqCi5zcGzrMx3oIwIOhhIZxxxxxxxxxx\",\n                \"line_num\": 3,\n                \"path\": \"./tests/samples/together\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"tgp_v1_LRvIfXDN2VjuqCi5zcGzrMx3oIwIOhhIZxxxxxxxxxx\",\n                \"value_start\": 0,\n                \"value_end\": 50,\n                \"entropy\": 4.56278\n            }\n        ]\n    },\n    {\n        \"rule\": \"Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"gi_reo_gi_token = \\\"G1Re06G1BdgNseiJDN21Z094M\\\"\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/token.toml\",\n                \"info\": \"\",\n                \"variable\": \"gi_reo_gi_token\",\n                \"variable_start\": 0,\n                \"variable_end\": 15,\n                \"value\": \"G1Re06G1BdgNseiJDN21Z094M\",\n                \"value_start\": 19,\n                \"value_end\": 44,\n                \"entropy\": 4.13366\n            }\n        ]\n    },\n    {\n        \"rule\": \"Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"Token-> DemoToken: Nxs094M3ed2s1Re0F4M3ed2GZ8M= <- for User : demo\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/token.toml\",\n                \"info\": \"\",\n                \"variable\": \"DemoToken\",\n                \"variable_start\": 8,\n                \"variable_end\": 17,\n                \"value\": \"Nxs094M3ed2s1Re0F4M3ed2GZ8M=\",\n                \"value_start\": 19,\n                \"value_end\": 47,\n                \"entropy\": 4.03915\n            }\n        ]\n    },\n    {\n        \"rule\": \"Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"tp_token_value=\\\"b035d48j9X2dfjF0hb9sd8Guf5hWu2ia\\\"\",\n                \"line_num\": 4,\n                \"path\": \"./tests/samples/token.toml\",\n                \"info\": \"\",\n                \"variable\": \"tp_token_value\",\n                \"variable_start\": 0,\n                \"variable_end\": 14,\n                \"value\": \"b035d48j9X2dfjF0hb9sd8Guf5hWu2ia\",\n                \"value_start\": 16,\n                \"value_end\": 48,\n                \"entropy\": 4.22641\n            }\n        ]\n    },\n    {\n        \"rule\": \"Tavily API Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"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  # TP\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/tvly\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"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\",\n                \"value_start\": 0,\n                \"value_end\": 37,\n                \"entropy\": 4.84432\n            }\n        ]\n    },\n    {\n        \"rule\": \"Tavily API Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"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  # FP\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/tvly\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"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\",\n                \"value_start\": 0,\n                \"value_end\": 41,\n                \"entropy\": 4.86975\n            }\n        ]\n    },\n    {\n        \"rule\": \"Twilio Credentials\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"AC123456E2A108CD72F648B1984C3B5A13\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/twilio_credentials_n\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"AC123456E2A108CD72F648B1984C3B5A13\",\n                \"value_start\": 0,\n                \"value_end\": 34,\n                \"entropy\": 3.8366\n            }\n        ]\n    },\n    {\n        \"rule\": \"Twilio Credentials\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"SK4D2F64E2A108CD72F648B1984C3B5A13\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/twilio_credentials_p\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"SK4D2F64E2A108CD72F648B1984C3B5A13\",\n                \"value_start\": 0,\n                \"value_end\": 34,\n                \"entropy\": 4.02086\n            }\n        ]\n    },\n    {\n        \"rule\": \"Twilio Credentials\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"AC4d2f64e2a108cd72f648b1984c3b5a13\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/twilio_credentials_p\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"AC4d2f64e2a108cd72f648b1984c3b5a13\",\n                \"value_start\": 0,\n                \"value_end\": 34,\n                \"entropy\": 4.02086\n            }\n        ]\n    },\n    {\n        \"rule\": \"URL Credentials\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"const connection_url = require('dbconnection://ad%6Din:5WdF4f2jE76a@db-host-local');\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/url_cred.js\",\n                \"info\": \"\",\n                \"variable\": \"dbconnection://\",\n                \"variable_start\": 32,\n                \"variable_end\": 47,\n                \"value\": \"5WdF4f2jE76a\",\n                \"value_start\": 55,\n                \"value_end\": 67,\n                \"entropy\": 3.58496\n            }\n        ]\n    },\n    {\n        \"rule\": \"Credential\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"url = \\\"https://secure.com/83675/39084?Credential=546DFS64N90P3AW7DX%2Fkeep%26cut\\\";\",\n                \"line_num\": 3,\n                \"path\": \"./tests/samples/url_cred.js\",\n                \"info\": \"\",\n                \"variable\": \"Credential\",\n                \"variable_start\": 38,\n                \"variable_end\": 48,\n                \"value\": \"546DFS64N90P3AW7DX%2Fkeep%26cut\",\n                \"value_start\": 49,\n                \"value_end\": 80,\n                \"entropy\": 4.41372\n            }\n        ]\n    },\n    {\n        \"rule\": \"Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"// \\\"fp://no.host.real/any/path/to/nowhere/\\\",\\\"key\\\":\\\"f45VgF8jX79o@anydata.com\\\"\",\n                \"line_num\": 7,\n                \"path\": \"./tests/samples/url_cred.js\",\n                \"info\": \"\",\n                \"variable\": \"key\",\n                \"variable_start\": 45,\n                \"variable_end\": 48,\n                \"value\": \"f45VgF8jX79o@anydata.com\",\n                \"value_start\": 51,\n                \"value_end\": 75,\n                \"entropy\": 4.30351\n            }\n        ]\n    },\n    {\n        \"rule\": \"Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"39084?Credential=546DFS64N90P3AW7DX&key=3487263-2384579834-234732875-345&hasToBefound=2\",\n                \"line_num\": 10,\n                \"path\": \"./tests/samples/url_cred.js\",\n                \"info\": \"\",\n                \"variable\": \"key\",\n                \"variable_start\": 36,\n                \"variable_end\": 39,\n                \"value\": \"3487263-2384579834-234732875-345\",\n                \"value_start\": 40,\n                \"value_end\": 72,\n                \"entropy\": 2.97591\n            }\n        ]\n    },\n    {\n        \"rule\": \"Credential\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"39084?Credential=546DFS64N90P3AW7DX&key=3487263-2384579834-234732875-345&hasToBefound=2\",\n                \"line_num\": 10,\n                \"path\": \"./tests/samples/url_cred.js\",\n                \"info\": \"\",\n                \"variable\": \"Credential\",\n                \"variable_start\": 6,\n                \"variable_end\": 16,\n                \"value\": \"546DFS64N90P3AW7DX\",\n                \"value_start\": 17,\n                \"value_end\": 35,\n                \"entropy\": 3.83659\n            }\n        ]\n    },\n    {\n        \"rule\": \"URL Credentials\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"email_as_login = \\\"smtps://example@gmail.com:FnD83JZs@smtp.gmail.com:465\\\";\",\n                \"line_num\": 13,\n                \"path\": \"./tests/samples/url_cred.js\",\n                \"info\": \"\",\n                \"variable\": \"smtps://\",\n                \"variable_start\": 18,\n                \"variable_end\": 26,\n                \"value\": \"FnD83JZs\",\n                \"value_start\": 44,\n                \"value_end\": 52,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"Auth\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"@\\\"otpauth://host/port?set=VNMXQKAZFVOYOJCDNBIYXYIWX2&info=should_not_be_found_even_in_ml_threshold\",\n                \"line_num\": 16,\n                \"path\": \"./tests/samples/url_cred.js\",\n                \"info\": \"\",\n                \"variable\": \"otpauth\",\n                \"variable_start\": 2,\n                \"variable_end\": 9,\n                \"value\": \"//host/port?set=VNMXQKAZFVOYOJCDNBIYXYIWX2\",\n                \"value_start\": 10,\n                \"value_end\": 52,\n                \"entropy\": 4.65376\n            }\n        ]\n    },\n    {\n        \"rule\": \"Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"url3d = \\\"https://localhost.com/013948?26timestamp%3D1395782596%26token%3Dh1d3Me4ch534d801sl3jdk%26version%3D3.14%26si\\\";\",\n                \"line_num\": 19,\n                \"path\": \"./tests/samples/url_cred.js\",\n                \"info\": \"\",\n                \"variable\": \"token\",\n                \"variable_start\": 65,\n                \"variable_end\": 70,\n                \"value\": \"h1d3Me4ch534d801sl3jdk\",\n                \"value_start\": 73,\n                \"value_end\": 95,\n                \"entropy\": 3.75444\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"if (password !== \\\"PaS5w0rD2#\\\"){\",\n                \"line_num\": 21,\n                \"path\": \"./tests/samples/url_cred.js\",\n                \"info\": \"\",\n                \"variable\": \"password\",\n                \"variable_start\": 4,\n                \"variable_end\": 12,\n                \"value\": \"PaS5w0rD2#\",\n                \"value_start\": 18,\n                \"value_end\": 28,\n                \"entropy\": 3.32193\n            }\n        ]\n    },\n    {\n        \"rule\": \"URL Credentials\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"{\\\"line\\\": \\\"url: mongodb://jrfdeg42:p4Dsr8b@127.0.0.1:32768/architecture\\\"}\",\n                \"line_num\": 25,\n                \"path\": \"./tests/samples/url_cred.js\",\n                \"info\": \"\",\n                \"variable\": \"mongodb://\",\n                \"variable_start\": 15,\n                \"variable_end\": 25,\n                \"value\": \"p4Dsr8b\",\n                \"value_start\": 34,\n                \"value_end\": 41,\n                \"entropy\": 2.80735\n            }\n        ]\n    },\n    {\n        \"rule\": \"UUID\",\n        \"severity\": \"info\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"bace4d19-fa7e-beef-cafe-9129474bcd81 # tp\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/uuid\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"bace4d19-fa7e-beef-cafe-9129474bcd81\",\n                \"value_start\": 0,\n                \"value_end\": 36,\n                \"entropy\": 3.58954\n            }\n        ]\n    },\n    {\n        \"rule\": \"Vercel Token\",\n        \"severity\": \"medium\",\n        \"confidence\": \"weak\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"vcp_5G8LQP7fmw80eG7W8y0sWO1QFPuhsYUuLEqyd1ialdvz9r6pL4vzxkC3\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/vercel\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"vcp_5G8LQP7fmw80eG7W8y0sWO1QFPuhsYUuLEqyd1ialdvz9r6pL4vzxkC3\",\n                \"value_start\": 0,\n                \"value_end\": 60,\n                \"entropy\": 5.23581\n            }\n        ]\n    },\n    {\n        \"rule\": \"Vercel Token\",\n        \"severity\": \"medium\",\n        \"confidence\": \"weak\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"vcp_1234567fmw80eG7W8y0sWO1QFPuhsYUuLEqyd1ialdvz9r6poEXAMPLE\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/vercel\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"vcp_1234567fmw80eG7W8y0sWO1QFPuhsYUuLEqyd1ialdvz9r6poEXAMPLE\",\n                \"value_start\": 0,\n                \"value_end\": 60,\n                \"entropy\": 5.31506\n            }\n        ]\n    },\n    {\n        \"rule\": \"Tencent WeChat API App ID\",\n        \"severity\": \"medium\",\n        \"confidence\": \"weak\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"wx123456dead1beef0\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/wechat_f\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"wx123456dead1beef0\",\n                \"value_start\": 0,\n                \"value_end\": 18,\n                \"entropy\": 3.68354\n            }\n        ]\n    },\n    {\n        \"rule\": \"Tencent WeChat API App ID\",\n        \"severity\": \"medium\",\n        \"confidence\": \"weak\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"wxffffff0139347361\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/wechat_f\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"wxffffff0139347361\",\n                \"value_start\": 0,\n                \"value_end\": 18,\n                \"entropy\": 2.933\n            }\n        ]\n    },\n    {\n        \"rule\": \"Tencent WeChat API App ID\",\n        \"severity\": \"medium\",\n        \"confidence\": \"weak\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"wxfedcba1927157565\",\n                \"line_num\": 3,\n                \"path\": \"./tests/samples/wechat_f\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"wxfedcba1927157565\",\n                \"value_start\": 0,\n                \"value_end\": 18,\n                \"entropy\": 3.68354\n            }\n        ]\n    },\n    {\n        \"rule\": \"Tencent WeChat API App ID\",\n        \"severity\": \"medium\",\n        \"confidence\": \"weak\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"wxe191bc54fc7d529a\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/wechat_p\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"wxe191bc54fc7d529a\",\n                \"value_start\": 0,\n                \"value_end\": 18,\n                \"entropy\": 3.72548\n            }\n        ]\n    },\n    {\n        \"rule\": \"Tencent WeChat API App ID\",\n        \"severity\": \"medium\",\n        \"confidence\": \"weak\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"wx2274a335e18222d6\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/wechat_p\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"wx2274a335e18222d6\",\n                \"value_start\": 0,\n                \"value_end\": 18,\n                \"entropy\": 3.41383\n            }\n        ]\n    },\n    {\n        \"rule\": \"Tencent WeChat API App ID\",\n        \"severity\": \"medium\",\n        \"confidence\": \"weak\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"wx4d82d07e3eb5ba84\",\n                \"line_num\": 3,\n                \"path\": \"./tests/samples/wechat_p\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"wx4d82d07e3eb5ba84\",\n                \"value_start\": 0,\n                \"value_end\": 18,\n                \"entropy\": 3.61437\n            }\n        ]\n    },\n    {\n        \"rule\": \"X AI API Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"xai-wjluCw1zixzDiYOxeeGtIwuHjIyax8SukK2lFWtBRn1yfEPMQzv63sMCd1nzqylpuDXQjEGd19OJi3cL\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/xai\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"xai-wjluCw1zixzDiYOxeeGtIwuHjIyax8SukK2lFWtBRn1yfEPMQzv63sMCd1nzqylpuDXQjEGd19OJi3cL\",\n                \"value_start\": 0,\n                \"value_end\": 84,\n                \"entropy\": 5.35637\n            }\n        ]\n    },\n    {\n        \"rule\": \"BASE64 Private Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"data : MIIBOgIBAAJBAJtFfagSXdo0JmX6EdwWGvFMaXeOFY5xOTs3PWsnhRFakQFbAuI/\\n        DaJSTVnp3ObjJPZhJs/P/XPWIKRNIglRqkkCAwEAAQJAbErPFMWah3EPxtfeVO1l\\n        5R0yAZwrFKmLDO29/FoXyL2XbxthJlJmdMQgIYayZYn4W2PSq6C56AI201SlW7Ts\\n        AQIhAMwBYS+NST98g0nytTRD1Y94n+yrhTlyWNR/uC4tT8SpAiEAwthlcs9UDPh5\\n        BnaO8Y7A+im+Aw5ANIhJwSVBxB3QnKECIQCJm9ihic1B7MxmojgGxEcXGwfNTjl0\\n        caRn2qszQs9O2QIgdaBFvkXDrADkry4rpVBU17ETcKzNvej4/Y0MYuTM54ECIGtT\\n        EBUWuiacAxz/WKHb9WVp0F/zkRwucJ0Hr2W4P9cP\",\n                \"line_num\": 3,\n                \"path\": \"./tests/samples/xml_data.xml\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"MIIBOgIBAAJBAJtFfagSXdo0JmX6EdwWGvFMaXeOFY5xOTs3PWsnhRFakQFbAuI/\\n        DaJSTVnp3ObjJPZhJs/P/XPWIKRNIglRqkkCAwEAAQJAbErPFMWah3EPxtfeVO1l\\n        5R0yAZwrFKmLDO29/FoXyL2XbxthJlJmdMQgIYayZYn4W2PSq6C56AI201SlW7Ts\\n        AQIhAMwBYS+NST98g0nytTRD1Y94n+yrhTlyWNR/uC4tT8SpAiEAwthlcs9UDPh5\\n        BnaO8Y7A+im+Aw5ANIhJwSVBxB3QnKECIQCJm9ihic1B7MxmojgGxEcXGwfNTjl0\\n        caRn2qszQs9O2QIgdaBFvkXDrADkry4rpVBU17ETcKzNvej4/Y0MYuTM54ECIGtT\\n        EBUWuiacAxz/WKHb9WVp0F/zkRwucJ0Hr2W4P9cP\",\n                \"value_start\": 7,\n                \"value_end\": 485,\n                \"entropy\": 5.75738\n            }\n        ]\n    },\n    {\n        \"rule\": \"Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"token : \\\"IBOgIBAAJBAJtFfagSXdo0JmX6EdwWGvFMaXeOFY5xOTs3PWsn\\n        hRFakQFbAuI769fdsbkjerfkjrekjnkerjnfkrejnfrejn==\\\"\",\n                \"line_num\": 12,\n                \"path\": \"./tests/samples/xml_data.xml\",\n                \"info\": \"\",\n                \"variable\": \"token\",\n                \"variable_start\": 0,\n                \"variable_end\": 5,\n                \"value\": \"IBOgIBAAJBAJtFfagSXdo0JmX6EdwWGvFMaXeOFY5xOTs3PWsn\\n        hRFakQFbAuI769fdsbkjerfkjrekjnkerjnfkrejnfrejn==\",\n                \"value_start\": 9,\n                \"value_end\": 116,\n                \"entropy\": 5.12458\n            }\n        ]\n    },\n    {\n        \"rule\": \"Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"token : IBOgIBAAJBAJtFfagSXdo0JmX6EdwWGvFMaXeOFY5xOTs3PWsn\\n        hRFakQFbAuI769fdsbkjerfkjrekjnkerjnfkrejnfrejn==\",\n                \"line_num\": 16,\n                \"path\": \"./tests/samples/xml_data.xml\",\n                \"info\": \"\",\n                \"variable\": \"token\",\n                \"variable_start\": 0,\n                \"variable_end\": 5,\n                \"value\": \"IBOgIBAAJBAJtFfagSXdo0JmX6EdwWGvFMaXeOFY5xOTs3PWsn\",\n                \"value_start\": 8,\n                \"value_end\": 58,\n                \"entropy\": 4.83327\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"password : cackle!\",\n                \"line_num\": 5,\n                \"path\": \"./tests/samples/xml_password.xml\",\n                \"info\": \"\",\n                \"variable\": \"password\",\n                \"variable_start\": 0,\n                \"variable_end\": 8,\n                \"value\": \"cackle!\",\n                \"value_start\": 11,\n                \"value_end\": 18,\n                \"entropy\": 2.52164\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"password : peace_for_ukraine\",\n                \"line_num\": 9,\n                \"path\": \"./tests/samples/xml_password.xml\",\n                \"info\": \"\",\n                \"variable\": \"password\",\n                \"variable_start\": 0,\n                \"variable_end\": 8,\n                \"value\": \"peace_for_ukraine\",\n                \"value_start\": 11,\n                \"value_end\": 28,\n                \"entropy\": 3.45482\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"password : Password for authorization\\n        BAIT: bace4d59-fa7e-beef-cafe-9129474bcd81\",\n                \"line_num\": 11,\n                \"path\": \"./tests/samples/xml_password.xml\",\n                \"info\": \"\",\n                \"variable\": \"password\",\n                \"variable_start\": 0,\n                \"variable_end\": 8,\n                \"value\": \"Password\",\n                \"value_start\": 11,\n                \"value_end\": 19,\n                \"entropy\": 2.75\n            }\n        ]\n    },\n    {\n        \"rule\": \"UUID\",\n        \"severity\": \"info\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"password : Password for authorization\\n        BAIT: bace4d59-fa7e-beef-cafe-9129474bcd81\",\n                \"line_num\": 11,\n                \"path\": \"./tests/samples/xml_password.xml\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"bace4d59-fa7e-beef-cafe-9129474bcd81\",\n                \"value_start\": 52,\n                \"value_end\": 88,\n                \"entropy\": 3.66606\n            }\n        ]\n    }\n]"
  },
  {
    "path": "tests/data/no_ml.json",
    "content": "[\n    {\n        \"rule\": \"1Password Account Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"ops_eyJb11xLqNoZodWhBSRZjgXFblnyPe_NKm9AQtqj1-g2NkK6QBDIjHwxGYNea8w7cImHWxSXc4ISxk4G9R85CVS1TqBvOOOXycTTH0eqOnwcIGDCQelSMcMIXfHNQVE2pDBHWIsRHmjR-uMUS4SnCU3odPaE9i7BTpHI8mKYEyJzCXzsmLu-mfHfhPM2WffsDLSvlHGwNzVa6wCQio7lsOSrhsjsYkH_boPMB4ZUQ01hn-ix_yBaGvTrMEN6lAy4Z6Pd3KvPb9Pr6c-kI1ifadgIJfRUQJse3IuwLfxeqBUYdHXVgknJ71YECM0-Xg3xwcFjO8oQC1b6kJs2jGX-vdtbLt8MlGzUEn-zYmAam5cj5ye-b_4lVyQjzYrWTI2CP4EkWT7Jsv9KQPVlNye6HwOvUvpm2VHEQDrl-9Kb3XZwo6C53Df0xBfU5Rr6b9p8_r6XrrBGLZWqf2xZkh8pC4OXECo_JzZWNyZXRLZXkiO-jd180LqEfYwfv8_tnxyLXVDX989lmYjZGyJDisytEIwIIcsnnZLCabN-0bOgT_Api9RTXZt7q-9IVxSSm4sgK8ZJ96roIIeukKC_FWVfvZ7uCmGT-TrDc0Kvit44ulvWgt6uoTtMrLGzZYyAx8COjniLSpKk6OOv\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/1password\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"ops_eyJb11xLqNoZodWhBSRZjgXFblnyPe_NKm9AQtqj1-g2NkK6QBDIjHwxGYNea8w7cImHWxSXc4ISxk4G9R85CVS1TqBvOOOXycTTH0eqOnwcIGDCQelSMcMIXfHNQVE2pDBHWIsRHmjR-uMUS4SnCU3odPaE9i7BTpHI8mKYEyJzCXzsmLu-mfHfhPM2WffsDLSvlHGwNzVa6wCQio7lsOSrhsjsYkH_boPMB4ZUQ01hn-ix_yBaGvTrMEN6lAy4Z6Pd3KvPb9Pr6c-kI1ifadgIJfRUQJse3IuwLfxeqBUYdHXVgknJ71YECM0-Xg3xwcFjO8oQC1b6kJs2jGX-vdtbLt8MlGzUEn-zYmAam5cj5ye-b_4lVyQjzYrWTI2CP4EkWT7Jsv9KQPVlNye6HwOvUvpm2VHEQDrl-9Kb3XZwo6C53Df0xBfU5Rr6b9p8_r6XrrBGLZWqf2xZkh8pC4OXECo_JzZWNyZXRLZXkiO-jd180LqEfYwfv8_tnxyLXVDX989lmYjZGyJDisytEIwIIcsnnZLCabN-0bOgT_Api9RTXZt7q-9IVxSSm4sgK8ZJ96roIIeukKC_FWVfvZ7uCmGT-TrDc0Kvit44ulvWgt6uoTtMrLGzZYyAx8COjniLSpKk6OOv\",\n                \"value_start\": 0,\n                \"value_end\": 656,\n                \"entropy\": 5.94326\n            }\n        ]\n    },\n    {\n        \"rule\": \"BASE64 encoded PEM Private Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"ZGVidWdDb250YWluZXI6CiAgaW1hZ2U6CiAgICB2ZXJzaW9uOiBpbnN0YWxsLWRlYnVnLXZlcnNpb24KaGVhcnRiZWF0U2NoZWR1bGU6IDEgMiAzIDQgNQppZGVudGl0eToKICBpc3N1ZXI6CiAgICB0bHM6CiAgICAgIGNydFBFTTogfAogICAgICAgIC0tLS0tQkVHSU4gQ0VSVElGSUNBVEUtLS0tLQogICAgICAgIE1JSUJ3RENDQVdlZ0F3SUJBZ0lSQUpSSWdaOFJ0TzhFd2cxWGVwZjhUNDR3Q2dZSUtvWkl6ajBFQXdJd0tURW4KICAgICAgICBna2RqaHNsa2Roa2dkamhza2pkZmtkamhna2RqaGtkZmpibmtkZm52amtoYnZqaGRiZGpmaGJmamhiZGZNRGd5CiAgICAgICAgbGZrZGprc2xkamdrbGpkZmtnamhkZmtnamhzZGZrbGdqc2RrbGpmZ2hsa2Rmamhsa3NkZmpsa3Nkamt1YkdsdQogICAgICAgIGxzZGpoZnY1NDZtZmRza2dqaGRmamtoZ2tqZGhramhkZmtqZ2hrZGZqaGdramRmaGtqZGZoZ2tqZmRoZ2tqRnAKICAgICAgICBmY1JkZmdoZmRnbWRuZ2tqeGRuYnZqbmN2a2pua2pkbmdram5mZGtqYmt2YmpibnZja2puYmpuZGRmZ2ZkZ3QxCiAgICAgICAgMmJsa2puZ2JramhnbGpkZmxnaGtsamRmbmdqZGZuZ25sZGZrbWxrZGZqZ21sZGZrZ21sa2ZkbWdsa2RtTUFZQgogICAgICAgIEFmOENmZ2xibmpuZGJqZG5rZmpuZ2tkbmZnamtsbmRranZuYmlqZGlmamdpZXJqZ29pamRmbGtneGxrbmdrQ0MKICAgICAgICBIbWxkZmtmamdvaWRmamdnam5kamtmbmdranNkbnNram5qNXNiMk5oYkRBS0JnZ3Foa2pPUFFRREFnTkhBREJFCiAgICAgICAgQWlBdG9mZ2toOTk0NXU4OXV5OWU4dWdodWRmaGd1aGRmZmhpbGd1aGl1aGtkaGZna2pkaGZramhya2piazFwNQogICAgICAgIDVrZmRsc2lmaHU0aHRpdWg0aXR1aGtqaGt6az0KICAgICAgICAtLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCiAgICAgIGtleVBFTTogfAogICAgICAgIC0tLS0tQkVHSU4gRUMgUFJJVkFURSBLRVktLS0tLQogICAgICAgIE1IY0NBUUVFSUFBZThuZmJ6WnU5Yy9PQjJnZGZramdsaWRma2pibnhqa2hiZ2hiZmdoYmpoYmRqaGJzanhjazkKICAgICAgICBvZGlmanZpamRmdm9pamRmb2l2amRmb2lqZGpnbmZka2pnbmtqZGZna2pkZmtqZ2JrampoYmtnSmpYZ1p0TTcyCiAgICAgICAgZGZpb2hndXhoYmtqZ25rbGpkZm5rbGpkbmdram5rZ2puKz09CiAgICAgICAgLS0tLS1FTkQgRUMgUFJJVkFURSBLRVktLS0tLQppZGVudGl0eVRydXN0QW5jaG9yc1BFTTogfAogIC0tLS0tQkVHSU4gQ0VSVElGSUNBVEUtLS0tLQogIE1JSUJ3VENDQVdhZ0F3SUJBZ0lRZURacDVsRGFJeWdRNVVmTUtaZGZuZ2puZGZrZ2puZmRramdua2RqbmtkamYKICBkZmtuZ2tqYmtqZGZic2tqYm5ma2puc2RrZ2psbnhrY2pibmt4am5ja2pnbmtqbmdreGpuZ2tqeGNua2dqbkk0CiAgTURkc2xrZmpvaWVyOGhzZGY4ZmdoZzc4NGg5OHQ5OGVydWhpdXNkaGtmZ2hoc2poYmdqa2hzdmpmaHZzYVc1cgogIFpYNDhrbmdraGdkZmtmamdic2RoYmpoYnNkaGJoeGJkZmxqZ2xkZmtqZ2tqaGpmZGdramJka2pmYmdrYmM3MFoKICBsZGZsa2pna2xqZGZoZmRrZ2poZXJramJnaGZia2dqYmtqbmtqeGNua2pmbmtnam5ma2pnbmtmam43SEJXVUM0CiAgdWZkZ2tqZGZpZ2hmdWRoZ2l1dWRoYm5ma25iZ3NibmRma2poc2tqa3NqbmdranNibmdramJrZ2pieGtqYmdFQgogIC9zZGZiaHNiamZoYmVod3did2poZmJqc2hiZGpoYnppdWhya2hiZXJoYnNqaGJkZmpoYmpoYmpoc2JqaGJzcysKICBsZGpmbGhranNka2ZqaHNrZGpma2pzZG5ma2puc2RramZuc2Rram5ranhjbmtqdm5ram5kc2Z3bGVra0FNRVlDCiAgSWVmb2h3a3VlaGZranNkaGZranNkaGtmamhzZGtqZmhrc2RqaGZranNkaGZranNkaGRramZoc2trZGpmaGpDOAogIHNkZnNkaHlnZmpoZ2RqaGZnanNoZGdmamhncXIKICAtLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCmxpbmtlcmRWZXJzaW9uOiBpbnN0YWxsLWNvbnRyb2wtcGxhbmUtdmVyc2lvbgpwb2xpY3lWYWxpZGF0b3I6CiAgY2FCdW5kbGU6IHBvbGljeSB2YWxpZGF0b3IgQ0EgYnVuZGxlCiAgZXh0ZXJuYWxTZWNyZXQ6IHRydWUKcHJvZmlsZVZhbGlkYXRvcjoKICBjYUJ1bmRsZTogcHJvZmlsZSB2YWxpZGF0b3IgQ0EgYnVuZGxlCiAgZXh0ZXJuYWxTZWNyZXQ6IHRydWUKcHJveHk6CiAgaW1hZ2U6CiAgICB2ZXJzaW9uOiBpbnN0YWxsLXByb3h5LXZlcnNpb24KcHJveHlJbml0OgogIGlnbm9yZUluYm91bmRQb3J0czogMjIsMzMwNi02MTkyCiAgaWdub3JlT3V0Ym91bmRQb3J0czogIjMyNzgiCnByb3h5SW5qZWN0b3I6CiAgY2FCdW5kbGU6IHByb3h5IGluamVjdG9yIENBIGJ1bmRsZQogIGV4dGVybmFsU2VjcmV0OiB0cnVlCg==\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/LS0t_p\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"ZGVidWdDb250YWluZXI6CiAgaW1hZ2U6CiAgICB2ZXJzaW9uOiBpbnN0YWxsLWRlYnVnLXZlcnNpb24KaGVhcnRiZWF0U2NoZWR1bGU6IDEgMiAzIDQgNQppZGVudGl0eToKICBpc3N1ZXI6CiAgICB0bHM6CiAgICAgIGNydFBFTTogfAogICAgICAgIC0tLS0tQkVHSU4gQ0VSVElGSUNBVEUtLS0tLQogICAgICAgIE1JSUJ3RENDQVdlZ0F3SUJBZ0lSQUpSSWdaOFJ0TzhFd2cxWGVwZjhUNDR3Q2dZSUtvWkl6ajBFQXdJd0tURW4KICAgICAgICBna2RqaHNsa2Roa2dkamhza2pkZmtkamhna2RqaGtkZmpibmtkZm52amtoYnZqaGRiZGpmaGJmamhiZGZNRGd5CiAgICAgICAgbGZrZGprc2xkamdrbGpkZmtnamhkZmtnamhzZGZrbGdqc2RrbGpmZ2hsa2Rmamhsa3NkZmpsa3Nkamt1YkdsdQogICAgICAgIGxzZGpoZnY1NDZtZmRza2dqaGRmamtoZ2tqZGhramhkZmtqZ2hrZGZqaGdramRmaGtqZGZoZ2tqZmRoZ2tqRnAKICAgICAgICBmY1JkZmdoZmRnbWRuZ2tqeGRuYnZqbmN2a2pua2pkbmdram5mZGtqYmt2YmpibnZja2puYmpuZGRmZ2ZkZ3QxCiAgICAgICAgMmJsa2puZ2JramhnbGpkZmxnaGtsamRmbmdqZGZuZ25sZGZrbWxrZGZqZ21sZGZrZ21sa2ZkbWdsa2RtTUFZQgogICAgICAgIEFmOENmZ2xibmpuZGJqZG5rZmpuZ2tkbmZnamtsbmRranZuYmlqZGlmamdpZXJqZ29pamRmbGtneGxrbmdrQ0MKICAgICAgICBIbWxkZmtmamdvaWRmamdnam5kamtmbmdranNkbnNram5qNXNiMk5oYkRBS0JnZ3Foa2pPUFFRREFnTkhBREJFCiAgICAgICAgQWlBdG9mZ2toOTk0NXU4OXV5OWU4dWdodWRmaGd1aGRmZmhpbGd1aGl1aGtkaGZna2pkaGZramhya2piazFwNQogICAgICAgIDVrZmRsc2lmaHU0aHRpdWg0aXR1aGtqaGt6az0KICAgICAgICAtLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCiAgICAgIGtleVBFTTogfAogICAgICAgIC0tLS0tQkVHSU4gRUMgUFJJVkFURSBLRVktLS0tLQogICAgICAgIE1IY0NBUUVFSUFBZThuZmJ6WnU5Yy9PQjJnZGZramdsaWRma2pibnhqa2hiZ2hiZmdoYmpoYmRqaGJzanhjazkKICAgICAgICBvZGlmanZpamRmdm9pamRmb2l2amRmb2lqZGpnbmZka2pnbmtqZGZna2pkZmtqZ2JrampoYmtnSmpYZ1p0TTcyCiAgICAgICAgZGZpb2hndXhoYmtqZ25rbGpkZm5rbGpkbmdram5rZ2puKz09CiAgICAgICAgLS0tLS1FTkQgRUMgUFJJVkFURSBLRVktLS0tLQppZGVudGl0eVRydXN0QW5jaG9yc1BFTTogfAogIC0tLS0tQkVHSU4gQ0VSVElGSUNBVEUtLS0tLQogIE1JSUJ3VENDQVdhZ0F3SUJBZ0lRZURacDVsRGFJeWdRNVVmTUtaZGZuZ2puZGZrZ2puZmRramdua2RqbmtkamYKICBkZmtuZ2tqYmtqZGZic2tqYm5ma2puc2RrZ2psbnhrY2pibmt4am5ja2pnbmtqbmdreGpuZ2tqeGNua2dqbkk0CiAgTURkc2xrZmpvaWVyOGhzZGY4ZmdoZzc4NGg5OHQ5OGVydWhpdXNkaGtmZ2hoc2poYmdqa2hzdmpmaHZzYVc1cgogIFpYNDhrbmdraGdkZmtmamdic2RoYmpoYnNkaGJoeGJkZmxqZ2xkZmtqZ2tqaGpmZGdramJka2pmYmdrYmM3MFoKICBsZGZsa2pna2xqZGZoZmRrZ2poZXJramJnaGZia2dqYmtqbmtqeGNua2pmbmtnam5ma2pnbmtmam43SEJXVUM0CiAgdWZkZ2tqZGZpZ2hmdWRoZ2l1dWRoYm5ma25iZ3NibmRma2poc2tqa3NqbmdranNibmdramJrZ2pieGtqYmdFQgogIC9zZGZiaHNiamZoYmVod3did2poZmJqc2hiZGpoYnppdWhya2hiZXJoYnNqaGJkZmpoYmpoYmpoc2JqaGJzcysKICBsZGpmbGhranNka2ZqaHNrZGpma2pzZG5ma2puc2RramZuc2Rram5ranhjbmtqdm5ram5kc2Z3bGVra0FNRVlDCiAgSWVmb2h3a3VlaGZranNkaGZranNkaGtmamhzZGtqZmhrc2RqaGZranNkaGZranNkaGRramZoc2trZGpmaGpDOAogIHNkZnNkaHlnZmpoZ2RqaGZnanNoZGdmamhncXIKICAtLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCmxpbmtlcmRWZXJzaW9uOiBpbnN0YWxsLWNvbnRyb2wtcGxhbmUtdmVyc2lvbgpwb2xpY3lWYWxpZGF0b3I6CiAgY2FCdW5kbGU6IHBvbGljeSB2YWxpZGF0b3IgQ0EgYnVuZGxlCiAgZXh0ZXJuYWxTZWNyZXQ6IHRydWUKcHJvZmlsZVZhbGlkYXRvcjoKICBjYUJ1bmRsZTogcHJvZmlsZSB2YWxpZGF0b3IgQ0EgYnVuZGxlCiAgZXh0ZXJuYWxTZWNyZXQ6IHRydWUKcHJveHk6CiAgaW1hZ2U6CiAgICB2ZXJzaW9uOiBpbnN0YWxsLXByb3h5LXZlcnNpb24KcHJveHlJbml0OgogIGlnbm9yZUluYm91bmRQb3J0czogMjIsMzMwNi02MTkyCiAgaWdub3JlT3V0Ym91bmRQb3J0czogIjMyNzgiCnByb3h5SW5qZWN0b3I6CiAgY2FCdW5kbGU6IHByb3h5IGluamVjdG9yIENBIGJ1bmRsZQogIGV4dGVybmFsU2VjcmV0OiB0cnVlCg\",\n                \"value_start\": 0,\n                \"value_end\": 3078,\n                \"entropy\": 5.49785\n            }\n        ]\n    },\n    {\n        \"rule\": \"Akamai Credentials\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"T: akab-tblc7jkffv3wfxh3-h5stbzeswb3v4kj3\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/akamai\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"akab-tblc7jkffv3wfxh3-h5stbzeswb3v4kj3\",\n                \"value_start\": 3,\n                \"value_end\": 41,\n                \"entropy\": 4.15557\n            }\n        ]\n    },\n    {\n        \"rule\": \"Anthropic API Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"sk-ant-api03-gigCtxD_mMUnJuUOwVtpBmPFdG0-ybrcBb1EcgpJblpcwh7tpFu-DIChOfbCnT7NgKcobiQ5aQA1oxlu3aJ-HgvUeZoSew\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/antrhropic\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"sk-ant-api03-gigCtxD_mMUnJuUOwVtpBmPFdG0-ybrcBb1EcgpJblpcwh7tpFu-DIChOfbCnT7NgKcobiQ5aQA1oxlu3aJ-HgvUeZoSew\",\n                \"value_start\": 0,\n                \"value_end\": 107,\n                \"entropy\": 5.42952\n            }\n        ]\n    },\n    {\n        \"rule\": \"API\",\n        \"severity\": \"low\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"gi_reo_gi_api = \\\"DvMB_glvwjlEQ_uqIyn8k\\\";\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/api.toml\",\n                \"info\": \"\",\n                \"variable\": \"gi_reo_gi_api\",\n                \"variable_start\": 0,\n                \"variable_end\": 13,\n                \"value\": \"DvMB_glvwjlEQ_uqIyn8k\",\n                \"value_start\": 17,\n                \"value_end\": 38,\n                \"entropy\": 4.1066\n            }\n        ]\n    },\n    {\n        \"rule\": \"Atlassian PAT token\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"ATLASSIAN = \\\"ATATT3xFfGF0vNZ7oy6ON4KrWEzKEu96n-r2bCLOOcdOADizvJqPd89yKyP853uTZSflBi1Lk1zD460BqyMTa08VUEy8-oOzr1esg3j_mZKZwAELnRkCDTJZXhHsv5jaWHyAj4LRL-6h8LI-5MrYs4l7xXSaY8odQxDKJB4hDvdkmuh61xea2jE=00203E68\\\"\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/atlassian_pat\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"ATATT3xFfGF0vNZ7oy6ON4KrWEzKEu96n-r2bCLOOcdOADizvJqPd89yKyP853uTZSflBi1Lk1zD460BqyMTa08VUEy8-oOzr1esg3j_mZKZwAELnRkCDTJZXhHsv5jaWHyAj4LRL-6h8LI-5MrYs4l7xXSaY8odQxDKJB4hDvdkmuh61xea2jE=00203E68\",\n                \"value_start\": 13,\n                \"value_end\": 205,\n                \"entropy\": 5.77034\n            }\n        ]\n    },\n    {\n        \"rule\": \"Atlassian PAT token\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"escaped_backslash = ATATT3xFfGF0vNZ7oy6ON4KrWEzKEu96n-r2bCLOOcdOADizvJqPd89yKyP853uTZSflBi1Lk1zD460BqyMTa08VUEy8-oOzr1esg3j_mZKZwAELnRkCDTJZXhHsv5jaWHyAj4LRL-6h8LI-5MrYs4l7xXSaY8odQxDKJB4hDvdkmuh61xea2jE\\\\=00203E68\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/atlassian_pat\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"ATATT3xFfGF0vNZ7oy6ON4KrWEzKEu96n-r2bCLOOcdOADizvJqPd89yKyP853uTZSflBi1Lk1zD460BqyMTa08VUEy8-oOzr1esg3j_mZKZwAELnRkCDTJZXhHsv5jaWHyAj4LRL-6h8LI-5MrYs4l7xXSaY8odQxDKJB4hDvdkmuh61xea2jE\\\\=00203E68\",\n                \"value_start\": 20,\n                \"value_end\": 213,\n                \"entropy\": 5.78724\n            }\n        ]\n    },\n    {\n        \"rule\": \"Atlassian PAT token\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"url_escaped_capital = ATATT3xFfGF0vNZ7oy6ON4KrWEzKEu96n-r2bCLOOcdOADizvJqPd89yKyP853uTZSflBi1Lk1zD460BqyMTa08VUEy8-oOzr1esg3j_mZKZwAELnRkCDTJZXhHsv5jaWHyAj4LRL-6h8LI-5MrYs4l7xXSaY8odQxDKJB4hDvdkmuh61xea2jE%3D00203E68\",\n                \"line_num\": 3,\n                \"path\": \"./tests/samples/atlassian_pat\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"ATATT3xFfGF0vNZ7oy6ON4KrWEzKEu96n-r2bCLOOcdOADizvJqPd89yKyP853uTZSflBi1Lk1zD460BqyMTa08VUEy8-oOzr1esg3j_mZKZwAELnRkCDTJZXhHsv5jaWHyAj4LRL-6h8LI-5MrYs4l7xXSaY8odQxDKJB4hDvdkmuh61xea2jE%3D00203E68\",\n                \"value_start\": 22,\n                \"value_end\": 216,\n                \"entropy\": 5.76529\n            }\n        ]\n    },\n    {\n        \"rule\": \"Atlassian PAT token\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"url_escaped_lowercase = ATATT3xFfGF0vNZ7oy6ON4KrWEzKEu96n-r2bCLOOcdOADizvJqPd89yKyP853uTZSflBi1Lk1zD460BqyMTa08VUEy8-oOzr1esg3j_mZKZwAELnRkCDTJZXhHsv5jaWHyAj4LRL-6h8LI-5MrYs4l7xXSaY8odQxDKJB4hDvdkmuh61xea2jE%3d00203E68\",\n                \"line_num\": 4,\n                \"path\": \"./tests/samples/atlassian_pat\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"ATATT3xFfGF0vNZ7oy6ON4KrWEzKEu96n-r2bCLOOcdOADizvJqPd89yKyP853uTZSflBi1Lk1zD460BqyMTa08VUEy8-oOzr1esg3j_mZKZwAELnRkCDTJZXhHsv5jaWHyAj4LRL-6h8LI-5MrYs4l7xXSaY8odQxDKJB4hDvdkmuh61xea2jE%3d00203E68\",\n                \"value_start\": 24,\n                \"value_end\": 218,\n                \"entropy\": 5.76679\n            }\n        ]\n    },\n    {\n        \"rule\": \"Auth\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"\\\"kerberos_authentication\\\": \\\"YI7IB6wYJgaMgHAgIKoZI2AQBuIh2cSA0IB1qA\\\"\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/auth.hs\",\n                \"info\": \"\",\n                \"variable\": \"kerberos_authentication\",\n                \"variable_start\": 1,\n                \"variable_end\": 24,\n                \"value\": \"YI7IB6wYJgaMgHAgIKoZI2AQBuIh2cSA0IB1qA\",\n                \"value_start\": 28,\n                \"value_end\": 66,\n                \"entropy\": 4.27373\n            }\n        ]\n    },\n    {\n        \"rule\": \"Auth\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"\\\"authorization\\\": \\\"aMgHAgIKhwLgGq02iQoZI1AQBuOh4cSAQ8B1qA\\\"\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/auth.hs\",\n                \"info\": \"\",\n                \"variable\": \"authorization\",\n                \"variable_start\": 1,\n                \"variable_end\": 14,\n                \"value\": \"aMgHAgIKhwLgGq02iQoZI1AQBuOh4cSAQ8B1qA\",\n                \"value_start\": 18,\n                \"value_end\": 56,\n                \"entropy\": 4.52399\n            }\n        ]\n    },\n    {\n        \"rule\": \"Auth\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"headers = {authorization: /oauth_signature=\\\"JgEWaL6V6eM%2FFb9wuXG4I3IB6wY%3D\\\"/, content_type: 'application/json; charset=utf-8'}\",\n                \"line_num\": 3,\n                \"path\": \"./tests/samples/auth.hs\",\n                \"info\": \"\",\n                \"variable\": \"oauth_signature\",\n                \"variable_start\": 27,\n                \"variable_end\": 42,\n                \"value\": \"JgEWaL6V6eM%2FFb9wuXG4I3IB6wY%3D\",\n                \"value_start\": 44,\n                \"value_end\": 76,\n                \"entropy\": 4.53891\n            }\n        ]\n    },\n    {\n        \"rule\": \"Auth\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.999,\n        \"line_data_list\": [\n            {\n                \"line\": \"Authorization: NTLM TlRMTUAAABABoITVNIAAZI1AQBuOh4cSAQ8B1A=\",\n                \"line_num\": 4,\n                \"path\": \"./tests/samples/auth.hs\",\n                \"info\": \"\",\n                \"variable\": \"Authorization\",\n                \"variable_start\": 0,\n                \"variable_end\": 13,\n                \"value\": \"TlRMTUAAABABoITVNIAAZI1AQBuOh4cSAQ8B1A=\",\n                \"value_start\": 20,\n                \"value_end\": 59,\n                \"entropy\": 4.00235\n            }\n        ]\n    },\n    {\n        \"rule\": \"Bearer Authorization\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"Authorization: NTLM TlRMTUAAABABoITVNIAAZI1AQBuOh4cSAQ8B1A=\",\n                \"line_num\": 4,\n                \"path\": \"./tests/samples/auth.hs\",\n                \"info\": \"\",\n                \"variable\": \"NTLM\",\n                \"variable_start\": 15,\n                \"variable_end\": 19,\n                \"value\": \"TlRMTUAAABABoITVNIAAZI1AQBuOh4cSAQ8B1A=\",\n                \"value_start\": 20,\n                \"value_end\": 59,\n                \"entropy\": 4.00235\n            }\n        ]\n    },\n    {\n        \"rule\": \"Auth\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"curl -H \\\"Authorization: Basic R2hyZG5oYzpycWVpIGVuZ2xiZg==\\\" http://localhost:8080/.\",\n                \"line_num\": 8,\n                \"path\": \"./tests/samples/auth_n.template\",\n                \"info\": \"\",\n                \"variable\": \"Authorization\",\n                \"variable_start\": 9,\n                \"variable_end\": 22,\n                \"value\": \"R2hyZG5oYzpycWVpIGVuZ2xiZg==\",\n                \"value_start\": 30,\n                \"value_end\": 58,\n                \"entropy\": 4.20897\n            }\n        ]\n    },\n    {\n        \"rule\": \"Basic Authorization\",\n        \"severity\": \"medium\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"curl -H \\\"Authorization: Basic R2hyZG5oYzpycWVpIGVuZ2xiZg==\\\" http://localhost:8080/.\",\n                \"line_num\": 8,\n                \"path\": \"./tests/samples/auth_n.template\",\n                \"info\": \"\",\n                \"variable\": \"Basic\",\n                \"variable_start\": 24,\n                \"variable_end\": 29,\n                \"value\": \"R2hyZG5oYzpycWVpIGVuZ2xiZg==\",\n                \"value_start\": 30,\n                \"value_end\": 58,\n                \"entropy\": 4.20897\n            }\n        ]\n    },\n    {\n        \"rule\": \"Auth\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"curl -H \\\"Authorization: Bearer eyJGRpVu1c2VzY2-823r_db32hbf4W1lbj\\\" http://localhost:8080/.\",\n                \"line_num\": 9,\n                \"path\": \"./tests/samples/auth_n.template\",\n                \"info\": \"\",\n                \"variable\": \"Authorization\",\n                \"variable_start\": 9,\n                \"variable_end\": 22,\n                \"value\": \"eyJGRpVu1c2VzY2-823r_db32hbf4W1lbj\",\n                \"value_start\": 31,\n                \"value_end\": 65,\n                \"entropy\": 4.53585\n            }\n        ]\n    },\n    {\n        \"rule\": \"Bearer Authorization\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"curl -H \\\"Authorization: Bearer eyJGRpVu1c2VzY2-823r_db32hbf4W1lbj\\\" http://localhost:8080/.\",\n                \"line_num\": 9,\n                \"path\": \"./tests/samples/auth_n.template\",\n                \"info\": \"\",\n                \"variable\": \"Bearer\",\n                \"variable_start\": 24,\n                \"variable_end\": 30,\n                \"value\": \"eyJGRpVu1c2VzY2-823r_db32hbf4W1lbj\",\n                \"value_start\": 31,\n                \"value_end\": 65,\n                \"entropy\": 4.53585\n            }\n        ]\n    },\n    {\n        \"rule\": \"AWS Client ID\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"The items are AKIAGIREOGIAWSKEY123,AKIAGIREOGIAWSKEY45X,A3T1DJ4IS97DLLTH2SZ3\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/aws_client_id\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"A3T1DJ4IS97DLLTH2SZ3\",\n                \"value_start\": 56,\n                \"value_end\": 76,\n                \"entropy\": 3.82193\n            }\n        ]\n    },\n    {\n        \"rule\": \"AWS Client ID\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"The items are AKIAGIREOGIAWSKEY123,AKIAGIREOGIAWSKEY45X,A3T1DJ4IS97DLLTH2SZ3\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/aws_client_id\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"AKIAGIREOGIAWSKEY123\",\n                \"value_start\": 14,\n                \"value_end\": 34,\n                \"entropy\": 3.54644\n            }\n        ]\n    },\n    {\n        \"rule\": \"AWS Client ID\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"The items are AKIAGIREOGIAWSKEY123,AKIAGIREOGIAWSKEY45X,A3T1DJ4IS97DLLTH2SZ3\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/aws_client_id\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"AKIAGIREOGIAWSKEY45X\",\n                \"value_start\": 35,\n                \"value_end\": 55,\n                \"entropy\": 3.54644\n            }\n        ]\n    },\n    {\n        \"rule\": \"Amazon Bedrock API Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"bedrock-api-key-vZKDJRzMKwJH6ewnj9FiyoUlZemipP2t\",\n                \"line_num\": 8,\n                \"path\": \"./tests/samples/aws_client_id\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"bedrock-api-key-vZKDJRzMKwJH6ewnj9FiyoUlZemipP2t\",\n                \"value_start\": 0,\n                \"value_end\": 48,\n                \"entropy\": 4.88684\n            }\n        ]\n    },\n    {\n        \"rule\": \"Amazon Bedrock API Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"ABSKpA8zwd50pFVLlH+DeWUlP1+WQ44upInjTDDbiDdaS2IvMOcMgT//XXPzEeJvYPRozcaOxv/no3aR3p7CoHYQf9Yx3PnaQVTYO+iCyiUbinHue1+8DSAx61Froe42\",\n                \"line_num\": 9,\n                \"path\": \"./tests/samples/aws_client_id\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"ABSKpA8zwd50pFVLlH+DeWUlP1+WQ44upInjTDDbiDdaS2IvMOcMgT//XXPzEeJvYPRozcaOxv/no3aR3p7CoHYQf9Yx3PnaQVTYO+iCyiUbinHue1+8DSAx61Froe42\",\n                \"value_start\": 0,\n                \"value_end\": 128,\n                \"entropy\": 5.61388\n            }\n        ]\n    },\n    {\n        \"rule\": \"AWS Client ID\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"        \\\"AwsAccessID\\\": \\\"AKIAGIREOGIAWSKEY123\\\",\",\n                \"line_num\": 3,\n                \"path\": \"./tests/samples/aws_multi.json\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"AKIAGIREOGIAWSKEY123\",\n                \"value_start\": 24,\n                \"value_end\": 44,\n                \"entropy\": 3.54644\n            }\n        ]\n    },\n    {\n        \"rule\": \"Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"        \\\"AwsSecretKey\\\": \\\"J38YmIgn7dH6cw4W+yqoRgjsFsWvysFjfVcpCh7O9Yyv9/qNvNI\\\"\",\n                \"line_num\": 4,\n                \"path\": \"./tests/samples/aws_multi.json\",\n                \"info\": \"\",\n                \"variable\": \"AwsSecretKey\",\n                \"variable_start\": 9,\n                \"variable_end\": 21,\n                \"value\": \"J38YmIgn7dH6cw4W+yqoRgjsFsWvysFjfVcpCh7O9Yyv9/qNvNI\",\n                \"value_start\": 25,\n                \"value_end\": 76,\n                \"entropy\": 4.96135\n            }\n        ]\n    },\n    {\n        \"rule\": \"Secret\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"        \\\"AwsSecretKey\\\": \\\"J38YmIgn7dH6cw4W+yqoRgjsFsWvysFjfVcpCh7O9Yyv9/qNvNI\\\"\",\n                \"line_num\": 4,\n                \"path\": \"./tests/samples/aws_multi.json\",\n                \"info\": \"\",\n                \"variable\": \"AwsSecretKey\",\n                \"variable_start\": 9,\n                \"variable_end\": 21,\n                \"value\": \"J38YmIgn7dH6cw4W+yqoRgjsFsWvysFjfVcpCh7O9Yyv9/qNvNI\",\n                \"value_start\": 25,\n                \"value_end\": 76,\n                \"entropy\": 4.96135\n            }\n        ]\n    },\n    {\n        \"rule\": \"AWS Client ID\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"        \\\"request_url\\\": \\\"https://gireogi323.s3.amazonaws.com/x3342?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Date=203230516T251998Z&X-Amz-SignedHeaders=host&X-Amz-Expires=999999&X-Amz-Credential=AKIAGIREOGIAWSKEY323%2F21100651%2Feu-west-3%2Fs3%2Faws_dummy&X-Amz-Key=J38YmIgn7dH6cw4W1yqoRgjsFsWvysFjfVcpCh7O9Yyv9_qNvNI\\\"\",\n                \"line_num\": 28,\n                \"path\": \"./tests/samples/aws_multi.json\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"AKIAGIREOGIAWSKEY323\",\n                \"value_start\": 191,\n                \"value_end\": 211,\n                \"entropy\": 3.44644\n            }\n        ]\n    },\n    {\n        \"rule\": \"Credential\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"        \\\"request_url\\\": \\\"https://gireogi323.s3.amazonaws.com/x3342?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Date=203230516T251998Z&X-Amz-SignedHeaders=host&X-Amz-Expires=999999&X-Amz-Credential=AKIAGIREOGIAWSKEY323%2F21100651%2Feu-west-3%2Fs3%2Faws_dummy&X-Amz-Key=J38YmIgn7dH6cw4W1yqoRgjsFsWvysFjfVcpCh7O9Yyv9_qNvNI\\\"\",\n                \"line_num\": 28,\n                \"path\": \"./tests/samples/aws_multi.json\",\n                \"info\": \"\",\n                \"variable\": \"X-Amz-Credential\",\n                \"variable_start\": 174,\n                \"variable_end\": 190,\n                \"value\": \"AKIAGIREOGIAWSKEY323%2F21100651%2Feu-west-3%2Fs3%2Faws_dummy\",\n                \"value_start\": 191,\n                \"value_end\": 251,\n                \"entropy\": 4.6314\n            }\n        ]\n    },\n    {\n        \"rule\": \"Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"        \\\"request_url\\\": \\\"https://gireogi323.s3.amazonaws.com/x3342?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Date=203230516T251998Z&X-Amz-SignedHeaders=host&X-Amz-Expires=999999&X-Amz-Credential=AKIAGIREOGIAWSKEY323%2F21100651%2Feu-west-3%2Fs3%2Faws_dummy&X-Amz-Key=J38YmIgn7dH6cw4W1yqoRgjsFsWvysFjfVcpCh7O9Yyv9_qNvNI\\\"\",\n                \"line_num\": 28,\n                \"path\": \"./tests/samples/aws_multi.json\",\n                \"info\": \"\",\n                \"variable\": \"X-Amz-Key\",\n                \"variable_start\": 252,\n                \"variable_end\": 261,\n                \"value\": \"J38YmIgn7dH6cw4W1yqoRgjsFsWvysFjfVcpCh7O9Yyv9_qNvNI\",\n                \"value_start\": 262,\n                \"value_end\": 313,\n                \"entropy\": 4.96135\n            }\n        ]\n    },\n    {\n        \"rule\": \"AWS S3 Bucket\",\n        \"severity\": \"info\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"        \\\"request_url\\\": \\\"https://gireogi323.s3.amazonaws.com/x3342?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Date=203230516T251998Z&X-Amz-SignedHeaders=host&X-Amz-Expires=999999&X-Amz-Credential=AKIAGIREOGIAWSKEY323%2F21100651%2Feu-west-3%2Fs3%2Faws_dummy&X-Amz-Key=J38YmIgn7dH6cw4W1yqoRgjsFsWvysFjfVcpCh7O9Yyv9_qNvNI\\\"\",\n                \"line_num\": 28,\n                \"path\": \"./tests/samples/aws_multi.json\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"gireogi323.s3.amazonaws.com\",\n                \"value_start\": 32,\n                \"value_end\": 59,\n                \"entropy\": 3.75416\n            }\n        ]\n    },\n    {\n        \"rule\": \"Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"        \\\"AwsSecretKey\\\": \\\"J38YmIgn7dH6cw4W1yqoRgjsFsWvysFjfVcpCh7O9Yyv9/qNvNI\\\",\",\n                \"line_num\": 52,\n                \"path\": \"./tests/samples/aws_multi.json\",\n                \"info\": \"\",\n                \"variable\": \"AwsSecretKey\",\n                \"variable_start\": 9,\n                \"variable_end\": 21,\n                \"value\": \"J38YmIgn7dH6cw4W1yqoRgjsFsWvysFjfVcpCh7O9Yyv9/qNvNI\",\n                \"value_start\": 25,\n                \"value_end\": 76,\n                \"entropy\": 4.96135\n            }\n        ]\n    },\n    {\n        \"rule\": \"Secret\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"        \\\"AwsSecretKey\\\": \\\"J38YmIgn7dH6cw4W1yqoRgjsFsWvysFjfVcpCh7O9Yyv9/qNvNI\\\",\",\n                \"line_num\": 52,\n                \"path\": \"./tests/samples/aws_multi.json\",\n                \"info\": \"\",\n                \"variable\": \"AwsSecretKey\",\n                \"variable_start\": 9,\n                \"variable_end\": 21,\n                \"value\": \"J38YmIgn7dH6cw4W1yqoRgjsFsWvysFjfVcpCh7O9Yyv9/qNvNI\",\n                \"value_start\": 25,\n                \"value_end\": 76,\n                \"entropy\": 4.96135\n            }\n        ]\n    },\n    {\n        \"rule\": \"AWS Client ID\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"        \\\"AwsAccessID\\\": \\\"AKIAGIREOGIAWSKEY321\\\"\",\n                \"line_num\": 53,\n                \"path\": \"./tests/samples/aws_multi.json\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"AKIAGIREOGIAWSKEY321\",\n                \"value_start\": 24,\n                \"value_end\": 44,\n                \"entropy\": 3.54644\n            }\n        ]\n    },\n    {\n        \"rule\": \"AWS Client ID\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"    \\\"AccessKeyId\\\" : \\\"AKIA0ON7V2DD57PL3JXM\\\",\",\n                \"line_num\": 7,\n                \"path\": \"./tests/samples/aws_multi.md\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"AKIA0ON7V2DD57PL3JXM\",\n                \"value_start\": 21,\n                \"value_end\": 41,\n                \"entropy\": 4.02193\n            }\n        ]\n    },\n    {\n        \"rule\": \"AWS Multi\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"    \\\"AccessKeyId\\\" : \\\"AKIA0ON7V2DD57PL3JXM\\\",\",\n                \"line_num\": 7,\n                \"path\": \"./tests/samples/aws_multi.md\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"AKIA0ON7V2DD57PL3JXM\",\n                \"value_start\": 21,\n                \"value_end\": 41,\n                \"entropy\": 4.02193\n            },\n            {\n                \"line\": \"    \\\"SecretAccessKey\\\" : \\\"RMkMm8niUJ1iuhAA+AAyugy3fFt/rtrf7GFQ9xz1\\\",\",\n                \"line_num\": 8,\n                \"path\": \"./tests/samples/aws_multi.md\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"RMkMm8niUJ1iuhAA+AAyugy3fFt/rtrf7GFQ9xz1\",\n                \"value_start\": 25,\n                \"value_end\": 65,\n                \"entropy\": 4.67193\n            }\n        ]\n    },\n    {\n        \"rule\": \"Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"    \\\"AccessKeyId\\\" : \\\"AKIA0ON7V2DD57PL3JXM\\\",\",\n                \"line_num\": 7,\n                \"path\": \"./tests/samples/aws_multi.md\",\n                \"info\": \"\",\n                \"variable\": \"AccessKeyId\",\n                \"variable_start\": 5,\n                \"variable_end\": 16,\n                \"value\": \"AKIA0ON7V2DD57PL3JXM\",\n                \"value_start\": 21,\n                \"value_end\": 41,\n                \"entropy\": 4.02193\n            }\n        ]\n    },\n    {\n        \"rule\": \"Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"    \\\"SecretAccessKey\\\" : \\\"RMkMm8niUJ1iuhAA+AAyugy3fFt/rtrf7GFQ9xz1\\\",\",\n                \"line_num\": 8,\n                \"path\": \"./tests/samples/aws_multi.md\",\n                \"info\": \"\",\n                \"variable\": \"SecretAccessKey\",\n                \"variable_start\": 5,\n                \"variable_end\": 20,\n                \"value\": \"RMkMm8niUJ1iuhAA+AAyugy3fFt/rtrf7GFQ9xz1\",\n                \"value_start\": 25,\n                \"value_end\": 65,\n                \"entropy\": 4.67193\n            }\n        ]\n    },\n    {\n        \"rule\": \"Secret\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"    \\\"SecretAccessKey\\\" : \\\"RMkMm8niUJ1iuhAA+AAyugy3fFt/rtrf7GFQ9xz1\\\",\",\n                \"line_num\": 8,\n                \"path\": \"./tests/samples/aws_multi.md\",\n                \"info\": \"\",\n                \"variable\": \"SecretAccessKey\",\n                \"variable_start\": 5,\n                \"variable_end\": 20,\n                \"value\": \"RMkMm8niUJ1iuhAA+AAyugy3fFt/rtrf7GFQ9xz1\",\n                \"value_start\": 25,\n                \"value_end\": 65,\n                \"entropy\": 4.67193\n            }\n        ]\n    },\n    {\n        \"rule\": \"Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"    \\\"Token\\\" : \\\"J38YmIgn7dH6cw4W1yqoRgjsFsWvysFjfVcpCh7O9Yyv9/qNvNI\\\",\",\n                \"line_num\": 9,\n                \"path\": \"./tests/samples/aws_multi.md\",\n                \"info\": \"\",\n                \"variable\": \"Token\",\n                \"variable_start\": 5,\n                \"variable_end\": 10,\n                \"value\": \"J38YmIgn7dH6cw4W1yqoRgjsFsWvysFjfVcpCh7O9Yyv9/qNvNI\",\n                \"value_start\": 15,\n                \"value_end\": 66,\n                \"entropy\": 4.96135\n            }\n        ]\n    },\n    {\n        \"rule\": \"AWS MWS Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"AWS_MWS_KEY = \\\"amzn.mws.c1dg4haz-6xd6-4gqi-vna2-ed3whf71x9k6\\\"\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/aws_mws_key\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"amzn.mws.c1dg4haz-6xd6-4gqi-vna2-ed3whf71x9k6\",\n                \"value_start\": 15,\n                \"value_end\": 60,\n                \"entropy\": 4.55264\n            }\n        ]\n    },\n    {\n        \"rule\": \"Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.29,\n        \"line_data_list\": [\n            {\n                \"line\": \"AWS_MWS_KEY = \\\"amzn.mws.c1dg4haz-6xd6-4gqi-vna2-ed3whf71x9k6\\\"\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/aws_mws_key\",\n                \"info\": \"\",\n                \"variable\": \"AWS_MWS_KEY\",\n                \"variable_start\": 0,\n                \"variable_end\": 11,\n                \"value\": \"amzn.mws.c1dg4haz-6xd6-4gqi-vna2-ed3whf71x9k6\",\n                \"value_start\": 15,\n                \"value_end\": 60,\n                \"entropy\": 4.55264\n            }\n        ]\n    },\n    {\n        \"rule\": \"AWS S3 Bucket\",\n        \"severity\": \"info\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"{\\\"url\\\" : \\\"https://circle-production-action-output.s3.amazonaws.com/283746ds4?X-Amz-Algorithm=AWS4-HMAC-SHA256\\\"}\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/aws_s3_bucket\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"circle-production-action-output.s3.amazonaws.com\",\n                \"value_start\": 18,\n                \"value_end\": 66,\n                \"entropy\": 4.02467\n            }\n        ]\n    },\n    {\n        \"rule\": \"Azure Access Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIng1dCI6Imk2bEdrM0ZaenhSY1ViMkMzbkVRN3N5SEpsWSIsImtpZCI6Imk2bEdrM0ZaenhSY1ViMkMzbkVRN3N5SEpsWSJ9.eyJhdWQiOiJlZjFkYTlkNC1mZjc3LTRjM2UtYTAwNS04NDBjM2Y4MzA3NDUiLCJpc3MiOiJodHRwczovL3N0cy53aW5kb3dzLm5ldC9mYTE1ZDY5Mi1lOWM3LTQ0NjAtYTc0My0yOWYyOTUyMjIyOS8iLCJpYXQiOjE1MzcyMzMxMDYsIm5iZiI6MTUzNzIzMzEwNiwiZXhwIjoxNTM3MjM3MDA2LCJhY3IiOiIxIiwiYWlvIjoiQVhRQWkvOElBQUFBRm0rRS9RVEcrZ0ZuVnhMaldkdzhLKzYxQUdyU091TU1GNmViYU1qN1hPM0libUQzZkdtck95RCtOdlp5R24yVmFUL2tES1h3NE1JaHJnR1ZxNkJuOHdMWG9UMUxrSVorRnpRVmtKUFBMUU9WNEtjWHFTbENWUERTL0RpQ0RnRTIyMlRJbU12V05hRU1hVU9Uc0lHdlRRPT0iLCJhbXIiOlsid2lhIl0sImFwcGlkIjoiNzVkYmU3N2YtMTBhMy00ZTU5LTg1ZmQtOGMxMjc1NDRmMTdjIiwiYXBwaWRhY3IiOiIwIiwiZW1haWwiOiJBYmVMaUBtaWNyb3NvZnQuY29tIiwiZmFtaWx5X25hbWUiOiJMaW5jb2xuIiwiZ2l2ZW5fbmFtZSI6IkFiZSAoTVNGVCkiLCJpZHAiOiJodHRwczovL3N0cy53aW5kb3dzLm5ldC83MmY5ODhiZi04NmYxLTQxYWYtOTFhYi0yZDdjZDAxMjIyNDcvIiwiaXBhZGRyIjoiMjIyLjIyMi4yMjIuMjIiLCJuYW1lIjoiYWJlbGkiLCJvaWQiOiIwMjIyM2I2Yi1hYTFkLTQyZDQtOWVjMC0xYjJiYjkxOTQ0MzgiLCJyaCI6IkkiLCJzY3AiOiJ1c2VyX2ltcGVyc29uYXRpb24iLCJzdWIiOiJsM19yb0lTUVUyMjJiVUxTOXlpMmswWHBxcE9pTXo1SDNaQUNvMUdlWEEiLCJ0aWQiOiJmYTE1ZDY5Mi1lOWM3LTQ0NjAtYTc0My0yOWYyOTU2ZmQ0MjkiLCJ1bmlxdWVfbmFtZSI6ImFiZWxpQG1pY3Jvc29mdC5jb20iLCJ1dGkiOiJGVnNHeFlYSTMwLVR1aWt1dVVvRkFBIiwidmVyIjoiMS4wIn0.D3H6pMUtQnoJAGq6AHd\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/azure_access_token\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIng1dCI6Imk2bEdrM0ZaenhSY1ViMkMzbkVRN3N5SEpsWSIsImtpZCI6Imk2bEdrM0ZaenhSY1ViMkMzbkVRN3N5SEpsWSJ9.eyJhdWQiOiJlZjFkYTlkNC1mZjc3LTRjM2UtYTAwNS04NDBjM2Y4MzA3NDUiLCJpc3MiOiJodHRwczovL3N0cy53aW5kb3dzLm5ldC9mYTE1ZDY5Mi1lOWM3LTQ0NjAtYTc0My0yOWYyOTUyMjIyOS8iLCJpYXQiOjE1MzcyMzMxMDYsIm5iZiI6MTUzNzIzMzEwNiwiZXhwIjoxNTM3MjM3MDA2LCJhY3IiOiIxIiwiYWlvIjoiQVhRQWkvOElBQUFBRm0rRS9RVEcrZ0ZuVnhMaldkdzhLKzYxQUdyU091TU1GNmViYU1qN1hPM0libUQzZkdtck95RCtOdlp5R24yVmFUL2tES1h3NE1JaHJnR1ZxNkJuOHdMWG9UMUxrSVorRnpRVmtKUFBMUU9WNEtjWHFTbENWUERTL0RpQ0RnRTIyMlRJbU12V05hRU1hVU9Uc0lHdlRRPT0iLCJhbXIiOlsid2lhIl0sImFwcGlkIjoiNzVkYmU3N2YtMTBhMy00ZTU5LTg1ZmQtOGMxMjc1NDRmMTdjIiwiYXBwaWRhY3IiOiIwIiwiZW1haWwiOiJBYmVMaUBtaWNyb3NvZnQuY29tIiwiZmFtaWx5X25hbWUiOiJMaW5jb2xuIiwiZ2l2ZW5fbmFtZSI6IkFiZSAoTVNGVCkiLCJpZHAiOiJodHRwczovL3N0cy53aW5kb3dzLm5ldC83MmY5ODhiZi04NmYxLTQxYWYtOTFhYi0yZDdjZDAxMjIyNDcvIiwiaXBhZGRyIjoiMjIyLjIyMi4yMjIuMjIiLCJuYW1lIjoiYWJlbGkiLCJvaWQiOiIwMjIyM2I2Yi1hYTFkLTQyZDQtOWVjMC0xYjJiYjkxOTQ0MzgiLCJyaCI6IkkiLCJzY3AiOiJ1c2VyX2ltcGVyc29uYXRpb24iLCJzdWIiOiJsM19yb0lTUVUyMjJiVUxTOXlpMmswWHBxcE9pTXo1SDNaQUNvMUdlWEEiLCJ0aWQiOiJmYTE1ZDY5Mi1lOWM3LTQ0NjAtYTc0My0yOWYyOTU2ZmQ0MjkiLCJ1bmlxdWVfbmFtZSI6ImFiZWxpQG1pY3Jvc29mdC5jb20iLCJ1dGkiOiJGVnNHeFlYSTMwLVR1aWt1dVVvRkFBIiwidmVyIjoiMS4wIn0.D3H6pMUtQnoJAGq6AHd\",\n                \"value_start\": 0,\n                \"value_end\": 1316,\n                \"entropy\": 5.63018\n            }\n        ]\n    },\n    {\n        \"rule\": \"JSON Web Token\",\n        \"severity\": \"medium\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIng1dCI6Imk2bEdrM0ZaenhSY1ViMkMzbkVRN3N5SEpsWSIsImtpZCI6Imk2bEdrM0ZaenhSY1ViMkMzbkVRN3N5SEpsWSJ9.eyJhdWQiOiJlZjFkYTlkNC1mZjc3LTRjM2UtYTAwNS04NDBjM2Y4MzA3NDUiLCJpc3MiOiJodHRwczovL3N0cy53aW5kb3dzLm5ldC9mYTE1ZDY5Mi1lOWM3LTQ0NjAtYTc0My0yOWYyOTUyMjIyOS8iLCJpYXQiOjE1MzcyMzMxMDYsIm5iZiI6MTUzNzIzMzEwNiwiZXhwIjoxNTM3MjM3MDA2LCJhY3IiOiIxIiwiYWlvIjoiQVhRQWkvOElBQUFBRm0rRS9RVEcrZ0ZuVnhMaldkdzhLKzYxQUdyU091TU1GNmViYU1qN1hPM0libUQzZkdtck95RCtOdlp5R24yVmFUL2tES1h3NE1JaHJnR1ZxNkJuOHdMWG9UMUxrSVorRnpRVmtKUFBMUU9WNEtjWHFTbENWUERTL0RpQ0RnRTIyMlRJbU12V05hRU1hVU9Uc0lHdlRRPT0iLCJhbXIiOlsid2lhIl0sImFwcGlkIjoiNzVkYmU3N2YtMTBhMy00ZTU5LTg1ZmQtOGMxMjc1NDRmMTdjIiwiYXBwaWRhY3IiOiIwIiwiZW1haWwiOiJBYmVMaUBtaWNyb3NvZnQuY29tIiwiZmFtaWx5X25hbWUiOiJMaW5jb2xuIiwiZ2l2ZW5fbmFtZSI6IkFiZSAoTVNGVCkiLCJpZHAiOiJodHRwczovL3N0cy53aW5kb3dzLm5ldC83MmY5ODhiZi04NmYxLTQxYWYtOTFhYi0yZDdjZDAxMjIyNDcvIiwiaXBhZGRyIjoiMjIyLjIyMi4yMjIuMjIiLCJuYW1lIjoiYWJlbGkiLCJvaWQiOiIwMjIyM2I2Yi1hYTFkLTQyZDQtOWVjMC0xYjJiYjkxOTQ0MzgiLCJyaCI6IkkiLCJzY3AiOiJ1c2VyX2ltcGVyc29uYXRpb24iLCJzdWIiOiJsM19yb0lTUVUyMjJiVUxTOXlpMmswWHBxcE9pTXo1SDNaQUNvMUdlWEEiLCJ0aWQiOiJmYTE1ZDY5Mi1lOWM3LTQ0NjAtYTc0My0yOWYyOTU2ZmQ0MjkiLCJ1bmlxdWVfbmFtZSI6ImFiZWxpQG1pY3Jvc29mdC5jb20iLCJ1dGkiOiJGVnNHeFlYSTMwLVR1aWt1dVVvRkFBIiwidmVyIjoiMS4wIn0.D3H6pMUtQnoJAGq6AHd\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/azure_access_token\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIng1dCI6Imk2bEdrM0ZaenhSY1ViMkMzbkVRN3N5SEpsWSIsImtpZCI6Imk2bEdrM0ZaenhSY1ViMkMzbkVRN3N5SEpsWSJ9.eyJhdWQiOiJlZjFkYTlkNC1mZjc3LTRjM2UtYTAwNS04NDBjM2Y4MzA3NDUiLCJpc3MiOiJodHRwczovL3N0cy53aW5kb3dzLm5ldC9mYTE1ZDY5Mi1lOWM3LTQ0NjAtYTc0My0yOWYyOTUyMjIyOS8iLCJpYXQiOjE1MzcyMzMxMDYsIm5iZiI6MTUzNzIzMzEwNiwiZXhwIjoxNTM3MjM3MDA2LCJhY3IiOiIxIiwiYWlvIjoiQVhRQWkvOElBQUFBRm0rRS9RVEcrZ0ZuVnhMaldkdzhLKzYxQUdyU091TU1GNmViYU1qN1hPM0libUQzZkdtck95RCtOdlp5R24yVmFUL2tES1h3NE1JaHJnR1ZxNkJuOHdMWG9UMUxrSVorRnpRVmtKUFBMUU9WNEtjWHFTbENWUERTL0RpQ0RnRTIyMlRJbU12V05hRU1hVU9Uc0lHdlRRPT0iLCJhbXIiOlsid2lhIl0sImFwcGlkIjoiNzVkYmU3N2YtMTBhMy00ZTU5LTg1ZmQtOGMxMjc1NDRmMTdjIiwiYXBwaWRhY3IiOiIwIiwiZW1haWwiOiJBYmVMaUBtaWNyb3NvZnQuY29tIiwiZmFtaWx5X25hbWUiOiJMaW5jb2xuIiwiZ2l2ZW5fbmFtZSI6IkFiZSAoTVNGVCkiLCJpZHAiOiJodHRwczovL3N0cy53aW5kb3dzLm5ldC83MmY5ODhiZi04NmYxLTQxYWYtOTFhYi0yZDdjZDAxMjIyNDcvIiwiaXBhZGRyIjoiMjIyLjIyMi4yMjIuMjIiLCJuYW1lIjoiYWJlbGkiLCJvaWQiOiIwMjIyM2I2Yi1hYTFkLTQyZDQtOWVjMC0xYjJiYjkxOTQ0MzgiLCJyaCI6IkkiLCJzY3AiOiJ1c2VyX2ltcGVyc29uYXRpb24iLCJzdWIiOiJsM19yb0lTUVUyMjJiVUxTOXlpMmswWHBxcE9pTXo1SDNaQUNvMUdlWEEiLCJ0aWQiOiJmYTE1ZDY5Mi1lOWM3LTQ0NjAtYTc0My0yOWYyOTU2ZmQ0MjkiLCJ1bmlxdWVfbmFtZSI6ImFiZWxpQG1pY3Jvc29mdC5jb20iLCJ1dGkiOiJGVnNHeFlYSTMwLVR1aWt1dVVvRkFBIiwidmVyIjoiMS4wIn0.D3H6pMUtQnoJAGq6AHd\",\n                \"value_start\": 0,\n                \"value_end\": 1316,\n                \"entropy\": 5.63018\n            }\n        ]\n    },\n    {\n        \"rule\": \"Azure Access Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImtpZCI6Imk2bEdrM0ZaenhSY1ViMkMzbkVRN3N5SEpsWSJ9.eyJhdWQiOiI2ZTc0MTcyYi1iZTU2LTQ4NDMtOWZmNC1lNjZhMzliYjEyZTMiLCJpc3MiOiJodHRwczovL2xvZ2luLm1pY3Jvc29mdG9ubGluZS5jb20vNzJmOTg4YmYtODZmMS00MWFmLTkxYWItMmQ3Y2QwMTFkYjQ3L3YyLjAiLCJpYXQiOjE1MzcyMzEwNDgsIm5iZiI6MTUzNzIzMTA0OCwiZXhwIjoxNTM3MjM0OTQ4LCJhaW8iOiJBWFFBaS84SUFBQUF0QWFaTG8zQ2hNaWY2S09udHRSQjdlQnE0L0RjY1F6amNKR3hQWXkvQzNqRGFOR3hYZDZ3TklJVkdSZ2hOUm53SjFsT2NBbk5aY2p2a295ckZ4Q3R0djMzMTQwUmlvT0ZKNGJDQ0dWdW9DYWcxdU9UVDIyMjIyZ0h3TFBZUS91Zjc5UVgrMEtJaWpkcm1wNjlSY3R6bVE9PSIsImF6cCI6IjZlNzQxNzJiLWJlNTYtNDg0My05ZmY0LWU2NmEzOWJiMTJlMyIsImF6cGFjciI6IjAiLCJuYW1lIjoiQWJlIExpbmNvbG4iLCJvaWQiOiI2OTAyMjJiZS1mZjFhLTRkNTYtYWJkMS03ZTRmN2QzOGU0NzQiLCJwcmVmZXJyZWRfdXNlcm5hbWUiOiJhYmVsaUBtaWNyb3NvZnQuY29tIiwicmgiOiJJIiwic2NwIjoiYWNjZXNzX2FzX3VzZXIiLCJzdWIiOiJIS1pwZmFIeVdhZGVPb3VZbGl0anJJLUtmZlRtMjIyWDVyclYzeERxZktRIiwidGlkIjoiNzJmOTg4YmYtODZmMS00MWFmLTkxYWItMmQ3Y2QwMTFkYjQ3IiwidXRpIjoiZnFpQnFYTFBqMGVRYTgyUy1JWUZBQSIsInZlciI6IjIuMCJ9.pj4N-w_3Us9DrBLfpCt\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/azure_access_token\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImtpZCI6Imk2bEdrM0ZaenhSY1ViMkMzbkVRN3N5SEpsWSJ9.eyJhdWQiOiI2ZTc0MTcyYi1iZTU2LTQ4NDMtOWZmNC1lNjZhMzliYjEyZTMiLCJpc3MiOiJodHRwczovL2xvZ2luLm1pY3Jvc29mdG9ubGluZS5jb20vNzJmOTg4YmYtODZmMS00MWFmLTkxYWItMmQ3Y2QwMTFkYjQ3L3YyLjAiLCJpYXQiOjE1MzcyMzEwNDgsIm5iZiI6MTUzNzIzMTA0OCwiZXhwIjoxNTM3MjM0OTQ4LCJhaW8iOiJBWFFBaS84SUFBQUF0QWFaTG8zQ2hNaWY2S09udHRSQjdlQnE0L0RjY1F6amNKR3hQWXkvQzNqRGFOR3hYZDZ3TklJVkdSZ2hOUm53SjFsT2NBbk5aY2p2a295ckZ4Q3R0djMzMTQwUmlvT0ZKNGJDQ0dWdW9DYWcxdU9UVDIyMjIyZ0h3TFBZUS91Zjc5UVgrMEtJaWpkcm1wNjlSY3R6bVE9PSIsImF6cCI6IjZlNzQxNzJiLWJlNTYtNDg0My05ZmY0LWU2NmEzOWJiMTJlMyIsImF6cGFjciI6IjAiLCJuYW1lIjoiQWJlIExpbmNvbG4iLCJvaWQiOiI2OTAyMjJiZS1mZjFhLTRkNTYtYWJkMS03ZTRmN2QzOGU0NzQiLCJwcmVmZXJyZWRfdXNlcm5hbWUiOiJhYmVsaUBtaWNyb3NvZnQuY29tIiwicmgiOiJJIiwic2NwIjoiYWNjZXNzX2FzX3VzZXIiLCJzdWIiOiJIS1pwZmFIeVdhZGVPb3VZbGl0anJJLUtmZlRtMjIyWDVyclYzeERxZktRIiwidGlkIjoiNzJmOTg4YmYtODZmMS00MWFmLTkxYWItMmQ3Y2QwMTFkYjQ3IiwidXRpIjoiZnFpQnFYTFBqMGVRYTgyUy1JWUZBQSIsInZlciI6IjIuMCJ9.pj4N-w_3Us9DrBLfpCt\",\n                \"value_start\": 0,\n                \"value_end\": 1029,\n                \"entropy\": 5.64141\n            }\n        ]\n    },\n    {\n        \"rule\": \"JSON Web Token\",\n        \"severity\": \"medium\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImtpZCI6Imk2bEdrM0ZaenhSY1ViMkMzbkVRN3N5SEpsWSJ9.eyJhdWQiOiI2ZTc0MTcyYi1iZTU2LTQ4NDMtOWZmNC1lNjZhMzliYjEyZTMiLCJpc3MiOiJodHRwczovL2xvZ2luLm1pY3Jvc29mdG9ubGluZS5jb20vNzJmOTg4YmYtODZmMS00MWFmLTkxYWItMmQ3Y2QwMTFkYjQ3L3YyLjAiLCJpYXQiOjE1MzcyMzEwNDgsIm5iZiI6MTUzNzIzMTA0OCwiZXhwIjoxNTM3MjM0OTQ4LCJhaW8iOiJBWFFBaS84SUFBQUF0QWFaTG8zQ2hNaWY2S09udHRSQjdlQnE0L0RjY1F6amNKR3hQWXkvQzNqRGFOR3hYZDZ3TklJVkdSZ2hOUm53SjFsT2NBbk5aY2p2a295ckZ4Q3R0djMzMTQwUmlvT0ZKNGJDQ0dWdW9DYWcxdU9UVDIyMjIyZ0h3TFBZUS91Zjc5UVgrMEtJaWpkcm1wNjlSY3R6bVE9PSIsImF6cCI6IjZlNzQxNzJiLWJlNTYtNDg0My05ZmY0LWU2NmEzOWJiMTJlMyIsImF6cGFjciI6IjAiLCJuYW1lIjoiQWJlIExpbmNvbG4iLCJvaWQiOiI2OTAyMjJiZS1mZjFhLTRkNTYtYWJkMS03ZTRmN2QzOGU0NzQiLCJwcmVmZXJyZWRfdXNlcm5hbWUiOiJhYmVsaUBtaWNyb3NvZnQuY29tIiwicmgiOiJJIiwic2NwIjoiYWNjZXNzX2FzX3VzZXIiLCJzdWIiOiJIS1pwZmFIeVdhZGVPb3VZbGl0anJJLUtmZlRtMjIyWDVyclYzeERxZktRIiwidGlkIjoiNzJmOTg4YmYtODZmMS00MWFmLTkxYWItMmQ3Y2QwMTFkYjQ3IiwidXRpIjoiZnFpQnFYTFBqMGVRYTgyUy1JWUZBQSIsInZlciI6IjIuMCJ9.pj4N-w_3Us9DrBLfpCt\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/azure_access_token\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImtpZCI6Imk2bEdrM0ZaenhSY1ViMkMzbkVRN3N5SEpsWSJ9.eyJhdWQiOiI2ZTc0MTcyYi1iZTU2LTQ4NDMtOWZmNC1lNjZhMzliYjEyZTMiLCJpc3MiOiJodHRwczovL2xvZ2luLm1pY3Jvc29mdG9ubGluZS5jb20vNzJmOTg4YmYtODZmMS00MWFmLTkxYWItMmQ3Y2QwMTFkYjQ3L3YyLjAiLCJpYXQiOjE1MzcyMzEwNDgsIm5iZiI6MTUzNzIzMTA0OCwiZXhwIjoxNTM3MjM0OTQ4LCJhaW8iOiJBWFFBaS84SUFBQUF0QWFaTG8zQ2hNaWY2S09udHRSQjdlQnE0L0RjY1F6amNKR3hQWXkvQzNqRGFOR3hYZDZ3TklJVkdSZ2hOUm53SjFsT2NBbk5aY2p2a295ckZ4Q3R0djMzMTQwUmlvT0ZKNGJDQ0dWdW9DYWcxdU9UVDIyMjIyZ0h3TFBZUS91Zjc5UVgrMEtJaWpkcm1wNjlSY3R6bVE9PSIsImF6cCI6IjZlNzQxNzJiLWJlNTYtNDg0My05ZmY0LWU2NmEzOWJiMTJlMyIsImF6cGFjciI6IjAiLCJuYW1lIjoiQWJlIExpbmNvbG4iLCJvaWQiOiI2OTAyMjJiZS1mZjFhLTRkNTYtYWJkMS03ZTRmN2QzOGU0NzQiLCJwcmVmZXJyZWRfdXNlcm5hbWUiOiJhYmVsaUBtaWNyb3NvZnQuY29tIiwicmgiOiJJIiwic2NwIjoiYWNjZXNzX2FzX3VzZXIiLCJzdWIiOiJIS1pwZmFIeVdhZGVPb3VZbGl0anJJLUtmZlRtMjIyWDVyclYzeERxZktRIiwidGlkIjoiNzJmOTg4YmYtODZmMS00MWFmLTkxYWItMmQ3Y2QwMTFkYjQ3IiwidXRpIjoiZnFpQnFYTFBqMGVRYTgyUy1JWUZBQSIsInZlciI6IjIuMCJ9.pj4N-w_3Us9DrBLfpCt\",\n                \"value_start\": 0,\n                \"value_end\": 1029,\n                \"entropy\": 5.64141\n            }\n        ]\n    },\n    {\n        \"rule\": \"Azure Storage Account Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"t 189shdhgr893rgdg74sdsdfkksdhtg87dyfwegjddshjhsgjsgdhJQQJ99ALACAAAAAAAAAAAAASAZDO1e4drs==\",\n                \"line_num\": 5,\n                \"path\": \"./tests/samples/azure_access_token\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"189shdhgr893rgdg74sdsdfkksdhtg87dyfwegjddshjhsgjsgdhJQQJ99ALACAAAAAAAAAAAAASAZDO1e4drs==\",\n                \"value_start\": 2,\n                \"value_end\": 90,\n                \"entropy\": 4.22483\n            }\n        ]\n    },\n    {\n        \"rule\": \"Azure Secret Value\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"client_srt = \\\"qpF8Q~PCM5MhMoyTFc5TYEomnzRUKim9UJhe8a2P\\\";\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/azure_secret_value\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"qpF8Q~PCM5MhMoyTFc5TYEomnzRUKim9UJhe8a2P\",\n                \"value_start\": 14,\n                \"value_end\": 54,\n                \"entropy\": 4.75306\n            }\n        ]\n    },\n    {\n        \"rule\": \"Bitbucket HTTP Access Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"\\\"bitbucket\\\" : \\\"BBDC-MzQ2Njc4NjkyMDgwOsEidtxMt9WDExIOYPEWBFXH093l\\\"\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/bitbuckert_http_access_token\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"BBDC-MzQ2Njc4NjkyMDgwOsEidtxMt9WDExIOYPEWBFXH093l\",\n                \"value_start\": 15,\n                \"value_end\": 64,\n                \"entropy\": 4.94084\n            }\n        ]\n    },\n    {\n        \"rule\": \"Bitbucket App Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"app_sample:ATBBcCe6fczW96Vzwgvb4r8F2gZS54D591C4\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/bitbucket_app_password\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"ATBBcCe6fczW96Vzwgvb4r8F2gZS54D591C4\",\n                \"value_start\": 11,\n                \"value_end\": 47,\n                \"entropy\": 4.5934\n            }\n        ]\n    },\n    {\n        \"rule\": \"Bitbucket Repository Access Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"\\\"Bitbucket Repository Access Token\\\" : \\\"ATCTT3xFfGN0zXtbKHz2POF86xa-2aBiYC4o_T3-myk01bmFVluUIFtGm_VFQwLizp4o1FKw-AMZhtdA0NzizshnA8WzRdfgv6GeTyowCD101oqKbJ4nx9DFsar5YyUNkwO9maR9-00tQvfciyfOHtPKG6K1d76Ki3iFo7roGeyJu4j1jM3GwQ4=EDDE81AD\\\"\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/bitbucket_repository_access_token\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"ATCTT3xFfGN0zXtbKHz2POF86xa-2aBiYC4o_T3-myk01bmFVluUIFtGm_VFQwLizp4o1FKw-AMZhtdA0NzizshnA8WzRdfgv6GeTyowCD101oqKbJ4nx9DFsar5YyUNkwO9maR9-00tQvfciyfOHtPKG6K1d76Ki3iFo7roGeyJu4j1jM3GwQ4=EDDE81AD\",\n                \"value_start\": 39,\n                \"value_end\": 231,\n                \"entropy\": 5.75803\n            }\n        ]\n    },\n    {\n        \"rule\": \"Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.994,\n        \"line_data_list\": [\n            {\n                \"line\": \"\\\"Bitbucket Repository Access Token\\\" : \\\"ATCTT3xFfGN0zXtbKHz2POF86xa-2aBiYC4o_T3-myk01bmFVluUIFtGm_VFQwLizp4o1FKw-AMZhtdA0NzizshnA8WzRdfgv6GeTyowCD101oqKbJ4nx9DFsar5YyUNkwO9maR9-00tQvfciyfOHtPKG6K1d76Ki3iFo7roGeyJu4j1jM3GwQ4=EDDE81AD\\\"\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/bitbucket_repository_access_token\",\n                \"info\": \"\",\n                \"variable\": \"Bitbucket Repository Access Token\",\n                \"variable_start\": 1,\n                \"variable_end\": 34,\n                \"value\": \"ATCTT3xFfGN0zXtbKHz2POF86xa-2aBiYC4o_T3-myk01bmFVluUIFtGm_VFQwLizp4o1FKw-AMZhtdA0NzizshnA8WzRdfgv6GeTyowCD101oqKbJ4nx9DFsar5YyUNkwO9maR9-00tQvfciyfOHtPKG6K1d76Ki3iFo7roGeyJu4j1jM3GwQ4=EDDE81AD\",\n                \"value_start\": 39,\n                \"value_end\": 231,\n                \"entropy\": 5.75803\n            }\n        ]\n    },\n    {\n        \"rule\": \"Brevo API Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"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\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/brevo\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"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\",\n                \"value_start\": 0,\n                \"value_end\": 89,\n                \"entropy\": 4.64688\n            }\n        ]\n    },\n    {\n        \"rule\": \"CMD Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"gpg --decrypt --passphrase N1DdkUD3E73 --output decrypted.txt encrypted.txt.gpg\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/cmd_credential\",\n                \"info\": \"\",\n                \"variable\": \"passphrase\",\n                \"variable_start\": 16,\n                \"variable_end\": 26,\n                \"value\": \"N1DdkUD3E73\",\n                \"value_start\": 27,\n                \"value_end\": 38,\n                \"entropy\": 3.0958\n            }\n        ]\n    },\n    {\n        \"rule\": \"CMD Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"mysql -u root --password Sne3sd8AZjq\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/cmd_credential\",\n                \"info\": \"\",\n                \"variable\": \"password\",\n                \"variable_start\": 16,\n                \"variable_end\": 24,\n                \"value\": \"Sne3sd8AZjq\",\n                \"value_start\": 25,\n                \"value_end\": 36,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"CMD Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"-Domain 'localhost' -Password 'Sjdn43ss@!'\",\n                \"line_num\": 3,\n                \"path\": \"./tests/samples/cmd_credential\",\n                \"info\": \"\",\n                \"variable\": \"Password\",\n                \"variable_start\": 21,\n                \"variable_end\": 29,\n                \"value\": \"Sjdn43ss@!\",\n                \"value_start\": 31,\n                \"value_end\": 41,\n                \"entropy\": 3.12193\n            }\n        ]\n    },\n    {\n        \"rule\": \"CMD Secret\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.999,\n        \"line_data_list\": [\n            {\n                \"line\": \"--super-secret_token 1ace4d19-fa7e-b4e2-c3f0-9129474bcd81\",\n                \"line_num\": 4,\n                \"path\": \"./tests/samples/cmd_credential\",\n                \"info\": \"\",\n                \"variable\": \"super-secret_token\",\n                \"variable_start\": 2,\n                \"variable_end\": 20,\n                \"value\": \"1ace4d19-fa7e-b4e2-c3f0-9129474bcd81\",\n                \"value_start\": 21,\n                \"value_end\": 57,\n                \"entropy\": 3.77368\n            }\n        ]\n    },\n    {\n        \"rule\": \"CMD Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.999,\n        \"line_data_list\": [\n            {\n                \"line\": \"--super-secret_token 1ace4d19-fa7e-b4e2-c3f0-9129474bcd81\",\n                \"line_num\": 4,\n                \"path\": \"./tests/samples/cmd_credential\",\n                \"info\": \"\",\n                \"variable\": \"super-secret_token\",\n                \"variable_start\": 2,\n                \"variable_end\": 20,\n                \"value\": \"1ace4d19-fa7e-b4e2-c3f0-9129474bcd81\",\n                \"value_start\": 21,\n                \"value_end\": 57,\n                \"entropy\": 3.77368\n            }\n        ]\n    },\n    {\n        \"rule\": \"UUID\",\n        \"severity\": \"info\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"--super-secret_token 1ace4d19-fa7e-b4e2-c3f0-9129474bcd81\",\n                \"line_num\": 4,\n                \"path\": \"./tests/samples/cmd_credential\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"1ace4d19-fa7e-b4e2-c3f0-9129474bcd81\",\n                \"value_start\": 21,\n                \"value_end\": 57,\n                \"entropy\": 3.77368\n            }\n        ]\n    },\n    {\n        \"rule\": \"CMD Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"    --oauth2-bearer \\\"eZs2fjkjD8hUcsQ37b8zHig==\\\" \\\\\",\n                \"line_num\": 7,\n                \"path\": \"./tests/samples/cmd_credential\",\n                \"info\": \"\",\n                \"variable\": \"oauth2-bearer\",\n                \"variable_start\": 6,\n                \"variable_end\": 19,\n                \"value\": \"eZs2fjkjD8hUcsQ37b8zHig==\",\n                \"value_start\": 21,\n                \"value_end\": 46,\n                \"entropy\": 4.32386\n            }\n        ]\n    },\n    {\n        \"rule\": \"CMD ConvertTo-SecureString\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.918,\n        \"line_data_list\": [\n            {\n                \"line\": \"ConvertTo-SecureString -String -Force dsjUE#$gds8s\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/cmd_secure_string\",\n                \"info\": \"\",\n                \"variable\": \"ConvertTo-SecureString -String -Force\",\n                \"variable_start\": 0,\n                \"variable_end\": 37,\n                \"value\": \"dsjUE#$gds8s\",\n                \"value_start\": 38,\n                \"value_end\": 50,\n                \"entropy\": 3.02206\n            }\n        ]\n    },\n    {\n        \"rule\": \"CMD ConvertTo-SecureString\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"\\\"ConvertTo-SecureString \\\\\\\"4yd21JKH~GE8dkd\\\\\\\"\\\"\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/cmd_secure_string\",\n                \"info\": \"\",\n                \"variable\": \"ConvertTo-SecureString\",\n                \"variable_start\": 1,\n                \"variable_end\": 23,\n                \"value\": \"4yd21JKH~GE8dkd\",\n                \"value_start\": 26,\n                \"value_end\": 41,\n                \"entropy\": 3.5899\n            }\n        ]\n    },\n    {\n        \"rule\": \"Credential\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.999,\n        \"line_data_list\": [\n            {\n                \"line\": \"gi_reo_gi_credential = \\\"K2u6mFw8wJOsAf\\\"\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/credential.hs\",\n                \"info\": \"\",\n                \"variable\": \"gi_reo_gi_credential\",\n                \"variable_start\": 0,\n                \"variable_end\": 20,\n                \"value\": \"K2u6mFw8wJOsAf\",\n                \"value_start\": 24,\n                \"value_end\": 38,\n                \"entropy\": 3.6645\n            }\n        ]\n    },\n    {\n        \"rule\": \"CURL User Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"curl -X PUT -u \\\"admin:dG9rZW4g\\\" https://127.0.0.1 # TP\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/curl_user_password\",\n                \"info\": \"\",\n                \"variable\": \"curl\",\n                \"variable_start\": 0,\n                \"variable_end\": 4,\n                \"value\": \"dG9rZW4g\",\n                \"value_start\": 22,\n                \"value_end\": 30,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"DeepSeek API Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \">>>\\u001b[93msk-615ef152bf865a131f88b23571dc4ee6\\u001b[0m<<<\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/deepseek\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"sk-615ef152bf865a131f88b23571dc4ee6\",\n                \"value_start\": 8,\n                \"value_end\": 43,\n                \"entropy\": 3.85416\n            }\n        ]\n    },\n    {\n        \"rule\": \"Digital Ocean Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"digital_oc = 'doo_v1_c46dde8bd623be6efab141fa2452e10fcc382e70d5da882493477828eba24a8c';\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/digital_ocean_oauth_access_token\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"doo_v1_c46dde8bd623be6efab141fa2452e10fcc382e70d5da882493477828eba24a8c\",\n                \"value_start\": 14,\n                \"value_end\": 85,\n                \"entropy\": 4.05874\n            }\n        ]\n    },\n    {\n        \"rule\": \"Digital Ocean Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"dop_v1_425522a565f532bc6532d453422e50334a42f5242a3090fbe553b543b124259b\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/digital_ocean_pat\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"dop_v1_425522a565f532bc6532d453422e50334a42f5242a3090fbe553b543b124259b\",\n                \"value_start\": 0,\n                \"value_end\": 71,\n                \"entropy\": 3.6568\n            }\n        ]\n    },\n    {\n        \"rule\": \"Discord Bot Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"MTIzNDU2Nzg5MDEyMzQ1Njc4OQ.E2-E4_.Zig9V5mpMk-JybgCFvqSfgY9EoqWjkA5O_qDje\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/discord_bot_token\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"MTIzNDU2Nzg5MDEyMzQ1Njc4OQ.E2-E4_.Zig9V5mpMk-JybgCFvqSfgY9EoqWjkA5O_qDje\",\n                \"value_start\": 0,\n                \"value_end\": 72,\n                \"entropy\": 5.16257\n            }\n        ]\n    },\n    {\n        \"rule\": \"Discord Webhook\",\n        \"severity\": \"medium\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"T https://discordapp.com/api/webhooks/148392840000482200/ihUFAgIi-OsnNHsjJBpvzkzZOicbe0R2UkWo1nvOnkLGHWJnW8HZjF_dRDj7fi5q3u2h\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/discord_webhook\",\n                \"info\": \"\",\n                \"variable\": \"discordapp.com/api/webhooks\",\n                \"variable_start\": 10,\n                \"variable_end\": 37,\n                \"value\": \"/148392840000482200/ihUFAgIi-OsnNHsjJBpvzkzZOicbe0R2UkWo1nvOnkLGHWJnW8HZjF_dRDj7fi5q3u2h\",\n                \"value_start\": 37,\n                \"value_end\": 125,\n                \"entropy\": 5.23454\n            }\n        ]\n    },\n    {\n        \"rule\": \"UUID\",\n        \"severity\": \"info\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"\\\"UserKeyword\\\": \\\"A1328E04-88B6-4E2A-A5C0-A4D9B21754C4\\\"\",\n                \"line_num\": 5,\n                \"path\": \"./tests/samples/doc_credentials_n\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"A1328E04-88B6-4E2A-A5C0-A4D9B21754C4\",\n                \"value_start\": 16,\n                \"value_end\": 52,\n                \"entropy\": 3.8055\n            }\n        ]\n    },\n    {\n        \"rule\": \"Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.993,\n        \"line_data_list\": [\n            {\n                \"line\": \"Activation key : ZAQWS-XCDER-VBGTR-FRTGU-KLMNX\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/doc_credentials_p\",\n                \"info\": \"\",\n                \"variable\": \"key\",\n                \"variable_start\": 11,\n                \"variable_end\": 14,\n                \"value\": \"ZAQWS-XCDER-VBGTR-FRTGU-KLMNX\",\n                \"value_start\": 17,\n                \"value_end\": 46,\n                \"entropy\": 4.21126\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.996,\n        \"line_data_list\": [\n            {\n                \"line\": \"password:!Dd5G4s9\",\n                \"line_num\": 3,\n                \"path\": \"./tests/samples/doc_credentials_p\",\n                \"info\": \"\",\n                \"variable\": \"password\",\n                \"variable_start\": 0,\n                \"variable_end\": 8,\n                \"value\": \"!Dd5G4s9\",\n                \"value_start\": 9,\n                \"value_end\": 17,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"Credential\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.996,\n        \"line_data_list\": [\n            {\n                \"line\": \"LONG_CREDENTIAL: AgV4TakqXDSaUSruBPiKENLUg+aN/Z5HzG4y5q21GOWteXBNZSVXAh1G8ZCdf8AKaa73TipBRAOT0gI0o2xrm1AFzfnoa2J56rr5WtWfAmr5WCGdZx68H+ghRZMa7C8c76I0zDleUKuPbRhJEM+OZPLGVrL/yodyF+7wF5di84Cb5NOyuAHBZUGxxMWCFuwjRH13JRABMygbrOKaauKjQ5aUAp6ggKijEwr4oysBclvocYin4w1TDApHF5lbd6ytfAYSREJIhbswoUmzlyJ/3ftvl3w6qC2Hikfc8S2rRZ7Evdsbr1lDeNckRmzb3ZQKmREjnxYWM5X5ZekKdLOyo9wdmUleEfX0gU0ZXgB9tKDdR7bP//2p8lJreW51DuF4EynVTSoPqB0mLo0iMkxx0xBCEp5BNC5XpYi7jjvuCKWaHETR+60CsZG1cy12cQlZKtscrc4MI7D7jg9y+GooV+pF05A7a9QgBmqTunmEYBvP7C54nmiHM91fb1W/9XBqCgJZB/Bky9R/nmrRb7+yeRoC8HodzrBlRdciWzkXk0MG63xUGA5K4cH/s+EvmbP+eAi42vneKt9mslid7cxq//AdnXOiIBmhVQ+hn07V/rQxetqbvIYHIEmCdUqqOAmtuV5ba2TPcMtbYEcEGxQJX9e8oYvoShpFbVDpSoEUlVkqI0Bjdts3hsl7B7vV09OdPcMGWFRswu8OIvtllh1C3+2XarwXBs/EfNCWOR5XYDMrHKAWHgvNEI2uZQukt0ekN4BGKA+XNs8T9gdKzun7FoWuSpsXqbvkNS1lXe4dOYay5OoY3Od6eSpwboYmC7Y1GxEi6ixOTePovwot4cIYFvILJExraDEnRQCm53mcvr2qewiy5o8brTr8cA/Fp2VJGiIGmU2cUmz90Tx15/9ZzWA6N/Q0aaiKVDYmAirhUJaMf6gNeDYbodN9tJxEbeNN6krZvdLrsxBZdBViciX2X8Ju8ws0DQlIh54FhHKwwWeoxKPN05RFLORlNQdrV5bKt9FCA/igQECZP233wg7pBEw0wvdASDhaZs0pWX98jDUEJzfwSK4ivc3F15BuKy2Sh3rNjUXht95Dzl4iGsPIsA8DgZjgPbmcjrZXaMdQ5H8l/L4xce0mIAz3s9S/O2ginpFCbwTl2Txrnv44OPjif1S45wSwjzNvchTwduBi1Q13S78xsP//BopuNjxScQU0W8e06HOf9Cg9EkEQ08g57ekS7QcuCfVTQeHj+bltRUbL9en1iwNDgkI49S7kCy2hpSAbVn9WIJMJvMaUEm+jICKQdhnY2XuBiic4bznR+4TOkBaBXBVTKUr1EUH9PigkyliiLtIhHsCvungvP3htfH325ZAKcNxarlKgJrJvfCBnxtNzplF0R8UQUPUmYBRO2VYRT14iFqsU9Y21bG4aiz9SdJgh20KIBjtY1bn7FUNlJ0LHPuKiZSoX5Z71Y5o06YHBP5ijXsfDbEYW5nwfL1sDIqIgxJ0d5bnY9lJ8IdgFjnNqWECLinfjFCXdqiOPprIHD9N/x7DmDstNzjDKw+3aUtRboJmUCN/VsNhOgvBbPux1+UZcf4W01u3fT/JglhjApwqtoQnszIglHxSTHL3WphAB671pr2PK9vgkDeASmrSSrG0LuTx9d5UQLm/NV6j5MXxL1q7/Kk/RTHRd4l5SkcjmA+7Ds7W5rTVIOXV7j/ZYL6HdVv6MWqMKL7QvwUNseM2cnbOxWKg2T37rpZsCk1eU7AeVA69LxS7BHFiswfEi32YWVaxJu0lNoMiZg4WaNhmOtTIzoZU/INWQsRkfbdSROOIiUAYy983kE6h8HjgCvmebb0BeJeMZBM5jyRVrcwrnPEnZzHOiPruNovstlEt6IFvUotNKZgk5Y3DBUUVB4fo/Dv2zBoobQHcomWa2W6Fux6uYuIxG2i6VEVBX3QhItPFr6wc6+n00qiLBG1vhUFGsJzsomMFJx0wrA6voi/kfjRU2TnJjwG0mKMwLurxVVJyLtgwJy3BEDmR2vcaW18G3xoNjc3E+5XS6MutGX3TSoY7n2DftHvKSj46tjPyGPujOQ0tsN9z3EDVLemgnEl42L4FgLtgMOERfIs2XiMy384LbTJQ6xtknjEL3cFNN765s04wFGyI/hc1npJnkCCfKg/sVFLW3YrVGMZAVo/648q655vw2oKKRq8h48g7rnOj239TKUZhxwXZiWqnNZnnBXMIT5hSXwNyIotGcWyuqG2WGL+us/rT6jekSofQaswm8XRDSQPLO9ZqSCX7uM709gLrc/gyNtWaZ9+jpi+o60ydRvYaAgnBzAqhG2spKFTcuOx3usTuQssR2eDZlomRi2zo/nGqDke1sFWr7AULH40IYXqyrle6oY4j8Wf7f6evtNm9b42fFmVAdE04X27tEOe9b1q4o2IWibni0eNdjvjCaMu+DveYqyGXTSTIZt6UzSYFP18YjHKrSsr8SJE9LNMlxwl93v1AfwVFejK7eg3tm7+HRgRVTBaQyuf3EWgXdwcRH8Nqo/rrLBjXmeKZSjWpQIOX9h0TRc91DSJFu02PdqcmIG5T3lFHToLZYB1ohQMIHmfX8+fyR59o86hE/dm8WD1LuEpDlHsIOe4ZKVB9PqRfFpEIZ9gBcyW4co3Kl7uxh5UJVWDLv97ROG29tLBC5rq9mUXxbFiuQSV1/YGnkJQL3IlJ+KKE9fd8Lk+QVjfz2Kc2LBiaTwGoJ5MreVo5LxGf4joXXOpmk+g2dbo6bmuz0WpoGDLYON26mOQawWP+LIpMGlPYiTbUlwgwVv4iQr1ntgpka309haHfh/PeadIJ5FftNERTbNEtO7yKdKbf8ESLl3mVfZW4/bWmO9PBQQAu7dhXNqwG8AmsS62w77UgS7OSvAoSbtCSGZ+9HiGNdn/LI/K+7W4y9S10lR5Npa+5WSnSSTvh9ICfBQVD6iO0HChhEfXKLhesp/250V9kC0yuwq5eLi+A7tCfNQ9iTsmj0hQvnemxISy26OyBe5y39+d+lx45sbx1ijnT6+5PHsmSKx+/tDf6FxdcJpp/D5jUYNvjDASBS9ZxeA/JJDCC3sde9F9ZHZDY4gASDLmzQJYGOthD+bm7aA/RWofNJVpbLRq/7AjonvEOMgc3sk2nLlkfppE7EChJ75xV3aJ4EenBpkjSJVdEMckybT6d+Io9lH8YOuxpzSLo2kVt1vDRr26UZKW/M5OXY3tEHFj8679f4oddmJ1OGLG8SYuCIf5U6qPiom5C1CSVz/8ObNAxPR4ECdGpIpfJO0HmtwMvRmsAbsOEBGg4wIVa945ukJugZNwklFZ6wI0ys2jyvNCDRcgDRrV/fzkfyEIO/WMT/dLx4tbgqksXpnbfvUEJKorLMm2Lye4LuJ3msHvu0c274bJ7E8Y8KXKoMLNRdL7ZwwNUfrbj2KHyaAyqE0YOjIF3+06YOWyC0rJVOthFh+I9ah7RKPwSpsaqK6abzCFZLFdx8qBYA7mO4avHlm2SqiIgdivfHMm/RIFKHuEv+FxWXzfT8KD/jtDhBo672uY8c+nVsfZQysAsalkjd9qkhaqZbDbsHZi2LssBabP5MFqOOGpHgiV9UgMd1vDmz42E7MDCVcgvOF6IgB2Qz62fWdgL94HpRJTY794aJfhPFdk1K4PVo1Cs4CPoCo7gYoqcIBa0vUYwz5zSJe+0Mk21E5ltTl9A2hZhnbt8XFJRTtmXP8g4Jx9EP5hMtj4o7nKgvUwUXcVpa7COGw2UL2eU8TtFvKpWkQd05G1WaTDzHaGUXmo5/LQTLyBvrgi+NbM5JXklvefyZ2Va6LtWethJBfU3KM/PNh/qn9PnjBbfvMe4gVeX1WLxud7DBER6aVL5SqSKlXLbvoi2osQKKM0ExfOvtIs5l5wCp/aoHVgbCnADu6dN877zmNpJdnov1Qj0RYALV1ivdN//vnr47Y7vCJqennCd6IAL5PiZFi0VIBjMG4WL+wwU5tkfnxPL1ukvpEdZqaejBrPqqU+ewlpX7enAwzAaihYMSOfLlVrM/ybIpBtuDtRkQRPr8nUa1r2EDQi/jWeKN1CNJpxnKv9peG2z9FHQBhFS2WdqshVeGBACqG/dqDhugOi/P9FLNv4buPcLL7Yd+GOg66DnvEWGAvUXuE3152NOykn1zRyMQZTLdcNRfuX3WfLklPYO6Nf2JRaylcMcrErbsixgcT+p1+qXLQ8GCnkfqyMjmPo+FJ2BWd5KDRUim0ihUmO6Vd4B2/JMTZXsWNwOPmN/DqjpX/Z64UVO7yh0emaA9Vt6+bNlxrR/l/9Hy1JGz9GpK22jLIHDBcUwGP53ZHKSSm/WyfNzOJxRdeSTK+SApsglmdYUSNLVJjVraDURTkVI0XjVFTvu98yM95w9y3DoX9iYWLdg4NRysVMoWkOB0Ts0MBQeCZkn+erzs+7KNFTXxPrQA5LHMgbT/2ukEeKhuKypLsu9s4BLqGWTFnHgv1SL37dqvqigY55fxfEvHBuw+ea41xnfFPSb2yjm9d/lLnXapCkIGoss6ecxHg9481heyM32bnlqzngiluuuMQoEU9Lwk5VBMhKuQN+LbJds2Nb+XnHz4yLIWLIXX+4+Uv4uh0zYJSLABk8piLuFQ7NwkHbQR+cptvefLwpZmBOC68065t5WR/IeOlYpg6ND320XSOyshBXH9hgCXWtIHzxG64rAf/UkmB+UsnP2g2xbklc2s8hoYtMQP8F3qKbL557mBBDVVc8MPyamBusSVbYowBNzASZ64PsdfOSIAmjb9gv8+4X0EK9F789s7predBaFZRJNzfUXwhMrPeCmVGP692781db4K9vD5HJISA7juhIjL5f1uLXaJkBFbJJxkp6MTtWDFtwnXPYmhkEDPIF4oas7scywk70fkAaXzIgDymYlBMUVXR29X2gp49Kvo/kuGR3/oDV4DpEMrfK94BBL9rSXicnF4zDcMnW30gYY5Q/NLTLVktfvoea8QTwJ18BsD27fxEkCkupxrez2JgHx+m6u+2hPEO+V8PhpHCgM2aONfr1ZCcGBjcRtZLw1v2Gtd6QkwkrNgDwy3B/7gShoZSDRno3ceu5V0//JgKQOGuQP2MpxeX/Wu+e3BsftOdBct8E0m3MKek4Ij9bIXNim8taEz0VczllW3nEhgy1IJ5pL2q8AgxsHxjqCsBIH8KL5l0rwWiqFSw+Kb4Y8dUi/im8kZQerV8LwOCXvyPlgkIkPcDFlkeoFaYgWhmPfFGqhJIab7g8cMmT0hp51sRq8KmkHCEU+GmHHkwBuycA9/5gp6niJAuLNuQf5t6DacELYr6U/wsddBce6vaaPWWMYPrkJh52TIvszYapEZSynFZsOqb3SAbe0AGZuSL3NbD3SYNOpXLcdIZbCfczHChbLB+ljuOhURZzWHaY6oxXGqLJyo3pzbiS2PQ3q7nFWzMXxrXWVEO+zL/2U14A==\",\n                \"line_num\": 4,\n                \"path\": \"./tests/samples/doc_credentials_p\",\n                \"info\": \"\",\n                \"variable\": \"LONG_CREDENTIAL\",\n                \"variable_start\": 0,\n                \"variable_end\": 15,\n                \"value\": \"AgV4TakqXDSaUSruBPiKENLUg+aN/Z5HzG4y5q21GOWteXBNZSVXAh1G8ZCdf8AKaa73TipBRAOT0gI0o2xrm1AFzfnoa2J56rr5WtWfAmr5WCGdZx68H+ghRZMa7C8c76I0zDleUKuPbRhJEM+OZPLGVrL/yodyF+7wF5di84Cb5NOyuAHBZUGxxMWCFuwjRH13JRABMygbrOKaauKjQ5aUAp6ggKijEwr4oysBclvocYin4w1TDApHF5lbd6ytfAYSREJIhbswoUmzlyJ/3ftvl3w6qC2Hikfc8S2rRZ7Evdsbr1lDeNckRmzb3ZQKmREjnxYWM5X5ZekKdLOyo9wdmUleEfX0gU0ZXgB9tKDdR7bP//2p8lJreW51DuF4EynVTSoPqB0mLo0iMkxx0xBCEp5BNC5XpYi7jjvuCKWaHETR+60CsZG1cy12cQlZKtscrc4MI7D7jg9y+GooV+pF05A7a9QgBmqTunmEYBvP7C54nmiHM91fb1W/9XBqCgJZB/Bky9R/nmrRb7+yeRoC8HodzrBlRdciWzkXk0MG63xUGA5K4cH/s+EvmbP+eAi42vneKt9mslid7cxq//AdnXOiIBmhVQ+hn07V/rQxetqbvIYHIEmCdUqqOAmtuV5ba2TPcMtbYEcEGxQJX9e8oYvoShpFbVDpSoEUlVkqI0Bjdts3hsl7B7vV09OdPcMGWFRswu8OIvtllh1C3+2XarwXBs/EfNCWOR5XYDMrHKAWHgvNEI2uZQukt0ekN4BGKA+XNs8T9gdKzun7FoWuSpsXqbvkNS1lXe4dOYay5OoY3Od6eSpwboYmC7Y1GxEi6ixOTePovwot4cIYFvILJExraDEnRQCm53mcvr2qewiy5o8brTr8cA/Fp2VJGiIGmU2cUmz90Tx15/9ZzWA6N/Q0aaiKVDYmAirhUJaMf6gNeDYbodN9tJxEbeNN6krZvdLrsxBZdBViciX2X8Ju8ws0DQlIh54FhHKwwWeoxKPN05RFLORlNQdrV5bKt9FCA/igQECZP233wg7pBEw0wvdASDhaZs0pWX98jDUEJzfwSK4ivc3F15BuKy2Sh3rNjUXht95Dzl4iGsPIsA8DgZjgPbmcjrZXaMdQ5H8l/L4xce0mIAz3s9S/O2ginpFCbwTl2Txrnv44OPjif1S45wSwjzNvchTwduBi1Q13S78xsP//BopuNjxScQU0W8e06HOf9Cg9EkEQ08g57ekS7QcuCfVTQeHj+bltRUbL9en1iwNDgkI49S7kCy2hpSAbVn9WIJMJvMaUEm+jICKQdhnY2XuBiic4bznR+4TOkBaBXBVTKUr1EUH9PigkyliiLtIhHsCvungvP3htfH325ZAKcNxarlKgJrJvfCBnxtNzplF0R8UQUPUmYBRO2VYRT14iFqsU9Y21bG4aiz9SdJgh20KIBjtY1bn7FUNlJ0LHPuKiZSoX5Z71Y5o06YHBP5ijXsfDbEYW5nwfL1sDIqIgxJ0d5bnY9lJ8IdgFjnNqWECLinfjFCXdqiOPprIHD9N/x7DmDstNzjDKw+3aUtRboJmUCN/VsNhOgvBbPux1+UZcf4W01u3fT/JglhjApwqtoQnszIglHxSTHL3WphAB671pr2PK9vgkDeASmrSSrG0LuTx9d5UQLm/NV6j5MXxL1q7/Kk/RTHRd4l5SkcjmA+7Ds7W5rTVIOXV7j/ZYL6HdVv6MWqMKL7QvwUNseM2cnbOxWKg2T37rpZsCk1eU7AeVA69LxS7BHFiswfEi32YWVaxJu0lNoMiZg4WaNhmOtTIzoZU/INWQsRkfbdSROOIiUAYy983kE6h8HjgCvmebb0BeJeMZBM5jyRVrcwrnPEnZzHOiPruNovstlEt6IFvUotNKZgk5Y3DBUUVB4fo/Dv2zBoobQHcomWa2W6Fux6uYuIxG2i6VEVBX3QhItPFr6wc6+n00qiLBG1vhUFGsJzsomMFJx0wrA6voi/kfjRU2TnJjwG0mKMwLurxVVJyLtgwJy3BEDmR2vcaW18G3xoNjc3E+5XS6MutGX3TSoY7n2DftHvKSj46tjPyGPujOQ0tsN9z3EDVLemgnEl42L4FgLtgMOERfIs2XiMy384LbTJQ6xtknjEL3cFNN765s04wFGyI/hc1npJnkCCfKg/sVFLW3YrVGMZAVo/648q655vw2oKKRq8h48g7rnOj239TKUZhxwXZiWqnNZnnBXMIT5hSXwNyIotGcWyuqG2WGL+us/rT6jekSofQaswm8XRDSQPLO9ZqSCX7uM709gLrc/gyNtWaZ9+jpi+o60ydRvYaAgnBzAqhG2spKFTcuOx3usTuQssR2eDZlomRi2zo/nGqDke1sFWr7AULH40IYXqyrle6oY4j8Wf7f6evtNm9b42fFmVAdE04X27tEOe9b1q4o2IWibni0eNdjvjCaMu+DveYqyGXTSTIZt6UzSYFP18YjHKrSsr8SJE9LNMlxwl93v1AfwVFejK7eg3tm7+HRgRVTBaQyuf3EWgXdwcRH8Nqo/rrLBjXmeKZSjWpQIOX9h0TRc91DSJFu02PdqcmIG5T3lFHToLZYB1ohQMIHmfX8+fyR59o86hE/dm8WD1LuEpDlHsIOe4ZKVB9PqRfFpEIZ9gBcyW4co3Kl7uxh5UJVWDLv97ROG29tLBC5rq9mUXxbFiuQSV1/YGnkJQL3IlJ+KKE9fd8Lk+QVjfz2Kc2LBiaTwGoJ5MreVo5LxGf4joXXOpmk+g2dbo6bmuz0WpoGDLYON26mOQawWP+LIpMGlPYiTbUlwgwVv4iQr1ntgpka309haHfh/PeadIJ5FftNERTbNEtO7yKdKbf8ESLl3mVfZW4/bWmO9PBQQAu7dhXNqwG8AmsS62w77UgS7OSvAoSbtCSGZ+9HiGNdn/LI/K+7W4y9S10lR5Npa+5WSnSSTvh9ICfBQVD6iO0HChhEfXKLhesp/250V9kC0yuwq5eLi+A7tCfNQ9iTsmj0hQvnemxISy26OyBe5y39+d+lx45sbx1ijnT6+5PHsmSKx+/tDf6FxdcJpp/D5jUYNvjDASBS9ZxeA/JJDCC3sde9F9ZHZDY4gASDLmzQJYGOthD+bm7aA/RWofNJVpbLRq/7AjonvEOMgc3sk2nLlkfppE7EChJ75xV3aJ4EenBpkjSJVdEMckybT6d+Io9lH8YOuxpzSLo2kVt1vDRr26UZKW/M5OXY3tEHFj8679f4oddmJ1OGLG8SYuCIf5U6qPiom5C1CSVz/8ObNAxPR4ECdGpIpfJO0HmtwMvRmsAbsOEBGg4wIVa945ukJugZNwklFZ6wI0ys2jyvNCDRcgDRrV/fzkfyEIO/WMT/dLx4tbgqksXpnbfvUEJKorLMm2Lye4LuJ3msHvu0c274bJ7E8Y8KXKoMLNRdL7ZwwNUfrbj2KHyaAyqE0YOjIF3+06YOWyC0rJVOthFh+I9ah7RKPwSpsaqK6abzCFZLFdx8qBYA7mO4avHlm2SqiIgdivfHMm/RIFKHuEv+FxWXzfT8KD/jtDhBo672uY8c+nVsfZQysAsalkjd9qkhaqZbDbsHZi2LssBabP5MFqOOGpHgiV9UgMd1vDmz42E7MDCVcgvOF6IgB2Qz62fWdgL94HpRJTY794aJfhPFdk1K4PVo1Cs4CPoCo7gYoqcIBa0vUYwz5zSJe+0Mk21E5ltTl9A2hZhnbt8XFJRTtmXP8g4Jx9EP5hMtj4o7nKgvUwUXcVpa7COGw2UL2eU8TtFvKpWkQd05G1WaTDzHaGUXmo5/LQTLyBvrgi+NbM5JXklvefyZ2Va6LtWethJBfU3KM/PNh/qn9PnjBbfvMe4gVeX1WLxud7DBER6aVL5SqSKlXLbvoi2osQKKM0ExfOvtIs5l5wCp/aoHVgbCnADu6dN877zmNpJdnov1Qj0RYALV1ivdN//vnr47Y7vCJqennCd6IAL5PiZFi0VIBjMG4WL+wwU5tkfnxPL1ukvpEdZqaejBrPqqU+ewlpX7enAwzAaihYMSOfLlVrM/ybIpBtuDtRkQRPr8nUa1r2EDQi/jWeKN1CNJpxnKv9peG2z9FHQBhFS2WdqshVeGBACqG/dqDhugOi/P9FLNv4buPcLL7Yd+GOg66DnvEWGAvUXuE3152NOykn1zRyMQZTLdcNRfuX3WfLklPYO6Nf2JRaylcMcrErbsixgcT+p1+qXLQ8GCnkfqyMjmPo+FJ2BWd5KDRUim0ihUmO6Vd4B2/JMTZXsWNwOPmN/DqjpX/Z64UVO7yh0emaA9Vt6+bNlxrR/l/9Hy1JGz9GpK22jLIHDBcUwGP53ZHKSSm/WyfNzOJxRdeSTK+SApsglmdYUSNLVJjVraDURTkVI0XjVFTvu98yM95w9y3DoX9iYWLdg4NRysVMoWkOB0Ts0MBQeCZkn+erzs+7KNFTXxPrQA5LHMgbT/2ukEeKhuKypLsu9s4BLqGWTFnHgv1SL37dqvqigY55fxfEvHBuw+ea41xnfFPSb2yjm9d/lLnXapCkIGoss6ecxHg9481heyM32bnlqzngiluuuMQoEU9Lwk5VBMhKuQN+LbJds2Nb+XnHz4yLIWLIXX+4+Uv4uh0zYJSLABk8piLuFQ7NwkHbQR+cptvefLwpZmBOC68065t5WR/IeOlYpg6ND320XSOyshBXH9hgCXWtIHzxG64rAf/UkmB+UsnP2g2xbklc2s8hoYtMQP8F3qKbL557mBBDVVc8MPyamBusSVbYowBNzASZ64PsdfOSIAmjb9gv8+4X0EK9F789s7predBaFZRJNzfUXwhMrPeCmVGP692781db4K9vD5HJISA7juhIjL5f1uLXaJkBFbJJxkp6MTtWDFtwnXPYmhkEDPIF4oas7scywk70fkAaXzIgDymYlBMUVXR29X2gp49Kvo/kuGR3/oDV4DpEMrfK94BBL9rSXicnF4zDcMnW30gYY5Q/NLTLVktfvoea8QTwJ18BsD27fxEkCkupxrez2JgHx+m6u+2hPEO+V8PhpHCgM2aONfr1ZCcGBjcRtZLw1v2Gtd6QkwkrNgDwy3B/7gShoZSDRno3ceu5V0//JgKQOGuQP2MpxeX/Wu+e3BsftOdBct8E0m3MKek4Ij9bIXNim8taEz0VczllW3nEhgy1IJ5pL2q8AgxsHxjqCsBIH8KL5l0rwWiqFSw+Kb4Y8dUi/im8kZQerV8LwOCXvyPlgkIkPcDFlkeoFaYgWhmPfFGqhJIab7g8cMmT0hp51sRq8KmkHCEU+GmHHkwBuycA9/5gp6niJAuLNuQf5t6DacELYr6U/wsddBce6vaaPWWMYPrkJh52TIvszYapEZSynFZsOqb3SAbe0AGZuSL3NbD3SYNOpXLcdIZbCfczHChbLB+ljuOhURZzWHaY6oxXGqLJyo3pzbiS2PQ3q7nFWzMXxrXWVEO+zL/2U14A==\",\n                \"value_start\": 17,\n                \"value_end\": 5485,\n                \"entropy\": 5.99409\n            }\n        ]\n    },\n    {\n        \"rule\": \"Secret\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.998,\n        \"line_data_list\": [\n            {\n                \"line\": \"if SECRET := getenv(\\\"CEKPET\\\", \\\"GEHEIMN1S\\\"):\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/doc_get_p\",\n                \"info\": \"\",\n                \"variable\": \"SECRET\",\n                \"variable_start\": 3,\n                \"variable_end\": 9,\n                \"value\": \"GEHEIMN1S\",\n                \"value_start\": 31,\n                \"value_end\": 40,\n                \"entropy\": 2.9477\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.999,\n        \"line_data_list\": [\n            {\n                \"line\": \"PASSWORD = os.environ.get(\\\"PASSWORD\\\") or \\\"at5G6zi!m\\\"\",\n                \"line_num\": 5,\n                \"path\": \"./tests/samples/doc_get_p\",\n                \"info\": \"\",\n                \"variable\": \"PASSWORD\",\n                \"variable_start\": 0,\n                \"variable_end\": 8,\n                \"value\": \"at5G6zi!m\",\n                \"value_start\": 42,\n                \"value_end\": 51,\n                \"entropy\": 3.16993\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.966,\n        \"line_data_list\": [\n            {\n                \"line\": \"ID:master,PW:dipPr10Gg!\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"PW\",\n                \"variable_start\": 10,\n                \"variable_end\": 12,\n                \"value\": \"dipPr10Gg!\",\n                \"value_start\": 13,\n                \"value_end\": 23,\n                \"entropy\": 3.32193\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.971,\n        \"line_data_list\": [\n            {\n                \"line\": \"ID:master PW:dipPr11Gg!\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"PW\",\n                \"variable_start\": 10,\n                \"variable_end\": 12,\n                \"value\": \"dipPr11Gg!\",\n                \"value_start\": 13,\n                \"value_end\": 23,\n                \"entropy\": 3.12193\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.983,\n        \"line_data_list\": [\n            {\n                \"line\": \"ANYID:master PW:dipPr12Gg!\",\n                \"line_num\": 3,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"PW\",\n                \"variable_start\": 13,\n                \"variable_end\": 15,\n                \"value\": \"dipPr12Gg!\",\n                \"value_start\": 16,\n                \"value_end\": 26,\n                \"entropy\": 3.32193\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.997,\n        \"line_data_list\": [\n            {\n                \"line\": \"Username:master Password:dipPr13Gg!\",\n                \"line_num\": 4,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"Password\",\n                \"variable_start\": 16,\n                \"variable_end\": 24,\n                \"value\": \"dipPr13Gg!\",\n                \"value_start\": 25,\n                \"value_end\": 35,\n                \"entropy\": 3.32193\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"id:master,password:dipPr14Gg!\",\n                \"line_num\": 5,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"password\",\n                \"variable_start\": 10,\n                \"variable_end\": 18,\n                \"value\": \"dipPr14Gg!\",\n                \"value_start\": 19,\n                \"value_end\": 29,\n                \"entropy\": 3.32193\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.977,\n        \"line_data_list\": [\n            {\n                \"line\": \"ID:master/PW:dipPr15Gg!\",\n                \"line_num\": 6,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"PW\",\n                \"variable_start\": 10,\n                \"variable_end\": 12,\n                \"value\": \"dipPr15Gg!\",\n                \"value_start\": 13,\n                \"value_end\": 23,\n                \"entropy\": 3.32193\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"id:master password:dipPr16Gg!\",\n                \"line_num\": 7,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"password\",\n                \"variable_start\": 10,\n                \"variable_end\": 18,\n                \"value\": \"dipPr16Gg!\",\n                \"value_start\": 19,\n                \"value_end\": 29,\n                \"entropy\": 3.32193\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.999,\n        \"line_data_list\": [\n            {\n                \"line\": \"user:master password:dipPr17Gg!\",\n                \"line_num\": 8,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"password\",\n                \"variable_start\": 12,\n                \"variable_end\": 20,\n                \"value\": \"dipPr17Gg!\",\n                \"value_start\": 21,\n                \"value_end\": 31,\n                \"entropy\": 3.32193\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.999,\n        \"line_data_list\": [\n            {\n                \"line\": \"username:master,password:dipPr19Gg!\",\n                \"line_num\": 10,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"password\",\n                \"variable_start\": 16,\n                \"variable_end\": 24,\n                \"value\": \"dipPr19Gg!\",\n                \"value_start\": 25,\n                \"value_end\": 35,\n                \"entropy\": 3.32193\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.986,\n        \"line_data_list\": [\n            {\n                \"line\": \"username:master pwd:dipPr110Gg!\",\n                \"line_num\": 11,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"pwd\",\n                \"variable_start\": 16,\n                \"variable_end\": 19,\n                \"value\": \"dipPr110Gg!\",\n                \"value_start\": 20,\n                \"value_end\": 31,\n                \"entropy\": 3.27761\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.987,\n        \"line_data_list\": [\n            {\n                \"line\": \"ANYid:master,password:dipPr111Gg!\",\n                \"line_num\": 12,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"password\",\n                \"variable_start\": 13,\n                \"variable_end\": 21,\n                \"value\": \"dipPr111Gg!\",\n                \"value_start\": 22,\n                \"value_end\": 33,\n                \"entropy\": 3.02717\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.965,\n        \"line_data_list\": [\n            {\n                \"line\": \"ID:master PWD:dipPr112Gg!\",\n                \"line_num\": 13,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"PWD\",\n                \"variable_start\": 10,\n                \"variable_end\": 13,\n                \"value\": \"dipPr112Gg!\",\n                \"value_start\": 14,\n                \"value_end\": 25,\n                \"entropy\": 3.27761\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.999,\n        \"line_data_list\": [\n            {\n                \"line\": \"user id:master password:dipPr113Gg!\",\n                \"line_num\": 14,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"password\",\n                \"variable_start\": 15,\n                \"variable_end\": 23,\n                \"value\": \"dipPr113Gg!\",\n                \"value_start\": 24,\n                \"value_end\": 35,\n                \"entropy\": 3.27761\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.999,\n        \"line_data_list\": [\n            {\n                \"line\": \"user:master,password:dipPr114Gg!\",\n                \"line_num\": 15,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"password\",\n                \"variable_start\": 12,\n                \"variable_end\": 20,\n                \"value\": \"dipPr114Gg!\",\n                \"value_start\": 21,\n                \"value_end\": 32,\n                \"entropy\": 3.27761\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.999,\n        \"line_data_list\": [\n            {\n                \"line\": \"user=master,password=dipPr115Gg!\",\n                \"line_num\": 16,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"password\",\n                \"variable_start\": 12,\n                \"variable_end\": 20,\n                \"value\": \"dipPr115Gg!\",\n                \"value_start\": 21,\n                \"value_end\": 32,\n                \"entropy\": 3.27761\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.999,\n        \"line_data_list\": [\n            {\n                \"line\": \"username=master password=dipPr116Gg!\",\n                \"line_num\": 17,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"password\",\n                \"variable_start\": 16,\n                \"variable_end\": 24,\n                \"value\": \"dipPr116Gg!\",\n                \"value_start\": 25,\n                \"value_end\": 36,\n                \"entropy\": 3.27761\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.999,\n        \"line_data_list\": [\n            {\n                \"line\": \"User name:master Password:dipPr117Gg!\",\n                \"line_num\": 18,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"Password\",\n                \"variable_start\": 17,\n                \"variable_end\": 25,\n                \"value\": \"dipPr117Gg!\",\n                \"value_start\": 26,\n                \"value_end\": 37,\n                \"entropy\": 3.27761\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.998,\n        \"line_data_list\": [\n            {\n                \"line\": \"username=master,password=dipPr118Gg!\",\n                \"line_num\": 19,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"password\",\n                \"variable_start\": 16,\n                \"variable_end\": 24,\n                \"value\": \"dipPr118Gg!\",\n                \"value_start\": 25,\n                \"value_end\": 36,\n                \"entropy\": 3.27761\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"--user=master --password=dipPr119Gg!\",\n                \"line_num\": 20,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"password\",\n                \"variable_start\": 16,\n                \"variable_end\": 24,\n                \"value\": \"dipPr119Gg!\",\n                \"value_start\": 25,\n                \"value_end\": 36,\n                \"entropy\": 3.27761\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.989,\n        \"line_data_list\": [\n            {\n                \"line\": \"user=master passwd=dipPr120Gg!\",\n                \"line_num\": 21,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"passwd\",\n                \"variable_start\": 12,\n                \"variable_end\": 18,\n                \"value\": \"dipPr120Gg!\",\n                \"value_start\": 19,\n                \"value_end\": 30,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"account:dipPr121Gg! password:dipPr121Gg!\",\n                \"line_num\": 22,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"password\",\n                \"variable_start\": 20,\n                \"variable_end\": 28,\n                \"value\": \"dipPr121Gg!\",\n                \"value_start\": 29,\n                \"value_end\": 40,\n                \"entropy\": 3.27761\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.993,\n        \"line_data_list\": [\n            {\n                \"line\": \"id:master pass:dipPr122Gg!\",\n                \"line_num\": 23,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"pass\",\n                \"variable_start\": 10,\n                \"variable_end\": 14,\n                \"value\": \"dipPr122Gg!\",\n                \"value_start\": 15,\n                \"value_end\": 26,\n                \"entropy\": 3.27761\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.994,\n        \"line_data_list\": [\n            {\n                \"line\": \"user:master pw:dipPr124Gg!\",\n                \"line_num\": 25,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"pw\",\n                \"variable_start\": 12,\n                \"variable_end\": 14,\n                \"value\": \"dipPr124Gg!\",\n                \"value_start\": 15,\n                \"value_end\": 26,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.997,\n        \"line_data_list\": [\n            {\n                \"line\": \"Username:master/Password:dipPr125Gg!\",\n                \"line_num\": 26,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"Password\",\n                \"variable_start\": 16,\n                \"variable_end\": 24,\n                \"value\": \"dipPr125Gg!\",\n                \"value_start\": 25,\n                \"value_end\": 36,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.997,\n        \"line_data_list\": [\n            {\n                \"line\": \"userId:master,password:dipPr126Gg!\",\n                \"line_num\": 27,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"password\",\n                \"variable_start\": 14,\n                \"variable_end\": 22,\n                \"value\": \"dipPr126Gg!\",\n                \"value_start\": 23,\n                \"value_end\": 34,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"CMD Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"--user master --password dipPr127Gg!\",\n                \"line_num\": 28,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"password\",\n                \"variable_start\": 16,\n                \"variable_end\": 24,\n                \"value\": \"dipPr127Gg!\",\n                \"value_start\": 25,\n                \"value_end\": 36,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.999,\n        \"line_data_list\": [\n            {\n                \"line\": \"dipPr128Gg! ID:master dipPr128Gg! Password:dipPr128Gg!\",\n                \"line_num\": 29,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"Password\",\n                \"variable_start\": 34,\n                \"variable_end\": 42,\n                \"value\": \"dipPr128Gg!\",\n                \"value_start\": 43,\n                \"value_end\": 54,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.999,\n        \"line_data_list\": [\n            {\n                \"line\": \"ANYid:master,pw:dipPr129Gg!\",\n                \"line_num\": 30,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"pw\",\n                \"variable_start\": 13,\n                \"variable_end\": 15,\n                \"value\": \"dipPr129Gg!\",\n                \"value_start\": 16,\n                \"value_end\": 27,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.992,\n        \"line_data_list\": [\n            {\n                \"line\": \"user:master pwd:dipPr130Gg!\",\n                \"line_num\": 31,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"pwd\",\n                \"variable_start\": 12,\n                \"variable_end\": 15,\n                \"value\": \"dipPr130Gg!\",\n                \"value_start\": 16,\n                \"value_end\": 27,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.999,\n        \"line_data_list\": [\n            {\n                \"line\": \"Login:dipPr131Gg! Pwd:dipPr131Gg!\",\n                \"line_num\": 32,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"Pwd\",\n                \"variable_start\": 18,\n                \"variable_end\": 21,\n                \"value\": \"dipPr131Gg!\",\n                \"value_start\": 22,\n                \"value_end\": 33,\n                \"entropy\": 3.27761\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.999,\n        \"line_data_list\": [\n            {\n                \"line\": \"ANYID:master Password:dipPr132Gg!\",\n                \"line_num\": 33,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"Password\",\n                \"variable_start\": 13,\n                \"variable_end\": 21,\n                \"value\": \"dipPr132Gg!\",\n                \"value_start\": 22,\n                \"value_end\": 33,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.995,\n        \"line_data_list\": [\n            {\n                \"line\": \"-Username:master -Password:dipPr133Gg!\",\n                \"line_num\": 34,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"Password\",\n                \"variable_start\": 18,\n                \"variable_end\": 26,\n                \"value\": \"dipPr133Gg!\",\n                \"value_start\": 27,\n                \"value_end\": 38,\n                \"entropy\": 3.27761\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"account:dipPr134Gg! pw:dipPr134Gg!\",\n                \"line_num\": 35,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"pw\",\n                \"variable_start\": 20,\n                \"variable_end\": 22,\n                \"value\": \"dipPr134Gg!\",\n                \"value_start\": 23,\n                \"value_end\": 34,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.995,\n        \"line_data_list\": [\n            {\n                \"line\": \"user id:master user pw:dipPr135Gg!\",\n                \"line_num\": 36,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"pw\",\n                \"variable_start\": 20,\n                \"variable_end\": 22,\n                \"value\": \"dipPr135Gg!\",\n                \"value_start\": 23,\n                \"value_end\": 34,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.999,\n        \"line_data_list\": [\n            {\n                \"line\": \"user_name=master password=dipPr136Gg!\",\n                \"line_num\": 37,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"password\",\n                \"variable_start\": 17,\n                \"variable_end\": 25,\n                \"value\": \"dipPr136Gg!\",\n                \"value_start\": 26,\n                \"value_end\": 37,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"CMD Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"--username master --password dipPr137Gg!\",\n                \"line_num\": 38,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"password\",\n                \"variable_start\": 20,\n                \"variable_end\": 28,\n                \"value\": \"dipPr137Gg!\",\n                \"value_start\": 29,\n                \"value_end\": 40,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.999,\n        \"line_data_list\": [\n            {\n                \"line\": \"ANYlogin:master,ANYpassword:dipPr138Gg!\",\n                \"line_num\": 39,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"ANYpassword\",\n                \"variable_start\": 16,\n                \"variable_end\": 27,\n                \"value\": \"dipPr138Gg!\",\n                \"value_start\": 28,\n                \"value_end\": 39,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"ANYusername=master ANYpassword=dipPr139Gg!\",\n                \"line_num\": 40,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"ANYpassword\",\n                \"variable_start\": 19,\n                \"variable_end\": 30,\n                \"value\": \"dipPr139Gg!\",\n                \"value_start\": 31,\n                \"value_end\": 42,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.983,\n        \"line_data_list\": [\n            {\n                \"line\": \"ID:master,PWD:dipPr140Gg!\",\n                \"line_num\": 41,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"PWD\",\n                \"variable_start\": 10,\n                \"variable_end\": 13,\n                \"value\": \"dipPr140Gg!\",\n                \"value_start\": 14,\n                \"value_end\": 25,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.995,\n        \"line_data_list\": [\n            {\n                \"line\": \"ID:master/PASS:dipPr141Gg!\",\n                \"line_num\": 42,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"PASS\",\n                \"variable_start\": 10,\n                \"variable_end\": 14,\n                \"value\": \"dipPr141Gg!\",\n                \"value_start\": 15,\n                \"value_end\": 26,\n                \"entropy\": 3.27761\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.999,\n        \"line_data_list\": [\n            {\n                \"line\": \"account:master passwd:dipPr142Gg!\",\n                \"line_num\": 43,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"passwd\",\n                \"variable_start\": 15,\n                \"variable_end\": 21,\n                \"value\": \"dipPr142Gg!\",\n                \"value_start\": 22,\n                \"value_end\": 33,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.999,\n        \"line_data_list\": [\n            {\n                \"line\": \"login:master password:dipPr143Gg!\",\n                \"line_num\": 44,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"password\",\n                \"variable_start\": 13,\n                \"variable_end\": 21,\n                \"value\": \"dipPr143Gg!\",\n                \"value_start\": 22,\n                \"value_end\": 33,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.995,\n        \"line_data_list\": [\n            {\n                \"line\": \"user=master,pass=dipPr144Gg!\",\n                \"line_num\": 45,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"pass\",\n                \"variable_start\": 12,\n                \"variable_end\": 16,\n                \"value\": \"dipPr144Gg!\",\n                \"value_start\": 17,\n                \"value_end\": 28,\n                \"entropy\": 3.27761\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"password:dipPr145Gg! username:master\",\n                \"line_num\": 46,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"password\",\n                \"variable_start\": 0,\n                \"variable_end\": 8,\n                \"value\": \"dipPr145Gg!\",\n                \"value_start\": 9,\n                \"value_end\": 20,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"Login as:master Password:dipPr146Gg!\",\n                \"line_num\": 47,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"Password\",\n                \"variable_start\": 16,\n                \"variable_end\": 24,\n                \"value\": \"dipPr146Gg!\",\n                \"value_start\": 25,\n                \"value_end\": 36,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.999,\n        \"line_data_list\": [\n            {\n                \"line\": \"ID:master,pass:dipPr147Gg!\",\n                \"line_num\": 48,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"pass\",\n                \"variable_start\": 10,\n                \"variable_end\": 14,\n                \"value\": \"dipPr147Gg!\",\n                \"value_start\": 15,\n                \"value_end\": 26,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.999,\n        \"line_data_list\": [\n            {\n                \"line\": \"id:master pw:dipPr148Gg!\",\n                \"line_num\": 49,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"pw\",\n                \"variable_start\": 10,\n                \"variable_end\": 12,\n                \"value\": \"dipPr148Gg!\",\n                \"value_start\": 13,\n                \"value_end\": 24,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.99,\n        \"line_data_list\": [\n            {\n                \"line\": \"(98.76.54.32)ID:master PW:dipPr149Gg!\",\n                \"line_num\": 50,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"PW\",\n                \"variable_start\": 23,\n                \"variable_end\": 25,\n                \"value\": \"dipPr149Gg!\",\n                \"value_start\": 26,\n                \"value_end\": 37,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.996,\n        \"line_data_list\": [\n            {\n                \"line\": \"-id:master -pw:dipPr151Gg!\",\n                \"line_num\": 52,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"pw\",\n                \"variable_start\": 12,\n                \"variable_end\": 14,\n                \"value\": \"dipPr151Gg!\",\n                \"value_start\": 15,\n                \"value_end\": 26,\n                \"entropy\": 3.27761\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.99,\n        \"line_data_list\": [\n            {\n                \"line\": \"username:master pw:dipPr152Gg!\",\n                \"line_num\": 53,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"pw\",\n                \"variable_start\": 16,\n                \"variable_end\": 18,\n                \"value\": \"dipPr152Gg!\",\n                \"value_start\": 19,\n                \"value_end\": 30,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.999,\n        \"line_data_list\": [\n            {\n                \"line\": \"-User Name:master -Password:dipPr154Gg!\",\n                \"line_num\": 55,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"Password\",\n                \"variable_start\": 19,\n                \"variable_end\": 27,\n                \"value\": \"dipPr154Gg!\",\n                \"value_start\": 28,\n                \"value_end\": 39,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"account:dipPr155Gg!/password:dipPr155Gg!\",\n                \"line_num\": 56,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"password\",\n                \"variable_start\": 20,\n                \"variable_end\": 28,\n                \"value\": \"dipPr155Gg!\",\n                \"value_start\": 29,\n                \"value_end\": 40,\n                \"entropy\": 3.27761\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.997,\n        \"line_data_list\": [\n            {\n                \"line\": \"ANYuser=master ANY_pass=dipPr156Gg!\",\n                \"line_num\": 57,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"ANY_pass\",\n                \"variable_start\": 15,\n                \"variable_end\": 23,\n                \"value\": \"dipPr156Gg!\",\n                \"value_start\": 24,\n                \"value_end\": 35,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"ANYUser:master password:dipPr157Gg!\",\n                \"line_num\": 58,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"password\",\n                \"variable_start\": 15,\n                \"variable_end\": 23,\n                \"value\": \"dipPr157Gg!\",\n                \"value_start\": 24,\n                \"value_end\": 35,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.996,\n        \"line_data_list\": [\n            {\n                \"line\": \"user:master,pwd:dipPr158Gg!\",\n                \"line_num\": 59,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"pwd\",\n                \"variable_start\": 12,\n                \"variable_end\": 15,\n                \"value\": \"dipPr158Gg!\",\n                \"value_start\": 16,\n                \"value_end\": 27,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.999,\n        \"line_data_list\": [\n            {\n                \"line\": \"ANY_username:master,ANY_password:dipPr159Gg!\",\n                \"line_num\": 60,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"ANY_password\",\n                \"variable_start\": 20,\n                \"variable_end\": 32,\n                \"value\": \"dipPr159Gg!\",\n                \"value_start\": 33,\n                \"value_end\": 44,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.998,\n        \"line_data_list\": [\n            {\n                \"line\": \"ANYusername:master,ANY_password:dipPr160Gg!\",\n                \"line_num\": 61,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"ANY_password\",\n                \"variable_start\": 19,\n                \"variable_end\": 31,\n                \"value\": \"dipPr160Gg!\",\n                \"value_start\": 32,\n                \"value_end\": 43,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.998,\n        \"line_data_list\": [\n            {\n                \"line\": \"ANY_USER=master ANY_PASS=dipPr161Gg!\",\n                \"line_num\": 62,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"ANY_PASS\",\n                \"variable_start\": 16,\n                \"variable_end\": 24,\n                \"value\": \"dipPr161Gg!\",\n                \"value_start\": 25,\n                \"value_end\": 36,\n                \"entropy\": 3.27761\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"User Account:master User password:dipPr162Gg!\",\n                \"line_num\": 63,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"password\",\n                \"variable_start\": 25,\n                \"variable_end\": 33,\n                \"value\": \"dipPr162Gg!\",\n                \"value_start\": 34,\n                \"value_end\": 45,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.991,\n        \"line_data_list\": [\n            {\n                \"line\": \"dipPr163Gg! ID:master dipPr163Gg! PWD:dipPr163Gg!\",\n                \"line_num\": 64,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"PWD\",\n                \"variable_start\": 34,\n                \"variable_end\": 37,\n                \"value\": \"dipPr163Gg!\",\n                \"value_start\": 38,\n                \"value_end\": 49,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.999,\n        \"line_data_list\": [\n            {\n                \"line\": \"userid=master password=dipPr164Gg!\",\n                \"line_num\": 65,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"password\",\n                \"variable_start\": 14,\n                \"variable_end\": 22,\n                \"value\": \"dipPr164Gg!\",\n                \"value_start\": 23,\n                \"value_end\": 34,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"ANY-username=master ANY-password=dipPr165Gg!\",\n                \"line_num\": 66,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"ANY-password\",\n                \"variable_start\": 20,\n                \"variable_end\": 32,\n                \"value\": \"dipPr165Gg!\",\n                \"value_start\": 33,\n                \"value_end\": 44,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.993,\n        \"line_data_list\": [\n            {\n                \"line\": \"username:master pass:dipPr166Gg!\",\n                \"line_num\": 67,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"pass\",\n                \"variable_start\": 16,\n                \"variable_end\": 20,\n                \"value\": \"dipPr166Gg!\",\n                \"value_start\": 21,\n                \"value_end\": 32,\n                \"entropy\": 3.27761\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.998,\n        \"line_data_list\": [\n            {\n                \"line\": \"user=master pwd=dipPr168Gg!\",\n                \"line_num\": 69,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"pwd\",\n                \"variable_start\": 12,\n                \"variable_end\": 15,\n                \"value\": \"dipPr168Gg!\",\n                \"value_start\": 16,\n                \"value_end\": 27,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.981,\n        \"line_data_list\": [\n            {\n                \"line\": \"Name:master,PW:dipPr169Gg!\",\n                \"line_num\": 70,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"PW\",\n                \"variable_start\": 12,\n                \"variable_end\": 14,\n                \"value\": \"dipPr169Gg!\",\n                \"value_start\": 15,\n                \"value_end\": 26,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.994,\n        \"line_data_list\": [\n            {\n                \"line\": \"user:master pass:dipPr172Gg!\",\n                \"line_num\": 73,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"pass\",\n                \"variable_start\": 12,\n                \"variable_end\": 16,\n                \"value\": \"dipPr172Gg!\",\n                \"value_start\": 17,\n                \"value_end\": 28,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"user=master password=dipPr174Gg!\",\n                \"line_num\": 75,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"password\",\n                \"variable_start\": 12,\n                \"variable_end\": 20,\n                \"value\": \"dipPr174Gg!\",\n                \"value_start\": 21,\n                \"value_end\": 32,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.999,\n        \"line_data_list\": [\n            {\n                \"line\": \"Host name:master/Password:dipPr175Gg!\",\n                \"line_num\": 76,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"Password\",\n                \"variable_start\": 17,\n                \"variable_end\": 25,\n                \"value\": \"dipPr175Gg!\",\n                \"value_start\": 26,\n                \"value_end\": 37,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"role:master,password:dipPr176Gg!\",\n                \"line_num\": 77,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"password\",\n                \"variable_start\": 12,\n                \"variable_end\": 20,\n                \"value\": \"dipPr176Gg!\",\n                \"value_start\": 21,\n                \"value_end\": 32,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.983,\n        \"line_data_list\": [\n            {\n                \"line\": \"Wifi Name:master,PW:dipPr177Gg!\",\n                \"line_num\": 78,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"PW\",\n                \"variable_start\": 17,\n                \"variable_end\": 19,\n                \"value\": \"dipPr177Gg!\",\n                \"value_start\": 20,\n                \"value_end\": 31,\n                \"entropy\": 3.27761\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.999,\n        \"line_data_list\": [\n            {\n                \"line\": \"ID:master/Password:dipPr178Gg!\",\n                \"line_num\": 79,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"Password\",\n                \"variable_start\": 10,\n                \"variable_end\": 18,\n                \"value\": \"dipPr178Gg!\",\n                \"value_start\": 19,\n                \"value_end\": 30,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"name:master,password:dipPr179Gg!\",\n                \"line_num\": 80,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"password\",\n                \"variable_start\": 12,\n                \"variable_end\": 20,\n                \"value\": \"dipPr179Gg!\",\n                \"value_start\": 21,\n                \"value_end\": 32,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.999,\n        \"line_data_list\": [\n            {\n                \"line\": \"Loging:master Password:dipPr180Gg!\",\n                \"line_num\": 81,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"Password\",\n                \"variable_start\": 14,\n                \"variable_end\": 22,\n                \"value\": \"dipPr180Gg!\",\n                \"value_start\": 23,\n                \"value_end\": 34,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.996,\n        \"line_data_list\": [\n            {\n                \"line\": \"Loging:master Pwd:dipPr181Gg!\",\n                \"line_num\": 82,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"Pwd\",\n                \"variable_start\": 14,\n                \"variable_end\": 17,\n                \"value\": \"dipPr181Gg!\",\n                \"value_start\": 18,\n                \"value_end\": 29,\n                \"entropy\": 3.27761\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.996,\n        \"line_data_list\": [\n            {\n                \"line\": \"id:master,default pw:dipPr182Gg!\",\n                \"line_num\": 83,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"pw\",\n                \"variable_start\": 18,\n                \"variable_end\": 20,\n                \"value\": \"dipPr182Gg!\",\n                \"value_start\": 21,\n                \"value_end\": 32,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.997,\n        \"line_data_list\": [\n            {\n                \"line\": \"id/pw id:master pw:dipPr185Gg!\",\n                \"line_num\": 86,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"pw\",\n                \"variable_start\": 16,\n                \"variable_end\": 18,\n                \"value\": \"dipPr185Gg!\",\n                \"value_start\": 19,\n                \"value_end\": 30,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.996,\n        \"line_data_list\": [\n            {\n                \"line\": \"user:master,pwd:dipPr186Gg!\",\n                \"line_num\": 87,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"pwd\",\n                \"variable_start\": 12,\n                \"variable_end\": 15,\n                \"value\": \"dipPr186Gg!\",\n                \"value_start\": 16,\n                \"value_end\": 27,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.989,\n        \"line_data_list\": [\n            {\n                \"line\": \"username:master/pw:dipPr188Gg!\",\n                \"line_num\": 89,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"pw\",\n                \"variable_start\": 16,\n                \"variable_end\": 18,\n                \"value\": \"dipPr188Gg!\",\n                \"value_start\": 19,\n                \"value_end\": 30,\n                \"entropy\": 3.27761\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.996,\n        \"line_data_list\": [\n            {\n                \"line\": \"username:master pw:dipPr189Gg!\",\n                \"line_num\": 90,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"pw\",\n                \"variable_start\": 16,\n                \"variable_end\": 18,\n                \"value\": \"dipPr189Gg!\",\n                \"value_start\": 19,\n                \"value_end\": 30,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.947,\n        \"line_data_list\": [\n            {\n                \"line\": \"PW:dipPr190Gg! ID:master\",\n                \"line_num\": 91,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"PW\",\n                \"variable_start\": 0,\n                \"variable_end\": 2,\n                \"value\": \"dipPr190Gg!\",\n                \"value_start\": 3,\n                \"value_end\": 14,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"ANYid:master pw:dipPr194Gg! ip:98.76.54.32\",\n                \"line_num\": 95,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"pw\",\n                \"variable_start\": 13,\n                \"variable_end\": 15,\n                \"value\": \"dipPr194Gg!\",\n                \"value_start\": 16,\n                \"value_end\": 27,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.999,\n        \"line_data_list\": [\n            {\n                \"line\": \"id: master pw:dipPr197Gg!\",\n                \"line_num\": 98,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"pw\",\n                \"variable_start\": 11,\n                \"variable_end\": 13,\n                \"value\": \"dipPr197Gg!\",\n                \"value_start\": 14,\n                \"value_end\": 25,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.97,\n        \"line_data_list\": [\n            {\n                \"line\": \"id:master@example.com,pw:dipPr198Gg!\",\n                \"line_num\": 99,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"pw\",\n                \"variable_start\": 22,\n                \"variable_end\": 24,\n                \"value\": \"dipPr198Gg!\",\n                \"value_start\": 25,\n                \"value_end\": 36,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.941,\n        \"line_data_list\": [\n            {\n                \"line\": \"id:master@example.com,pw:IHQSB1GG!\",\n                \"line_num\": 102,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"pw\",\n                \"variable_start\": 22,\n                \"variable_end\": 24,\n                \"value\": \"IHQSB1GG!\",\n                \"value_start\": 25,\n                \"value_end\": 34,\n                \"entropy\": 2.9477\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.023,\n        \"line_data_list\": [\n            {\n                \"line\": \"ID/PW:master/iPp0@GRq\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/doc_id_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"PW\",\n                \"variable_start\": 3,\n                \"variable_end\": 5,\n                \"value\": \"master/iPp0@GRq\",\n                \"value_start\": 6,\n                \"value_end\": 21,\n                \"entropy\": 3.90689\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.349,\n        \"line_data_list\": [\n            {\n                \"line\": \"ID/Password:master/iPp2@GRq\",\n                \"line_num\": 3,\n                \"path\": \"./tests/samples/doc_id_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"Password\",\n                \"variable_start\": 3,\n                \"variable_end\": 11,\n                \"value\": \"master/iPp2@GRq\",\n                \"value_start\": 12,\n                \"value_end\": 27,\n                \"entropy\": 3.90689\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.084,\n        \"line_data_list\": [\n            {\n                \"line\": \"ID/Pass:master/iPp3@GRq\",\n                \"line_num\": 4,\n                \"path\": \"./tests/samples/doc_id_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"Pass\",\n                \"variable_start\": 3,\n                \"variable_end\": 7,\n                \"value\": \"master/iPp3@GRq\",\n                \"value_start\": 8,\n                \"value_end\": 23,\n                \"entropy\": 3.90689\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.112,\n        \"line_data_list\": [\n            {\n                \"line\": \"ID:PW=master:iPp4@GRq\",\n                \"line_num\": 5,\n                \"path\": \"./tests/samples/doc_id_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"PW\",\n                \"variable_start\": 3,\n                \"variable_end\": 5,\n                \"value\": \"master:iPp4@GRq\",\n                \"value_start\": 6,\n                \"value_end\": 21,\n                \"entropy\": 3.90689\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.038,\n        \"line_data_list\": [\n            {\n                \"line\": \"ID/PW=master/iPp5@GRq\",\n                \"line_num\": 6,\n                \"path\": \"./tests/samples/doc_id_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"PW\",\n                \"variable_start\": 3,\n                \"variable_end\": 5,\n                \"value\": \"master/iPp5@GRq\",\n                \"value_start\": 6,\n                \"value_end\": 21,\n                \"entropy\": 3.90689\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.526,\n        \"line_data_list\": [\n            {\n                \"line\": \"username/password:master/iPp7@GRq\",\n                \"line_num\": 8,\n                \"path\": \"./tests/samples/doc_id_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"password\",\n                \"variable_start\": 9,\n                \"variable_end\": 17,\n                \"value\": \"master/iPp7@GRq\",\n                \"value_start\": 18,\n                \"value_end\": 33,\n                \"entropy\": 3.90689\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.087,\n        \"line_data_list\": [\n            {\n                \"line\": \"id/passwd:master/iPp8@GRq\",\n                \"line_num\": 9,\n                \"path\": \"./tests/samples/doc_id_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"passwd\",\n                \"variable_start\": 3,\n                \"variable_end\": 9,\n                \"value\": \"master/iPp8@GRq\",\n                \"value_start\": 10,\n                \"value_end\": 25,\n                \"entropy\": 3.90689\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.882,\n        \"line_data_list\": [\n            {\n                \"line\": \"98.76.54.32(ID:master/PW:iPp10@GRq)      # todo: move into other sample ?\",\n                \"line_num\": 11,\n                \"path\": \"./tests/samples/doc_id_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"PW\",\n                \"variable_start\": 22,\n                \"variable_end\": 24,\n                \"value\": \"iPp10@GRq\",\n                \"value_start\": 25,\n                \"value_end\": 34,\n                \"entropy\": 3.16993\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.001,\n        \"line_data_list\": [\n            {\n                \"line\": \"\\uc544\\uc774\\ub514/PW:master/iPp16@GRq\",\n                \"line_num\": 17,\n                \"path\": \"./tests/samples/doc_id_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"PW\",\n                \"variable_start\": 4,\n                \"variable_end\": 6,\n                \"value\": \"master/iPp16@GRq\",\n                \"value_start\": 7,\n                \"value_end\": 23,\n                \"entropy\": 4.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.003,\n        \"line_data_list\": [\n            {\n                \"line\": \"\\uacc4\\uc815/PW:master/iPp17@GRq\",\n                \"line_num\": 18,\n                \"path\": \"./tests/samples/doc_id_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"PW\",\n                \"variable_start\": 3,\n                \"variable_end\": 5,\n                \"value\": \"master/iPp17@GRq\",\n                \"value_start\": 6,\n                \"value_end\": 22,\n                \"entropy\": 4.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.367,\n        \"line_data_list\": [\n            {\n                \"line\": \"98.76.54.32 id/pw:master/iPp19@GRq\",\n                \"line_num\": 20,\n                \"path\": \"./tests/samples/doc_id_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"pw\",\n                \"variable_start\": 15,\n                \"variable_end\": 17,\n                \"value\": \"master/iPp19@GRq\",\n                \"value_start\": 18,\n                \"value_end\": 34,\n                \"entropy\": 4.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.035,\n        \"line_data_list\": [\n            {\n                \"line\": \"ID/PWD:master/iPp21@GRq\",\n                \"line_num\": 22,\n                \"path\": \"./tests/samples/doc_id_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"PWD\",\n                \"variable_start\": 3,\n                \"variable_end\": 6,\n                \"value\": \"master/iPp21@GRq\",\n                \"value_start\": 7,\n                \"value_end\": 23,\n                \"entropy\": 4.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.1,\n        \"line_data_list\": [\n            {\n                \"line\": \"user/pwd:master/iPp22@GRq\",\n                \"line_num\": 23,\n                \"path\": \"./tests/samples/doc_id_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"pwd\",\n                \"variable_start\": 5,\n                \"variable_end\": 8,\n                \"value\": \"master/iPp22@GRq\",\n                \"value_start\": 9,\n                \"value_end\": 25,\n                \"entropy\": 3.875\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.082,\n        \"line_data_list\": [\n            {\n                \"line\": \"user/pass:master/iPp25@GRq\",\n                \"line_num\": 26,\n                \"path\": \"./tests/samples/doc_id_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"pass\",\n                \"variable_start\": 5,\n                \"variable_end\": 9,\n                \"value\": \"master/iPp25@GRq\",\n                \"value_start\": 10,\n                \"value_end\": 26,\n                \"entropy\": 4.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.651,\n        \"line_data_list\": [\n            {\n                \"line\": \"ID/Password=master/iPp27@GRq\",\n                \"line_num\": 28,\n                \"path\": \"./tests/samples/doc_id_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"Password\",\n                \"variable_start\": 3,\n                \"variable_end\": 11,\n                \"value\": \"master/iPp27@GRq\",\n                \"value_start\": 12,\n                \"value_end\": 28,\n                \"entropy\": 4.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.049,\n        \"line_data_list\": [\n            {\n                \"line\": \"ID/PW:master/iPp28@GRq\",\n                \"line_num\": 29,\n                \"path\": \"./tests/samples/doc_id_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"PW\",\n                \"variable_start\": 3,\n                \"variable_end\": 5,\n                \"value\": \"master/iPp28@GRq\",\n                \"value_start\": 6,\n                \"value_end\": 22,\n                \"entropy\": 4.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.988,\n        \"line_data_list\": [\n            {\n                \"line\": \"Password:Prl23Db#@\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/doc_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"Password\",\n                \"variable_start\": 0,\n                \"variable_end\": 8,\n                \"value\": \"Prl23Db#@\",\n                \"value_start\": 9,\n                \"value_end\": 18,\n                \"entropy\": 3.16993\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.993,\n        \"line_data_list\": [\n            {\n                \"line\": \"pw:Prl23Db#@\",\n                \"line_num\": 3,\n                \"path\": \"./tests/samples/doc_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"pw\",\n                \"variable_start\": 0,\n                \"variable_end\": 2,\n                \"value\": \"Prl23Db#@\",\n                \"value_start\": 3,\n                \"value_end\": 12,\n                \"entropy\": 3.16993\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.987,\n        \"line_data_list\": [\n            {\n                \"line\": \"Password=Prl23Db#@\",\n                \"line_num\": 4,\n                \"path\": \"./tests/samples/doc_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"Password\",\n                \"variable_start\": 0,\n                \"variable_end\": 8,\n                \"value\": \"Prl23Db#@\",\n                \"value_start\": 9,\n                \"value_end\": 18,\n                \"entropy\": 3.16993\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.996,\n        \"line_data_list\": [\n            {\n                \"line\": \"pwd:Prl23Db#@\",\n                \"line_num\": 5,\n                \"path\": \"./tests/samples/doc_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"pwd\",\n                \"variable_start\": 0,\n                \"variable_end\": 3,\n                \"value\": \"Prl23Db#@\",\n                \"value_start\": 4,\n                \"value_end\": 13,\n                \"entropy\": 3.16993\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.997,\n        \"line_data_list\": [\n            {\n                \"line\": \"ANY_password=Prl23Db#@\",\n                \"line_num\": 8,\n                \"path\": \"./tests/samples/doc_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"ANY_password\",\n                \"variable_start\": 0,\n                \"variable_end\": 12,\n                \"value\": \"Prl23Db#@\",\n                \"value_start\": 13,\n                \"value_end\": 22,\n                \"entropy\": 3.16993\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.988,\n        \"line_data_list\": [\n            {\n                \"line\": \"pass:Prl23Db#@\",\n                \"line_num\": 10,\n                \"path\": \"./tests/samples/doc_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"pass\",\n                \"variable_start\": 0,\n                \"variable_end\": 4,\n                \"value\": \"Prl23Db#@\",\n                \"value_start\": 5,\n                \"value_end\": 14,\n                \"entropy\": 3.16993\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.999,\n        \"line_data_list\": [\n            {\n                \"line\": \"ANY-password=Prl23Db#@\",\n                \"line_num\": 11,\n                \"path\": \"./tests/samples/doc_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"ANY-password\",\n                \"variable_start\": 0,\n                \"variable_end\": 12,\n                \"value\": \"Prl23Db#@\",\n                \"value_start\": 13,\n                \"value_end\": 22,\n                \"entropy\": 3.16993\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"master@98.76.54.32 password:Prl23Db#@\",\n                \"line_num\": 14,\n                \"path\": \"./tests/samples/doc_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"password\",\n                \"variable_start\": 19,\n                \"variable_end\": 27,\n                \"value\": \"Prl23Db#@\",\n                \"value_start\": 28,\n                \"value_end\": 37,\n                \"entropy\": 3.16993\n            }\n        ]\n    },\n    {\n        \"rule\": \"CMD Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.998,\n        \"line_data_list\": [\n            {\n                \"line\": \"--Password Prl23Db#@\",\n                \"line_num\": 15,\n                \"path\": \"./tests/samples/doc_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"Password\",\n                \"variable_start\": 2,\n                \"variable_end\": 10,\n                \"value\": \"Prl23Db#@\",\n                \"value_start\": 11,\n                \"value_end\": 20,\n                \"entropy\": 3.16993\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.989,\n        \"line_data_list\": [\n            {\n                \"line\": \"ANY_PW:Prl23Db#@\",\n                \"line_num\": 17,\n                \"path\": \"./tests/samples/doc_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"ANY_PW\",\n                \"variable_start\": 0,\n                \"variable_end\": 6,\n                \"value\": \"Prl23Db#@\",\n                \"value_start\": 7,\n                \"value_end\": 16,\n                \"entropy\": 3.16993\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"default password:Prl23Db#@\",\n                \"line_num\": 18,\n                \"path\": \"./tests/samples/doc_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"password\",\n                \"variable_start\": 8,\n                \"variable_end\": 16,\n                \"value\": \"Prl23Db#@\",\n                \"value_start\": 17,\n                \"value_end\": 26,\n                \"entropy\": 3.16993\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"\\\"password\\\":\\\"Prl23Db#@\\\"\",\n                \"line_num\": 21,\n                \"path\": \"./tests/samples/doc_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"password\",\n                \"variable_start\": 1,\n                \"variable_end\": 9,\n                \"value\": \"Prl23Db#@\",\n                \"value_start\": 12,\n                \"value_end\": 21,\n                \"entropy\": 3.16993\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.99,\n        \"line_data_list\": [\n            {\n                \"line\": \"Passwd:Prl23Db#@ Prl23Db#@\",\n                \"line_num\": 23,\n                \"path\": \"./tests/samples/doc_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"Passwd\",\n                \"variable_start\": 0,\n                \"variable_end\": 6,\n                \"value\": \"Prl23Db#@\",\n                \"value_start\": 7,\n                \"value_end\": 16,\n                \"entropy\": 3.16993\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.219,\n        \"line_data_list\": [\n            {\n                \"line\": \"PW:Prl23Db#@,password:Prl23Db#@\",\n                \"line_num\": 24,\n                \"path\": \"./tests/samples/doc_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"PW\",\n                \"variable_start\": 0,\n                \"variable_end\": 2,\n                \"value\": \"Prl23Db#@\",\n                \"value_start\": 3,\n                \"value_end\": 12,\n                \"entropy\": 3.16993\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.999,\n        \"line_data_list\": [\n            {\n                \"line\": \"PW:Prl23Db#@,password:Prl23Db#@\",\n                \"line_num\": 24,\n                \"path\": \"./tests/samples/doc_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"password\",\n                \"variable_start\": 13,\n                \"variable_end\": 21,\n                \"value\": \"Prl23Db#@\",\n                \"value_start\": 22,\n                \"value_end\": 31,\n                \"entropy\": 3.16993\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.999,\n        \"line_data_list\": [\n            {\n                \"line\": \"password:Prl23Db#@,\\ube44\\ubc88:Prl23Db#@\",\n                \"line_num\": 25,\n                \"path\": \"./tests/samples/doc_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"password\",\n                \"variable_start\": 0,\n                \"variable_end\": 8,\n                \"value\": \"Prl23Db#@\",\n                \"value_start\": 9,\n                \"value_end\": 18,\n                \"entropy\": 3.16993\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.989,\n        \"line_data_list\": [\n            {\n                \"line\": \"passwd=Prl23Db#@\",\n                \"line_num\": 26,\n                \"path\": \"./tests/samples/doc_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"passwd\",\n                \"variable_start\": 0,\n                \"variable_end\": 6,\n                \"value\": \"Prl23Db#@\",\n                \"value_start\": 7,\n                \"value_end\": 16,\n                \"entropy\": 3.16993\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.998,\n        \"line_data_list\": [\n            {\n                \"line\": \"password:Prl23Db#@, paasword:Prl23Db#@\",\n                \"line_num\": 30,\n                \"path\": \"./tests/samples/doc_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"password\",\n                \"variable_start\": 0,\n                \"variable_end\": 8,\n                \"value\": \"Prl23Db#@\",\n                \"value_start\": 9,\n                \"value_end\": 18,\n                \"entropy\": 3.16993\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.988,\n        \"line_data_list\": [\n            {\n                \"line\": \"password:Prl23Db#@,ANYPassword:Prl23Db#@\",\n                \"line_num\": 31,\n                \"path\": \"./tests/samples/doc_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"password\",\n                \"variable_start\": 0,\n                \"variable_end\": 8,\n                \"value\": \"Prl23Db#@\",\n                \"value_start\": 9,\n                \"value_end\": 18,\n                \"entropy\": 3.16993\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.995,\n        \"line_data_list\": [\n            {\n                \"line\": \"password:Prl23Db#@,ANYPassword:Prl23Db#@\",\n                \"line_num\": 31,\n                \"path\": \"./tests/samples/doc_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"ANYPassword\",\n                \"variable_start\": 19,\n                \"variable_end\": 30,\n                \"value\": \"Prl23Db#@\",\n                \"value_start\": 31,\n                \"value_end\": 40,\n                \"entropy\": 3.16993\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.983,\n        \"line_data_list\": [\n            {\n                \"line\": \"Password:Prl23Db#@,pwd=Prl23Db#@\",\n                \"line_num\": 32,\n                \"path\": \"./tests/samples/doc_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"Password\",\n                \"variable_start\": 0,\n                \"variable_end\": 8,\n                \"value\": \"Prl23Db#@\",\n                \"value_start\": 9,\n                \"value_end\": 18,\n                \"entropy\": 3.16993\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.926,\n        \"line_data_list\": [\n            {\n                \"line\": \"Password:Prl23Db#@,pwd=Prl23Db#@\",\n                \"line_num\": 32,\n                \"path\": \"./tests/samples/doc_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"pwd\",\n                \"variable_start\": 19,\n                \"variable_end\": 22,\n                \"value\": \"Prl23Db#@\",\n                \"value_start\": 23,\n                \"value_end\": 32,\n                \"entropy\": 3.16993\n            }\n        ]\n    },\n    {\n        \"rule\": \"CMD Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"-password \\\"Prl23Db#@\\\"\",\n                \"line_num\": 33,\n                \"path\": \"./tests/samples/doc_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"password\",\n                \"variable_start\": 1,\n                \"variable_end\": 9,\n                \"value\": \"Prl23Db#@\",\n                \"value_start\": 11,\n                \"value_end\": 20,\n                \"entropy\": 3.16993\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.997,\n        \"line_data_list\": [\n            {\n                \"line\": \"ANY_password:Prl23Db#@\",\n                \"line_num\": 34,\n                \"path\": \"./tests/samples/doc_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"ANY_password\",\n                \"variable_start\": 0,\n                \"variable_end\": 12,\n                \"value\": \"Prl23Db#@\",\n                \"value_start\": 13,\n                \"value_end\": 22,\n                \"entropy\": 3.16993\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.998,\n        \"line_data_list\": [\n            {\n                \"line\": \"--password=Prl23Db#@\",\n                \"line_num\": 37,\n                \"path\": \"./tests/samples/doc_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"password\",\n                \"variable_start\": 2,\n                \"variable_end\": 10,\n                \"value\": \"Prl23Db#@\",\n                \"value_start\": 11,\n                \"value_end\": 20,\n                \"entropy\": 3.16993\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.999,\n        \"line_data_list\": [\n            {\n                \"line\": \"root/Prl23Db#@,root password:Prl23Db#@\",\n                \"line_num\": 38,\n                \"path\": \"./tests/samples/doc_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"password\",\n                \"variable_start\": 20,\n                \"variable_end\": 28,\n                \"value\": \"Prl23Db#@\",\n                \"value_start\": 29,\n                \"value_end\": 38,\n                \"entropy\": 3.16993\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"Prl23Db#@ username:Prl23Db#@,Prl23Db#@ password:Prl23Db#@\",\n                \"line_num\": 40,\n                \"path\": \"./tests/samples/doc_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"password\",\n                \"variable_start\": 39,\n                \"variable_end\": 47,\n                \"value\": \"Prl23Db#@\",\n                \"value_start\": 48,\n                \"value_end\": 57,\n                \"entropy\": 3.16993\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.999,\n        \"line_data_list\": [\n            {\n                \"line\": \"Prl23Db#@:password:Prl23Db#@\",\n                \"line_num\": 41,\n                \"path\": \"./tests/samples/doc_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"password\",\n                \"variable_start\": 10,\n                \"variable_end\": 18,\n                \"value\": \"Prl23Db#@\",\n                \"value_start\": 19,\n                \"value_end\": 28,\n                \"entropy\": 3.16993\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.998,\n        \"line_data_list\": [\n            {\n                \"line\": \"ANYpassword=Prl23Db#@\",\n                \"line_num\": 45,\n                \"path\": \"./tests/samples/doc_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"ANYpassword\",\n                \"variable_start\": 0,\n                \"variable_end\": 11,\n                \"value\": \"Prl23Db#@\",\n                \"value_start\": 12,\n                \"value_end\": 21,\n                \"entropy\": 3.16993\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.997,\n        \"line_data_list\": [\n            {\n                \"line\": \"passwords:Prl23Db#@\",\n                \"line_num\": 46,\n                \"path\": \"./tests/samples/doc_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"passwords\",\n                \"variable_start\": 0,\n                \"variable_end\": 9,\n                \"value\": \"Prl23Db#@\",\n                \"value_start\": 10,\n                \"value_end\": 19,\n                \"entropy\": 3.16993\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.994,\n        \"line_data_list\": [\n            {\n                \"line\": \"password=>Prl23Db#@\",\n                \"line_num\": 48,\n                \"path\": \"./tests/samples/doc_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"password\",\n                \"variable_start\": 0,\n                \"variable_end\": 8,\n                \"value\": \"Prl23Db#@\",\n                \"value_start\": 10,\n                \"value_end\": 19,\n                \"entropy\": 3.16993\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.984,\n        \"line_data_list\": [\n            {\n                \"line\": \"# password: keep empty\",\n                \"line_num\": 56,\n                \"path\": \"./tests/samples/doc_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"password\",\n                \"variable_start\": 2,\n                \"variable_end\": 10,\n                \"value\": \"keep\",\n                \"value_start\": 12,\n                \"value_end\": 16,\n                \"entropy\": 1.5\n            }\n        ]\n    },\n    {\n        \"rule\": \"Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"ANY-Token:AIhq5Xyb1Gga9Q0\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/doc_secret_pair\",\n                \"info\": \"\",\n                \"variable\": \"ANY-Token\",\n                \"variable_start\": 0,\n                \"variable_end\": 9,\n                \"value\": \"AIhq5Xyb1Gga9Q0\",\n                \"value_start\": 10,\n                \"value_end\": 25,\n                \"entropy\": 3.90689\n            }\n        ]\n    },\n    {\n        \"rule\": \"Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"token:AIhq5Xyb1Gga9Q2\",\n                \"line_num\": 3,\n                \"path\": \"./tests/samples/doc_secret_pair\",\n                \"info\": \"\",\n                \"variable\": \"token\",\n                \"variable_start\": 0,\n                \"variable_end\": 5,\n                \"value\": \"AIhq5Xyb1Gga9Q2\",\n                \"value_start\": 6,\n                \"value_end\": 21,\n                \"entropy\": 3.90689\n            }\n        ]\n    },\n    {\n        \"rule\": \"Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"SECRET KEY:AIhq5Xyb1Gga9Q3\",\n                \"line_num\": 4,\n                \"path\": \"./tests/samples/doc_secret_pair\",\n                \"info\": \"\",\n                \"variable\": \"KEY\",\n                \"variable_start\": 7,\n                \"variable_end\": 10,\n                \"value\": \"AIhq5Xyb1Gga9Q3\",\n                \"value_start\": 11,\n                \"value_end\": 26,\n                \"entropy\": 3.90689\n            }\n        ]\n    },\n    {\n        \"rule\": \"Secret\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"SECRET KEY:AIhq5Xyb1Gga9Q3\",\n                \"line_num\": 4,\n                \"path\": \"./tests/samples/doc_secret_pair\",\n                \"info\": \"\",\n                \"variable\": \"SECRET KEY\",\n                \"variable_start\": 0,\n                \"variable_end\": 10,\n                \"value\": \"AIhq5Xyb1Gga9Q3\",\n                \"value_start\": 11,\n                \"value_end\": 26,\n                \"entropy\": 3.90689\n            }\n        ]\n    },\n    {\n        \"rule\": \"Secret\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"secret=AIhq5Xyb1Gga9Q4\",\n                \"line_num\": 5,\n                \"path\": \"./tests/samples/doc_secret_pair\",\n                \"info\": \"\",\n                \"variable\": \"secret\",\n                \"variable_start\": 0,\n                \"variable_end\": 6,\n                \"value\": \"AIhq5Xyb1Gga9Q4\",\n                \"value_start\": 7,\n                \"value_end\": 22,\n                \"entropy\": 3.90689\n            }\n        ]\n    },\n    {\n        \"rule\": \"CMD Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"--token AIhq5Xyb1Gga9Q5\",\n                \"line_num\": 6,\n                \"path\": \"./tests/samples/doc_secret_pair\",\n                \"info\": \"\",\n                \"variable\": \"token\",\n                \"variable_start\": 2,\n                \"variable_end\": 7,\n                \"value\": \"AIhq5Xyb1Gga9Q5\",\n                \"value_start\": 8,\n                \"value_end\": 23,\n                \"entropy\": 3.77356\n            }\n        ]\n    },\n    {\n        \"rule\": \"Secret\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"secret:AIhq5Xyb1Gga9Q6\",\n                \"line_num\": 7,\n                \"path\": \"./tests/samples/doc_secret_pair\",\n                \"info\": \"\",\n                \"variable\": \"secret\",\n                \"variable_start\": 0,\n                \"variable_end\": 6,\n                \"value\": \"AIhq5Xyb1Gga9Q6\",\n                \"value_start\": 7,\n                \"value_end\": 22,\n                \"entropy\": 3.90689\n            }\n        ]\n    },\n    {\n        \"rule\": \"Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"ANY_token=AIhq5Xyb1Gga9Q7\",\n                \"line_num\": 8,\n                \"path\": \"./tests/samples/doc_secret_pair\",\n                \"info\": \"\",\n                \"variable\": \"ANY_token\",\n                \"variable_start\": 0,\n                \"variable_end\": 9,\n                \"value\": \"AIhq5Xyb1Gga9Q7\",\n                \"value_start\": 10,\n                \"value_end\": 25,\n                \"entropy\": 3.90689\n            }\n        ]\n    },\n    {\n        \"rule\": \"CMD Secret\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"-secret AIhq5Xyb1Gga9Q10\",\n                \"line_num\": 11,\n                \"path\": \"./tests/samples/doc_secret_pair\",\n                \"info\": \"\",\n                \"variable\": \"secret\",\n                \"variable_start\": 1,\n                \"variable_end\": 7,\n                \"value\": \"AIhq5Xyb1Gga9Q10\",\n                \"value_start\": 8,\n                \"value_end\": 24,\n                \"entropy\": 3.875\n            }\n        ]\n    },\n    {\n        \"rule\": \"Secret\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"ANY.secret=AIhq5Xyb1Gga9Q19\",\n                \"line_num\": 20,\n                \"path\": \"./tests/samples/doc_secret_pair\",\n                \"info\": \"\",\n                \"variable\": \"ANY.secret\",\n                \"variable_start\": 0,\n                \"variable_end\": 10,\n                \"value\": \"AIhq5Xyb1Gga9Q19\",\n                \"value_start\": 11,\n                \"value_end\": 27,\n                \"entropy\": 3.75\n            }\n        ]\n    },\n    {\n        \"rule\": \"Secret\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"--secret=AIhq5Xyb1Gga9Q21\",\n                \"line_num\": 22,\n                \"path\": \"./tests/samples/doc_secret_pair\",\n                \"info\": \"\",\n                \"variable\": \"secret\",\n                \"variable_start\": 2,\n                \"variable_end\": 8,\n                \"value\": \"AIhq5Xyb1Gga9Q21\",\n                \"value_start\": 9,\n                \"value_end\": 25,\n                \"entropy\": 3.875\n            }\n        ]\n    },\n    {\n        \"rule\": \"Secret\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"ANY_secret:AIhq5Xyb1Gga9Q22\",\n                \"line_num\": 23,\n                \"path\": \"./tests/samples/doc_secret_pair\",\n                \"info\": \"\",\n                \"variable\": \"ANY_secret\",\n                \"variable_start\": 0,\n                \"variable_end\": 10,\n                \"value\": \"AIhq5Xyb1Gga9Q22\",\n                \"value_start\": 11,\n                \"value_end\": 27,\n                \"entropy\": 3.875\n            }\n        ]\n    },\n    {\n        \"rule\": \"Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"-Token:AIhq5Xyb1Gga9Q23\",\n                \"line_num\": 24,\n                \"path\": \"./tests/samples/doc_secret_pair\",\n                \"info\": \"\",\n                \"variable\": \"Token\",\n                \"variable_start\": 1,\n                \"variable_end\": 6,\n                \"value\": \"AIhq5Xyb1Gga9Q23\",\n                \"value_start\": 7,\n                \"value_end\": 23,\n                \"entropy\": 4.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"API\",\n        \"severity\": \"low\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"API Secret:AIhq5Xyb1Gga9Q24\",\n                \"line_num\": 25,\n                \"path\": \"./tests/samples/doc_secret_pair\",\n                \"info\": \"\",\n                \"variable\": \"API Secret\",\n                \"variable_start\": 0,\n                \"variable_end\": 10,\n                \"value\": \"AIhq5Xyb1Gga9Q24\",\n                \"value_start\": 11,\n                \"value_end\": 27,\n                \"entropy\": 4.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"Secret\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"API Secret:AIhq5Xyb1Gga9Q24\",\n                \"line_num\": 25,\n                \"path\": \"./tests/samples/doc_secret_pair\",\n                \"info\": \"\",\n                \"variable\": \"Secret\",\n                \"variable_start\": 4,\n                \"variable_end\": 10,\n                \"value\": \"AIhq5Xyb1Gga9Q24\",\n                \"value_start\": 11,\n                \"value_end\": 27,\n                \"entropy\": 4.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"access key:AIhq5Xyb1Gga9Q26\",\n                \"line_num\": 27,\n                \"path\": \"./tests/samples/doc_secret_pair\",\n                \"info\": \"\",\n                \"variable\": \"key\",\n                \"variable_start\": 7,\n                \"variable_end\": 10,\n                \"value\": \"AIhq5Xyb1Gga9Q26\",\n                \"value_start\": 11,\n                \"value_end\": 27,\n                \"entropy\": 4.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"Secret Key:AIhq5Xyb1Gga9Q27\",\n                \"line_num\": 28,\n                \"path\": \"./tests/samples/doc_secret_pair\",\n                \"info\": \"\",\n                \"variable\": \"Key\",\n                \"variable_start\": 7,\n                \"variable_end\": 10,\n                \"value\": \"AIhq5Xyb1Gga9Q27\",\n                \"value_start\": 11,\n                \"value_end\": 27,\n                \"entropy\": 4.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"Secret\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"Secret Key:AIhq5Xyb1Gga9Q27\",\n                \"line_num\": 28,\n                \"path\": \"./tests/samples/doc_secret_pair\",\n                \"info\": \"\",\n                \"variable\": \"Secret Key\",\n                \"variable_start\": 0,\n                \"variable_end\": 10,\n                \"value\": \"AIhq5Xyb1Gga9Q27\",\n                \"value_start\": 11,\n                \"value_end\": 27,\n                \"entropy\": 4.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"ANY_key=AIhq5Xyb1Gga9Q29\",\n                \"line_num\": 30,\n                \"path\": \"./tests/samples/doc_secret_pair\",\n                \"info\": \"\",\n                \"variable\": \"ANY_key\",\n                \"variable_start\": 0,\n                \"variable_end\": 7,\n                \"value\": \"AIhq5Xyb1Gga9Q29\",\n                \"value_start\": 8,\n                \"value_end\": 24,\n                \"entropy\": 3.875\n            }\n        ]\n    },\n    {\n        \"rule\": \"Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"secret-ANYkey:AIhq5Xyb1Gga9Q30\",\n                \"line_num\": 31,\n                \"path\": \"./tests/samples/doc_secret_pair\",\n                \"info\": \"\",\n                \"variable\": \"secret-ANYkey\",\n                \"variable_start\": 0,\n                \"variable_end\": 13,\n                \"value\": \"AIhq5Xyb1Gga9Q30\",\n                \"value_start\": 14,\n                \"value_end\": 30,\n                \"entropy\": 4.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"Secret\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"secret-ANYkey:AIhq5Xyb1Gga9Q30\",\n                \"line_num\": 31,\n                \"path\": \"./tests/samples/doc_secret_pair\",\n                \"info\": \"\",\n                \"variable\": \"secret-ANYkey\",\n                \"variable_start\": 0,\n                \"variable_end\": 13,\n                \"value\": \"AIhq5Xyb1Gga9Q30\",\n                \"value_start\": 14,\n                \"value_end\": 30,\n                \"entropy\": 4.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"ANY_id=AIhq5Xyb1Gga9Q31 ANY_token=AIhq5Xyb1Gga9Q31\",\n                \"line_num\": 32,\n                \"path\": \"./tests/samples/doc_secret_pair\",\n                \"info\": \"\",\n                \"variable\": \"ANY_token\",\n                \"variable_start\": 24,\n                \"variable_end\": 33,\n                \"value\": \"AIhq5Xyb1Gga9Q31\",\n                \"value_start\": 34,\n                \"value_end\": 50,\n                \"entropy\": 3.875\n            }\n        ]\n    },\n    {\n        \"rule\": \"Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"access_token:AIhq5Xyb1Gga9Q33\",\n                \"line_num\": 34,\n                \"path\": \"./tests/samples/doc_secret_pair\",\n                \"info\": \"\",\n                \"variable\": \"access_token\",\n                \"variable_start\": 0,\n                \"variable_end\": 12,\n                \"value\": \"AIhq5Xyb1Gga9Q33\",\n                \"value_start\": 13,\n                \"value_end\": 29,\n                \"entropy\": 3.875\n            }\n        ]\n    },\n    {\n        \"rule\": \"Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"Authentication key:AIhq5Xyb1Gga9Q35\",\n                \"line_num\": 36,\n                \"path\": \"./tests/samples/doc_secret_pair\",\n                \"info\": \"\",\n                \"variable\": \"key\",\n                \"variable_start\": 15,\n                \"variable_end\": 18,\n                \"value\": \"AIhq5Xyb1Gga9Q35\",\n                \"value_start\": 19,\n                \"value_end\": 35,\n                \"entropy\": 3.875\n            }\n        ]\n    },\n    {\n        \"rule\": \"Auth\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"Authentication key:AIhq5Xyb1Gga9Q35\",\n                \"line_num\": 36,\n                \"path\": \"./tests/samples/doc_secret_pair\",\n                \"info\": \"\",\n                \"variable\": \"Authentication key\",\n                \"variable_start\": 0,\n                \"variable_end\": 18,\n                \"value\": \"AIhq5Xyb1Gga9Q35\",\n                \"value_start\": 19,\n                \"value_end\": 35,\n                \"entropy\": 3.875\n            }\n        ]\n    },\n    {\n        \"rule\": \"Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.001,\n        \"line_data_list\": [\n            {\n                \"line\": \"page.action?spaceKey=LOGIC&title=QUANTUM\\\",\",\n                \"line_num\": 39,\n                \"path\": \"./tests/samples/doc_secret_pair\",\n                \"info\": \"\",\n                \"variable\": \"spaceKey\",\n                \"variable_start\": 12,\n                \"variable_end\": 20,\n                \"value\": \"LOGIC\",\n                \"value_start\": 21,\n                \"value_end\": 26,\n                \"entropy\": 2.32193\n            }\n        ]\n    },\n    {\n        \"rule\": \"Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"Enter token : This is a query parameter\",\n                \"line_num\": 40,\n                \"path\": \"./tests/samples/doc_secret_pair\",\n                \"info\": \"\",\n                \"variable\": \"token\",\n                \"variable_start\": 6,\n                \"variable_end\": 11,\n                \"value\": \"This\",\n                \"value_start\": 14,\n                \"value_end\": 18,\n                \"entropy\": 2.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"\\\"key\\\":\\\"attached_file_0\\\"\",\n                \"line_num\": 41,\n                \"path\": \"./tests/samples/doc_secret_pair\",\n                \"info\": \"\",\n                \"variable\": \"key\",\n                \"variable_start\": 1,\n                \"variable_end\": 4,\n                \"value\": \"attached_file_0\",\n                \"value_start\": 7,\n                \"value_end\": 22,\n                \"entropy\": 3.37356\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"master@98.76.54.32(pw:IhqSb1Gg)\",\n                \"line_num\": 3,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"\",\n                \"variable\": \"pw\",\n                \"variable_start\": 19,\n                \"variable_end\": 21,\n                \"value\": \"IhqSb1Gg\",\n                \"value_start\": 22,\n                \"value_end\": 30,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.964,\n        \"line_data_list\": [\n            {\n                \"line\": \"ID:gildong.hong@example.com mailto:{1} PW:IhqSb1Gg\",\n                \"line_num\": 4,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"\",\n                \"variable\": \"PW\",\n                \"variable_start\": 39,\n                \"variable_end\": 41,\n                \"value\": \"IhqSb1Gg\",\n                \"value_start\": 42,\n                \"value_end\": 50,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.414,\n        \"line_data_list\": [\n            {\n                \"line\": \"Password:master/IhqSb1Gg\",\n                \"line_num\": 5,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"\",\n                \"variable\": \"Password\",\n                \"variable_start\": 0,\n                \"variable_end\": 8,\n                \"value\": \"master/IhqSb1Gg\",\n                \"value_start\": 9,\n                \"value_end\": 24,\n                \"entropy\": 3.90689\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.999,\n        \"line_data_list\": [\n            {\n                \"line\": \"ssh gildong.hong@98.76.54.32 mailto:{1} (PW:IhqSb1Gg)\",\n                \"line_num\": 6,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"\",\n                \"variable\": \"PW\",\n                \"variable_start\": 41,\n                \"variable_end\": 43,\n                \"value\": \"IhqSb1Gg\",\n                \"value_start\": 44,\n                \"value_end\": 52,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"ssh gildong.hong@98.76.54.32 mailto:{1} password:IhqSb1Gg\",\n                \"line_num\": 7,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"\",\n                \"variable\": \"password\",\n                \"variable_start\": 40,\n                \"variable_end\": 48,\n                \"value\": \"IhqSb1Gg\",\n                \"value_start\": 49,\n                \"value_end\": 57,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"ssh -P IhqSb1Gg gildong.hong@98.76.54.32 mailto:{1} (password:IhqSb1Gg)\",\n                \"line_num\": 11,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"\",\n                \"variable\": \"password\",\n                \"variable_start\": 53,\n                \"variable_end\": 61,\n                \"value\": \"IhqSb1Gg\",\n                \"value_start\": 62,\n                \"value_end\": 70,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.111,\n        \"line_data_list\": [\n            {\n                \"line\": \"ID/Pass:xxxx:master/IhqSb1Gg,xxxx:master/IhqSb1Gg\",\n                \"line_num\": 13,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"\",\n                \"variable\": \"Pass\",\n                \"variable_start\": 3,\n                \"variable_end\": 7,\n                \"value\": \"xxxx:master/IhqSb1Gg\",\n                \"value_start\": 8,\n                \"value_end\": 28,\n                \"entropy\": 3.92193\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"gildong.hong@98.76.54.32 pwd:IhqSb1Gg\",\n                \"line_num\": 15,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"\",\n                \"variable\": \"pwd\",\n                \"variable_start\": 25,\n                \"variable_end\": 28,\n                \"value\": \"IhqSb1Gg\",\n                \"value_start\": 29,\n                \"value_end\": 37,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.602,\n        \"line_data_list\": [\n            {\n                \"line\": \"\\uacc4\\uc815:master(PW:IhqSb1Gg)\",\n                \"line_num\": 16,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"\",\n                \"variable\": \"PW\",\n                \"variable_start\": 10,\n                \"variable_end\": 12,\n                \"value\": \"IhqSb1Gg\",\n                \"value_start\": 13,\n                \"value_end\": 21,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.999,\n        \"line_data_list\": [\n            {\n                \"line\": \"98.76.54.32(pw:IhqSb1Gg)\",\n                \"line_num\": 17,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"\",\n                \"variable\": \"pw\",\n                \"variable_start\": 12,\n                \"variable_end\": 14,\n                \"value\": \"IhqSb1Gg\",\n                \"value_start\": 15,\n                \"value_end\": 23,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.999,\n        \"line_data_list\": [\n            {\n                \"line\": \"98.76.54.32/pw:IhqSb1Gg\",\n                \"line_num\": 19,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"\",\n                \"variable\": \"pw\",\n                \"variable_start\": 12,\n                \"variable_end\": 14,\n                \"value\": \"IhqSb1Gg\",\n                \"value_start\": 15,\n                \"value_end\": 23,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.998,\n        \"line_data_list\": [\n            {\n                \"line\": \"ID:gildong.hong@example.com mailto:{1}/pw:IhqSb1Gg\",\n                \"line_num\": 20,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"\",\n                \"variable\": \"pw\",\n                \"variable_start\": 39,\n                \"variable_end\": 41,\n                \"value\": \"IhqSb1Gg\",\n                \"value_start\": 42,\n                \"value_end\": 50,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.97,\n        \"line_data_list\": [\n            {\n                \"line\": \"ID:gildong.hong@any.example.com mailto:{1} PWD:IhqSb1Gg\",\n                \"line_num\": 21,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"\",\n                \"variable\": \"PWD\",\n                \"variable_start\": 43,\n                \"variable_end\": 46,\n                \"value\": \"IhqSb1Gg\",\n                \"value_start\": 47,\n                \"value_end\": 55,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"sftp gildong.hong@98.76.54.32 mailto:{1} (pw:IhqSb1Gg)\",\n                \"line_num\": 22,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"\",\n                \"variable\": \"pw\",\n                \"variable_start\": 42,\n                \"variable_end\": 44,\n                \"value\": \"IhqSb1Gg\",\n                \"value_start\": 45,\n                \"value_end\": 53,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"gildong.hong@98.76.54.32 mailto:{1} (pw:IhqSb1Gg)\",\n                \"line_num\": 23,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"\",\n                \"variable\": \"pw\",\n                \"variable_start\": 37,\n                \"variable_end\": 39,\n                \"value\": \"IhqSb1Gg\",\n                \"value_start\": 40,\n                \"value_end\": 48,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.997,\n        \"line_data_list\": [\n            {\n                \"line\": \"-id:gildong.hong@example.com mailto:{1} -pwd:IhqSb1Gg\",\n                \"line_num\": 24,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"\",\n                \"variable\": \"pwd\",\n                \"variable_start\": 41,\n                \"variable_end\": 44,\n                \"value\": \"IhqSb1Gg\",\n                \"value_start\": 45,\n                \"value_end\": 53,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"ssh gildong.hong@98.76.54.32 mailto:{1} (password:IhqSb1Gg)\",\n                \"line_num\": 25,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"\",\n                \"variable\": \"password\",\n                \"variable_start\": 41,\n                \"variable_end\": 49,\n                \"value\": \"IhqSb1Gg\",\n                \"value_start\": 50,\n                \"value_end\": 58,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"id:gildong.hong@example.com mailto:{1} password:IhqSb1Gg\",\n                \"line_num\": 28,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"\",\n                \"variable\": \"password\",\n                \"variable_start\": 39,\n                \"variable_end\": 47,\n                \"value\": \"IhqSb1Gg\",\n                \"value_start\": 48,\n                \"value_end\": 56,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.997,\n        \"line_data_list\": [\n            {\n                \"line\": \"ANY_password,default:IhqSb1Gg\",\n                \"line_num\": 31,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"\",\n                \"variable\": \"ANY_password,default\",\n                \"variable_start\": 0,\n                \"variable_end\": 20,\n                \"value\": \"IhqSb1Gg\",\n                \"value_start\": 21,\n                \"value_end\": 29,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"Secret\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.996,\n        \"line_data_list\": [\n            {\n                \"line\": \"Key(ANYSecret):IhqSb1Gg\",\n                \"line_num\": 32,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"\",\n                \"variable\": \"ANYSecret)\",\n                \"variable_start\": 4,\n                \"variable_end\": 14,\n                \"value\": \"IhqSb1Gg\",\n                \"value_start\": 15,\n                \"value_end\": 23,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.999,\n        \"line_data_list\": [\n            {\n                \"line\": \"98.76.54.32 ANY_PW:IhqSb1Gg\",\n                \"line_num\": 34,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"\",\n                \"variable\": \"ANY_PW\",\n                \"variable_start\": 12,\n                \"variable_end\": 18,\n                \"value\": \"IhqSb1Gg\",\n                \"value_start\": 19,\n                \"value_end\": 27,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.995,\n        \"line_data_list\": [\n            {\n                \"line\": \"98.76.54.32(ID/PW:IhqSb1Gg)\",\n                \"line_num\": 36,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"\",\n                \"variable\": \"PW\",\n                \"variable_start\": 15,\n                \"variable_end\": 17,\n                \"value\": \"IhqSb1Gg\",\n                \"value_start\": 18,\n                \"value_end\": 26,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"gildong.hong@98.76.54.32 (pwd:IhqSb1Gg)\",\n                \"line_num\": 38,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"\",\n                \"variable\": \"pwd\",\n                \"variable_start\": 26,\n                \"variable_end\": 29,\n                \"value\": \"IhqSb1Gg\",\n                \"value_start\": 30,\n                \"value_end\": 38,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.996,\n        \"line_data_list\": [\n            {\n                \"line\": \"password for master:IhqSb1Gg\",\n                \"line_num\": 43,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"\",\n                \"variable\": \"password for master\",\n                \"variable_start\": 0,\n                \"variable_end\": 19,\n                \"value\": \"IhqSb1Gg\",\n                \"value_start\": 20,\n                \"value_end\": 28,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.116,\n        \"line_data_list\": [\n            {\n                \"line\": \"ID/Pass:xxxx:master/IhqSb1Gg xxxx:master/IhqSb1Gg\",\n                \"line_num\": 45,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"\",\n                \"variable\": \"Pass\",\n                \"variable_start\": 3,\n                \"variable_end\": 7,\n                \"value\": \"xxxx:master/IhqSb1Gg\",\n                \"value_start\": 8,\n                \"value_end\": 28,\n                \"entropy\": 3.92193\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.992,\n        \"line_data_list\": [\n            {\n                \"line\": \"id:xxxx(ANYpw:IhqSb1Ga)\",\n                \"line_num\": 46,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"\",\n                \"variable\": \"ANYpw\",\n                \"variable_start\": 8,\n                \"variable_end\": 13,\n                \"value\": \"IhqSb1Ga\",\n                \"value_start\": 14,\n                \"value_end\": 22,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"gildong.hong@98.76.54.32,pw:IhqSb1Gg\",\n                \"line_num\": 47,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"\",\n                \"variable\": \"pw\",\n                \"variable_start\": 25,\n                \"variable_end\": 27,\n                \"value\": \"IhqSb1Gg\",\n                \"value_start\": 28,\n                \"value_end\": 36,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.998,\n        \"line_data_list\": [\n            {\n                \"line\": \"98.76.54.32:xxxx(PW:IhqSb1Gg)\",\n                \"line_num\": 51,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"\",\n                \"variable\": \"PW\",\n                \"variable_start\": 17,\n                \"variable_end\": 19,\n                \"value\": \"IhqSb1Gg\",\n                \"value_start\": 20,\n                \"value_end\": 28,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.286,\n        \"line_data_list\": [\n            {\n                \"line\": \"\\uacc4\\uc815/Password-xxxx:master/IhqSb1Gg\",\n                \"line_num\": 55,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"\",\n                \"variable\": \"Password-xxxx\",\n                \"variable_start\": 3,\n                \"variable_end\": 16,\n                \"value\": \"master/IhqSb1Gg\",\n                \"value_start\": 17,\n                \"value_end\": 32,\n                \"entropy\": 3.90689\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.999,\n        \"line_data_list\": [\n            {\n                \"line\": \"gildong.hong@98.76.54.32 PW:IhqSb1Gg\",\n                \"line_num\": 56,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"\",\n                \"variable\": \"PW\",\n                \"variable_start\": 25,\n                \"variable_end\": 27,\n                \"value\": \"IhqSb1Gg\",\n                \"value_start\": 28,\n                \"value_end\": 36,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.999,\n        \"line_data_list\": [\n            {\n                \"line\": \"ANY_user:xxxx ANY_pwd:IhqSb1Gg\",\n                \"line_num\": 61,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"\",\n                \"variable\": \"ANY_pwd\",\n                \"variable_start\": 14,\n                \"variable_end\": 21,\n                \"value\": \"IhqSb1Gg\",\n                \"value_start\": 22,\n                \"value_end\": 30,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"Acount name:xxxx Initial Password:IhqSb1Gg\",\n                \"line_num\": 62,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"\",\n                \"variable\": \"Password\",\n                \"variable_start\": 25,\n                \"variable_end\": 33,\n                \"value\": \"IhqSb1Gg\",\n                \"value_start\": 34,\n                \"value_end\": 42,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.997,\n        \"line_data_list\": [\n            {\n                \"line\": \"Access wifi:xxxx(PW:IhqSb1Gg)\",\n                \"line_num\": 63,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"\",\n                \"variable\": \"PW\",\n                \"variable_start\": 17,\n                \"variable_end\": 19,\n                \"value\": \"IhqSb1Gg\",\n                \"value_start\": 20,\n                \"value_end\": 28,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"-User:master -PasswordANY:IhqSb1Gg\",\n                \"line_num\": 66,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"\",\n                \"variable\": \"PasswordANY\",\n                \"variable_start\": 14,\n                \"variable_end\": 25,\n                \"value\": \"IhqSb1Gg\",\n                \"value_start\": 26,\n                \"value_end\": 34,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.052,\n        \"line_data_list\": [\n            {\n                \"line\": \"98.76.54.32(ID/PW:master/IhqSb1Gg)\",\n                \"line_num\": 70,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"\",\n                \"variable\": \"PW\",\n                \"variable_start\": 15,\n                \"variable_end\": 17,\n                \"value\": \"master/IhqSb1Gg\",\n                \"value_start\": 18,\n                \"value_end\": 33,\n                \"entropy\": 3.90689\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.012,\n        \"line_data_list\": [\n            {\n                \"line\": \"(ID&PWD):master/IhqSb1Gg\",\n                \"line_num\": 71,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"\",\n                \"variable\": \"PWD)\",\n                \"variable_start\": 4,\n                \"variable_end\": 8,\n                \"value\": \"master/IhqSb1Gg\",\n                \"value_start\": 9,\n                \"value_end\": 24,\n                \"entropy\": 3.90689\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"master@98.76.54.32(pw:IhqSb1Gg)\",\n                \"line_num\": 73,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"\",\n                \"variable\": \"pw\",\n                \"variable_start\": 19,\n                \"variable_end\": 21,\n                \"value\": \"IhqSb1Gg\",\n                \"value_start\": 22,\n                \"value_end\": 30,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.999,\n        \"line_data_list\": [\n            {\n                \"line\": \"master@98.76.54.32,PW:IhqSb1Gg\",\n                \"line_num\": 74,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"\",\n                \"variable\": \"PW\",\n                \"variable_start\": 19,\n                \"variable_end\": 21,\n                \"value\": \"IhqSb1Gg\",\n                \"value_start\": 22,\n                \"value_end\": 30,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"98.76.54.32 pw:IhqSb1Gg\",\n                \"line_num\": 75,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"\",\n                \"variable\": \"pw\",\n                \"variable_start\": 12,\n                \"variable_end\": 14,\n                \"value\": \"IhqSb1Gg\",\n                \"value_start\": 15,\n                \"value_end\": 23,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.996,\n        \"line_data_list\": [\n            {\n                \"line\": \"config:xxxx,PW:IhqSb1Gg\",\n                \"line_num\": 78,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"\",\n                \"variable\": \"PW\",\n                \"variable_start\": 12,\n                \"variable_end\": 14,\n                \"value\": \"IhqSb1Gg\",\n                \"value_start\": 15,\n                \"value_end\": 23,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"scp gildong.hong@98.76.54.32 mailto:{1} pw:IhqSb1Gg\",\n                \"line_num\": 82,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"\",\n                \"variable\": \"pw\",\n                \"variable_start\": 40,\n                \"variable_end\": 42,\n                \"value\": \"IhqSb1Gg\",\n                \"value_start\": 43,\n                \"value_end\": 51,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"id:gildong.hong@xxx.com mailto:{1} pw:IhqSb1Gg\",\n                \"line_num\": 83,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"\",\n                \"variable\": \"pw\",\n                \"variable_start\": 35,\n                \"variable_end\": 37,\n                \"value\": \"IhqSb1Gg\",\n                \"value_start\": 38,\n                \"value_end\": 46,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"gildong.hong@98.76.54.32 mailto:{1} pw:IhqSb1Gg\",\n                \"line_num\": 84,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"\",\n                \"variable\": \"pw\",\n                \"variable_start\": 36,\n                \"variable_end\": 38,\n                \"value\": \"IhqSb1Gg\",\n                \"value_start\": 39,\n                \"value_end\": 47,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"ssh gildong.hong@98.76.54.32 mailto:{1},pw:IhqSb1Gg\",\n                \"line_num\": 85,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"\",\n                \"variable\": \"pw\",\n                \"variable_start\": 40,\n                \"variable_end\": 42,\n                \"value\": \"IhqSb1Gg\",\n                \"value_start\": 43,\n                \"value_end\": 51,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"(ssh gildong.hong@98.76.54.32 mailto{1}) pwd:IhqSb1Gg\",\n                \"line_num\": 87,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"\",\n                \"variable\": \"pwd\",\n                \"variable_start\": 41,\n                \"variable_end\": 44,\n                \"value\": \"IhqSb1Gg\",\n                \"value_start\": 45,\n                \"value_end\": 53,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"ssh gildong.hong@98.76.54.32 mailto:{1}, pw:IhqSb1Gg\",\n                \"line_num\": 90,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"\",\n                \"variable\": \"pw\",\n                \"variable_start\": 41,\n                \"variable_end\": 43,\n                \"value\": \"IhqSb1Gg\",\n                \"value_start\": 44,\n                \"value_end\": 52,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"ssh gildong.hong@98.76.54.32 mailto:{1} (pwd:IhqSb1Gg)\",\n                \"line_num\": 93,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"\",\n                \"variable\": \"pwd\",\n                \"variable_start\": 41,\n                \"variable_end\": 44,\n                \"value\": \"IhqSb1Gg\",\n                \"value_start\": 45,\n                \"value_end\": 53,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"gildong.hong@98.76.54.32 mailto:{1} (password:IhqSb1Gg)\",\n                \"line_num\": 94,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"\",\n                \"variable\": \"password\",\n                \"variable_start\": 37,\n                \"variable_end\": 45,\n                \"value\": \"IhqSb1Gg\",\n                \"value_start\": 46,\n                \"value_end\": 54,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"gildong.hong@98.76.54.32 mailto:{1} Password:IhqSb1Gg\",\n                \"line_num\": 96,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"\",\n                \"variable\": \"Password\",\n                \"variable_start\": 36,\n                \"variable_end\": 44,\n                \"value\": \"IhqSb1Gg\",\n                \"value_start\": 45,\n                \"value_end\": 53,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"gildong.hong@98.76.54.32 mailto:{1} (pass:IhqSb1Gg)\",\n                \"line_num\": 97,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"\",\n                \"variable\": \"pass\",\n                \"variable_start\": 37,\n                \"variable_end\": 41,\n                \"value\": \"IhqSb1Gg\",\n                \"value_start\": 42,\n                \"value_end\": 50,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"ssh gildong.hong@98.76.54.32 mailto:{1} pw:IhqSb1Gg\",\n                \"line_num\": 100,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"\",\n                \"variable\": \"pw\",\n                \"variable_start\": 40,\n                \"variable_end\": 42,\n                \"value\": \"IhqSb1Gg\",\n                \"value_start\": 43,\n                \"value_end\": 51,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"ssh gildong.hong@98.76.54.32 mailto:{1} pass:IhqSb1Gg\",\n                \"line_num\": 101,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"\",\n                \"variable\": \"pass\",\n                \"variable_start\": 40,\n                \"variable_end\": 44,\n                \"value\": \"IhqSb1Gg\",\n                \"value_start\": 45,\n                \"value_end\": 53,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"id:gildong.hong@xxx.com mailto:{1}/password:IhqSb1Gg\",\n                \"line_num\": 102,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"\",\n                \"variable\": \"password\",\n                \"variable_start\": 35,\n                \"variable_end\": 43,\n                \"value\": \"IhqSb1Gg\",\n                \"value_start\": 44,\n                \"value_end\": 52,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"ssh gildong.hong@98.76.54.32 mailto:{1}/password:IhqSb1Gg\",\n                \"line_num\": 104,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"\",\n                \"variable\": \"password\",\n                \"variable_start\": 40,\n                \"variable_end\": 48,\n                \"value\": \"IhqSb1Gg\",\n                \"value_start\": 49,\n                \"value_end\": 57,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.998,\n        \"line_data_list\": [\n            {\n                \"line\": \"-ANYID:gildong.hong@example.com mailto:{1} -pw:IhqSb1Gg\",\n                \"line_num\": 105,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"\",\n                \"variable\": \"pw\",\n                \"variable_start\": 44,\n                \"variable_end\": 46,\n                \"value\": \"IhqSb1Gg\",\n                \"value_start\": 47,\n                \"value_end\": 55,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"ID:gildong.hong@xxxx.net mailto:{1} pw:IhqSb1Gg\",\n                \"line_num\": 106,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"\",\n                \"variable\": \"pw\",\n                \"variable_start\": 36,\n                \"variable_end\": 38,\n                \"value\": \"IhqSb1Gg\",\n                \"value_start\": 39,\n                \"value_end\": 47,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.998,\n        \"line_data_list\": [\n            {\n                \"line\": \"http://98.76.54.32:xxx(pw:IhqSb1Gg)\",\n                \"line_num\": 108,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"\",\n                \"variable\": \"pw\",\n                \"variable_start\": 23,\n                \"variable_end\": 25,\n                \"value\": \"IhqSb1Gg\",\n                \"value_start\": 26,\n                \"value_end\": 34,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"Docker Access Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"POSITIVE: dckr_pat_mcF-hLK_JoBxXUNJy1kU7-WSbk0\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/docker\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"dckr_pat_mcF-hLK_JoBxXUNJy1kU7-WSbk0\",\n                \"value_start\": 10,\n                \"value_end\": 46,\n                \"entropy\": 4.68354\n            }\n        ]\n    },\n    {\n        \"rule\": \"Docker Access Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"NEGATIVE: dckr_pat_EXAMPLE-EXAMPLE-EXAMPLE-123\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/docker\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"dckr_pat_EXAMPLE-EXAMPLE-EXAMPLE-123\",\n                \"value_start\": 10,\n                \"value_end\": 46,\n                \"entropy\": 3.89106\n            }\n        ]\n    },\n    {\n        \"rule\": \"Docker Access Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"POSITIVE: dckr_oat_fXUgJy1nU2WSbk_0vH2S-mcF-hLKJoB-\",\n                \"line_num\": 3,\n                \"path\": \"./tests/samples/docker\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"dckr_oat_fXUgJy1nU2WSbk_0vH2S-mcF-hLKJoB-\",\n                \"value_start\": 10,\n                \"value_end\": 51,\n                \"entropy\": 4.78414\n            }\n        ]\n    },\n    {\n        \"rule\": \"Docker Swarm Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"POSITIVE: SWMTKN-1-edmua5ub12inlget8wkvz35kckxkeyznuvc49brsy84wgfssrw-otjll8wdy3yikfrksskvqzqh1\",\n                \"line_num\": 4,\n                \"path\": \"./tests/samples/docker\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"SWMTKN-1-edmua5ub12inlget8wkvz35kckxkeyznuvc49brsy84wgfssrw-otjll8wdy3yikfrksskvqzqh1\",\n                \"value_start\": 10,\n                \"value_end\": 95,\n                \"entropy\": 5.06757\n            }\n        ]\n    },\n    {\n        \"rule\": \"Docker Swarm Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"POSITIVE: SWMKEY-1-fySn8TY4w5lKcWcJPIpKufejh9hxx5KYwx6XZigx3Q4\",\n                \"line_num\": 6,\n                \"path\": \"./tests/samples/docker\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"SWMKEY-1-fySn8TY4w5lKcWcJPIpKufejh9hxx5KYwx6XZigx3Q4\",\n                \"value_start\": 10,\n                \"value_end\": 62,\n                \"entropy\": 4.95515\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.011,\n        \"line_data_list\": [\n            {\n                \"line\": \"        <mxCell id=\\\"ip0j-1\\\" value=\\\"&lt;div style=&quot;forced-color-adjust: none; margin: 0px; padding: 0px; color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: left; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; white-space: normal; background-color: rgb(255, 255, 255); text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial;&quot;&gt;- email: String&lt;/div&gt;&lt;div style=&quot;forced-color-adjust: none; margin: 0px; padding: 0px; color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: left; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; white-space: normal; background-color: rgb(255, 255, 255); text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial;&quot;&gt;- password: String&lt;/div&gt;&lt;div style=&quot;forced-color-adjust: none; margin: 0px; padding: 0px; color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: left; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; white-space: normal; background-color: rgb(255, 255, 255); text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial;&quot;&gt;- hash: String&lt;/div&gt;&lt;div style=&quot;forced-color-adjust: none; margin: 0px; padding: 0px; color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: left; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; white-space: normal; background-color: rgb(255, 255, 255); text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial;&quot;&gt;- salt: String&lt;/div&gt;\\\" style=\\\"rounded=0;whiteSpace=wrap;html=1;\\\" parent=\\\"1\\\" vertex=\\\"1\\\">\",\n                \"line_num\": 7,\n                \"path\": \"./tests/samples/drawio\",\n                \"info\": \"\",\n                \"variable\": \"password\",\n                \"variable_start\": 1178,\n                \"variable_end\": 1186,\n                \"value\": \"String&lt\",\n                \"value_start\": 1188,\n                \"value_end\": 1197,\n                \"entropy\": 2.9477\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.999,\n        \"line_data_list\": [\n            {\n                \"line\": \"        <mxCell id=\\\"ip0j-2\\\" value=\\\"&lt;div&gt;password is NsIdksKJdj&lt;/div&gt;&lt;div&gt;token is bace4d19-fa7e-b2e4-1afe-9129474bcd81&lt;br&gt;Password: &quot;Dw7^&amp;amp;nd&amp;lt;dj&quot;&lt;br&gt;&lt;/div&gt;\\\" style=\\\"rounded=0;whiteSpace=wrap;html=1;\\\" parent=\\\"1\\\" vertex=\\\"1\\\">\",\n                \"line_num\": 13,\n                \"path\": \"./tests/samples/drawio\",\n                \"info\": \"\",\n                \"variable\": \"Password\",\n                \"variable_start\": 146,\n                \"variable_end\": 154,\n                \"value\": \"Dw7^&amp;amp;nd&amp;lt;dj\",\n                \"value_start\": 162,\n                \"value_end\": 187,\n                \"entropy\": 3.59327\n            }\n        ]\n    },\n    {\n        \"rule\": \"UUID\",\n        \"severity\": \"info\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"        <mxCell id=\\\"ip0j-2\\\" value=\\\"&lt;div&gt;password is NsIdksKJdj&lt;/div&gt;&lt;div&gt;token is bace4d19-fa7e-b2e4-1afe-9129474bcd81&lt;br&gt;Password: &quot;Dw7^&amp;amp;nd&amp;lt;dj&quot;&lt;br&gt;&lt;/div&gt;\\\" style=\\\"rounded=0;whiteSpace=wrap;html=1;\\\" parent=\\\"1\\\" vertex=\\\"1\\\">\",\n                \"line_num\": 13,\n                \"path\": \"./tests/samples/drawio\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"bace4d19-fa7e-b2e4-1afe-9129474bcd81\",\n                \"value_start\": 100,\n                \"value_end\": 136,\n                \"entropy\": 3.60702\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.991,\n        \"line_data_list\": [\n            {\n                \"line\": \"        <mxCell id=\\\"REcl-1\\\" value=\\\"&lt;div&gt;textpassword: Df34D&amp;lt;345&amp;amp;&amp;gt;gf&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;\\\" style=\\\"text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;\\\" parent=\\\"1\\\" vertex=\\\"1\\\">\",\n                \"line_num\": 16,\n                \"path\": \"./tests/samples/drawio\",\n                \"info\": \"\",\n                \"variable\": \"textpassword\",\n                \"variable_start\": 46,\n                \"variable_end\": 58,\n                \"value\": \"Df34D&amp\",\n                \"value_start\": 60,\n                \"value_end\": 69,\n                \"entropy\": 2.9477\n            }\n        ]\n    },\n    {\n        \"rule\": \"Secret\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"        <mxCell id=\\\"REcl-7\\\" value=\\\"secret: &amp;gt;4&amp;lt;563^%$&amp;amp;5w\\\" style=\\\"text;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;spacingLeft=4;spacingRight=4;overflow=hidden;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rotatable=0;whiteSpace=wrap;html=1;\\\" parent=\\\"REcl-5\\\" vertex=\\\"1\\\">\",\n                \"line_num\": 31,\n                \"path\": \"./tests/samples/drawio\",\n                \"info\": \"\",\n                \"variable\": \"secret\",\n                \"variable_start\": 35,\n                \"variable_end\": 41,\n                \"value\": \"&amp\",\n                \"value_start\": 43,\n                \"value_end\": 47,\n                \"entropy\": 2.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.998,\n        \"line_data_list\": [\n            {\n                \"line\": \"        <mxCell id=\\\"REcl-6\\\" value=\\\"pass: Dsfgh%$d&amp;lt;&amp;gt;s&amp;amp;\\\" style=\\\"text;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;spacingLeft=4;spacingRight=4;overflow=hidden;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rotatable=0;whiteSpace=wrap;html=1;\\\" parent=\\\"REcl-5\\\" vertex=\\\"1\\\">\",\n                \"line_num\": 34,\n                \"path\": \"./tests/samples/drawio\",\n                \"info\": \"\",\n                \"variable\": \"pass\",\n                \"variable_start\": 35,\n                \"variable_end\": 39,\n                \"value\": \"Dsfgh%$d&amp\",\n                \"value_start\": 41,\n                \"value_end\": 53,\n                \"entropy\": 3.58496\n            }\n        ]\n    },\n    {\n        \"rule\": \"UUID\",\n        \"severity\": \"info\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"        <mxCell id=\\\"jC_dE-1\\\" value=\\\"page2 secret is ce49dba1-e4fe-b2a7-4ffa-132bcd819474\\\" style=\\\"text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;\\\" vertex=\\\"1\\\" parent=\\\"1\\\">\",\n                \"line_num\": 45,\n                \"path\": \"./tests/samples/drawio\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"ce49dba1-e4fe-b2a7-4ffa-132bcd819474\",\n                \"value_start\": 52,\n                \"value_end\": 88,\n                \"entropy\": 3.68703\n            }\n        ]\n    },\n    {\n        \"rule\": \"Dropbox API secret (long term)\",\n        \"severity\": \"high\",\n        \"confidence\": \"weak\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"var g = '7rBynGo0b1cAAAAAAAAAAc72L3T6rQK51mB5a06ijnwRG91deTxvSqdZNAlxq8pZ'\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/dropbox_api_secret_long_term\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"7rBynGo0b1cAAAAAAAAAAc72L3T6rQK51mB5a06ijnwRG91deTxvSqdZNAlxq8pZ\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 4.89362\n            }\n        ]\n    },\n    {\n        \"rule\": \"Dropbox App secret\",\n        \"severity\": \"info\",\n        \"confidence\": \"weak\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"var app_unique_val_s = 'wpv1jq9xwanbn3n';\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/dropbox_app_secret\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"wpv1jq9xwanbn3n\",\n                \"value_start\": 24,\n                \"value_end\": 39,\n                \"entropy\": 3.45656\n            }\n        ]\n    },\n    {\n        \"rule\": \"Dropbox OAuth2 API Access Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"var dropbox = 'sl.BdmpmC82mhhySscKk2oQGyE5l--8LdAQftLTXVGQhP39Z8FtAK1BhePhyevurA-Elt7ToIr6OpwzKAYE7RBqpu6VVyQU5WlCTL_Q7N4gElXahaWou6aPpOIwgGCIOq9aeC3YFoc';\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/dropbox_oauth_token\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"sl.BdmpmC82mhhySscKk2oQGyE5l--8LdAQftLTXVGQhP39Z8FtAK1BhePhyevurA-Elt7ToIr6OpwzKAYE7RBqpu6VVyQU5WlCTL_Q7N4gElXahaWou6aPpOIwgGCIOq9aeC3YFoc\",\n                \"value_start\": 15,\n                \"value_end\": 153,\n                \"entropy\": 5.61894\n            }\n        ]\n    },\n    {\n        \"rule\": \"Dynatrace API Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"dt0c01.ST2EY72KQINMH574WMNVI7YN.G3DFPBEJYMOD1DAEX454M7YWBUVEFOWKPRVMWFASS64NFH52PX6BNDVFFM572RZM\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/dynatrace_api.hs\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"dt0c01.ST2EY72KQINMH574WMNVI7YN.G3DFPBEJYMOD1DAEX454M7YWBUVEFOWKPRVMWFASS64NFH52PX6BNDVFFM572RZM\",\n                \"value_start\": 0,\n                \"value_end\": 96,\n                \"entropy\": 4.93241\n            }\n        ]\n    },\n    {\n        \"rule\": \"Facebook Access Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"GI_REO_GI_FACEBOOK_TOKEN = \\\"EAACEb00Kse0BAlGy7KeQ5YnaCEd09Eose0cBAlGy7KeQ5Yna9CoDsup39tiYdoQ4jH9Coup39tiYdWoQ4jHFZD\\\"\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/facebook_key\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"EAACEb00Kse0BAlGy7KeQ5YnaCEd09Eose0cBAlGy7KeQ5Yna9CoDsup39tiYdoQ4jH9Coup39tiYdWoQ4jHFZD\",\n                \"value_start\": 28,\n                \"value_end\": 115,\n                \"entropy\": 4.93612\n            }\n        ]\n    },\n    {\n        \"rule\": \"Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.964,\n        \"line_data_list\": [\n            {\n                \"line\": \"GI_REO_GI_FACEBOOK_TOKEN = \\\"EAACEb00Kse0BAlGy7KeQ5YnaCEd09Eose0cBAlGy7KeQ5Yna9CoDsup39tiYdoQ4jH9Coup39tiYdWoQ4jHFZD\\\"\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/facebook_key\",\n                \"info\": \"\",\n                \"variable\": \"GI_REO_GI_FACEBOOK_TOKEN\",\n                \"variable_start\": 0,\n                \"variable_end\": 24,\n                \"value\": \"EAACEb00Kse0BAlGy7KeQ5YnaCEd09Eose0cBAlGy7KeQ5Yna9CoDsup39tiYdoQ4jH9Coup39tiYdWoQ4jHFZD\",\n                \"value_start\": 28,\n                \"value_end\": 115,\n                \"entropy\": 4.93612\n            }\n        ]\n    },\n    {\n        \"rule\": \"Facebook App Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"1527194624358273|qbBf2-fdB9zZpqLA0_2nNzZDw2M\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/facebook_key\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"1527194624358273|qbBf2-fdB9zZpqLA0_2nNzZDw2M\",\n                \"value_start\": 0,\n                \"value_end\": 44,\n                \"entropy\": 4.60694\n            }\n        ]\n    },\n    {\n        \"rule\": \"Figma Personal Access Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"figd__fU7rxH-KUAmCv5vI78kKlnEF6bne_yvSvPLz3JO\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/figma\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"figd__fU7rxH-KUAmCv5vI78kKlnEF6bne_yvSvPLz3JO\",\n                \"value_start\": 0,\n                \"value_end\": 45,\n                \"entropy\": 4.98619\n            }\n        ]\n    },\n    {\n        \"rule\": \"Figma Personal Access Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"figd_h65Ugiu76WD3xf233a6KAmo9ZmbWNnNrny9Q6IHl\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/figma\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"figd_h65Ugiu76WD3xf233a6KAmo9ZmbWNnNrny9Q6IHl\",\n                \"value_start\": 0,\n                \"value_end\": 45,\n                \"entropy\": 4.85286\n            }\n        ]\n    },\n    {\n        \"rule\": \"Firebase Domain\",\n        \"severity\": \"info\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"test-app-domain-42.firebaseapp.com\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/firebase_domain\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"test-app-domain-42.firebaseapp.com\",\n                \"value_start\": 0,\n                \"value_end\": 34,\n                \"entropy\": 3.98423\n            }\n        ]\n    },\n    {\n        \"rule\": \"Firebase Domain\",\n        \"severity\": \"info\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"test2.io.firebaseio.com\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/firebase_domain\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"test2.io.firebaseio.com\",\n                \"value_start\": 0,\n                \"value_end\": 23,\n                \"entropy\": 3.52271\n            }\n        ]\n    },\n    {\n        \"rule\": \"Github Classic Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"ghp_00000000000000000000000000000004WZ4EQ # classic\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/github_classic_token\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"ghp_00000000000000000000000000000004WZ4EQ\",\n                \"value_start\": 0,\n                \"value_end\": 41,\n                \"entropy\": 1.56292\n            }\n        ]\n    },\n    {\n        \"rule\": \"Github Fine-granted Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"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\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/github_fine_granted_token\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"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\",\n                \"value_start\": 0,\n                \"value_end\": 93,\n                \"entropy\": 5.41519\n            }\n        ]\n    },\n    {\n        \"rule\": \"Gitlab Prefix Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"glpat-8d5ri2n9g85LAnC9YW85.01.cgpAsnEmP # Personal access token, Impersonation token, Project access token, Group access token\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/gitlab_prefix_token\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"glpat-8d5ri2n9g85LAnC9YW85.01.cgpAsnEmP\",\n                \"value_start\": 0,\n                \"value_end\": 39,\n                \"entropy\": 4.59259\n            }\n        ]\n    },\n    {\n        \"rule\": \"Gitlab Prefix Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"gloas-7fc1974b38580e6ceca8c077863cd5e88745895dfcbe1ae3c36eab9c498103dc # OAuth Application Secret\",\n                \"line_num\": 3,\n                \"path\": \"./tests/samples/gitlab_prefix_token\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"gloas-7fc1974b38580e6ceca8c077863cd5e88745895dfcbe1ae3c36eab9c498103dc\",\n                \"value_start\": 0,\n                \"value_end\": 70,\n                \"entropy\": 4.0466\n            }\n        ]\n    },\n    {\n        \"rule\": \"Gitlab Prefix Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"gldt-9BeUoeWu2V9uUS3uLoMy # Deploy token\",\n                \"line_num\": 4,\n                \"path\": \"./tests/samples/gitlab_prefix_token\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"gldt-9BeUoeWu2V9uUS3uLoMy\",\n                \"value_start\": 0,\n                \"value_end\": 25,\n                \"entropy\": 4.13366\n            }\n        ]\n    },\n    {\n        \"rule\": \"Gitlab Prefix Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"glrt-2CR8_eVxiio-1QmzPZwa # Runner authentication token\",\n                \"line_num\": 5,\n                \"path\": \"./tests/samples/gitlab_prefix_token\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"glrt-2CR8_eVxiio-1QmzPZwa\",\n                \"value_start\": 0,\n                \"value_end\": 25,\n                \"entropy\": 4.48386\n            }\n        ]\n    },\n    {\n        \"rule\": \"Gitlab Prefix Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"glcbt-1375_cgpAsnEmP-79kcfRLyK_\",\n                \"line_num\": 6,\n                \"path\": \"./tests/samples/gitlab_prefix_token\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"glcbt-1375_cgpAsnEmP-79kcfRLyK_\",\n                \"value_start\": 0,\n                \"value_end\": 31,\n                \"entropy\": 4.54275\n            }\n        ]\n    },\n    {\n        \"rule\": \"Gitlab Prefix Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"glcbt-0_c1k_AsgyRp4mP-Kcn8fL # CI/CD Job token\",\n                \"line_num\": 7,\n                \"path\": \"./tests/samples/gitlab_prefix_token\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"glcbt-0_c1k_AsgyRp4mP-Kcn8fL\",\n                \"value_start\": 0,\n                \"value_end\": 28,\n                \"entropy\": 4.42325\n            }\n        ]\n    },\n    {\n        \"rule\": \"Gitlab Prefix Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"glptt-33276248c9748113e978392e5c074b7f974f8683 # Trigger token\",\n                \"line_num\": 8,\n                \"path\": \"./tests/samples/gitlab_prefix_token\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"glptt-33276248c9748113e978392e5c074b7f974f8683\",\n                \"value_start\": 0,\n                \"value_end\": 46,\n                \"entropy\": 3.96956\n            }\n        ]\n    },\n    {\n        \"rule\": \"Gitlab Prefix Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"glft-Aafqn5A31G-2VipZMh28 # Feed token\",\n                \"line_num\": 9,\n                \"path\": \"./tests/samples/gitlab_prefix_token\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"glft-Aafqn5A31G-2VipZMh28\",\n                \"value_start\": 0,\n                \"value_end\": 25,\n                \"entropy\": 4.32386\n            }\n        ]\n    },\n    {\n        \"rule\": \"Gitlab Prefix Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"glimt-1jpqzsnw2n71om0r9kgt06os3 # Incoming mail token\",\n                \"line_num\": 10,\n                \"path\": \"./tests/samples/gitlab_prefix_token\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"glimt-1jpqzsnw2n71om0r9kgt06os3\",\n                \"value_start\": 0,\n                \"value_end\": 31,\n                \"entropy\": 4.43807\n            }\n        ]\n    },\n    {\n        \"rule\": \"Gitlab Prefix Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"glagent-ZQmgbRr-Ydu5YehnXCGiiSLxjd53EkFnYapS7A4TwyNE8Y2XVg # GitLab agent for Kubernetes token\",\n                \"line_num\": 11,\n                \"path\": \"./tests/samples/gitlab_prefix_token\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"glagent-ZQmgbRr-Ydu5YehnXCGiiSLxjd53EkFnYapS7A4TwyNE8Y2XVg\",\n                \"value_start\": 0,\n                \"value_end\": 58,\n                \"entropy\": 5.18979\n            }\n        ]\n    },\n    {\n        \"rule\": \"Gitlab Prefix Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"_gitlab_session=8d2a78c080a3af1e6a4677be474432f2 # GitLab session cookies\",\n                \"line_num\": 12,\n                \"path\": \"./tests/samples/gitlab_prefix_token\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"_gitlab_session=8d2a78c080a3af1e6a4677be474432f2\",\n                \"value_start\": 0,\n                \"value_end\": 48,\n                \"entropy\": 4.32185\n            }\n        ]\n    },\n    {\n        \"rule\": \"Gitlab Prefix Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"glsoat-971om0ecn5A386r9k481 # SCIM Tokens\",\n                \"line_num\": 13,\n                \"path\": \"./tests/samples/gitlab_prefix_token\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"glsoat-971om0ecn5A386r9k481\",\n                \"value_start\": 0,\n                \"value_end\": 27,\n                \"entropy\": 4.45859\n            }\n        ]\n    },\n    {\n        \"rule\": \"Gitlab Prefix Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"glffct-AnRWYdo3Si_Xm2Q6n7zu # Feature Flags Client token\",\n                \"line_num\": 14,\n                \"path\": \"./tests/samples/gitlab_prefix_token\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"glffct-AnRWYdo3Si_Xm2Q6n7zu\",\n                \"value_start\": 0,\n                \"value_end\": 27,\n                \"entropy\": 4.60674\n            }\n        ]\n    },\n    {\n        \"rule\": \"Gitlab Prefix Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"glrtr-KZX7Mizo7RYFKh2JScz6aeqZ3WG8nxujE21QpZVIr # Registration runner token\",\n                \"line_num\": 15,\n                \"path\": \"./tests/samples/gitlab_prefix_token\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"glrtr-KZX7Mizo7RYFKh2JScz6aeqZ3WG8nxujE21QpZVIr\",\n                \"value_start\": 0,\n                \"value_end\": 47,\n                \"entropy\": 5.18204\n            }\n        ]\n    },\n    {\n        \"rule\": \"Gitlab Prefix Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"glwt-G9dr9LJjGiSfBdxzDVyHi7vSdDcAftOmJ # Workspace token\",\n                \"line_num\": 16,\n                \"path\": \"./tests/samples/gitlab_prefix_token\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"glwt-G9dr9LJjGiSfBdxzDVyHi7vSdDcAftOmJ\",\n                \"value_start\": 0,\n                \"value_end\": 38,\n                \"entropy\": 4.70175\n            }\n        ]\n    },\n    {\n        \"rule\": \"Gitlab Prefix Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"GR1348941jG6xeSsmN8DFVKoyBYu2 # Runner registration token\",\n                \"line_num\": 18,\n                \"path\": \"./tests/samples/gitlab_prefix_token\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"GR1348941jG6xeSsmN8DFVKoyBYu2\",\n                \"value_start\": 0,\n                \"value_end\": 29,\n                \"entropy\": 4.58212\n            }\n        ]\n    },\n    {\n        \"rule\": \"Google API Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"AIzaGiReoG-Cr0ckleCr0ckle12315618_12315 # Google API Key\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/google_creds\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"AIzaGiReoG-Cr0ckleCr0ckle12315618_12315\",\n                \"value_start\": 0,\n                \"value_end\": 39,\n                \"entropy\": 4.35298\n            }\n        ]\n    },\n    {\n        \"rule\": \"Google OAuth Secret\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"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 # Google OAuth Secret\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/google_creds\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"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\",\n                \"value_start\": 0,\n                \"value_end\": 35,\n                \"entropy\": 4.67214\n            }\n        ]\n    },\n    {\n        \"rule\": \"Google OAuth Access Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"ya29.zmZDrADaFxE_IS6fl4sbDxCpH-ltO2BoHEwXOglsXbgd_S # Google OAuth Access Token\",\n                \"line_num\": 3,\n                \"path\": \"./tests/samples/google_creds\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"ya29.zmZDrADaFxE_IS6fl4sbDxCpH-ltO2BoHEwXOglsXbgd_S\",\n                \"value_start\": 0,\n                \"value_end\": 51,\n                \"entropy\": 5.01537\n            }\n        ]\n    },\n    {\n        \"rule\": \"Google OAuth Refresh Token\",\n        \"severity\": \"medium\",\n        \"confidence\": \"weak\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"1//0T4eRe15N0tT4Et0kEHY0U4Rel0Ok1ng4-hPyg7SWC7tZ1WE5vZvtCwqrJF9rLsyiKFeDGT_0ZHafDhc4-Y2qij02mClU1InwQ_ # Google OAuth Refresh Token\",\n                \"line_num\": 4,\n                \"path\": \"./tests/samples/google_creds\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"1//0T4eRe15N0tT4Et0kEHY0U4Rel0Ok1ng4-hPyg7SWC7tZ1WE5vZvtCwqrJF9rLsyiKFeDGT_0ZHafDhc4-Y2qij02mClU1InwQ_\",\n                \"value_start\": 0,\n                \"value_end\": 102,\n                \"entropy\": 5.43821\n            }\n        ]\n    },\n    {\n        \"rule\": \"Google Multi\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"194206074328-qp89pdv6fi35vsi71258g1eh31q6h7c3.apps.googleusercontent.com\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/google_multi\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"194206074328-qp89pdv6fi35vsi71258g1eh31q6h7c3.apps.googleusercontent.com\",\n                \"value_start\": 0,\n                \"value_end\": 72,\n                \"entropy\": 4.80827\n            },\n            {\n                \"line\": \"4L2QMyTm6Rr0o46ytGiReoG1\",\n                \"line_num\": 4,\n                \"path\": \"./tests/samples/google_multi\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"4L2QMyTm6Rr0o46ytGiReoG1\",\n                \"value_start\": 0,\n                \"value_end\": 24,\n                \"entropy\": 4.08496\n            }\n        ]\n    },\n    {\n        \"rule\": \"Google Multi\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"\\\"id\\\":\\\"194206074328-qdv6fi3eh31q6h7c35vsi7p89p1258g1.apps.googleusercontent.com\\\",\\\"CEKPET\\\":\\\"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\\\",\",\n                \"line_num\": 18,\n                \"path\": \"./tests/samples/google_multi\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"194206074328-qdv6fi3eh31q6h7c35vsi7p89p1258g1.apps.googleusercontent.com\",\n                \"value_start\": 6,\n                \"value_end\": 78,\n                \"entropy\": 4.80827\n            },\n            {\n                \"line\": \"\\\"id\\\":\\\"194206074328-qdv6fi3eh31q6h7c35vsi7p89p1258g1.apps.googleusercontent.com\\\",\\\"CEKPET\\\":\\\"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\\\",\",\n                \"line_num\": 18,\n                \"path\": \"./tests/samples/google_multi\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"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\",\n                \"value_start\": 90,\n                \"value_end\": 125,\n                \"entropy\": 4.67214\n            }\n        ]\n    },\n    {\n        \"rule\": \"Google OAuth Secret\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"\\\"id\\\":\\\"194206074328-qdv6fi3eh31q6h7c35vsi7p89p1258g1.apps.googleusercontent.com\\\",\\\"CEKPET\\\":\\\"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\\\",\",\n                \"line_num\": 18,\n                \"path\": \"./tests/samples/google_multi\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"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\",\n                \"value_start\": 90,\n                \"value_end\": 125,\n                \"entropy\": 4.67214\n            }\n        ]\n    },\n    {\n        \"rule\": \"Grafana Access Policy Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"grafana_policy = 'glc_eyJvIjoiMjA0NjMwIiwibiI6InRlc3QtdG9rZW4iLCJrIjoidklnbjJ2WHc5MTVXOWtNOWxsNHcyZHEyIiwibSI6eyJyIjoicHJvZC0wIn19'\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/grafana_access_policy_token\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"glc_eyJvIjoiMjA0NjMwIiwibiI6InRlc3QtdG9rZW4iLCJrIjoidklnbjJ2WHc5MTVXOWtNOWxsNHcyZHEyIiwibSI6eyJyIjoicHJvZC0wIn19\",\n                \"value_start\": 18,\n                \"value_end\": 130,\n                \"entropy\": 5.15841\n            }\n        ]\n    },\n    {\n        \"rule\": \"Grafana Provisioned API Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"grafana = 'eyJrIjoiMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCIsIm4iOiJ4eHh4IiwiaWQiOjIwNDM2MH0='\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/grafana_provisioned_api_key\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"eyJrIjoiMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCIsIm4iOiJ4eHh4IiwiaWQiOjIwNDM2MH0=\",\n                \"value_start\": 11,\n                \"value_end\": 107,\n                \"entropy\": 3.81531\n            }\n        ]\n    },\n    {\n        \"rule\": \"Grafana Service Account Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"glsa_ThisI5NtTheTok3nYou8reLo0k1ngF0r_0a2a3df7\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/grafana_service_accounts\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"glsa_ThisI5NtTheTok3nYou8reLo0k1ngF0r_0a2a3df7\",\n                \"value_start\": 0,\n                \"value_end\": 46,\n                \"entropy\": 4.71879\n            }\n        ]\n    },\n    {\n        \"rule\": \"Groq API Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"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\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/groq_api_key\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"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\",\n                \"value_start\": 0,\n                \"value_end\": 56,\n                \"entropy\": 5.01691\n            }\n        ]\n    },\n    {\n        \"rule\": \"Groq API Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"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\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/groq_api_key\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"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\",\n                \"value_start\": 0,\n                \"value_end\": 56,\n                \"entropy\": 5.02567\n            }\n        ]\n    },\n    {\n        \"rule\": \"Groq API Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"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\",\n                \"line_num\": 3,\n                \"path\": \"./tests/samples/groq_api_key\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"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\",\n                \"value_start\": 0,\n                \"value_end\": 56,\n                \"entropy\": 5.02567\n            }\n        ]\n    },\n    {\n        \"rule\": \"Hashicorp Terraform Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"Z28P3STmkBQi1Y.atlasv1.YE7RBqu6VVyQIOq9a1eC3YFU5Elt7ToIr6OwzKAWlCTQ7N4gElXaWou6aPpOIwGCoc0\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/hashicorp\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"Z28P3STmkBQi1Y.atlasv1.YE7RBqu6VVyQIOq9a1eC3YFU5Elt7ToIr6OwzKAWlCTQ7N4gElXaWou6aPpOIwGCoc0\",\n                \"value_start\": 0,\n                \"value_end\": 90,\n                \"entropy\": 5.47059\n            }\n        ]\n    },\n    {\n        \"rule\": \"Hashicorp Vault Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"hvs.atlasv1-Z28P3STmkBQi1Y-YE7RBqu6VVyQIOq9a1eC3YFU5Elt7ToIr6OwzKAWlCTQ7N4gElXaWou6aPpOIwGCoc0\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/hashicorp\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"hvs.atlasv1-Z28P3STmkBQi1Y-YE7RBqu6VVyQIOq9a1eC3YFU5Elt7ToIr6OwzKAWlCTQ7N4gElXaWou6aPpOIwGCoc0\",\n                \"value_start\": 0,\n                \"value_end\": 94,\n                \"entropy\": 5.53423\n            }\n        ]\n    },\n    {\n        \"rule\": \"Heroku Credentials\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"HRKU-RAjCYR7Mai1JAIhHASD6ITENvdVydAPCnNcAlrMrTLozPkj9_BGqh1J5P4Wf\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/heroku\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"HRKU-RAjCYR7Mai1JAIhHASD6ITENvdVydAPCnNcAlrMrTLozPkj9_BGqh1J5P4Wf\",\n                \"value_start\": 0,\n                \"value_end\": 65,\n                \"entropy\": 5.32822\n            }\n        ]\n    },\n    {\n        \"rule\": \"Heroku Credentials\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"HRKU-f1274537-88fb-deaf-beda-453bd9a496ef\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/heroku\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"HRKU-f1274537-88fb-deaf-beda-453bd9a496ef\",\n                \"value_start\": 0,\n                \"value_end\": 41,\n                \"entropy\": 4.0555\n            }\n        ]\n    },\n    {\n        \"rule\": \"Hugging Face User Access Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"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\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/huggingface\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"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\",\n                \"value_start\": 0,\n                \"value_end\": 37,\n                \"entropy\": 4.70256\n            }\n        ]\n    },\n    {\n        \"rule\": \"Hugging Face User Access Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"url/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/part\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/huggingface\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"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\",\n                \"value_start\": 4,\n                \"value_end\": 41,\n                \"entropy\": 4.77702\n            }\n        ]\n    },\n    {\n        \"rule\": \"Hugging Face User Access Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"hf_UdYjVqYvybBLEhIrwwEUYjOgkeyexample\",\n                \"line_num\": 6,\n                \"path\": \"./tests/samples/huggingface\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"hf_UdYjVqYvybBLEhIrwwEUYjOgkeyexample\",\n                \"value_start\": 0,\n                \"value_end\": 37,\n                \"entropy\": 4.62811\n            }\n        ]\n    },\n    {\n        \"rule\": \"Instagram Access Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"IGQVJWS3pUNmZA2MUJDVlRwLW9ac1lrU05nZAmpzWHQtWHFJSEFRMF9tWVpRdEd70HQ5Wk8wSnY0R0VEQnVQdUU0MnpxNWxocUYyNmZAXSTUtVVNrMmh1ZAHZAQQno2ZA0VHR0lLWkk1N1R5RDFvM0dmVEpIYQZGZX\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/instagram_access_token\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"IGQVJWS3pUNmZA2MUJDVlRwLW9ac1lrU05nZAmpzWHQtWHFJSEFRMF9tWVpRdEd70HQ5Wk8wSnY0R0VEQnVQdUU0MnpxNWxocUYyNmZAXSTUtVVNrMmh1ZAHZAQQno2ZA0VHR0lLWkk1N1R5RDFvM0dmVEpIYQZGZX\",\n                \"value_start\": 0,\n                \"value_end\": 162,\n                \"entropy\": 5.23164\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"+  \\\"password\\\": \\\"dkajco1\\\"\",\n                \"line_num\": 10,\n                \"path\": \"./tests/samples/iso_ir_111.patch\",\n                \"info\": \"\",\n                \"variable\": \"password\",\n                \"variable_start\": 4,\n                \"variable_end\": 12,\n                \"value\": \"dkajco1\",\n                \"value_start\": 16,\n                \"value_end\": 23,\n                \"entropy\": 2.80735\n            }\n        ]\n    },\n    {\n        \"rule\": \"Jfrog Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"cmVmdGtuOjAxOjAxMjM0NTY3ODk6QWJjZGVmR2hpamtsbW5vUHFyc3R1dnd4eXow\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/jfrog_p\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"cmVmdGtuOjAxOjAxMjM0NTY3ODk6QWJjZGVmR2hpamtsbW5vUHFyc3R1dnd4eXow\",\n                \"value_start\": 0,\n                \"value_end\": 64,\n                \"entropy\": 5.28891\n            }\n        ]\n    },\n    {\n        \"rule\": \"Jfrog Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"AKCp2UNCd8uK7hQoxZnFE4PGtRHnAcBHr43HgLcj7nJmWb4JhVUqBwa2iwXszftnogpo2EVFa\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/jfrog_p\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"AKCp2UNCd8uK7hQoxZnFE4PGtRHnAcBHr43HgLcj7nJmWb4JhVUqBwa2iwXszftnogpo2EVFa\",\n                \"value_start\": 0,\n                \"value_end\": 73,\n                \"entropy\": 5.35394\n            }\n        ]\n    },\n    {\n        \"rule\": \"Jira / Confluence PAT token\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"TP: https://www.example.com/api/verification/version2322/token/OTI2NjA3NjU1NTI2Oh2DOnASdOHoIhEGyqIuYrdkYaQZ\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/jira_confluence_pat\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"OTI2NjA3NjU1NTI2Oh2DOnASdOHoIhEGyqIuYrdkYaQZ\",\n                \"value_start\": 63,\n                \"value_end\": 107,\n                \"entropy\": 4.60694\n            }\n        ]\n    },\n    {\n        \"rule\": \"Jira / Confluence PAT token\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"TP: \\\"image/png\\\": \\\"iVBORx09VIskhxhCe7sh03R1dnENPiB66xQSIZjEYN13vafX/OTI2NjA3NjU1NTI2Oh2DOnASdOHoIhEGyqIuYrdkYaQZ/hZwUteHsmN+z+aoEAAAAvL+Q5FSQGyqIuYrdkYaQZuW1TvI=\\\\n\\\",\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/jira_confluence_pat\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"OTI2NjA3NjU1NTI2Oh2DOnASdOHoIhEGyqIuYrdkYaQZ\",\n                \"value_start\": 67,\n                \"value_end\": 111,\n                \"entropy\": 4.60694\n            }\n        ]\n    },\n    {\n        \"rule\": \"JSON Web Key\",\n        \"severity\": \"medium\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"WwogICAgewogICAgICAgICJrdHkiOiAiRUMiLAogICAgICAgICJkIjogInNsYVFxeUhRUHVkT3BxMm1iRHNrdW04ck91OUlNa0xHaklOQUZXd2Zxci0iCiAgICB9LAogICAgewogICAgICAgICJrdHkiOiAiUlNBIiwKICAgICAgICAiZCI6ICItcGhaOE40R3V3WmNoeTdGQ01CMTRJQTM1ZEJVM3NXeTJPUnh3V044UGJLcUtPa1piOG1oNHZfZ1Fnd2c3ajE2dVNkOTFDT0JOUEdIMGhOemFIMmpPWSIKICAgIH0sCiAgICB7CiAgICAgICAgImt0eSI6ICJvY3QiLAogICAgICAgICJrIjogIldyTXdRZm9OYUhUZ1hVNWZadlJHQUQiCiAgICB9Cl0=\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/json_web_key\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"WwogICAgewogICAgICAgICJrdHkiOiAiRUMiLAogICAgICAgICJkIjogInNsYVFxeUhRUHVkT3BxMm1iRHNrdW04ck91OUlNa0xHaklOQUZXd2Zxci0iCiAgICB9LAogICAgewogICAgICAgICJrdHkiOiAiUlNBIiwKICAgICAgICAiZCI6ICItcGhaOE40R3V3WmNoeTdGQ01CMTRJQTM1ZEJVM3NXeTJPUnh3V044UGJLcUtPa1piOG1oNHZfZ1Fnd2c3ajE2dVNkOTFDT0JOUEdIMGhOemFIMmpPWSIKICAgIH0sCiAgICB7CiAgICAgICAgImt0eSI6ICJvY3QiLAogICAgICAgICJrIjogIldyTXdRZm9OYUhUZ1hVNWZadlJHQUQiCiAgICB9Cl0\",\n                \"value_start\": 0,\n                \"value_end\": 407,\n                \"entropy\": 5.27189\n            }\n        ]\n    },\n    {\n        \"rule\": \"JSON Web Token\",\n        \"severity\": \"medium\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"detected: eyJhbGciOiJSUzI1NiJ9Cg.eyJleHAiOjY1NTM2fQo.Ce7sh0ENPiBlE_dose0cBA\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/json_web_token\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"eyJhbGciOiJSUzI1NiJ9Cg.eyJleHAiOjY1NTM2fQo.Ce7sh0ENPiBlE_dose0cBA\",\n                \"value_start\": 10,\n                \"value_end\": 75,\n                \"entropy\": 5.03815\n            }\n        ]\n    },\n    {\n        \"rule\": \"JWK\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"        \\\"kty\\\": \\\"[EC]\\\",\",\n                \"line_num\": 3,\n                \"path\": \"./tests/samples/jwk.json\",\n                \"info\": \"\",\n                \"variable\": \"kty\",\n                \"variable_start\": 9,\n                \"variable_end\": 12,\n                \"value\": \"\\\"kty\\\": \\\"[EC\",\n                \"value_start\": 8,\n                \"value_end\": 19,\n                \"entropy\": 3.02717\n            },\n            {\n                \"line\": \"        \\\"d\\\": \\\"slaQqyHQPudOpq2mbDskum8rOu9IMkLGjINAFWwfqr-\\\"\",\n                \"line_num\": 4,\n                \"path\": \"./tests/samples/jwk.json\",\n                \"info\": \"\",\n                \"variable\": \"d\",\n                \"variable_start\": 9,\n                \"variable_end\": 10,\n                \"value\": \"slaQqyHQPudOpq2mbDskum8rOu9IMkLGjINAFWwfqr-\",\n                \"value_start\": 14,\n                \"value_end\": 57,\n                \"entropy\": 4.87953\n            }\n        ]\n    },\n    {\n        \"rule\": \"JWK\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"        \\\"kty\\\": \\\"RSA\\\",\",\n                \"line_num\": 7,\n                \"path\": \"./tests/samples/jwk.json\",\n                \"info\": \"\",\n                \"variable\": \"kty\",\n                \"variable_start\": 9,\n                \"variable_end\": 12,\n                \"value\": \"\\\"kty\\\": \\\"RSA\\\"\",\n                \"value_start\": 8,\n                \"value_end\": 20,\n                \"entropy\": 2.9183\n            },\n            {\n                \"line\": \"        \\\"d\\\": \\\"-phZ8N4GuwZchy7FCMB14IA35dBU3sWy2ORxwWN8PbKqKOkZb8mh4v_gQgwg7j16uSd91COBNPGH0hNzaH2jOY\\\"\",\n                \"line_num\": 10,\n                \"path\": \"./tests/samples/jwk.json\",\n                \"info\": \"\",\n                \"variable\": \"d\",\n                \"variable_start\": 9,\n                \"variable_end\": 10,\n                \"value\": \"-phZ8N4GuwZchy7FCMB14IA35dBU3sWy2ORxwWN8PbKqKOkZb8mh4v_gQgwg7j16uSd91COBNPGH0hNzaH2jOY\",\n                \"value_start\": 14,\n                \"value_end\": 100,\n                \"entropy\": 5.43459\n            }\n        ]\n    },\n    {\n        \"rule\": \"JWK\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"        \\\"kty\\\": \\\"oct\\\",\",\n                \"line_num\": 13,\n                \"path\": \"./tests/samples/jwk.json\",\n                \"info\": \"\",\n                \"variable\": \"kty\",\n                \"variable_start\": 9,\n                \"variable_end\": 12,\n                \"value\": \"\\\"kty\\\": \\\"oct\\\"\",\n                \"value_start\": 8,\n                \"value_end\": 20,\n                \"entropy\": 2.75163\n            },\n            {\n                \"line\": \"        \\\"k\\\": \\\"WrMwQfoNaHTgXU5fZvRGAD\\\"\",\n                \"line_num\": 16,\n                \"path\": \"./tests/samples/jwk.json\",\n                \"info\": \"\",\n                \"variable\": \"k\",\n                \"variable_start\": 9,\n                \"variable_end\": 10,\n                \"value\": \"WrMwQfoNaHTgXU5fZvRGAD\",\n                \"value_start\": 14,\n                \"value_end\": 36,\n                \"entropy\": 4.36852\n            }\n        ]\n    },\n    {\n        \"rule\": \"PEM Private Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"var PKEY = `-----BEGIN OPENSSH PRIVATE KEY-----\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/key.go\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"-----BEGIN OPENSSH PRIVATE KEY-----\",\n                \"value_start\": 12,\n                \"value_end\": 47,\n                \"entropy\": 3.58716\n            },\n            {\n                \"line\": \"b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAAAMwAAAAtzc2gtZWQyNTUx\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/key.go\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAAAMwAAAAtzc2gtZWQyNTUx\",\n                \"value_start\": 0,\n                \"value_end\": 76,\n                \"entropy\": 4.18903\n            },\n            {\n                \"line\": \"OQAAABWHkoN5N0V0OCSXOHWSOHAxRYMJSGc4clgVA0gJgFlIBAAAAJimRM7VpkTO1QAAAAtzc2gt\",\n                \"line_num\": 3,\n                \"path\": \"./tests/samples/key.go\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"OQAAABWHkoN5N0V0OCSXOHWSOHAxRYMJSGc4clgVA0gJgFlIBAAAAJimRM7VpkTO1QAAAAtzc2gt\",\n                \"value_start\": 0,\n                \"value_end\": 76,\n                \"entropy\": 4.74471\n            },\n            {\n                \"line\": \"ZWQyNTUxOQAAACBqIPMG94HL7zedFzsvi45mHS8ZuyLQXqvHpHobcdNCJAAAAFRoZXJlXzE1LU4w\",\n                \"line_num\": 4,\n                \"path\": \"./tests/samples/key.go\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"ZWQyNTUxOQAAACBqIPMG94HL7zedFzsvi45mHS8ZuyLQXqvHpHobcdNCJAAAAFRoZXJlXzE1LU4w\",\n                \"value_start\": 0,\n                \"value_end\": 76,\n                \"entropy\": 5.24555\n            },\n            {\n                \"line\": \"dF9UaGVLZXlZb3VBcmVMb29raW5nRm9S8wb3Mj0tZT1hc3A7ZHprejsuZm5tbmRmbmVuZm5pAAAA\",\n                \"line_num\": 5,\n                \"path\": \"./tests/samples/key.go\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"dF9UaGVLZXlZb3VBcmVMb29raW5nRm9S8wb3Mj0tZT1hc3A7ZHprejsuZm5tbmRmbmVuZm5pAAAA\",\n                \"value_start\": 0,\n                \"value_end\": 76,\n                \"entropy\": 4.94996\n            },\n            {\n                \"line\": \"EXRpemVuQGNyZWRzd2VlcGVyAQIDBA==\",\n                \"line_num\": 6,\n                \"path\": \"./tests/samples/key.go\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"EXRpemVuQGNyZWRzd2VlcGVyAQIDBA==\",\n                \"value_start\": 0,\n                \"value_end\": 32,\n                \"entropy\": 4.47641\n            },\n            {\n                \"line\": \"-----END OPENSSH PRIVATE KEY-----\",\n                \"line_num\": 7,\n                \"path\": \"./tests/samples/key.go\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"-----END OPENSSH PRIVATE KEY-----\",\n                \"value_start\": 0,\n                \"value_end\": 33,\n                \"entropy\": 3.46942\n            }\n        ]\n    },\n    {\n        \"rule\": \"Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"$key = 'gmUGWxhQW9KQWdhd0lCQVFRZ0ViVnpwrLzZYdDJPNG1PQjYxMXNPaFJ1\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/key.php\",\n                \"info\": \"\",\n                \"variable\": \"$key\",\n                \"variable_start\": 0,\n                \"variable_end\": 4,\n                \"value\": \"gmUGWxhQW9KQWdhd0lCQVFRZ0ViVnpwrLzZYdDJPNG1PQjYxMXNPaFJ1\",\n                \"value_start\": 8,\n                \"value_end\": 64,\n                \"entropy\": 4.96772\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"define( 'PASSWORD' , '2Arh5dA1Sn0ywiVYdnpwr3aLzZDJPNG' );\",\n                \"line_num\": 3,\n                \"path\": \"./tests/samples/key.php\",\n                \"info\": \"\",\n                \"variable\": \"PASSWORD\",\n                \"variable_start\": 9,\n                \"variable_end\": 17,\n                \"value\": \"2Arh5dA1Sn0ywiVYdnpwr3aLzZDJPNG\",\n                \"value_start\": 22,\n                \"value_end\": 53,\n                \"entropy\": 4.63162\n            }\n        ]\n    },\n    {\n        \"rule\": \"Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.993,\n        \"line_data_list\": [\n            {\n                \"line\": \"pkey = (\\\"LS0tLS1CRUdJTiBQUklWQVRFIENDcUdTTTQ5QXdFSEJHMHdhd0lCQVFRZ0ViVn\\\"\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/key.py\",\n                \"info\": \"\",\n                \"variable\": \"pkey\",\n                \"variable_start\": 0,\n                \"variable_end\": 4,\n                \"value\": \"LS0tLS1CRUdJTiBQUklWQVRFIENDcUdTTTQ5QXdFSEJHMHdhd0lCQVFRZ0ViVn\",\n                \"value_start\": 9,\n                \"value_end\": 71,\n                \"entropy\": 4.71236\n            }\n        ]\n    },\n    {\n        \"rule\": \"Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"print(\\\"https://example.com/api/js?key=dhd0lCQVFRZ0ViVnpmUGWxhQW9KQWwrLzZYdDJPNG1PQjYxMXNPaFJB&bug=true\\\")\",\n                \"line_num\": 7,\n                \"path\": \"./tests/samples/key.py\",\n                \"info\": \"\",\n                \"variable\": \"key\",\n                \"variable_start\": 34,\n                \"variable_end\": 37,\n                \"value\": \"dhd0lCQVFRZ0ViVnpmUGWxhQW9KQWwrLzZYdDJPNG1PQjYxMXNPaFJB\",\n                \"value_start\": 38,\n                \"value_end\": 93,\n                \"entropy\": 4.96282\n            }\n        ]\n    },\n    {\n        \"rule\": \"PEM Private Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"PKEY = \\\"\\\"\\\"-----BEGIN OPENSSH PRIVATE KEY-----\",\n                \"line_num\": 9,\n                \"path\": \"./tests/samples/key.py\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"-----BEGIN OPENSSH PRIVATE KEY-----\",\n                \"value_start\": 10,\n                \"value_end\": 45,\n                \"entropy\": 3.58716\n            },\n            {\n                \"line\": \"b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAAAMwAAAAtzc2gtZWQyNTUx\",\n                \"line_num\": 10,\n                \"path\": \"./tests/samples/key.py\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAAAMwAAAAtzc2gtZWQyNTUx\",\n                \"value_start\": 0,\n                \"value_end\": 76,\n                \"entropy\": 4.18903\n            },\n            {\n                \"line\": \"OQAAABWHkoN5N0V0OCSXOHWSOHAxRYMJSGc4clgVA0gJgFlIBAAAAJimRM7VpkTO1QAAAAtzc2gt\",\n                \"line_num\": 11,\n                \"path\": \"./tests/samples/key.py\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"OQAAABWHkoN5N0V0OCSXOHWSOHAxRYMJSGc4clgVA0gJgFlIBAAAAJimRM7VpkTO1QAAAAtzc2gt\",\n                \"value_start\": 0,\n                \"value_end\": 76,\n                \"entropy\": 4.74471\n            },\n            {\n                \"line\": \"ZWQyNTUxOQAAACBqIPMG94HL7zedFzsvi45mHS8ZuyLQXqvHpHobcdNCJAAAAFRoZXJlXzE1LU4w\",\n                \"line_num\": 12,\n                \"path\": \"./tests/samples/key.py\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"ZWQyNTUxOQAAACBqIPMG94HL7zedFzsvi45mHS8ZuyLQXqvHpHobcdNCJAAAAFRoZXJlXzE1LU4w\",\n                \"value_start\": 0,\n                \"value_end\": 76,\n                \"entropy\": 5.24555\n            },\n            {\n                \"line\": \"dF9UaGVLZXlZb3VBcmVMb29raW5nRm9S8wb3Mj0tZT1hc3A7ZHprejsuZm5tbmRmbmVuZm5pAAAA\",\n                \"line_num\": 13,\n                \"path\": \"./tests/samples/key.py\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"dF9UaGVLZXlZb3VBcmVMb29raW5nRm9S8wb3Mj0tZT1hc3A7ZHprejsuZm5tbmRmbmVuZm5pAAAA\",\n                \"value_start\": 0,\n                \"value_end\": 76,\n                \"entropy\": 4.94996\n            },\n            {\n                \"line\": \"EXRpemVuQGNyZWRzd2VlcGVyAQIDBA==\",\n                \"line_num\": 14,\n                \"path\": \"./tests/samples/key.py\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"EXRpemVuQGNyZWRzd2VlcGVyAQIDBA==\",\n                \"value_start\": 0,\n                \"value_end\": 32,\n                \"entropy\": 4.47641\n            },\n            {\n                \"line\": \"-----END OPENSSH PRIVATE KEY-----\\\"\\\"\\\"\",\n                \"line_num\": 15,\n                \"path\": \"./tests/samples/key.py\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"-----END OPENSSH PRIVATE KEY-----\",\n                \"value_start\": 0,\n                \"value_end\": 33,\n                \"entropy\": 3.46942\n            }\n        ]\n    },\n    {\n        \"rule\": \"LLAMA API Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"llx-gOpoyW2vlgfBcYEYlSu8x3Tk3lrtW1AWJU8nXQ6XOCZah4h1\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/llama\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"llx-gOpoyW2vlgfBcYEYlSu8x3Tk3lrtW1AWJU8nXQ6XOCZah4h1\",\n                \"value_start\": 0,\n                \"value_end\": 52,\n                \"entropy\": 5.03958\n            }\n        ]\n    },\n    {\n        \"rule\": \"LLAMA API Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"llx-vYx_tfO1AgW73_hwAET-u7p7YVDTBERNn4ij4a8wrDrGM6RT\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/llama\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"llx-vYx_tfO1AgW73_hwAET-u7p7YVDTBERNn4ij4a8wrDrGM6RT\",\n                \"value_start\": 0,\n                \"value_end\": 52,\n                \"entropy\": 5.05602\n            }\n        ]\n    },\n    {\n        \"rule\": \"MailChimp API Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"mailchimp = \\\"LRINSm5Vdi9BMCzCWSJ8M3TMysUHwDzB-us36\\\"\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/mailchimp_key\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"LRINSm5Vdi9BMCzCWSJ8M3TMysUHwDzB-us36\",\n                \"value_start\": 13,\n                \"value_end\": 50,\n                \"entropy\": 4.75662\n            }\n        ]\n    },\n    {\n        \"rule\": \"MailGun API Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"key-a25a4ac62a074cd52c668c6b9937cf40\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/mailgun\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"key-a25a4ac62a074cd52c668c6b9937cf40\",\n                \"value_start\": 0,\n                \"value_end\": 36,\n                \"entropy\": 3.91661\n            }\n        ]\n    },\n    {\n        \"rule\": \"MailGun API Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"a25a4ac62a074cd52c668c6b9937cf40-432f2836-db15b420\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/mailgun\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"a25a4ac62a074cd52c668c6b9937cf40-432f2836-db15b420\",\n                \"value_start\": 0,\n                \"value_end\": 50,\n                \"entropy\": 3.85669\n            }\n        ]\n    },\n    {\n        \"rule\": \"AWS Client ID\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"+  clid = \\\"AKIAQWADE5R42RDZ4JEM\\\"\",\n                \"line_num\": 45,\n                \"path\": \"./tests/samples/multifile.patch\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"AKIAQWADE5R42RDZ4JEM\",\n                \"value_start\": 11,\n                \"value_end\": 31,\n                \"entropy\": 3.68418\n            }\n        ]\n    },\n    {\n        \"rule\": \"AWS Multi\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"+  clid = \\\"AKIAQWADE5R42RDZ4JEM\\\"\",\n                \"line_num\": 45,\n                \"path\": \"./tests/samples/multifile.patch\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"AKIAQWADE5R42RDZ4JEM\",\n                \"value_start\": 11,\n                \"value_end\": 31,\n                \"entropy\": 3.68418\n            },\n            {\n                \"line\": \"+  token = \\\"V84C7sDU001tFFodKU95USNy97TkqXymnvsFmYhQ\\\"\",\n                \"line_num\": 46,\n                \"path\": \"./tests/samples/multifile.patch\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"V84C7sDU001tFFodKU95USNy97TkqXymnvsFmYhQ\",\n                \"value_start\": 12,\n                \"value_end\": 52,\n                \"entropy\": 4.78418\n            }\n        ]\n    },\n    {\n        \"rule\": \"Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"+  token = \\\"V84C7sDU001tFFodKU95USNy97TkqXymnvsFmYhQ\\\"\",\n                \"line_num\": 46,\n                \"path\": \"./tests/samples/multifile.patch\",\n                \"info\": \"\",\n                \"variable\": \"token\",\n                \"variable_start\": 3,\n                \"variable_end\": 8,\n                \"value\": \"V84C7sDU001tFFodKU95USNy97TkqXymnvsFmYhQ\",\n                \"value_start\": 12,\n                \"value_end\": 52,\n                \"entropy\": 4.78418\n            }\n        ]\n    },\n    {\n        \"rule\": \"AWS Client ID\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"+  clid = \\\"AKIAQWADE5R42RDZ4JEM\\\"\",\n                \"line_num\": 8,\n                \"path\": \"./tests/samples/multiline.patch\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"AKIAQWADE5R42RDZ4JEM\",\n                \"value_start\": 11,\n                \"value_end\": 31,\n                \"entropy\": 3.68418\n            }\n        ]\n    },\n    {\n        \"rule\": \"AWS Multi\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"+  clid = \\\"AKIAQWADE5R42RDZ4JEM\\\"\",\n                \"line_num\": 8,\n                \"path\": \"./tests/samples/multiline.patch\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"AKIAQWADE5R42RDZ4JEM\",\n                \"value_start\": 11,\n                \"value_end\": 31,\n                \"entropy\": 3.68418\n            },\n            {\n                \"line\": \"+  token = \\\"V84C7sDU001tFFodKU95USNy97TkqXymnvsFmYhQ\\\"\",\n                \"line_num\": 9,\n                \"path\": \"./tests/samples/multiline.patch\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"V84C7sDU001tFFodKU95USNy97TkqXymnvsFmYhQ\",\n                \"value_start\": 12,\n                \"value_end\": 52,\n                \"entropy\": 4.78418\n            }\n        ]\n    },\n    {\n        \"rule\": \"Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"+  token = \\\"V84C7sDU001tFFodKU95USNy97TkqXymnvsFmYhQ\\\"\",\n                \"line_num\": 9,\n                \"path\": \"./tests/samples/multiline.patch\",\n                \"info\": \"\",\n                \"variable\": \"token\",\n                \"variable_start\": 3,\n                \"variable_end\": 8,\n                \"value\": \"V84C7sDU001tFFodKU95USNy97TkqXymnvsFmYhQ\",\n                \"value_start\": 12,\n                \"value_end\": 52,\n                \"entropy\": 4.78418\n            }\n        ]\n    },\n    {\n        \"rule\": \"Netlify Token\",\n        \"severity\": \"medium\",\n        \"confidence\": \"weak\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"nfp_0i5OM4MV7L02wV3E6rrwiTwhvEkkkPJ9C3EP\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/netlify\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"nfp_0i5OM4MV7L02wV3E6rrwiTwhvEkkkPJ9C3EP\",\n                \"value_start\": 0,\n                \"value_end\": 40,\n                \"entropy\": 4.61531\n            }\n        ]\n    },\n    {\n        \"rule\": \"NKEY Seed\",\n        \"severity\": \"high\",\n        \"confidence\": \"weak\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"// SUAML2GCZ7IK7E7UD4VZ7ELPZW7DK2ZNL35WSMW3IORHC3BWBSDQXUQRBU\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/nkey_seed\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"SUAML2GCZ7IK7E7UD4VZ7ELPZW7DK2ZNL35WSMW3IORHC3BWBSDQXUQRBU\",\n                \"value_start\": 3,\n                \"value_end\": 61,\n                \"entropy\": 4.55826\n            }\n        ]\n    },\n    {\n        \"rule\": \"Nonce\",\n        \"severity\": \"low\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"nonce = 'bsfcvir57nt40rydvtbhs8lzbgljmet5'\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/nonce.py\",\n                \"info\": \"\",\n                \"variable\": \"nonce\",\n                \"variable_start\": 0,\n                \"variable_end\": 5,\n                \"value\": \"bsfcvir57nt40rydvtbhs8lzbgljmet5\",\n                \"value_start\": 9,\n                \"value_end\": 41,\n                \"entropy\": 4.39032\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"password: F1lT3ReDw17hQoT3s\",\n                \"line_num\": 3,\n                \"path\": \"./tests/samples/nonce.py\",\n                \"info\": \"\",\n                \"variable\": \"password\",\n                \"variable_start\": 0,\n                \"variable_end\": 8,\n                \"value\": \"F1lT3ReDw17hQoT3s\",\n                \"value_start\": 10,\n                \"value_end\": 27,\n                \"entropy\": 3.73452\n            }\n        ]\n    },\n    {\n        \"rule\": \"Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"key_wrap = 'KJHhJKhKU7yguyuyfrtsdESffhjgkhYT\\\\\",\n                \"line_num\": 7,\n                \"path\": \"./tests/samples/nonce.py\",\n                \"info\": \"\",\n                \"variable\": \"key_wrap\",\n                \"variable_start\": 0,\n                \"variable_end\": 8,\n                \"value\": \"KJHhJKhKU7yguyuyfrtsdESffhjgkhYT\",\n                \"value_start\": 12,\n                \"value_end\": 44,\n                \"entropy\": 4.11673\n            }\n        ]\n    },\n    {\n        \"rule\": \"Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"key_multi = '''KJHfdjs8767gr54534wsFHGf5hJKhK\",\n                \"line_num\": 11,\n                \"path\": \"./tests/samples/nonce.py\",\n                \"info\": \"\",\n                \"variable\": \"key_multi\",\n                \"variable_start\": 0,\n                \"variable_end\": 9,\n                \"value\": \"KJHfdjs8767gr54534wsFHGf5hJKhK\",\n                \"value_start\": 15,\n                \"value_end\": 45,\n                \"entropy\": 4.12323\n            }\n        ]\n    },\n    {\n        \"rule\": \"Notion Integration Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"ntn_123465789l62YMNJKXLKpjiCVEXbx4CBxkfprOA96Y15wZ\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/notion\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"ntn_123465789l62YMNJKXLKpjiCVEXbx4CBxkfprOA96Y15wZ\",\n                \"value_start\": 0,\n                \"value_end\": 50,\n                \"entropy\": 5.06876\n            }\n        ]\n    },\n    {\n        \"rule\": \"NPM Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"positive: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\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/npm\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"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\",\n                \"value_start\": 9,\n                \"value_end\": 49,\n                \"entropy\": 4.80306\n            }\n        ]\n    },\n    {\n        \"rule\": \"NTLM Token\",\n        \"severity\": \"medium\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"Positive: TlRMTVNTUAADAAAAGAAYAFYAAAAYABgAbgAAAAAAAABIAAAADgAOAEgAAAAAAAAAVgAAAAAAAACGAAAARmFLZURhVGEAAAAPQwByAGUAZABTAHcAZQBlAHCgZQBy3wAAAAAAAAAAAAAAAAAAAAAph0MQmDQmCVaJEmhiOGSYIXNJMoc2KLo=\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/ntlm\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"TlRMTVNTUAADAAAAGAAYAFYAAAAYABgAbgAAAAAAAABIAAAADgAOAEgAAAAAAAAAVgAAAAAAAACGAAAARmFLZURhVGEAAAAPQwByAGUAZABTAHcAZQBlAHCgZQBy3wAAAAAAAAAAAAAAAAAAAAAph0MQmDQmCVaJEmhiOGSYIXNJMoc2KLo=\",\n                \"value_start\": 10,\n                \"value_end\": 190,\n                \"entropy\": 3.79713\n            }\n        ]\n    },\n    {\n        \"rule\": \"NuGet API key\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"k = 'oy2mlf2v7jl2firuegfqwzc4zxyebz3ethzd14g4hw4iam'\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/nuget_api_key\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"oy2mlf2v7jl2firuegfqwzc4zxyebz3ethzd14g4hw4iam\",\n                \"value_start\": 5,\n                \"value_end\": 51,\n                \"entropy\": 4.56129\n            }\n        ]\n    },\n    {\n        \"rule\": \"OpenAI Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"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\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/open_ai_token\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"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\",\n                \"value_start\": 0,\n                \"value_end\": 51,\n                \"entropy\": 5.22625\n            }\n        ]\n    },\n    {\n        \"rule\": \"OpenAI Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"sk-proj-qa25MV9c7Qu0EjDIEWdcT3BlbkFJ83uCF0K4yw7RzpY39bio\",\n                \"line_num\": 3,\n                \"path\": \"./tests/samples/open_ai_token\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"sk-proj-qa25MV9c7Qu0EjDIEWdcT3BlbkFJ83uCF0K4yw7RzpY39bio\",\n                \"value_start\": 0,\n                \"value_end\": 56,\n                \"entropy\": 5.25816\n            }\n        ]\n    },\n    {\n        \"rule\": \"OpenAI Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"sk-proj-asdfgasdfasdfdcQbzdcT3BlbkFJ83uCasdfgasdfgasdfjk\",\n                \"line_num\": 7,\n                \"path\": \"./tests/samples/open_ai_token\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"sk-proj-asdfgasdfasdfdcQbzdcT3BlbkFJ83uCasdfgasdfgasdfjk\",\n                \"value_start\": 0,\n                \"value_end\": 56,\n                \"entropy\": 4.12555\n            }\n        ]\n    },\n    {\n        \"rule\": \"OTP / 2FA Secret\",\n        \"severity\": \"info\",\n        \"confidence\": \"weak\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"WXFES7QNTET5DQYC\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/otp_2fa\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"WXFES7QNTET5DQYC\",\n                \"value_start\": 0,\n                \"value_end\": 16,\n                \"entropy\": 3.625\n            }\n        ]\n    },\n    {\n        \"rule\": \"OTP / 2FA Secret\",\n        \"severity\": \"info\",\n        \"confidence\": \"weak\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"JERZOR2XLQYTUQG7YBZYHLK3KSLRYTWB\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/otp_2fa\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"JERZOR2XLQYTUQG7YBZYHLK3KSLRYTWB\",\n                \"value_start\": 0,\n                \"value_end\": 32,\n                \"entropy\": 4.14032\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"password_id = 2938479\",\n                \"line_num\": 5,\n                \"path\": \"./tests/samples/pass_filtered\",\n                \"info\": \"\",\n                \"variable\": \"password_id\",\n                \"variable_start\": 0,\n                \"variable_end\": 11,\n                \"value\": \"2938479\",\n                \"value_start\": 14,\n                \"value_end\": 21,\n                \"entropy\": 2.52164\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.99,\n        \"line_data_list\": [\n            {\n                \"line\": \"gi_reo_gi_passwd = \\\"cAc48k1Zd7\\\"; password_confirmation = \\\"cAc48k1Zd7\\\";\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/passwd.groovy\",\n                \"info\": \"\",\n                \"variable\": \"gi_reo_gi_passwd\",\n                \"variable_start\": 0,\n                \"variable_end\": 16,\n                \"value\": \"cAc48k1Zd7\",\n                \"value_start\": 20,\n                \"value_end\": 30,\n                \"entropy\": 3.12193\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"gi_reo_gi_passwd = \\\"cAc48k1Zd7\\\"; password_confirmation = \\\"cAc48k1Zd7\\\";\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/passwd.groovy\",\n                \"info\": \"\",\n                \"variable\": \"password_confirmation\",\n                \"variable_start\": 33,\n                \"variable_end\": 54,\n                \"value\": \"cAc48k1Zd7\",\n                \"value_start\": 58,\n                \"value_end\": 68,\n                \"entropy\": 3.12193\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.993,\n        \"line_data_list\": [\n            {\n                \"line\": \"password = \\\"cackle!\\\"\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/password.gradle\",\n                \"info\": \"\",\n                \"variable\": \"password\",\n                \"variable_start\": 0,\n                \"variable_end\": 8,\n                \"value\": \"cackle!\",\n                \"value_start\": 12,\n                \"value_end\": 19,\n                \"entropy\": 2.52164\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"+  \\\"password\\\": \\\"dkajco1\\\"\",\n                \"line_num\": 9,\n                \"path\": \"./tests/samples/password.patch\",\n                \"info\": \"\",\n                \"variable\": \"password\",\n                \"variable_start\": 4,\n                \"variable_end\": 12,\n                \"value\": \"dkajco1\",\n                \"value_start\": 16,\n                \"value_end\": 23,\n                \"entropy\": 2.80735\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"password = \\\"MYPSWRD!@#$%^&*\\\"\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/password.tfvars\",\n                \"info\": \"\",\n                \"variable\": \"password\",\n                \"variable_start\": 0,\n                \"variable_end\": 8,\n                \"value\": \"MYPSWRD!@#$%^&*\",\n                \"value_start\": 12,\n                \"value_end\": 27,\n                \"entropy\": 3.90689\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.996,\n        \"line_data_list\": [\n            {\n                \"line\": \"MYSQLPASS: Ce7shE0ENPiBlE_EdEose0cBAA\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/password_TRUE\",\n                \"info\": \"\",\n                \"variable\": \"MYSQLPASS\",\n                \"variable_start\": 0,\n                \"variable_end\": 9,\n                \"value\": \"Ce7shE0ENPiBlE_EdEose0cBAA\",\n                \"value_start\": 11,\n                \"value_end\": 37,\n                \"entropy\": 3.8693\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.997,\n        \"line_data_list\": [\n            {\n                \"line\": \"my_pw: nCzx8A8#!\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/password_TRUE\",\n                \"info\": \"\",\n                \"variable\": \"my_pw\",\n                \"variable_start\": 0,\n                \"variable_end\": 5,\n                \"value\": \"nCzx8A8#!\",\n                \"value_start\": 7,\n                \"value_end\": 16,\n                \"entropy\": 2.9477\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"val password: String = \\\"exord13Paw64\\\", // scala\",\n                \"line_num\": 3,\n                \"path\": \"./tests/samples/password_TRUE\",\n                \"info\": \"\",\n                \"variable\": \"password\",\n                \"variable_start\": 4,\n                \"variable_end\": 12,\n                \"value\": \"exord13Paw64\",\n                \"value_start\": 24,\n                \"value_end\": 36,\n                \"entropy\": 3.58496\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.993,\n        \"line_data_list\": [\n            {\n                \"line\": \"def connect(passwd: str = \\\"cq2tPr1a2\\\"): # python default arg\",\n                \"line_num\": 4,\n                \"path\": \"./tests/samples/password_TRUE\",\n                \"info\": \"\",\n                \"variable\": \"passwd\",\n                \"variable_start\": 12,\n                \"variable_end\": 18,\n                \"value\": \"cq2tPr1a2\",\n                \"value_start\": 27,\n                \"value_end\": 36,\n                \"entropy\": 2.9477\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"if passworsd == \\\"q4c1a2oPd\\\": # __eq__ separator\",\n                \"line_num\": 5,\n                \"path\": \"./tests/samples/password_TRUE\",\n                \"info\": \"\",\n                \"variable\": \"passworsd\",\n                \"variable_start\": 3,\n                \"variable_end\": 12,\n                \"value\": \"q4c1a2oPd\",\n                \"value_start\": 17,\n                \"value_end\": 26,\n                \"entropy\": 3.16993\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"if passworsd != \\\"x6s7djtEa\\\": # __ne__ separator\",\n                \"line_num\": 6,\n                \"path\": \"./tests/samples/password_TRUE\",\n                \"info\": \"\",\n                \"variable\": \"passworsd\",\n                \"variable_start\": 3,\n                \"variable_end\": 12,\n                \"value\": \"x6s7djtEa\",\n                \"value_start\": 17,\n                \"value_end\": 26,\n                \"entropy\": 3.16993\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"password=2bkJgtJDiLcq1t\",\n                \"line_num\": 7,\n                \"path\": \"./tests/samples/password_TRUE\",\n                \"info\": \"\",\n                \"variable\": \"password\",\n                \"variable_start\": 0,\n                \"variable_end\": 8,\n                \"value\": \"2bkJgtJDiLcq1t\",\n                \"value_start\": 9,\n                \"value_end\": 23,\n                \"entropy\": 3.52164\n            }\n        ]\n    },\n    {\n        \"rule\": \"CMD Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"RUN openssl x509 -req -days 365 -passin \\\"pass:nCzx8A8#!\\\" -sha256 -in server.csr -CA ca.pem -CAkey ca-key\",\n                \"line_num\": 8,\n                \"path\": \"./tests/samples/password_TRUE\",\n                \"info\": \"\",\n                \"variable\": \"passin\",\n                \"variable_start\": 33,\n                \"variable_end\": 39,\n                \"value\": \"nCzx8A8#!\",\n                \"value_start\": 46,\n                \"value_end\": 55,\n                \"entropy\": 2.9477\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"RUN openssl x509 -req -days 365 -passin \\\"pass:nCzx8A8#!\\\" -sha256 -in server.csr -CA ca.pem -CAkey ca-key\",\n                \"line_num\": 8,\n                \"path\": \"./tests/samples/password_TRUE\",\n                \"info\": \"\",\n                \"variable\": \"pass\",\n                \"variable_start\": 41,\n                \"variable_end\": 45,\n                \"value\": \"nCzx8A8#!\",\n                \"value_start\": 46,\n                \"value_end\": 55,\n                \"entropy\": 2.9477\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"MYSQL_DATABASE_USER=CRED;MYSQL_DATABASE_PASSWORD=2IWJD88FH4Y;\",\n                \"line_num\": 12,\n                \"path\": \"./tests/samples/password_TRUE\",\n                \"info\": \"\",\n                \"variable\": \"MYSQL_DATABASE_PASSWORD\",\n                \"variable_start\": 25,\n                \"variable_end\": 48,\n                \"value\": \"2IWJD88FH4Y\",\n                \"value_start\": 49,\n                \"value_end\": 60,\n                \"entropy\": 3.27761\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"#define password \\\"n84ASM54y4\\\"\",\n                \"line_num\": 15,\n                \"path\": \"./tests/samples/password_TRUE\",\n                \"info\": \"\",\n                \"variable\": \"password\",\n                \"variable_start\": 8,\n                \"variable_end\": 16,\n                \"value\": \"n84ASM54y4\",\n                \"value_start\": 18,\n                \"value_end\": 28,\n                \"entropy\": 2.84644\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.065,\n        \"line_data_list\": [\n            {\n                \"line\": \"#define password {0x48, 0x65, 0x6C, 0x6C, 0x30}\",\n                \"line_num\": 16,\n                \"path\": \"./tests/samples/password_TRUE\",\n                \"info\": \"\",\n                \"variable\": \"password\",\n                \"variable_start\": 8,\n                \"variable_end\": 16,\n                \"value\": \"0x48, 0x65, 0x6C, 0x6C, 0x30\",\n                \"value_start\": 18,\n                \"value_end\": 46,\n                \"entropy\": 3.02613\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"%define PASSWORD \\\"n84ASM54y4\\\"\",\n                \"line_num\": 18,\n                \"path\": \"./tests/samples/password_TRUE\",\n                \"info\": \"\",\n                \"variable\": \"PASSWORD\",\n                \"variable_start\": 8,\n                \"variable_end\": 16,\n                \"value\": \"n84ASM54y4\",\n                \"value_start\": 18,\n                \"value_end\": 28,\n                \"entropy\": 2.84644\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"%global PASSWORD \\\"n84RPM54y4\\\"\",\n                \"line_num\": 19,\n                \"path\": \"./tests/samples/password_TRUE\",\n                \"info\": \"\",\n                \"variable\": \"PASSWORD\",\n                \"variable_start\": 8,\n                \"variable_end\": 16,\n                \"value\": \"n84RPM54y4\",\n                \"value_start\": 18,\n                \"value_end\": 28,\n                \"entropy\": 2.84644\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"SET password \\\"n83.bat47Fy4\\\"\",\n                \"line_num\": 21,\n                \"path\": \"./tests/samples/password_TRUE\",\n                \"info\": \"\",\n                \"variable\": \"password\",\n                \"variable_start\": 4,\n                \"variable_end\": 12,\n                \"value\": \"n83.bat47Fy4\",\n                \"value_start\": 14,\n                \"value_end\": 26,\n                \"entropy\": 3.4183\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"\\\"#define\\\\tpassword\\\\t\\\\\\\"n84ASM54y4\\\\\\\"\\\"\",\n                \"line_num\": 23,\n                \"path\": \"./tests/samples/password_TRUE\",\n                \"info\": \"\",\n                \"variable\": \"password\",\n                \"variable_start\": 10,\n                \"variable_end\": 18,\n                \"value\": \"n84ASM54y4\",\n                \"value_start\": 22,\n                \"value_end\": 32,\n                \"entropy\": 2.84644\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.991,\n        \"line_data_list\": [\n            {\n                \"line\": \"WPA2_PASSWORD: e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\",\n                \"line_num\": 25,\n                \"path\": \"./tests/samples/password_TRUE\",\n                \"info\": \"\",\n                \"variable\": \"WPA2_PASSWORD\",\n                \"variable_start\": 0,\n                \"variable_end\": 13,\n                \"value\": \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\",\n                \"value_start\": 15,\n                \"value_end\": 79,\n                \"entropy\": 3.67082\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"+  \\\"password\\\": \\\"dkajco1\\\"\",\n                \"line_num\": 10,\n                \"path\": \"./tests/samples/password_utf16.patch\",\n                \"info\": \"\",\n                \"variable\": \"password\",\n                \"variable_start\": 4,\n                \"variable_end\": 12,\n                \"value\": \"dkajco1\",\n                \"value_start\": 16,\n                \"value_end\": 23,\n                \"entropy\": 2.80735\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.914,\n        \"line_data_list\": [\n            {\n                \"line\": \"+  \\\"password\\\": \\\"dkajc\\u00f61\\\"\",\n                \"line_num\": 9,\n                \"path\": \"./tests/samples/password_western.patch\",\n                \"info\": \"\",\n                \"variable\": \"password\",\n                \"variable_start\": 4,\n                \"variable_end\": 12,\n                \"value\": \"dkajc\\u00f61\",\n                \"value_start\": 16,\n                \"value_end\": 23,\n                \"entropy\": 2.80735\n            }\n        ]\n    },\n    {\n        \"rule\": \"PayPal Braintree Access Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"access_token$production$gireogi121451781$abcaeaabadef01134517891121451781\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/paypal_key\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"access_token$production$gireogi121451781$abcaeaabadef01134517891121451781\",\n                \"value_start\": 0,\n                \"value_end\": 73,\n                \"entropy\": 4.39985\n            }\n        ]\n    },\n    {\n        \"rule\": \"PEM Private Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"str value = \\\"-----BEGIN RSA PRIVATE KEY-----\\\\n\\\" +\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/pem_key\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"-----BEGIN RSA PRIVATE KEY-----\",\n                \"value_start\": 13,\n                \"value_end\": 44,\n                \"entropy\": 3.38229\n            },\n            {\n                \"line\": \"\\\"MIICXQIBAAKBgQDwcEN7vZygGg6DvPpsw17hRD6S5N8+huaqs1JGXQfPhbvLTUsHdzGLVNQ/Z0wQVGdPiaJDflqhcT1IH8BLD4SHn+  \\\\n\\\"\",\n                \"line_num\": 3,\n                \"path\": \"./tests/samples/pem_key\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"\\\"MIICXQIBAAKBgQDwcEN7vZygGg6DvPpsw17hRD6S5N8+huaqs1JGXQfPhbvLTUsHdzGLVNQ/Z0wQVGdPiaJDflqhcT1IH8BLD4SHn+  \\\\n\\\"\",\n                \"value_start\": 0,\n                \"value_end\": 108,\n                \"entropy\": 5.52555\n            },\n            {\n                \"line\": \"\\t+ \\\"WuRIzX77P7oVKM2CoTA6VzT6s/bvr7HxFLl4NhohfyDsV0YCDc4I6EHGWMCUHZb0IWxzEGRWD3jbG8KAZUsQIDAQABAoGAOD7a2o\\\\r \\\\n\\\"\",\n                \"line_num\": 4,\n                \"path\": \"./tests/samples/pem_key\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"\\t+ \\\"WuRIzX77P7oVKM2CoTA6VzT6s/bvr7HxFLl4NhohfyDsV0YCDc4I6EHGWMCUHZb0IWxzEGRWD3jbG8KAZUsQIDAQABAoGAOD7a2o\\\\r \\\\n\\\"\",\n                \"value_start\": 0,\n                \"value_end\": 110,\n                \"entropy\": 5.49388\n            },\n            {\n                \"line\": \"\\\"  CRujY+PP0hS/4sHOBdDvnxa2wdW8NVNNagdCBhvP5Y1edBNMnkWOyuM4e7HzUgO0+8ndWis1OSJTz9EFTyHJm6GOn+/JR62NWNr   \\\"\",\n                \"line_num\": 5,\n                \"path\": \"./tests/samples/pem_key\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"\\\"  CRujY+PP0hS/4sHOBdDvnxa2wdW8NVNNagdCBhvP5Y1edBNMnkWOyuM4e7HzUgO0+8ndWis1OSJTz9EFTyHJm6GOn+/JR62NWNr   \\\"\",\n                \"value_start\": 0,\n                \"value_end\": 106,\n                \"entropy\": 5.44383\n            },\n            {\n                \"line\": \"\\t\\t\\\"9lfCb8cWq0eoOk3UUO9P+1nZNHjE/iDhuTi3x/5naW4SzdkZfxHo/NMI6i5w1ZnQ60CQQD9d0G9gBy6lPhC  \\\\\\\\\",\n                \"line_num\": 6,\n                \"path\": \"./tests/samples/pem_key\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"\\t\\t\\\"9lfCb8cWq0eoOk3UUO9P+1nZNHjE/iDhuTi3x/5naW4SzdkZfxHo/NMI6i5w1ZnQ60CQQD9d0G9gBy6lPhC  \\\\\\\\\",\n                \"value_start\": 0,\n                \"value_end\": 90,\n                \"entropy\": 5.53586\n            },\n            {\n                \"line\": \"\\\"\\\"\\\" mbHzYovVjSnyfzUtyWPNSrXNiUCR5vu2f6eCgSVzFZ0oHAv8nLaYnXrhyT25lwzNK5OhR/oPAkEA8tep3NmfxV \\\"\\\"\\\" +\",\n                \"line_num\": 7,\n                \"path\": \"./tests/samples/pem_key\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"\\\"\\\"\\\" mbHzYovVjSnyfzUtyWPNSrXNiUCR5vu2f6eCgSVzFZ0oHAv8nLaYnXrhyT25lwzNK5OhR/oPAkEA8tep3NmfxV \\\"\\\"\\\" +\",\n                \"value_start\": 0,\n                \"value_end\": 96,\n                \"entropy\": 5.46977\n            },\n            {\n                \"line\": \"QSBfKGfotblIG709xxfd6vHfDS0eZuTFUxkZDcayZDhMDjTMZxP8rokSbMaOSqUseUeYhx5TqFPwJAAhC0smyWz1ZjZ3eFIayN4yGRU+6B\\\\r\\\\n\",\n                \"line_num\": 8,\n                \"path\": \"./tests/samples/pem_key\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"QSBfKGfotblIG709xxfd6vHfDS0eZuTFUxkZDcayZDhMDjTMZxP8rokSbMaOSqUseUeYhx5TqFPwJAAhC0smyWz1ZjZ3eFIayN4yGRU+6B\\\\r\\\\n\",\n                \"value_start\": 0,\n                \"value_end\": 110,\n                \"entropy\": 5.55951\n            },\n            {\n                \"line\": \"\\\"amwXqhaPwKr7obS2HFiR7thKi9ODQk5oMpi8TCYMWEahgB+g9RMD0u6ZNQJBAMla\\\\\\\\\\\\\\\\nUJmySGuRnbAYu7PJURH90AOG0QOQ1Jp6yBMKgYIB\\\\\\\\\",\n                \"line_num\": 9,\n                \"path\": \"./tests/samples/pem_key\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"\\\"amwXqhaPwKr7obS2HFiR7thKi9ODQk5oMpi8TCYMWEahgB+g9RMD0u6ZNQJBAMla\\\\\\\\\\\\\\\\nUJmySGuRnbAYu7PJURH90AOG0QOQ1Jp6yBMKgYIB\\\\\\\\\",\n                \"value_start\": 0,\n                \"value_end\": 112,\n                \"entropy\": 5.49108\n            },\n            {\n                \"line\": \"Uaxk9J5Th8BXPyC1mclPMS7J\\\\\\\\\\\\\\\\ngMuobiFdIpryq51pvHkCQQDInvDaKI24Ho+cj6SCKnEO4kbjh/yx1XGwNmY0ld1i\\\\\\\\r5micHFiMI7/IcVZ4\\\\n\",\n                \"line_num\": 10,\n                \"path\": \"./tests/samples/pem_key\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"Uaxk9J5Th8BXPyC1mclPMS7J\\\\\\\\\\\\\\\\ngMuobiFdIpryq51pvHkCQQDInvDaKI24Ho+cj6SCKnEO4kbjh/yx1XGwNmY0ld1i\\\\\\\\r5micHFiMI7/IcVZ4\\\\n\",\n                \"value_start\": 0,\n                \"value_end\": 114,\n                \"entropy\": 5.57587\n            },\n            {\n                \"line\": \"2cl1OwdGjRdmO1LT6P1cl8UYIj/S\\\\n-----END RSA PRIVATE KEY-----\\\"\\\"\\\";\",\n                \"line_num\": 11,\n                \"path\": \"./tests/samples/pem_key\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"2cl1OwdGjRdmO1LT6P1cl8UYIj/S\\\\n-----END RSA PRIVATE KEY-----\\\"\\\"\\\";\",\n                \"value_start\": 0,\n                \"value_end\": 63,\n                \"entropy\": 4.72341\n            }\n        ]\n    },\n    {\n        \"rule\": \"PEM Private Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"char pk[] = \\\"\\\\\\\\n-----BEGIN EC PRIVATE KEY-----\\\\nMHcCAQEEID4VC4s0b2n3yvypHb2GO9prFUctYt\\\\r\\\\r\\\\n\\\\nHmGCMvpxkpexbHoAoGCCqGSM49\\\\\\\\\\\\\\\\\\\\nAwEHoUQDQgAE2GwUUuO9/dKl51bOryWzHF8wTSezSqdRIucGhDRsmDITLcNEZw3V\\\\\\\\\\\\\\\\rIaQP59Ufkz8NIkLeIAa1HZGZxCVMQ907FA==\\\\\\\\n-----END EC PRIVATE KEY-----\\\\n\\\";\",\n                \"line_num\": 14,\n                \"path\": \"./tests/samples/pem_key\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"-----BEGIN EC PRIVATE KEY-----\\\\nMHcCAQEEID4VC4s0b2n3yvypHb2GO9prFUctYt\\\\r\\\\r\\\\n\\\\nHmGCMvpxkpexbHoAoGCCqGSM49\\\\\\\\\\\\\\\\\\\\nAwEHoUQDQgAE2GwUUuO9/dKl51bOryWzHF8wTSezSqdRIucGhDRsmDITLcNEZw3V\\\\\\\\\\\\\\\\rIaQP59Ufkz8NIkLeIAa1HZGZxCVMQ907FA==\\\\\\\\n-----END EC PRIVATE KEY-----\",\n                \"value_start\": 16,\n                \"value_end\": 262,\n                \"entropy\": 5.56558\n            }\n        ]\n    },\n    {\n        \"rule\": \"PEM Private Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"-----BEGIN OPENSSH LOW ENTROPY PRIVATE KEY-----\",\n                \"line_num\": 27,\n                \"path\": \"./tests/samples/pem_key\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"-----BEGIN OPENSSH LOW ENTROPY PRIVATE KEY-----\",\n                \"value_start\": 0,\n                \"value_end\": 47,\n                \"entropy\": 3.8375\n            },\n            {\n                \"line\": \"12345678901231278634987284736283548102438723941563428762374129402103402394932746672734543664375t7323341253845186253784==\",\n                \"line_num\": 28,\n                \"path\": \"./tests/samples/pem_key\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"12345678901231278634987284736283548102438723941563428762374129402103402394932746672734543664375t7323341253845186253784==\",\n                \"value_start\": 0,\n                \"value_end\": 120,\n                \"entropy\": 3.30679\n            },\n            {\n                \"line\": \"-----END LOW ENTROPY PRIVATE KEY-----\",\n                \"line_num\": 29,\n                \"path\": \"./tests/samples/pem_key\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"-----END LOW ENTROPY PRIVATE KEY-----\",\n                \"value_start\": 0,\n                \"value_end\": 37,\n                \"entropy\": 3.55488\n            }\n        ]\n    },\n    {\n        \"rule\": \"PEM Private Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"  *  -----BEGIN PGP PRIVATE KEY BLOCK-----\",\n                \"line_num\": 35,\n                \"path\": \"./tests/samples/pem_key\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"-----BEGIN PGP PRIVATE KEY BLOCK-----\",\n                \"value_start\": 5,\n                \"value_end\": 42,\n                \"entropy\": 3.62218\n            },\n            {\n                \"line\": \"  *  Version: GnuPG v1.4.12 (GNU/Linux)\",\n                \"line_num\": 36,\n                \"path\": \"./tests/samples/pem_key\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"  *  Version: GnuPG v1.4.12 (GNU/Linux)\",\n                \"value_start\": 0,\n                \"value_end\": 39,\n                \"entropy\": 4.33255\n            },\n            {\n                \"line\": \"\",\n                \"line_num\": 37,\n                \"path\": \"./tests/samples/pem_key\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"\",\n                \"value_start\": 0,\n                \"value_end\": 0,\n                \"entropy\": 0.0\n            },\n            {\n                \"line\": \"  *  KzUsCyhuzSRrWk74aarzJ6i3z4wB01Y6wUn5rkbB8ig3eRjZtke1iX8c5cLtx3Mj\",\n                \"line_num\": 38,\n                \"path\": \"./tests/samples/pem_key\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"KzUsCyhuzSRrWk74aarzJ6i3z4wB01Y6wUn5rkbB8ig3eRjZtke1iX8c5cLtx3Mj\",\n                \"value_start\": 5,\n                \"value_end\": 69,\n                \"entropy\": 5.14032\n            },\n            {\n                \"line\": \"  *  SkMlXtGJEXbSEcN4wyPJkLZ6YxI76+WKuWlHZWdMXTrDYJLhvN6X7xUx4LgsGtb8\",\n                \"line_num\": 39,\n                \"path\": \"./tests/samples/pem_key\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"SkMlXtGJEXbSEcN4wyPJkLZ6YxI76+WKuWlHZWdMXTrDYJLhvN6X7xUx4LgsGtb8\",\n                \"value_start\": 5,\n                \"value_end\": 69,\n                \"entropy\": 5.09727\n            },\n            {\n                \"line\": \" //\\tGuVDoS4h4fZPyksjPyNpjUklFOZT6vTT2/QvOYxRTt/NLBleEpQEIHu6lHiwqsqB\",\n                \"line_num\": 40,\n                \"path\": \"./tests/samples/pem_key\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"GuVDoS4h4fZPyksjPyNpjUklFOZT6vTT2/QvOYxRTt/NLBleEpQEIHu6lHiwqsqB\",\n                \"value_start\": 4,\n                \"value_end\": 68,\n                \"entropy\": 5.20695\n            },\n            {\n                \"line\": \" ///\\t57KDXUMrZH/hk9Rr8mgdCT/evvhuKLBljh6ShBqn+jrMy101jHBlhxRefDjq9pmI\",\n                \"line_num\": 41,\n                \"path\": \"./tests/samples/pem_key\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"57KDXUMrZH/hk9Rr8mgdCT/evvhuKLBljh6ShBqn+jrMy101jHBlhxRefDjq9pmI\",\n                \"value_start\": 5,\n                \"value_end\": 69,\n                \"entropy\": 5.13876\n            },\n            {\n                \"line\": \"  //  UhZRwnRxgNb86LEEcgcK35SZCFnQu+POJWwWwWpkzpPiYHS+G66c3k0ApdIJjn2k\",\n                \"line_num\": 42,\n                \"path\": \"./tests/samples/pem_key\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"UhZRwnRxgNb86LEEcgcK35SZCFnQu+POJWwWwWpkzpPiYHS+G66c3k0ApdIJjn2k\",\n                \"value_start\": 6,\n                \"value_end\": 70,\n                \"entropy\": 5.19868\n            },\n            {\n                \"line\": \"  ///  q1yJq3TyI0Uc/snUIboAFHI5HIJHXQX/lwmeY/pDtuT6S+tf7XFMHXWWDtzb2xkI\",\n                \"line_num\": 43,\n                \"path\": \"./tests/samples/pem_key\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"q1yJq3TyI0Uc/snUIboAFHI5HIJHXQX/lwmeY/pDtuT6S+tf7XFMHXWWDtzb2xkI\",\n                \"value_start\": 7,\n                \"value_end\": 71,\n                \"entropy\": 5.13876\n            },\n            {\n                \"line\": \"// # /*iO/qjWpQtL6R1C03xMpECkmQaMOY/k9Hwg4JJa9YTe3DrehBz/NDw9iKaBHHKxf1*/\",\n                \"line_num\": 44,\n                \"path\": \"./tests/samples/pem_key\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"iO/qjWpQtL6R1C03xMpECkmQaMOY/k9Hwg4JJa9YTe3DrehBz/NDw9iKaBHHKxf1\",\n                \"value_start\": 7,\n                \"value_end\": 71,\n                \"entropy\": 5.17157\n            },\n            {\n                \"line\": \"# # # *  874RZktKcNFG9Yx0CZH7mRhAxiQG1iTbzLzM/rN+rb8DZnt8ijlp5/YzZeAVXUi9\",\n                \"line_num\": 45,\n                \"path\": \"./tests/samples/pem_key\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"874RZktKcNFG9Yx0CZH7mRhAxiQG1iTbzLzM/rN+rb8DZnt8ijlp5/YzZeAVXUi9\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.22641\n            },\n            {\n                \"line\": \"#+#+#+# *  IunznTXS1QmfDC6dVyRGfaJwzf6hk8RlM24JuZ3ATLaZ9sY5uZuXVa8syNwAGqVb\",\n                \"line_num\": 46,\n                \"path\": \"./tests/samples/pem_key\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"IunznTXS1QmfDC6dVyRGfaJwzf6hk8RlM24JuZ3ATLaZ9sY5uZuXVa8syNwAGqVb\",\n                \"value_start\": 11,\n                \"value_end\": 75,\n                \"entropy\": 5.17157\n            },\n            {\n                \"line\": \"  +  'yGeBfo8L8SigTUdhFrLc1AlgAGPh99fYyscpE+U+Tqm3Jl3vDLJ/VGGOLRlqLKgi' +\",\n                \"line_num\": 47,\n                \"path\": \"./tests/samples/pem_key\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"yGeBfo8L8SigTUdhFrLc1AlgAGPh99fYyscpE+U+Tqm3Jl3vDLJ/VGGOLRlqLKgi\",\n                \"value_start\": 6,\n                \"value_end\": 70,\n                \"entropy\": 5.10751\n            },\n            {\n                \"line\": \" +\\\"\\\" +\\\" 1DDOZJIuWH1Yo5/FUyH7x7McRO7ckDnCwknuXUlaCCzjomFZkoAUSym59+u0LlAh\\\"+\",\n                \"line_num\": 48,\n                \"path\": \"./tests/samples/pem_key\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"1DDOZJIuWH1Yo5/FUyH7x7McRO7ckDnCwknuXUlaCCzjomFZkoAUSym59+u0LlAh\",\n                \"value_start\": 8,\n                \"value_end\": 72,\n                \"entropy\": 5.10493\n            },\n            {\n                \"line\": \"  *  pBUvFiIZFQb3auylOTyOvXI4ZG8lPQfHKdpK3x2U4nUdCD9z7/awEpODLPWkdzjf\",\n                \"line_num\": 49,\n                \"path\": \"./tests/samples/pem_key\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"pBUvFiIZFQb3auylOTyOvXI4ZG8lPQfHKdpK3x2U4nUdCD9z7/awEpODLPWkdzjf\",\n                \"value_start\": 5,\n                \"value_end\": 69,\n                \"entropy\": 5.23407\n            },\n            {\n                \"line\": \"  *  gUjuP7eJrK/5p2iJ9PSz6+fytneqnUdwVbKOdlcj7UFnVUAIxlBiA2xdwVKqNo70\",\n                \"line_num\": 50,\n                \"path\": \"./tests/samples/pem_key\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"gUjuP7eJrK/5p2iJ9PSz6+fytneqnUdwVbKOdlcj7UFnVUAIxlBiA2xdwVKqNo70\",\n                \"value_start\": 5,\n                \"value_end\": 69,\n                \"entropy\": 5.15977\n            },\n            {\n                \"line\": \"  *  QMnczlCtGqUmeAwimQ+IyMkyV0KJYwV/PFCXjfQ2G/mnN88OtWcz793omSsWmwGc\",\n                \"line_num\": 51,\n                \"path\": \"./tests/samples/pem_key\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"QMnczlCtGqUmeAwimQ+IyMkyV0KJYwV/PFCXjfQ2G/mnN88OtWcz793omSsWmwGc\",\n                \"value_start\": 5,\n                \"value_end\": 69,\n                \"entropy\": 5.20892\n            },\n            {\n                \"line\": \"  *  iAViSZ0A0JWpTZHnZs8DDpmuDcydnyLMJDXHyOqtVe0lmWxpSTmfESFlSKeveYeY\",\n                \"line_num\": 52,\n                \"path\": \"./tests/samples/pem_key\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"iAViSZ0A0JWpTZHnZs8DDpmuDcydnyLMJDXHyOqtVe0lmWxpSTmfESFlSKeveYeY\",\n                \"value_start\": 5,\n                \"value_end\": 69,\n                \"entropy\": 4.94102\n            },\n            {\n                \"line\": \"  *  5Wq3vumtleWydYNgxgwwaPEApnr+uCk2J0Ye0+BjFRJHfPT4oBHzfrvWZq3lTnMJ\",\n                \"line_num\": 53,\n                \"path\": \"./tests/samples/pem_key\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"5Wq3vumtleWydYNgxgwwaPEApnr+uCk2J0Ye0+BjFRJHfPT4oBHzfrvWZq3lTnMJ\",\n                \"value_start\": 5,\n                \"value_end\": 69,\n                \"entropy\": 5.28891\n            },\n            {\n                \"line\": \"  *  HFNAoTz9q//Ty/CsKdla5HOsOgFJx42T12tb+N0eK9Bc5/Fj3FBLKtXUgI7gqOcw\",\n                \"line_num\": 54,\n                \"path\": \"./tests/samples/pem_key\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"HFNAoTz9q//Ty/CsKdla5HOsOgFJx42T12tb+N0eK9Bc5/Fj3FBLKtXUgI7gqOcw\",\n                \"value_start\": 5,\n                \"value_end\": 69,\n                \"entropy\": 5.14032\n            },\n            {\n                \"line\": \"  *  pFZSbyaPPMRZ/4kPx0+KaDZcZ7r2roCJFKxpeIeyeMXvLr0C2dAmB/oBWBuHuAsw\",\n                \"line_num\": 55,\n                \"path\": \"./tests/samples/pem_key\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"pFZSbyaPPMRZ/4kPx0+KaDZcZ7r2roCJFKxpeIeyeMXvLr0C2dAmB/oBWBuHuAsw\",\n                \"value_start\": 5,\n                \"value_end\": 69,\n                \"entropy\": 5.14032\n            },\n            {\n                \"line\": \"  *  ESn0CmT7gTwJ33lQHYBFAUeNMXPERcAFAWUXPxWGfgmOBBADCwDFcKVwnhM9UGTy\",\n                \"line_num\": 56,\n                \"path\": \"./tests/samples/pem_key\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"ESn0CmT7gTwJ33lQHYBFAUeNMXPERcAFAWUXPxWGfgmOBBADCwDFcKVwnhM9UGTy\",\n                \"value_start\": 5,\n                \"value_end\": 69,\n                \"entropy\": 5.09727\n            },\n            {\n                \"line\": \"  *  OBDjurirbyR6QM4cbq2qAzR0CRO6yyI9aXGkzy4P6y0LKQ0hJ9je2rp/4Ud2CdY4\",\n                \"line_num\": 57,\n                \"path\": \"./tests/samples/pem_key\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"OBDjurirbyR6QM4cbq2qAzR0CRO6yyI9aXGkzy4P6y0LKQ0hJ9je2rp/4Ud2CdY4\",\n                \"value_start\": 5,\n                \"value_end\": 69,\n                \"entropy\": 5.04087\n            },\n            {\n                \"line\": \"  *  idZTtlIeiFfpHqjCQLjH+zaEG2pqRGuBHxqeGTuJKcpTzDeJkUr278hNDUSFtCQI\",\n                \"line_num\": 58,\n                \"path\": \"./tests/samples/pem_key\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"idZTtlIeiFfpHqjCQLjH+zaEG2pqRGuBHxqeGTuJKcpTzDeJkUr278hNDUSFtCQI\",\n                \"value_start\": 5,\n                \"value_end\": 69,\n                \"entropy\": 5.14798\n            },\n            {\n                \"line\": \"  *  TGnx4JlcYHYLAvcjg0a2YhQyOcaS8iJhxaF+4yoMIh0DB5FA0V3ifF364h/o5wN7\",\n                \"line_num\": 59,\n                \"path\": \"./tests/samples/pem_key\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"TGnx4JlcYHYLAvcjg0a2YhQyOcaS8iJhxaF+4yoMIh0DB5FA0V3ifF364h/o5wN7\",\n                \"value_start\": 5,\n                \"value_end\": 69,\n                \"entropy\": 5.17923\n            },\n            {\n                \"line\": \"  *  /XOifXctwWKfR91qGtltlCWeVdFuumSOPG2hxLPW4HOlOWkhdOCRFtkqQuYd+bRz\",\n                \"line_num\": 60,\n                \"path\": \"./tests/samples/pem_key\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"/XOifXctwWKfR91qGtltlCWeVdFuumSOPG2hxLPW4HOlOWkhdOCRFtkqQuYd+bRz\",\n                \"value_start\": 5,\n                \"value_end\": 69,\n                \"entropy\": 4.99017\n            },\n            {\n                \"line\": \"  *  OoMgCLuFYDUvd7bso+IjrhPLTPHhr8V1CYz9jsKDXLvoz5XHvobkyijxOt+332SB\",\n                \"line_num\": 61,\n                \"path\": \"./tests/samples/pem_key\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"OoMgCLuFYDUvd7bso+IjrhPLTPHhr8V1CYz9jsKDXLvoz5XHvobkyijxOt+332SB\",\n                \"value_start\": 5,\n                \"value_end\": 69,\n                \"entropy\": 5.21461\n            },\n            {\n                \"line\": \"  *  4Rez5/vpHftx6pHbCa+LfdUZDYPeTUHgtTvqmbDMvwHMMwgMJP6gF6jyQINYXTIN\",\n                \"line_num\": 62,\n                \"path\": \"./tests/samples/pem_key\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"4Rez5/vpHftx6pHbCa+LfdUZDYPeTUHgtTvqmbDMvwHMMwgMJP6gF6jyQINYXTIN\",\n                \"value_start\": 5,\n                \"value_end\": 69,\n                \"entropy\": 5.07782\n            },\n            {\n                \"line\": \"  *  sTFVBS2exAu1uy/2onjE1ROZJqsKF6At24LzlZJZvKJRVh8n0Jrchs+8EluojWyv\",\n                \"line_num\": 63,\n                \"path\": \"./tests/samples/pem_key\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"sTFVBS2exAu1uy/2onjE1ROZJqsKF6At24LzlZJZvKJRVh8n0Jrchs+8EluojWyv\",\n                \"value_start\": 5,\n                \"value_end\": 69,\n                \"entropy\": 5.10907\n            },\n            {\n                \"line\": \"  *  ZIgdqdWv+SLPoZX7+2X/3DptmnL4PWZgjoW5n9fEkmr9LgblEpKp5z6vyN2kGdvk\",\n                \"line_num\": 64,\n                \"path\": \"./tests/samples/pem_key\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"ZIgdqdWv+SLPoZX7+2X/3DptmnL4PWZgjoW5n9fEkmr9LgblEpKp5z6vyN2kGdvk\",\n                \"value_start\": 5,\n                \"value_end\": 69,\n                \"entropy\": 5.09314\n            },\n            {\n                \"line\": \"  *  n57vMlC96VDbJkJ4ZwLx+XCdbSArsmOJ9QIKaxXSH2lV\",\n                \"line_num\": 65,\n                \"path\": \"./tests/samples/pem_key\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"n57vMlC96VDbJkJ4ZwLx+XCdbSArsmOJ9QIKaxXSH2lV\",\n                \"value_start\": 5,\n                \"value_end\": 49,\n                \"entropy\": 4.98773\n            },\n            {\n                \"line\": \"  *  =JG+I\",\n                \"line_num\": 66,\n                \"path\": \"./tests/samples/pem_key\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"=JG+I\",\n                \"value_start\": 5,\n                \"value_end\": 10,\n                \"entropy\": 2.32193\n            },\n            {\n                \"line\": \"  *  -----END PGP PRIVATE KEY BLOCK-----\",\n                \"line_num\": 67,\n                \"path\": \"./tests/samples/pem_key\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"-----END PGP PRIVATE KEY BLOCK-----\",\n                \"value_start\": 5,\n                \"value_end\": 40,\n                \"entropy\": 3.62274\n            }\n        ]\n    },\n    {\n        \"rule\": \"PEM Private Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"k = \\\"\\\\\\\"-----BEGIN PRIVATE KEY-----\\\\\\\\n\\\"\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/pem_key.p.code\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"-----BEGIN PRIVATE KEY-----\",\n                \"value_start\": 7,\n                \"value_end\": 34,\n                \"entropy\": 3.20029\n            },\n            {\n                \"line\": \" +   \\\"MIIBVAIBADANBgkqhkiG9w0BAQEFAASCAT4wggE6AgEAAkEAxAIxg6QtxmnJ0Bsj\\\\\\\\n\\\"\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/pem_key.p.code\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"MIIBVAIBADANBgkqhkiG9w0BAQEFAASCAT4wggE6AgEAAkEAxAIxg6QtxmnJ0Bsj\",\n                \"value_start\": 6,\n                \"value_end\": 70,\n                \"entropy\": 4.44143\n            },\n            {\n                \"line\": \" +   \\\"VRsEhjLB9lSY9CaFvvEbXK9eBezqR6x6epxm4w/bx1xAK1O9m4iyEN72+jhpZHZs\\\\\\\\n\\\"\",\n                \"line_num\": 3,\n                \"path\": \"./tests/samples/pem_key.p.code\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"VRsEhjLB9lSY9CaFvvEbXK9eBezqR6x6epxm4w/bx1xAK1O9m4iyEN72+jhpZHZs\",\n                \"value_start\": 6,\n                \"value_end\": 70,\n                \"entropy\": 5.16391\n            },\n            {\n                \"line\": \" +   \\\"6RZsxQIDAQABAkBbzksyxWtLS7Fi79MUwZrU4GFI50bc1E5AqN2QA/OeAg+tdgRC\\\\\\\\n\\\"\",\n                \"line_num\": 4,\n                \"path\": \"./tests/samples/pem_key.p.code\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"6RZsxQIDAQABAkBbzksyxWtLS7Fi79MUwZrU4GFI50bc1E5AqN2QA/OeAg+tdgRC\",\n                \"value_start\": 6,\n                \"value_end\": 70,\n                \"entropy\": 5.24586\n            },\n            {\n                \"line\": \" +   \\\"eTVV2eZEM750xZUCoqDwLsLeYrGFR7zy0VkBAiEA5ljPCFu3UIVOgZXhSr342mTX\\\\\\\\n\\\"\",\n                \"line_num\": 5,\n                \"path\": \"./tests/samples/pem_key.p.code\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"eTVV2eZEM750xZUCoqDwLsLeYrGFR7zy0VkBAiEA5ljPCFu3UIVOgZXhSr342mTX\",\n                \"value_start\": 6,\n                \"value_end\": 70,\n                \"entropy\": 5.28891\n            },\n            {\n                \"line\": \" +   \\\"vC9/t9XrGuHCQU8oOW0CIQDZ1mYBOniJmPD0h5j1wadmLkmmZRPUNyMTEHiBUEmB\\\\\\\\n\\\"\",\n                \"line_num\": 6,\n                \"path\": \"./tests/samples/pem_key.p.code\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"vC9/t9XrGuHCQU8oOW0CIQDZ1mYBOniJmPD0h5j1wadmLkmmZRPUNyMTEHiBUEmB\",\n                \"value_start\": 6,\n                \"value_end\": 70,\n                \"entropy\": 5.19102\n            },\n            {\n                \"line\": \" +   \\\"uQIgSpG1dB882PRO1eSPaoLVbN34eRNnZTv7QFiVak8V1oECIGk3tKdtPaGAnQoP\\\\\\\\n\\\"\",\n                \"line_num\": 7,\n                \"path\": \"./tests/samples/pem_key.p.code\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"uQIgSpG1dB882PRO1eSPaoLVbN34eRNnZTv7QFiVak8V1oECIGk3tKdtPaGAnQoP\",\n                \"value_start\": 6,\n                \"value_end\": 70,\n                \"entropy\": 5.04243\n            },\n            {\n                \"line\": \" +   \\\"oOM7eYbSXsKfWdeMFkX0E7CqPgcJAiEAlydP8ln92gy4LefZuIJn1/M5PEeRFKrq\\\\\\\\n\\\"\",\n                \"line_num\": 8,\n                \"path\": \"./tests/samples/pem_key.p.code\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"oOM7eYbSXsKfWdeMFkX0E7CqPgcJAiEAlydP8ln92gy4LefZuIJn1/M5PEeRFKrq\",\n                \"value_start\": 6,\n                \"value_end\": 70,\n                \"entropy\": 5.24586\n            },\n            {\n                \"line\": \" +   \\\"aAjRMKT7uCM=\\\\\\\\n\\\"\",\n                \"line_num\": 9,\n                \"path\": \"./tests/samples/pem_key.p.code\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"aAjRMKT7uCM=\",\n                \"value_start\": 6,\n                \"value_end\": 18,\n                \"entropy\": 3.4183\n            },\n            {\n                \"line\": \" +   \\\"-----END RSA PRIVATE KEY-----\\\\\\\"\\\";\",\n                \"line_num\": 10,\n                \"path\": \"./tests/samples/pem_key.p.code\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"-----END RSA PRIVATE KEY-----\",\n                \"value_start\": 6,\n                \"value_end\": 35,\n                \"entropy\": 3.24663\n            }\n        ]\n    },\n    {\n        \"rule\": \"PEM Private Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"#6 0.245 -----BEGIN PRIVATE KEY-----\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"-----BEGIN PRIVATE KEY-----\",\n                \"value_start\": 9,\n                \"value_end\": 36,\n                \"entropy\": 3.20029\n            },\n            {\n                \"line\": \"#6 0.245 MIITXgIBADALBglghkgBZQMEAxMEghNKMIITRgQgD1HmdulwXADuIR7CZpjn+kQ0\",\n                \"line_num\": 3,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"MIITXgIBADALBglghkgBZQMEAxMEghNKMIITRgQgD1HmdulwXADuIR7CZpjn+kQ0\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 4.69647\n            },\n            {\n                \"line\": \"#6 0.245 YQQLBsEKL+QJ4mm5BhsEghMg0QKJZBJu8a93tNmECcVyVI3601WKlimBrior84u+\",\n                \"line_num\": 4,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"YQQLBsEKL+QJ4mm5BhsEghMg0QKJZBJu8a93tNmECcVyVI3601WKlimBrior84u+\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 4.99586\n            },\n            {\n                \"line\": \"#6 0.245 9hLuy5J9PtjU05AGBBMW2LmlLopK1mROkYdqKofmVjQ625mx0+VmcrlcPBwO2Ows\",\n                \"line_num\": 5,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"9hLuy5J9PtjU05AGBBMW2LmlLopK1mROkYdqKofmVjQ625mx0+VmcrlcPBwO2Ows\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.13462\n            },\n            {\n                \"line\": \"#6 0.245 P0F354UFIsuK8u9gKDv1QUuJBcub6W/4aPBBmCSlKK6t4X6ODXmTZm0q4krMQsAk\",\n                \"line_num\": 6,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"P0F354UFIsuK8u9gKDv1QUuJBcub6W/4aPBBmCSlKK6t4X6ODXmTZm0q4krMQsAk\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.12086\n            },\n            {\n                \"line\": \"#6 0.245 doxhFgUQJS6SAAGTwoDjEIAckTAao1AQsQkUBA3SOEzQwDGTyJCQFI0IkRARl4kS\",\n                \"line_num\": 7,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"doxhFgUQJS6SAAGTwoDjEIAckTAao1AQsQkUBA3SOEzQwDGTyJCQFI0IkRARl4kS\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 4.78866\n            },\n            {\n                \"line\": \"#6 0.245 BInUAmzcgGHjBE3MmEXTQAFjiCnIFgAApYSToJAMFYASoBHaIHEUJy2KGIbSAhIB\",\n                \"line_num\": 8,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"BInUAmzcgGHjBE3MmEXTQAFjiCnIFgAApYSToJAMFYASoBHaIHEUJy2KGIbSAhIB\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 4.74561\n            },\n            {\n                \"line\": \"#6 0.245 QRKCGIUgkWkhMI4JIZHRhGWBllELxIxhkCRJwinIFGIMqTHJRm6jEoBJAI0SBQVD\",\n                \"line_num\": 9,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"QRKCGIUgkWkhMI4JIZHRhGWBllELxIxhkCRJwinIFGIMqTHJRm6jEoBJAI0SBQVD\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 4.89577\n            },\n            {\n                \"line\": \"#6 0.245 qBAgEQERJoVIgE0Ct42IMEJIMoxJAggSQwYhsiXjmEkMR3HZNAXRFiqjFgAkwUgE\",\n                \"line_num\": 10,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"qBAgEQERJoVIgE0Ct42IMEJIMoxJAggSQwYhsiXjmEkMR3HZNAXRFiqjFgAkwUgE\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 4.81189\n            },\n            {\n                \"line\": \"#6 0.245 A4YTFQ1aFgrYNo7TGApJBkTggC0kR0wDAJKUGDBBNoqjAAkTKWEBto0AAIYERWxE\",\n                \"line_num\": 11,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"A4YTFQ1aFgrYNo7TGApJBkTggC0kR0wDAJKUGDBBNoqjAAkTKWEBto0AAIYERWxE\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 4.74717\n            },\n            {\n                \"line\": \"#6 0.245 xEwiqYgUxxGAKICTkEQIwRDDFmgQhEGbEgySGDASuUhbIkWJtCAKgGGhBoXDImGY\",\n                \"line_num\": 12,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"xEwiqYgUxxGAKICTkEQIwRDDFmgQhEGbEgySGDASuUhbIkWJtCAKgGGhBoXDImGY\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 4.72227\n            },\n            {\n                \"line\": \"#6 0.245 JEULtzEQMCIhKY0jwGThQIwBQY6QhpDDGAwUQCHUJpDhAiwiIZJTME6kFipBGA3R\",\n                \"line_num\": 13,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"JEULtzEQMCIhKY0jwGThQIwBQY6QhpDDGAwUQCHUJpDhAiwiIZJTME6kFipBGA3R\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 4.71244\n            },\n            {\n                \"line\": \"#6 0.245 qCzDQDKiAiUDBDEZuGXhAnASMDCMNpAEsWChJBATpUFUMilgyIlgyEwYJoUZGVGY\",\n                \"line_num\": 14,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"qCzDQDKiAiUDBDEZuGXhAnASMDCMNpAEsWChJBATpUFUMilgyIlgyEwYJoUZGVGY\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 4.85947\n            },\n            {\n                \"line\": \"#6 0.245 ogjZhJHTECwUFgUjQCkBRgbMEI4blUSEyAHklAXklgUYw0xaSDIJIkGDFiJRkkiK\",\n                \"line_num\": 15,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"ogjZhJHTECwUFgUjQCkBRgbMEI4blUSEyAHklAXklgUYw0xaSDIJIkGDFiJRkkiK\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 4.86673\n            },\n            {\n                \"line\": \"#6 0.245 gCDTQITBBBGRsmGcBJIYBXIQp4yDtA3QmE3UJI0QgCVawCwLBRCKNDAcMoIDAxII\",\n                \"line_num\": 16,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"gCDTQITBBBGRsmGcBJIYBXIQp4yDtA3QmE3UJI0QgCVawCwLBRCKNDAcMoIDAxII\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 4.72006\n            },\n            {\n                \"line\": \"#6 0.245 RmJCsmCaAojIQg0MtQzDmEQZgYESQSQZpY0kqUDgOEoQgoRCREyMJE0YJkojyCgg\",\n                \"line_num\": 17,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"RmJCsmCaAojIQg0MtQzDmEQZgYESQSQZpY0kqUDgOEoQgoRCREyMJE0YJkojyCgg\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 4.49369\n            },\n            {\n                \"line\": \"#6 0.245 EQ5cGA4hNI0TBoKbIkiQOCyMAjIhl1DgKAlbwnCYKAzKQECCGHDiBJBJNBEiE4Ia\",\n                \"line_num\": 18,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"EQ5cGA4hNI0TBoKbIkiQOCyMAjIhl1DgKAlbwnCYKAzKQECCGHDiBJBJNBEiE4Ia\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 4.85141\n            },\n            {\n                \"line\": \"#6 0.245 xo0CIoRcNiUapW1UmGHLREVihg0ZRiYUxwzEwEHToCQDMIiSAFGaQAhSNIpaIo3g\",\n                \"line_num\": 19,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"xo0CIoRcNiUapW1UmGHLREVihg0ZRiYUxwzEwEHToCQDMIiSAFGaQAhSNIpaIo3g\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 4.92157\n            },\n            {\n                \"line\": \"#6 0.245 kgCjgoDAEEXKOGYYmGhaNArJGEQiCASkliCaIoohtAlRQhJIBE6EICFREm4DAnEK\",\n                \"line_num\": 20,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"kgCjgoDAEEXKOGYYmGhaNArJGEQiCASkliCaIoohtAlRQhJIBE6EICFREm4DAnEK\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 4.71436\n            },\n            {\n                \"line\": \"#6 0.245 pihYGGLKmIxiRC4DOEwaEwICwQxbEgAiBwILEWKKCE1aiAzYOI0joyGCxoAEBG3h\",\n                \"line_num\": 21,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"pihYGGLKmIxiRC4DOEwaEwICwQxbEgAiBwILEWKKCE1aiAzYOI0joyGCxoAEBG3h\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 4.69102\n            },\n            {\n                \"line\": \"#6 0.245 towIwBDkRFJaKI4CQEEKQ3ASuEEKQ24JOI4DIQYckyjJQDGRQIQKISUMImyQoGkA\",\n                \"line_num\": 22,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"towIwBDkRFJaKI4CQEEKQ3ASuEEKQ24JOI4DIQYckyjJQDGRQIQKISUMImyQoGkA\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 4.55202\n            },\n            {\n                \"line\": \"#6 0.245 NjEgRFLgFIKRQHEEJpAcCAIIhISbxgwLQU3koAxBIgoTFomElASihhBhME4jhiQA\",\n                \"line_num\": 23,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"NjEgRFLgFIKRQHEEJpAcCAIIhISbxgwLQU3koAxBIgoTFomElASihhBhME4jhiQA\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 4.70776\n            },\n            {\n                \"line\": \"#6 0.245 BgCSAkUioBHhKE2IkGUCkhBDEALcQJEYowwbF2lKCIETEUqSBFEKQGnBtpCYQoBU\",\n                \"line_num\": 24,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"BgCSAkUioBHhKE2IkGUCkhBDEALcQJEYowwbF2lKCIETEUqSBFEKQGnBtpCYQoBU\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 4.68689\n            },\n            {\n                \"line\": \"#6 0.245 tHFbJHEaiYxKAmEaB21buAgKNiFBpkUbMjIJsYCEhEVBIBHZMiAaRg0hCVAjMxDE\",\n                \"line_num\": 25,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"tHFbJHEaiYxKAmEaB21buAgKNiFBpkUbMjIJsYCEhEVBIBHZMiAaRg0hCVAjMxDE\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 4.85337\n            },\n            {\n                \"line\": \"#6 0.245 mADZMHAIEw4QoFFgKFIgMikiMmUJgZGLwmEBsQUihmBbJhIEMGYSN4iSRkDbECba\",\n                \"line_num\": 26,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"mADZMHAIEw4QoFFgKFIgMikiMmUJgZGLwmEBsQUihmBbJhIEMGYSN4iSRkDbECba\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 4.79657\n            },\n            {\n                \"line\": \"#6 0.245 BmghyVBJiGTjwClJRJIMyWUAQgWAIAmDEHCKwoiBEEJKEBFiMiXcRIGZwCCLwA1U\",\n                \"line_num\": 27,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"BmghyVBJiGTjwClJRJIMyWUAQgWAIAmDEHCKwoiBEEJKEBFiMiXcRIGZwCCLwA1U\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 4.76945\n            },\n            {\n                \"line\": \"#6 0.245 EDACECUiEDLQCEyLImIghxAZSEgks4SUOAULowVbOCCTtETJRHJjhkFEAmoQIEIY\",\n                \"line_num\": 28,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"EDACECUiEDLQCEyLImIghxAZSEgks4SUOAULowVbOCCTtETJRHJjhkFEAmoQIEIY\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 4.70126\n            },\n            {\n                \"line\": \"#6 0.245 GQWUhkEcBioKqJDQhAkjJwYYkw3MoAwZCCEDRGphtnEDkAnSyGSRxkUBQkojJGSI\",\n                \"line_num\": 29,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"GQWUhkEcBioKqJDQhAkjJwYYkw3MoAwZCCEDRGphtnEDkAnSyGSRxkUBQkojJGSI\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 4.74525\n            },\n            {\n                \"line\": \"#6 0.245 sAkYGBDRMmQJIg0bhIhcuCXgiGABCI1RNG4bw4zUKImRMAxSAi0MskRCEG0aA2Qi\",\n                \"line_num\": 30,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"sAkYGBDRMmQJIg0bhIhcuCXgiGABCI1RNG4bw4zUKImRMAxSAi0MskRCEG0aA2Qi\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 4.86517\n            },\n            {\n                \"line\": \"#6 0.245 AoDYpAwUoGgSpYgCQUVbFgGahIkMRBDUBASCoARauIWZKEyYmFHIyEGhRFCYiAzc\",\n                \"line_num\": 31,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"AoDYpAwUoGgSpYgCQUVbFgGahIkMRBDUBASCoARauIWZKEyYmFHIyEGhRFCYiAzc\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 4.84924\n            },\n            {\n                \"line\": \"#6 0.245 EojbGBGTtIwiRWhUsBBABlLCxgkMNooBIzAkEnICGGqLpkjkNFAKmGghCUTgEIJU\",\n                \"line_num\": 32,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"EojbGBGTtIwiRWhUsBBABlLCxgkMNooBIzAkEnICGGqLpkjkNFAKmGghCUTgEIJU\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 4.78518\n            },\n            {\n                \"line\": \"#6 0.245 lEhEgoESMREbkEXYtGELMxASxyQLoJHEiHEImBAEyGHZkiWTJjKgokWhuIghlRAa\",\n                \"line_num\": 33,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"lEhEgoESMREbkEXYtGELMxASxyQLoJHEiHEImBAEyGHZkiWTJjKgokWhuIghlRAa\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 4.73346\n            },\n            {\n                \"line\": \"#6 0.245 xSwckCRCRHARNooERYIiBU1TCAYMBopcNAaIJhHRgA0jgVFiBoaTIjBYBgXkooxZ\",\n                \"line_num\": 34,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"xSwckCRCRHARNooERYIiBU1TCAYMBopcNAaIJhHRgA0jgVFiBoaTIjBYBgXkooxZ\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 4.69143\n            },\n            {\n                \"line\": \"#6 0.245 GJASFABhsEWQGIWkkIHbIAhCwAmUopFjEoTMwECREi3YSBIgKGWcNnABJCCjMo4U\",\n                \"line_num\": 35,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"GJASFABhsEWQGIWkkIHbIAhCwAmUopFjEoTMwECREi3YSBIgKGWcNnABJCCjMo4U\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 4.86517\n            },\n            {\n                \"line\": \"#6 0.245 FyHgloRKOGSUFC0UBmYBSW3SooTSslEjKAHISIbMpDAcJWWLIi2MoHEMB2yQkklI\",\n                \"line_num\": 36,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"FyHgloRKOGSUFC0UBmYBSW3SooTSslEjKAHISIbMpDAcJWWLIi2MoHEMB2yQkklI\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 4.94712\n            },\n            {\n                \"line\": \"#6 0.245 BChIpAeQQHOr3D0Iep/D+4IgaEAVpnwPXeexBdx0o3BUailbyZ/noQlEd13bgvWN\",\n                \"line_num\": 37,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"BChIpAeQQHOr3D0Iep/D+4IgaEAVpnwPXeexBdx0o3BUailbyZ/noQlEd13bgvWN\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.09727\n            },\n            {\n                \"line\": \"#6 0.245 NSFX9xz99vb3aSIaargvQ4Hq4bUvZ/y/qgXCAgs2PcNXqDAHd1EPWV5TIs4l3Qug\",\n                \"line_num\": 38,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"NSFX9xz99vb3aSIaargvQ4Hq4bUvZ/y/qgXCAgs2PcNXqDAHd1EPWV5TIs4l3Qug\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.08548\n            },\n            {\n                \"line\": \"#6 0.245 TTdPyoEV7/+hokQ6ucVaSk7qiV0r/7DI2Kth2TlKbmiXRl9Lx/EshuhoiqWCxCjh\",\n                \"line_num\": 39,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"TTdPyoEV7/+hokQ6ucVaSk7qiV0r/7DI2Kth2TlKbmiXRl9Lx/EshuhoiqWCxCjh\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.09158\n            },\n            {\n                \"line\": \"#6 0.245 na22XUltZ62l2/8f+Bi3vIrEz7jrNWRdeVbVykqeHxwsTsc9oWnFpY7F+GATH0RO\",\n                \"line_num\": 40,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"na22XUltZ62l2/8f+Bi3vIrEz7jrNWRdeVbVykqeHxwsTsc9oWnFpY7F+GATH0RO\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.46875\n            },\n            {\n                \"line\": \"#6 0.245 1rD2oX9QyI6wcv4bePHzjtJuTz3V0w/bh4n+xmleu4chQwL2aLwlLa62jcKXgun8\",\n                \"line_num\": 41,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"1rD2oX9QyI6wcv4bePHzjtJuTz3V0w/bh4n+xmleu4chQwL2aLwlLa62jcKXgun8\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.15977\n            },\n            {\n                \"line\": \"#6 0.245 tXVVGteOYcsQVmS/YOMLveYAT8GmwWOd+4h4dCjWZB/6xI6DUv9pCYGbzNdZ5qt/\",\n                \"line_num\": 42,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"tXVVGteOYcsQVmS/YOMLveYAT8GmwWOd+4h4dCjWZB/6xI6DUv9pCYGbzNdZ5qt/\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.17923\n            },\n            {\n                \"line\": \"#6 0.245 x3r5LF4b4teVUFwqvPcGn2+h/MLZ8VcilPb7bfR0pcHaWqynggr6EtnMACOsQrp6\",\n                \"line_num\": 43,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"x3r5LF4b4teVUFwqvPcGn2+h/MLZ8VcilPb7bfR0pcHaWqynggr6EtnMACOsQrp6\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.35907\n            },\n            {\n                \"line\": \"#6 0.245 20lFJR/EHrv7uuXCyEaUVzi3pzq/J1u9EKXsuqtNFZWI0RA7Pdk7Sk/EV9tzeOJu\",\n                \"line_num\": 44,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"20lFJR/EHrv7uuXCyEaUVzi3pzq/J1u9EKXsuqtNFZWI0RA7Pdk7Sk/EV9tzeOJu\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.11517\n            },\n            {\n                \"line\": \"#6 0.245 ES62pC7vlJ1Wo8vpXx1wzEL3pKdnKxNCWfKaTO25qoo4t0+8WkM2w1oKWEAKVFBb\",\n                \"line_num\": 45,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"ES62pC7vlJ1Wo8vpXx1wzEL3pKdnKxNCWfKaTO25qoo4t0+8WkM2w1oKWEAKVFBb\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.11517\n            },\n            {\n                \"line\": \"#6 0.245 5Zus63oUSjTaLGPXdoE/wk5P6mW3BmwmFfKeHZuUNnBwlhIcrlnyFc7UklmNsUm9\",\n                \"line_num\": 46,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"5Zus63oUSjTaLGPXdoE/wk5P6mW3BmwmFfKeHZuUNnBwlhIcrlnyFc7UklmNsUm9\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.10751\n            },\n            {\n                \"line\": \"#6 0.245 WPDIyiFjey7GcRbVAXnl5JftLLPun9/Sl6WPoP9bsDpdTkKZFD3Jy0MAnA6gwi6G\",\n                \"line_num\": 47,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"WPDIyiFjey7GcRbVAXnl5JftLLPun9/Sl6WPoP9bsDpdTkKZFD3Jy0MAnA6gwi6G\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.22227\n            },\n            {\n                \"line\": \"#6 0.245 A1Un/skxl2PDwdSYu/Yqk2F7BSz5x/D9QUTnkXm/W0uG3wmFVMI08OYwtCB1xXW8\",\n                \"line_num\": 48,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"A1Un/skxl2PDwdSYu/Yqk2F7BSz5x/D9QUTnkXm/W0uG3wmFVMI08OYwtCB1xXW8\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.14032\n            },\n            {\n                \"line\": \"#6 0.245 kQbalUGvAscvoaXkkD2JjjZrxAOnkZxJqwzP84Sa33HEYMVPEtvucp2gd6du2weG\",\n                \"line_num\": 49,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"kQbalUGvAscvoaXkkD2JjjZrxAOnkZxJqwzP84Sa33HEYMVPEtvucp2gd6du2weG\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.24586\n            },\n            {\n                \"line\": \"#6 0.245 v8X1Qy6SePZ/L2pIQHHG0t5aO5fBmUc1UJh9BmG15oE0rzqEiopaCDbFkEguFjhs\",\n                \"line_num\": 50,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"v8X1Qy6SePZ/L2pIQHHG0t5aO5fBmUc1UJh9BmG15oE0rzqEiopaCDbFkEguFjhs\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.40211\n            },\n            {\n                \"line\": \"#6 0.245 2BI6NiY798TaKwkaWFy8irSLb3CvU8IrAm3VM9Lcp1vhwsnyGvMq78fC+SjxKcWQ\",\n                \"line_num\": 51,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"2BI6NiY798TaKwkaWFy8irSLb3CvU8IrAm3VM9Lcp1vhwsnyGvMq78fC+SjxKcWQ\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.3007\n            },\n            {\n                \"line\": \"#6 0.245 QwCdrsgLZerfct0uWaaA/1yVRH0g8ceBIuoj2Kkv9E6xTKeAwsMi9vhwqgkjsSG/\",\n                \"line_num\": 52,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"QwCdrsgLZerfct0uWaaA/1yVRH0g8ceBIuoj2Kkv9E6xTKeAwsMi9vhwqgkjsSG/\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.32782\n            },\n            {\n                \"line\": \"#6 0.245 Ts54V2KurNiPKb5WSwteBOD7TvkdwMfmK7jYMWH1oc98V70YxPgnkURW2IXs8H23\",\n                \"line_num\": 53,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"Ts54V2KurNiPKb5WSwteBOD7TvkdwMfmK7jYMWH1oc98V70YxPgnkURW2IXs8H23\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.35907\n            },\n            {\n                \"line\": \"#6 0.245 5EQsx7aiwzXBB5F5xIy3yNJIpFUGQGU1oy2L8FQhuKdyMjXEAEiuJtzdyTtgnoJR\",\n                \"line_num\": 54,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"5EQsx7aiwzXBB5F5xIy3yNJIpFUGQGU1oy2L8FQhuKdyMjXEAEiuJtzdyTtgnoJR\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.07212\n            },\n            {\n                \"line\": \"#6 0.245 7N0evDEzqUuUVvtXb32GoTuLzlPM32+cBbDr80mIphfmyr/RQLlZIxgv6LsV4pgU\",\n                \"line_num\": 55,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"7N0evDEzqUuUVvtXb32GoTuLzlPM32+cBbDr80mIphfmyr/RQLlZIxgv6LsV4pgU\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.33961\n            },\n            {\n                \"line\": \"#6 0.245 VTS/P3VLXRX6oclTn7UZ1+5L4dosP2pjoAmSEeQe9DiDDKb9DRcYRP09ePylma2i\",\n                \"line_num\": 56,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"VTS/P3VLXRX6oclTn7UZ1+5L4dosP2pjoAmSEeQe9DiDDKb9DRcYRP09ePylma2i\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.14032\n            },\n            {\n                \"line\": \"#6 0.245 2BD0oJ81P4A/tl9ojqyz4dSJuIo2deDaQs8cme0lNxAR0uO8FbiHnnkXFalberVl\",\n                \"line_num\": 57,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"2BD0oJ81P4A/tl9ojqyz4dSJuIo2deDaQs8cme0lNxAR0uO8FbiHnnkXFalberVl\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.23407\n            },\n            {\n                \"line\": \"#6 0.245 V1ZSX4aPC9DBvrxYL1hh51umejg5GoIOWVLZtAVThRVyhUEg1krkM0zNGGjT0o4E\",\n                \"line_num\": 58,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"V1ZSX4aPC9DBvrxYL1hh51umejg5GoIOWVLZtAVThRVyhUEg1krkM0zNGGjT0o4E\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.1757\n            },\n            {\n                \"line\": \"#6 0.245 R42sWTjNMxSB99ZQbpuySMtisaB2WPcdTdIWwnBytzy/XGezCicBJHMMCA36m4K/\",\n                \"line_num\": 59,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"R42sWTjNMxSB99ZQbpuySMtisaB2WPcdTdIWwnBytzy/XGezCicBJHMMCA36m4K/\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.19516\n            },\n            {\n                \"line\": \"#6 0.245 rkFyjWHI73ahgE3nsfg3zQui9bZMCThlRV07cFbsh4Vrz8V84kWceTIBTB/NMGIH\",\n                \"line_num\": 60,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"rkFyjWHI73ahgE3nsfg3zQui9bZMCThlRV07cFbsh4Vrz8V84kWceTIBTB/NMGIH\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.15977\n            },\n            {\n                \"line\": \"#6 0.245 N7gW2wDhlzJFmM1DI6fc/Yv1/zFEqW+GwAEmlCdBYd0KK2Uw+DjvuTpoUAj0N5EA\",\n                \"line_num\": 61,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"N7gW2wDhlzJFmM1DI6fc/Yv1/zFEqW+GwAEmlCdBYd0KK2Uw+DjvuTpoUAj0N5EA\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.17157\n            },\n            {\n                \"line\": \"#6 0.245 eKwQvUVLxerWkelYq7XTtuj+cf/ni9cwUUCaO8CZ3qfO6qlESAASZ3Zs8dLj2ScI\",\n                \"line_num\": 62,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"eKwQvUVLxerWkelYq7XTtuj+cf/ni9cwUUCaO8CZ3qfO6qlESAASZ3Zs8dLj2ScI\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.24173\n            },\n            {\n                \"line\": \"#6 0.245 7F4zmeFxp+adjBRR2vj0iTdckA5tSmEOANrJ7Ncq0JGZBuwKyAkUneJ+VPxGavrX\",\n                \"line_num\": 63,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"7F4zmeFxp+adjBRR2vj0iTdckA5tSmEOANrJ7Ncq0JGZBuwKyAkUneJ+VPxGavrX\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.28891\n            },\n            {\n                \"line\": \"#6 0.245 WvV5rQ7BNgz7+ZAKGjvq78AyQZVS9MEpxe6qKy7OMclg75op8zCJ54IzpGkfcPWa\",\n                \"line_num\": 64,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"WvV5rQ7BNgz7+ZAKGjvq78AyQZVS9MEpxe6qKy7OMclg75op8zCJ54IzpGkfcPWa\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.15821\n            },\n            {\n                \"line\": \"#6 0.245 NhOa5n1kEdNm2a5u6tzdxJVvpFEQDkta6OpfSX76YeNLpy7bSdBdBWmNzWkuDMFK\",\n                \"line_num\": 65,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"NhOa5n1kEdNm2a5u6tzdxJVvpFEQDkta6OpfSX76YeNLpy7bSdBdBWmNzWkuDMFK\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.04657\n            },\n            {\n                \"line\": \"#6 0.245 z2ZRcjbQFJ657Y7MWy7/4kzBPBG/OcNAi/9h1y+Sm84LZhLkH59okLFuklK5F/e4\",\n                \"line_num\": 66,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"z2ZRcjbQFJ657Y7MWy7/4kzBPBG/OcNAi/9h1y+Sm84LZhLkH59okLFuklK5F/e4\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.15977\n            },\n            {\n                \"line\": \"#6 0.245 QmGx1sx+wlPtQ3q1f9tFYFMAwpIWsCGFd3DDKyA5QTBSc2wfcyBgIcZotBV0Ic2H\",\n                \"line_num\": 67,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"QmGx1sx+wlPtQ3q1f9tFYFMAwpIWsCGFd3DDKyA5QTBSc2wfcyBgIcZotBV0Ic2H\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.11673\n            },\n            {\n                \"line\": \"#6 0.245 /Xa/US2QGYlpDtm/RDaq/kqlbMPZhBLE+M2W/dGYSuyPoL0GPC0bML0LLlavP5xB\",\n                \"line_num\": 68,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"/Xa/US2QGYlpDtm/RDaq/kqlbMPZhBLE+M2W/dGYSuyPoL0GPC0bML0LLlavP5xB\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 4.92197\n            },\n            {\n                \"line\": \"#6 0.245 4EuYIB54jmYwLcO7ZK8wpQhR6kk/gAwLnIDApOH5iiv+1sb0IJpjZmFmZUdUllpb\",\n                \"line_num\": 69,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"4EuYIB54jmYwLcO7ZK8wpQhR6kk/gAwLnIDApOH5iiv+1sb0IJpjZmFmZUdUllpb\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.20282\n            },\n            {\n                \"line\": \"#6 0.245 PppwUoy0NzBPjq/PksCd6fVWkmDpIuI+SLJyNhRNKEOTMTrVYuPSUvnFf9NaHkUi\",\n                \"line_num\": 70,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"PppwUoy0NzBPjq/PksCd6fVWkmDpIuI+SLJyNhRNKEOTMTrVYuPSUvnFf9NaHkUi\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.30836\n            },\n            {\n                \"line\": \"#6 0.245 ifzK2eAEfx2UBE7o+YQR+QC6/pJQIMX7FXQjx78cVTKlybuJkpDggsUJ25SszaMk\",\n                \"line_num\": 71,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"ifzK2eAEfx2UBE7o+YQR+QC6/pJQIMX7FXQjx78cVTKlybuJkpDggsUJ25SszaMk\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.24586\n            },\n            {\n                \"line\": \"#6 0.245 KA0xTnsP5gx8lUGmyWMuJ5JgDWUP1jOHdadTmX/xtEy5Wqw/DQKn2bG2NnpQrbIJ\",\n                \"line_num\": 72,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"KA0xTnsP5gx8lUGmyWMuJ5JgDWUP1jOHdadTmX/xtEy5Wqw/DQKn2bG2NnpQrbIJ\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.19102\n            },\n            {\n                \"line\": \"#6 0.245 EcXsCgMeziOzNqqJk9QrnAAu/eB1XdnhbC3UJ/caEI7gofJxMYiO20/OHtnkLhgf\",\n                \"line_num\": 73,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"EcXsCgMeziOzNqqJk9QrnAAu/eB1XdnhbC3UJ/caEI7gofJxMYiO20/OHtnkLhgf\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.22227\n            },\n            {\n                \"line\": \"#6 0.245 82N3qrG5oZP8oQVmgO4Ww58rWn2U5f9F+tFjrSjj8OR1NkY39x/kgRXg538T0TEL\",\n                \"line_num\": 74,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"82N3qrG5oZP8oQVmgO4Ww58rWn2U5f9F+tFjrSjj8OR1NkY39x/kgRXg538T0TEL\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.08392\n            },\n            {\n                \"line\": \"#6 0.245 JmFGqBYBW5YkhS4E6cQ+s8Me76ZYMcIEyrb7vGpQ6sATjVuendOfq/nG/E1vVoQ8\",\n                \"line_num\": 75,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"JmFGqBYBW5YkhS4E6cQ+s8Me76ZYMcIEyrb7vGpQ6sATjVuendOfq/nG/E1vVoQ8\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.25352\n            },\n            {\n                \"line\": \"#6 0.245 xSd1FGfwoVOhRp3I2ygdcz4l1RQzqunVff1A8ejjoMJ4+N/JUaL3rDF6KDPLuG1n\",\n                \"line_num\": 76,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"xSd1FGfwoVOhRp3I2ygdcz4l1RQzqunVff1A8ejjoMJ4+N/JUaL3rDF6KDPLuG1n\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.33195\n            },\n            {\n                \"line\": \"#6 0.245 aHkGr75LFfgMPc1oAqtMk5qdEfNqYBsbaPhu7GV9ewft3R8E5VJdTVu6ksE7+1HZ\",\n                \"line_num\": 77,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"aHkGr75LFfgMPc1oAqtMk5qdEfNqYBsbaPhu7GV9ewft3R8E5VJdTVu6ksE7+1HZ\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.16743\n            },\n            {\n                \"line\": \"#6 0.245 XnH5jM4u1p9NF4iQmQhQI8fOX6wqBDWcekGs+baJcxA+5zkYgffkUX+MRjMAHUAW\",\n                \"line_num\": 78,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"XnH5jM4u1p9NF4iQmQhQI8fOX6wqBDWcekGs+baJcxA+5zkYgffkUX+MRjMAHUAW\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.26118\n            },\n            {\n                \"line\": \"#6 0.245 hL1S3jeUuoh8YWqWkyCS/NDmEV0oFNey0hU/36YktwDByEMa6zAxDnQoRpq6dikI\",\n                \"line_num\": 79,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"hL1S3jeUuoh8YWqWkyCS/NDmEV0oFNey0hU/36YktwDByEMa6zAxDnQoRpq6dikI\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.21048\n            },\n            {\n                \"line\": \"#6 0.245 S//brXmHlWb++g5HLAPTV94FLiWnEEW7Ozn0HD6R5psyW0Csx2vt95FF3cmFziHd\",\n                \"line_num\": 80,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"S//brXmHlWb++g5HLAPTV94FLiWnEEW7Ozn0HD6R5psyW0Csx2vt95FF3cmFziHd\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.1757\n            },\n            {\n                \"line\": \"#6 0.245 M7nqiDw5byw8wT/6cZmU5TJqSz3fKFOt13VXuG80yEtaDr68gDjxas2Tb/wTE0ZN\",\n                \"line_num\": 81,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"M7nqiDw5byw8wT/6cZmU5TJqSz3fKFOt13VXuG80yEtaDr68gDjxas2Tb/wTE0ZN\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.22641\n            },\n            {\n                \"line\": \"#6 0.245 Y+4MmRj78Ffh74q87fX6FMQO1/HEKh7ltXGGNF5WlzEG8vVKHqbn487lBELkl00n\",\n                \"line_num\": 82,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"Y+4MmRj78Ffh74q87fX6FMQO1/HEKh7ltXGGNF5WlzEG8vVKHqbn487lBELkl00n\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 4.99017\n            },\n            {\n                \"line\": \"#6 0.245 uP16MZvPDTHzhQ4l/fKuBW7MpuczsUpdHgSwLIeJS5354WhLYONRRz8yXqo/mfNd\",\n                \"line_num\": 83,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"uP16MZvPDTHzhQ4l/fKuBW7MpuczsUpdHgSwLIeJS5354WhLYONRRz8yXqo/mfNd\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.38266\n            },\n            {\n                \"line\": \"#6 0.245 stWBI1ChlRmYkLyTri6kvajsDMPuGtDp/30UEi0zjVhwvJ9IcxrxArDOvlomTPsi\",\n                \"line_num\": 84,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"stWBI1ChlRmYkLyTri6kvajsDMPuGtDp/30UEi0zjVhwvJ9IcxrxArDOvlomTPsi\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.28477\n            },\n            {\n                \"line\": \"#6 0.245 YBJrUWXblmmC9bR14vf3CWR+PK7q8BIjL1D6P//IAtU+ub3UvbCS8EbNyJAbVuns\",\n                \"line_num\": 85,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"YBJrUWXblmmC9bR14vf3CWR+PK7q8BIjL1D6P//IAtU+ub3UvbCS8EbNyJAbVuns\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.14032\n            },\n            {\n                \"line\": \"#6 0.245 H8uWrQFtodTx7wQi5zaP97sP33deMtlEP1j0EQdwbrK1y/u1Fjk5V9lZmlWyDjMr\",\n                \"line_num\": 86,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"H8uWrQFtodTx7wQi5zaP97sP33deMtlEP1j0EQdwbrK1y/u1Fjk5V9lZmlWyDjMr\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.10493\n            },\n            {\n                \"line\": \"#6 0.245 zIr286q6AWWttxwb3p5SY7A14GLh0rCsiCwP+almEouRr8UzdczrotBq4vh9NtWb\",\n                \"line_num\": 87,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"zIr286q6AWWttxwb3p5SY7A14GLh0rCsiCwP+almEouRr8UzdczrotBq4vh9NtWb\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.28891\n            },\n            {\n                \"line\": \"#6 0.245 Dmu72duyz/6gP6tuwdDV7SnOS6ep1m/CnkxfB0eggCvHrIqwletSbpUAl2ddk578\",\n                \"line_num\": 88,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"Dmu72duyz/6gP6tuwdDV7SnOS6ep1m/CnkxfB0eggCvHrIqwletSbpUAl2ddk578\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.08548\n            },\n            {\n                \"line\": \"#6 0.245 YdwaNjMhKHGNHJetGZqIn2sJVxcbN2rBIBzgRoHGe+NTq82HD/AKv7OKUxOVBZ/T\",\n                \"line_num\": 89,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"YdwaNjMhKHGNHJetGZqIn2sJVxcbN2rBIBzgRoHGe+NTq82HD/AKv7OKUxOVBZ/T\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.14032\n            },\n            {\n                \"line\": \"#6 0.245 j8lwHWTgMP25Qt/7e2L916+HUfLVKj9YpOeEb1P81rRC7l9zRimlv1RYy4MsGdLj\",\n                \"line_num\": 90,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"j8lwHWTgMP25Qt/7e2L916+HUfLVKj9YpOeEb1P81rRC7l9zRimlv1RYy4MsGdLj\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.25352\n            },\n            {\n                \"line\": \"#6 0.245 S3hXz3e4hRXAb23bT06aoU3RhubgZo7trwHy5mzbzAdOGPEXviXw9+ihjY4kWAJU\",\n                \"line_num\": 91,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"S3hXz3e4hRXAb23bT06aoU3RhubgZo7trwHy5mzbzAdOGPEXviXw9+ihjY4kWAJU\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.16391\n            },\n            {\n                \"line\": \"#6 0.245 ADio3z2NMbz5ZYexpy5XyPmgOv0UECTdIjV+MYMFncdpZaO9YP4BG3c8k8z2R5OB\",\n                \"line_num\": 92,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"ADio3z2NMbz5ZYexpy5XyPmgOv0UECTdIjV+MYMFncdpZaO9YP4BG3c8k8z2R5OB\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.31602\n            },\n            {\n                \"line\": \"#6 0.245 YjYDCT0R2kez6mfVL2kp1T5FGuZIIaSSYRz+zxzGTFWHFsJFPutSrGF3oILueAMO\",\n                \"line_num\": 93,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"YjYDCT0R2kez6mfVL2kp1T5FGuZIIaSSYRz+zxzGTFWHFsJFPutSrGF3oILueAMO\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.09158\n            },\n            {\n                \"line\": \"#6 0.245 55mb2P24b44wCoVGNfFVDQOFE2DOOHvkgyvarxraYLmXVHfsZUSFDKLoEajb4bbd\",\n                \"line_num\": 94,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"55mb2P24b44wCoVGNfFVDQOFE2DOOHvkgyvarxraYLmXVHfsZUSFDKLoEajb4bbd\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 4.96658\n            },\n            {\n                \"line\": \"#6 0.245 UcSqmGsFbKmJA7mxRw3uAzgFwN5uneHaAOVcloDrvmfyrEsbtCYe0QbHJanETdPA\",\n                \"line_num\": 95,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"UcSqmGsFbKmJA7mxRw3uAzgFwN5uneHaAOVcloDrvmfyrEsbtCYe0QbHJanETdPA\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.3007\n            },\n            {\n                \"line\": \"#6 0.245 9webIXysF5t9KQRKAH+tKRpTM2XpxkLo5cZVfbnGCIGztuYYtr36I5wFCQBYprMY\",\n                \"line_num\": 96,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"9webIXysF5t9KQRKAH+tKRpTM2XpxkLo5cZVfbnGCIGztuYYtr36I5wFCQBYprMY\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.10907\n            },\n            {\n                \"line\": \"#6 0.245 VCvAGX7LtBkfK+UKp+IN1MIwp3FqXCyY569gWA/lNXkqOxLR2Q2C1zs0G5y9uym4\",\n                \"line_num\": 97,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"VCvAGX7LtBkfK+UKp+IN1MIwp3FqXCyY569gWA/lNXkqOxLR2Q2C1zs0G5y9uym4\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.33961\n            },\n            {\n                \"line\": \"#6 0.245 9EB0jFhFeH9pr2MWlFh+09iy+I2Gx2vqGT5huaPCi3g1sGUEsgXO+0K0FnkltKWL\",\n                \"line_num\": 98,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"9EB0jFhFeH9pr2MWlFh+09iy+I2Gx2vqGT5huaPCi3g1sGUEsgXO+0K0FnkltKWL\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.15977\n            },\n            {\n                \"line\": \"#6 0.245 2/fkKb37wmkLxOm1AGfK8+jzJgROpQp5LweN6c2gBDnJfHIWhk5mE+YhvyxgU6ks\",\n                \"line_num\": 99,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"2/fkKb37wmkLxOm1AGfK8+jzJgROpQp5LweN6c2gBDnJfHIWhk5mE+YhvyxgU6ks\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.27711\n            },\n            {\n                \"line\": \"#6 0.245 RUGiT43/IngQBwjH2IzE1BvaFhaLVnF5dAkjSVJX0NyVLdBLdEyotg8GHO2G0Y/c\",\n                \"line_num\": 100,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"RUGiT43/IngQBwjH2IzE1BvaFhaLVnF5dAkjSVJX0NyVLdBLdEyotg8GHO2G0Y/c\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.25352\n            },\n            {\n                \"line\": \"#6 0.245 JHhz9tMGqN1/18UhsBdrfahJIqeNrIBuxbNk2sXi3/26XXDHe8HzYz9IGzwttclP\",\n                \"line_num\": 101,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"JHhz9tMGqN1/18UhsBdrfahJIqeNrIBuxbNk2sXi3/26XXDHe8HzYz9IGzwttclP\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.05423\n            },\n            {\n                \"line\": \"#6 0.245 l9bwNLKlK6G6ey6CuGc+pk+ab+FTKYzDOYzUNuk9KVjks9abhojhKp+umdcg1ads\",\n                \"line_num\": 102,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"l9bwNLKlK6G6ey6CuGc+pk+ab+FTKYzDOYzUNuk9KVjks9abhojhKp+umdcg1ads\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 4.90408\n            },\n            {\n                \"line\": \"#6 0.245 sFq7BZk0ud5rvSuHXFGaxdhZRkcTgWCfO3RnIb1nnU2s9baNjE6EiQlgXxtsDbco\",\n                \"line_num\": 103,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"sFq7BZk0ud5rvSuHXFGaxdhZRkcTgWCfO3RnIb1nnU2s9baNjE6EiQlgXxtsDbco\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.40211\n            },\n            {\n                \"line\": \"#6 0.245 0sfTmAos3DRhn17vYxvBuIHQdsk9Lg2nRwJhKBhnQccl8k3fYTW8WZbBu9Ism+nS\",\n                \"line_num\": 104,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"0sfTmAos3DRhn17vYxvBuIHQdsk9Lg2nRwJhKBhnQccl8k3fYTW8WZbBu9Ism+nS\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.13266\n            },\n            {\n                \"line\": \"#6 0.245 Bvz56M5Z+5wf6DGFitWOPDcrgXAy/H1G4byIXU06YwWEcGj/Dyte3EOWEeU+68kQ\",\n                \"line_num\": 105,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"Bvz56M5Z+5wf6DGFitWOPDcrgXAy/H1G4byIXU06YwWEcGj/Dyte3EOWEeU+68kQ\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.14798\n            },\n            {\n                \"line\": \"#6 0.245 aANEEoU1dXIzisq6pQ0J8AKS\",\n                \"line_num\": 106,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"aANEEoU1dXIzisq6pQ0J8AKS\",\n                \"value_start\": 9,\n                \"value_end\": 33,\n                \"entropy\": 4.4183\n            },\n            {\n                \"line\": \"#6 0.245 -----END PRIVATE KEY-----\",\n                \"line_num\": 107,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"-----END PRIVATE KEY-----\",\n                \"value_start\": 9,\n                \"value_end\": 34,\n                \"entropy\": 3.04489\n            }\n        ]\n    },\n    {\n        \"rule\": \"PEM Private Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"{\\\"rsa512.log\\\": \\\"\\\\\\\\r\\\\\\\\n#5 [2/4] RUN openssl genrsa -out rsa512.pem 512 && cat rsa512.pem\\\\\\\\r\\\\\\\\n#5 0.228 -----BEGIN PRIVATE KEY-----\\\\\\\\r\\\\\\\\n#5 0.228 MIIBVQIBADANBgkqhkiG9w0BAQEFAASCAT8wggE7AgEAAkEAvKMMVSiEmVawE4EQ\\\\\\\\r\\\\\\\\n#5 0.228 GqXBumHAZco0bRhfhZjmeZ64SmmAM0NpM3j8hwhTyWHRXpW21gv8cumYJqb/ilf7\\\\\\\\r\\\\\\\\n#5 0.228 62oRDQIDAQABAkBYiY64SZQzBGUQQnt0hmgvOsI7BHUm31G2OtWyL7T/90UhnksH\\\\\\\\r\\\\\\\\n#5 0.228 w2YF31p/TJULL44SV3HpxiY+T1vOPl138ulhAiEA9LcC28UMotvF0z/CVofas5Fh\\\\\\\\r\\\\\\\\n#5 0.228 eKZSGLykNZ7FkKd0t+cCIQDFVgG6lreao/UzHcVk75fZG3lG3k0xvqdsZTIMAOjA\\\\\\\\r\\\\\\\\n#5 0.228 6wIgV033ehqJ0IxhvmUP2zkqoEeso5OK1IJwfyS+zUXA0V8CIQCvKySHvAgpRkd/\\\\\\\\r\\\\\\\\n#5 0.228 Y3r4mVICj8e859JASQwXRVECpL/3lwIhANcg6iGD9S4zdbvVxYjJogRVbi7U6YUU\\\\\\\\r\\\\\\\\n#5 0.228 ivYSmyJQhq+V\\\\\\\\r\\\\\\\\n#5 0.228 -----END PRIVATE KEY-----\\\\\\\\r\\\\\\\\n#5 DONE 0.3s\\\\\\\\r\\\\\\\\n\\\"}\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/pem_key.p.docker.log.json\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"-----BEGIN PRIVATE KEY-----\\\\\\\\r\\\\\\\\n#5 0.228 MIIBVQIBADANBgkqhkiG9w0BAQEFAASCAT8wggE7AgEAAkEAvKMMVSiEmVawE4EQ\\\\\\\\r\\\\\\\\n#5 0.228 GqXBumHAZco0bRhfhZjmeZ64SmmAM0NpM3j8hwhTyWHRXpW21gv8cumYJqb/ilf7\\\\\\\\r\\\\\\\\n#5 0.228 62oRDQIDAQABAkBYiY64SZQzBGUQQnt0hmgvOsI7BHUm31G2OtWyL7T/90UhnksH\\\\\\\\r\\\\\\\\n#5 0.228 w2YF31p/TJULL44SV3HpxiY+T1vOPl138ulhAiEA9LcC28UMotvF0z/CVofas5Fh\\\\\\\\r\\\\\\\\n#5 0.228 eKZSGLykNZ7FkKd0t+cCIQDFVgG6lreao/UzHcVk75fZG3lG3k0xvqdsZTIMAOjA\\\\\\\\r\\\\\\\\n#5 0.228 6wIgV033ehqJ0IxhvmUP2zkqoEeso5OK1IJwfyS+zUXA0V8CIQCvKySHvAgpRkd/\\\\\\\\r\\\\\\\\n#5 0.228 Y3r4mVICj8e859JASQwXRVECpL/3lwIhANcg6iGD9S4zdbvVxYjJogRVbi7U6YUU\\\\\\\\r\\\\\\\\n#5 0.228 ivYSmyJQhq+V\\\\\\\\r\\\\\\\\n#5 0.228 -----END PRIVATE KEY-----\",\n                \"value_start\": 102,\n                \"value_end\": 749,\n                \"entropy\": 5.8742\n            }\n        ]\n    },\n    {\n        \"rule\": \"PEM Private Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"-----BEGIN PRIVATE KEY-----\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/pem_key.p.ec\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"-----BEGIN PRIVATE KEY-----\",\n                \"value_start\": 0,\n                \"value_end\": 27,\n                \"entropy\": 3.20029\n            },\n            {\n                \"line\": \"MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgyK82YrlPyJb7FLsk\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/pem_key.p.ec\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgyK82YrlPyJb7FLsk\",\n                \"value_start\": 0,\n                \"value_end\": 64,\n                \"entropy\": 4.72268\n            },\n            {\n                \"line\": \"1hg6SN+UI2R/QIVPPomtVY0yeH6hRANCAAStXqONgR32XCE3nfIkmYjk28Kn0wsK\",\n                \"line_num\": 3,\n                \"path\": \"./tests/samples/pem_key.p.ec\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"1hg6SN+UI2R/QIVPPomtVY0yeH6hRANCAAStXqONgR32XCE3nfIkmYjk28Kn0wsK\",\n                \"value_start\": 0,\n                \"value_end\": 64,\n                \"entropy\": 5.12852\n            },\n            {\n                \"line\": \"+7OCsLnRoqJfWJAf8MV5nbMDiox7WFgRSOtt+l3u3zjpOznhmQyeN62Y\",\n                \"line_num\": 4,\n                \"path\": \"./tests/samples/pem_key.p.ec\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"+7OCsLnRoqJfWJAf8MV5nbMDiox7WFgRSOtt+l3u3zjpOznhmQyeN62Y\",\n                \"value_start\": 0,\n                \"value_end\": 56,\n                \"entropy\": 5.24468\n            },\n            {\n                \"line\": \"-----END PRIVATE KEY-----\",\n                \"line_num\": 5,\n                \"path\": \"./tests/samples/pem_key.p.ec\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"-----END PRIVATE KEY-----\",\n                \"value_start\": 0,\n                \"value_end\": 25,\n                \"entropy\": 3.04489\n            }\n        ]\n    },\n    {\n        \"rule\": \"PEM Private Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"const ecdsaPrivateKey = `-----BEGIN EC PRIVATE KEY-----\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/pem_key.p.go\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"-----BEGIN EC PRIVATE KEY-----\",\n                \"value_start\": 25,\n                \"value_end\": 55,\n                \"entropy\": 3.30775\n            },\n            {\n                \"line\": \"MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgv4Dj4ashv/uKUltV\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/pem_key.p.go\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgv4Dj4ashv/uKUltV\",\n                \"value_start\": 0,\n                \"value_end\": 64,\n                \"entropy\": 4.64072\n            },\n            {\n                \"line\": \"20VTUPnqXBPMDmPH43RG9WtK7cyhRANCAAQJameDIEe6M7PIpw6CPPAdHfN9+vxX\",\n                \"line_num\": 3,\n                \"path\": \"./tests/samples/pem_key.p.go\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"20VTUPnqXBPMDmPH43RG9WtK7cyhRANCAAQJameDIEe6M7PIpw6CPPAdHfN9+vxX\",\n                \"value_start\": 0,\n                \"value_end\": 64,\n                \"entropy\": 5.22641\n            },\n            {\n                \"line\": \"iptqkkBN/uRj9dkG5gDGhFzSqtSk8+d/b7VloKSdnH/nn4RxfMo6p1aC\",\n                \"line_num\": 4,\n                \"path\": \"./tests/samples/pem_key.p.go\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"iptqkkBN/uRj9dkG5gDGhFzSqtSk8+d/b7VloKSdnH/nn4RxfMo6p1aC\",\n                \"value_start\": 0,\n                \"value_end\": 56,\n                \"entropy\": 5.11058\n            },\n            {\n                \"line\": \"-----END EC PRIVATE KEY-----`\",\n                \"line_num\": 5,\n                \"path\": \"./tests/samples/pem_key.p.go\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"-----END EC PRIVATE KEY-----\",\n                \"value_start\": 0,\n                \"value_end\": 28,\n                \"entropy\": 3.16542\n            }\n        ]\n    },\n    {\n        \"rule\": \"PEM Private Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"    PRIVATE_KEY = \\\"-----BEGIN RSA PRIVATE KEY-----\\\\n\\\"\",\n                \"line_num\": 3,\n                \"path\": \"./tests/samples/pem_key.p.java\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"-----BEGIN RSA PRIVATE KEY-----\",\n                \"value_start\": 19,\n                \"value_end\": 50,\n                \"entropy\": 3.38229\n            },\n            {\n                \"line\": \"     +   \\\"MIIBVgIBADANBgkqhkiG9w0BAQEFAASCAUAwggE8AgEAAkEAplaRRGItayIi59+n\\\\n\\\"\",\n                \"line_num\": 4,\n                \"path\": \"./tests/samples/pem_key.p.java\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"MIIBVgIBADANBgkqhkiG9w0BAQEFAASCAUAwggE8AgEAAkEAplaRRGItayIi59+n\",\n                \"value_start\": 10,\n                \"value_end\": 74,\n                \"entropy\": 4.53081\n            },\n            {\n                \"line\": \"      +   \\\"FlVJfmQshKZo3MNry20h1xvoqks6Wndb0XLJ3s1A6Z2Qg+9xKHNT7QZTTGVatxrp\\\\n\\\"\",\n                \"line_num\": 5,\n                \"path\": \"./tests/samples/pem_key.p.java\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"FlVJfmQshKZo3MNry20h1xvoqks6Wndb0XLJ3s1A6Z2Qg+9xKHNT7QZTTGVatxrp\",\n                \"value_start\": 11,\n                \"value_end\": 75,\n                \"entropy\": 5.25352\n            },\n            {\n                \"line\": \"        +   \\\"CY1LcQIDAQABAkEAlXPKaercbBnryvLEqehPdGSFK1ppdZGQVOLlOOU2k2o5VpRP\\\\n\\\"\",\n                \"line_num\": 6,\n                \"path\": \"./tests/samples/pem_key.p.java\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"CY1LcQIDAQABAkEAlXPKaercbBnryvLEqehPdGSFK1ppdZGQVOLlOOU2k2o5VpRP\",\n                \"value_start\": 13,\n                \"value_end\": 77,\n                \"entropy\": 5.09727\n            },\n            {\n                \"line\": \"      +   \\\"AvHzS6VZsimd5XPxEIKPkJhWDLhRckpwOX6LkQIhAND0WUcohqwBHxvUvAexRxbI\\\\n\\\"\",\n                \"line_num\": 7,\n                \"path\": \"./tests/samples/pem_key.p.java\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"AvHzS6VZsimd5XPxEIKPkJhWDLhRckpwOX6LkQIhAND0WUcohqwBHxvUvAexRxbI\",\n                \"value_start\": 11,\n                \"value_end\": 75,\n                \"entropy\": 5.10907\n            },\n            {\n                \"line\": \"    +   \\\"FIizfZJfI9fC2dDepWvfAiEAy8npickbddF4NlWt+PVcPi9iSfe2h8LHZ/QLzNV5\\\\n\\\"\",\n                \"line_num\": 8,\n                \"path\": \"./tests/samples/pem_key.p.java\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"FIizfZJfI9fC2dDepWvfAiEAy8npickbddF4NlWt+PVcPi9iSfe2h8LHZ/QLzNV5\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.0629\n            },\n            {\n                \"line\": \"     +   \\\"Mq8CIQDMdXvyS+5S2hoVgnimUkoMOaUWCgOiOOP6mFfHsERPIwIhAMovKCnQwhLR\\\\n\\\"\",\n                \"line_num\": 9,\n                \"path\": \"./tests/samples/pem_key.p.java\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"Mq8CIQDMdXvyS+5S2hoVgnimUkoMOaUWCgOiOOP6mFfHsERPIwIhAMovKCnQwhLR\",\n                \"value_start\": 10,\n                \"value_end\": 74,\n                \"entropy\": 5.10907\n            },\n            {\n                \"line\": \"      +   \\\"YQAfX3yaCguUPWL/hjQJdodXZIGz5gv3AiBQ5WKTpyu8osL4CCi4aS6G/fSlCdu0\\\\n\\\"\",\n                \"line_num\": 10,\n                \"path\": \"./tests/samples/pem_key.p.java\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"YQAfX3yaCguUPWL/hjQJdodXZIGz5gv3AiBQ5WKTpyu8osL4CCi4aS6G/fSlCdu0\",\n                \"value_start\": 11,\n                \"value_end\": 75,\n                \"entropy\": 5.15211\n            },\n            {\n                \"line\": \"     +   \\\"GeGaqMojMT7//g==\\\\n\\\"\",\n                \"line_num\": 11,\n                \"path\": \"./tests/samples/pem_key.p.java\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"GeGaqMojMT7//g==\",\n                \"value_start\": 10,\n                \"value_end\": 26,\n                \"entropy\": 3.5\n            },\n            {\n                \"line\": \"      + \\\"-----END RSA PRIVATE KEY-----\\\\n\\\";\",\n                \"line_num\": 12,\n                \"path\": \"./tests/samples/pem_key.p.java\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"-----END RSA PRIVATE KEY-----\",\n                \"value_start\": 9,\n                \"value_end\": 38,\n                \"entropy\": 3.24663\n            }\n        ]\n    },\n    {\n        \"rule\": \"PEM Private Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \" = \\\"\\\\\\\"-----BEGIN PRIVATE KEY-----\\\\\\\\n\\\"\",\n                \"line_num\": 16,\n                \"path\": \"./tests/samples/pem_key.p.java\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"-----BEGIN PRIVATE KEY-----\",\n                \"value_start\": 6,\n                \"value_end\": 33,\n                \"entropy\": 3.20029\n            },\n            {\n                \"line\": \" +   \\\"MIIBVAIBADANBgkqhkiG9w0BAQEFAASCAT4wggE6AgEAAkEAxAIxg6QtxmnJ0Bsj\\\\\\\\n\\\"\",\n                \"line_num\": 17,\n                \"path\": \"./tests/samples/pem_key.p.java\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"MIIBVAIBADANBgkqhkiG9w0BAQEFAASCAT4wggE6AgEAAkEAxAIxg6QtxmnJ0Bsj\",\n                \"value_start\": 6,\n                \"value_end\": 70,\n                \"entropy\": 4.44143\n            },\n            {\n                \"line\": \" +   \\\"VRsEhjLB9lSY9CaFvvEbXK9eBezqR6x6epxm4w/bx1xAK1O9m4iyEN72+jhpZHZs\\\\\\\\n\\\"\",\n                \"line_num\": 18,\n                \"path\": \"./tests/samples/pem_key.p.java\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"VRsEhjLB9lSY9CaFvvEbXK9eBezqR6x6epxm4w/bx1xAK1O9m4iyEN72+jhpZHZs\",\n                \"value_start\": 6,\n                \"value_end\": 70,\n                \"entropy\": 5.16391\n            },\n            {\n                \"line\": \" +   \\\"6RZsxQIDAQABAkBbzksyxWtLS7Fi79MUwZrU4GFI50bc1E5AqN2QA/OeAg+tdgRC\\\\\\\\n\\\"\",\n                \"line_num\": 19,\n                \"path\": \"./tests/samples/pem_key.p.java\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"6RZsxQIDAQABAkBbzksyxWtLS7Fi79MUwZrU4GFI50bc1E5AqN2QA/OeAg+tdgRC\",\n                \"value_start\": 6,\n                \"value_end\": 70,\n                \"entropy\": 5.24586\n            },\n            {\n                \"line\": \" +   \\\"eTVV2eZEM750xZUCoqDwLsLeYrGFR7zy0VkBAiEA5ljPCFu3UIVOgZXhSr342mTX\\\\\\\\n\\\"\",\n                \"line_num\": 20,\n                \"path\": \"./tests/samples/pem_key.p.java\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"eTVV2eZEM750xZUCoqDwLsLeYrGFR7zy0VkBAiEA5ljPCFu3UIVOgZXhSr342mTX\",\n                \"value_start\": 6,\n                \"value_end\": 70,\n                \"entropy\": 5.28891\n            },\n            {\n                \"line\": \" +   \\\"vC9/t9XrGuHCQU8oOW0CIQDZ1mYBOniJmPD0h5j1wadmLkmmZRPUNyMTEHiBUEmB\\\\\\\\n\\\"\",\n                \"line_num\": 21,\n                \"path\": \"./tests/samples/pem_key.p.java\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"vC9/t9XrGuHCQU8oOW0CIQDZ1mYBOniJmPD0h5j1wadmLkmmZRPUNyMTEHiBUEmB\",\n                \"value_start\": 6,\n                \"value_end\": 70,\n                \"entropy\": 5.19102\n            },\n            {\n                \"line\": \" +   \\\"uQIgSpG1dB882PRO1eSPaoLVbN34eRNnZTv7QFiVak8V1oECIGk3tKdtPaGAnQoP\\\\\\\\n\\\"\",\n                \"line_num\": 22,\n                \"path\": \"./tests/samples/pem_key.p.java\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"uQIgSpG1dB882PRO1eSPaoLVbN34eRNnZTv7QFiVak8V1oECIGk3tKdtPaGAnQoP\",\n                \"value_start\": 6,\n                \"value_end\": 70,\n                \"entropy\": 5.04243\n            },\n            {\n                \"line\": \" +   \\\"oOM7eYbSXsKfWdeMFkX0E7CqPgcJAiEAlydP8ln92gy4LefZuIJn1/M5PEeRFKrq\\\\\\\\n\\\"\",\n                \"line_num\": 23,\n                \"path\": \"./tests/samples/pem_key.p.java\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"oOM7eYbSXsKfWdeMFkX0E7CqPgcJAiEAlydP8ln92gy4LefZuIJn1/M5PEeRFKrq\",\n                \"value_start\": 6,\n                \"value_end\": 70,\n                \"entropy\": 5.24586\n            },\n            {\n                \"line\": \" +   \\\"aAjRMKT7uCM=\\\\\\\\n\\\"\",\n                \"line_num\": 24,\n                \"path\": \"./tests/samples/pem_key.p.java\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"aAjRMKT7uCM=\",\n                \"value_start\": 6,\n                \"value_end\": 18,\n                \"entropy\": 3.4183\n            },\n            {\n                \"line\": \" +   \\\"-----END RSA PRIVATE KEY-----\\\\\\\"\\\";\",\n                \"line_num\": 25,\n                \"path\": \"./tests/samples/pem_key.p.java\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"-----END RSA PRIVATE KEY-----\",\n                \"value_start\": 6,\n                \"value_end\": 35,\n                \"entropy\": 3.24663\n            }\n        ]\n    },\n    {\n        \"rule\": \"PEM Private Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"2026-04-26 12:36:01 -----BEGIN PRIVATE KEY-----\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"-----BEGIN PRIVATE KEY-----\",\n                \"value_start\": 20,\n                \"value_end\": 47,\n                \"entropy\": 3.20029\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 MIIMvgIBADALBglghkgBZQMEBAMEggyqMIIMpgRATqJGETTwhb2gxXF41z3G5ztP\",\n                \"line_num\": 3,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"MIIMvgIBADALBglghkgBZQMEBAMEggyqMIIMpgRATqJGETTwhb2gxXF41z3G5ztP\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 4.67767\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 I+dcZ5zCOnpcALAIw+OAqVHjisQypIBH6K/pqnrVYzZkwV6M4bLhesOMuserAgSC\",\n                \"line_num\": 4,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"I+dcZ5zCOnpcALAIw+OAqVHjisQypIBH6K/pqnrVYzZkwV6M4bLhesOMuserAgSC\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.06602\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 DGAygxLkWHaG9AEmQJsg1MeFxsNyehNphDUdaKHxVmXPYUNVm3J4c5+xBZigd8pa\",\n                \"line_num\": 5,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"DGAygxLkWHaG9AEmQJsg1MeFxsNyehNphDUdaKHxVmXPYUNVm3J4c5+xBZigd8pa\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.17157\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 LEIX4H6JKVWAwKs5UkCLw3uB434w+6mWMJlUjDwWZSGgEiRjS21nx6eKyLqlLE16\",\n                \"line_num\": 6,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"LEIX4H6JKVWAwKs5UkCLw3uB434w+6mWMJlUjDwWZSGgEiRjS21nx6eKyLqlLE16\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.10907\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 XAZ5Rg2oJAL5CVj8uAe7pUdweySS4EBgdMPJ9o0cEZDP5aD9yTSIeXzi1bgGJQ/s\",\n                \"line_num\": 7,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"XAZ5Rg2oJAL5CVj8uAe7pUdweySS4EBgdMPJ9o0cEZDP5aD9yTSIeXzi1bgGJQ/s\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.27298\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 aJ5DxXUVXDWTZgA05CHuojS/R1WlO2o30rxV4azc+Yr7IcR89i4wNGHUNQFmhhBF\",\n                \"line_num\": 8,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"aJ5DxXUVXDWTZgA05CHuojS/R1WlO2o30rxV4azc+Yr7IcR89i4wNGHUNQFmhhBF\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.4375\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 OYyA41Ls/ESNS1UGWwfCuZ89CBzjjBQZhxp4ELW+ZLa+1w3iUhJZEYoc9GQm7E+v\",\n                \"line_num\": 9,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"OYyA41Ls/ESNS1UGWwfCuZ89CBzjjBQZhxp4ELW+ZLa+1w3iUhJZEYoc9GQm7E+v\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.12086\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 VIQvl4RxKF8WZAc4uTaisTwcNAhYK5m5gpX5ZHLgBndWRjE32kOvask2BLdgjJig\",\n                \"line_num\": 10,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"VIQvl4RxKF8WZAc4uTaisTwcNAhYK5m5gpX5ZHLgBndWRjE32kOvask2BLdgjJig\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.2382\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 Fs9mKlRU+ZqIQxukBDO6xkHjSr1JxIP2HJNyiiZxgCUKSi/I5h4UObW1yjNv0Ymw\",\n                \"line_num\": 11,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"Fs9mKlRU+ZqIQxukBDO6xkHjSr1JxIP2HJNyiiZxgCUKSi/I5h4UObW1yjNv0Ymw\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.27711\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 FE/csKq4gcWvPD/QuFeW4XFQcZaoqkQVILnjVG10NqOTlDJaywMhcgjQq2QQlVXH\",\n                \"line_num\": 12,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"FE/csKq4gcWvPD/QuFeW4XFQcZaoqkQVILnjVG10NqOTlDJaywMhcgjQq2QQlVXH\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.07782\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 zMBgJI3W9qLDYFY69rN/xnL68wg5B1xv62ChNo4eTLlppGmNlLfX6YleXLYK2pTj\",\n                \"line_num\": 13,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"zMBgJI3W9qLDYFY69rN/xnL68wg5B1xv62ChNo4eTLlppGmNlLfX6YleXLYK2pTj\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.09571\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 cmIbK3nvQ7BGLAXVMMYFOkkht0mHVC4sS3mwdUtS2l5KECOq1R+g4mrrAUyGpI1B\",\n                \"line_num\": 14,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"cmIbK3nvQ7BGLAXVMMYFOkkht0mHVC4sS3mwdUtS2l5KECOq1R+g4mrrAUyGpI1B\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.34375\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 68+Eg5DkM86BUYI9N86V4cUtNGDbsmaJgCurGJHHupeJQhWj+Q2CNlXmSaP+mCau\",\n                \"line_num\": 15,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"68+Eg5DkM86BUYI9N86V4cUtNGDbsmaJgCurGJHHupeJQhWj+Q2CNlXmSaP+mCau\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.14384\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 GUEMVn/PVmqhSJIj+yEsojeZykecYXo7LMxiJkuX8HZ9R3ynOHdedcfV4DdAJc1E\",\n                \"line_num\": 16,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"GUEMVn/PVmqhSJIj+yEsojeZykecYXo7LMxiJkuX8HZ9R3ynOHdedcfV4DdAJc1E\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.22993\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 t51bOzjJlLIlUEQicJcXMCrBJ8pL1bHJGkT7t7gxnC72Qz7D2Czh20oJIgFTs1yJ\",\n                \"line_num\": 17,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"t51bOzjJlLIlUEQicJcXMCrBJ8pL1bHJGkT7t7gxnC72Qz7D2Czh20oJIgFTs1yJ\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.05423\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 kQSTxDFcMsakyRRZAAcDyGMGUnrMxIVSyrQDhIQrORaeiTDHcaS6pDuz5kkJsT+Y\",\n                \"line_num\": 18,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"kQSTxDFcMsakyRRZAAcDyGMGUnrMxIVSyrQDhIQrORaeiTDHcaS6pDuz5kkJsT+Y\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 4.86869\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 ki/ZkkAldBpX4sDD1zvC6LyWU1IlZcx9F5V7I0P/BrpSwrvjNQEIeW4tNR1+fEYW\",\n                \"line_num\": 19,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"ki/ZkkAldBpX4sDD1zvC6LyWU1IlZcx9F5V7I0P/BrpSwrvjNQEIeW4tNR1+fEYW\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.35907\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 fE7gewlJZbTCVqTcQ7wQ+kA7JEQkU6I8YaIXuiwiG55EuSsO2MzpApgFtmAcWlT4\",\n                \"line_num\": 20,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"fE7gewlJZbTCVqTcQ7wQ+kA7JEQkU6I8YaIXuiwiG55EuSsO2MzpApgFtmAcWlT4\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.24173\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 ybWzhp7kqwRFolOi6hb9y8y4aDRkRltYcTPswcjh40k1spoCRlwCcgahgTnuWJ8O\",\n                \"line_num\": 21,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"ybWzhp7kqwRFolOi6hb9y8y4aDRkRltYcTPswcjh40k1spoCRlwCcgahgTnuWJ8O\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.00352\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 qq4uxkY8xkFvJ4VqZjcl7AbhdJg3R5gqlbhPZmEXBn3teYbihzMCBRI3RTI5/Hy2\",\n                \"line_num\": 22,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"qq4uxkY8xkFvJ4VqZjcl7AbhdJg3R5gqlbhPZmEXBn3teYbihzMCBRI3RTI5/Hy2\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.23407\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 Yh4VhW+MqaukgRTPk50aKFjEs0vj6D1RpLRUmq/EI2GKZbtZc4MDR8kZWXsP5yqO\",\n                \"line_num\": 23,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"Yh4VhW+MqaukgRTPk50aKFjEs0vj6D1RpLRUmq/EI2GKZbtZc4MDR8kZWXsP5yqO\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.24586\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 o2OcG66cSXR5KrzmNRNdci1GNafm5qHiqj5NsnDax1B8t1hkpV+VMkZKGxGXt2YP\",\n                \"line_num\": 24,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"o2OcG66cSXR5KrzmNRNdci1GNafm5qHiqj5NsnDax1B8t1hkpV+VMkZKGxGXt2YP\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.12086\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 gx1/q1EgS5w2ciAuC8u5gitd1ie43B5lsysO0MY31Qy1eGO1Sj0g4pxM2szbpwso\",\n                \"line_num\": 25,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"gx1/q1EgS5w2ciAuC8u5gitd1ie43B5lsysO0MY31Qy1eGO1Sj0g4pxM2szbpwso\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 4.95282\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 0RZL8aKk645hElitcXDx8wUVc0Zm/Av4FsSiZkhFeKaHSAXJtTtlAkLMMTZaNwBA\",\n                \"line_num\": 26,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"0RZL8aKk645hElitcXDx8wUVc0Zm/Av4FsSiZkhFeKaHSAXJtTtlAkLMMTZaNwBA\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.05836\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 hqmHqqtalptZmwGz2F0dmXF9cy+gOxzaBhQbVcH8SDdchpgTl14B93qh2iY2RjxY\",\n                \"line_num\": 27,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"hqmHqqtalptZmwGz2F0dmXF9cy+gOxzaBhQbVcH8SDdchpgTl14B93qh2iY2RjxY\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.12086\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 Eb3kpsPG0cdLTAAahEALuMu26YFpglJXAkwSwSLPYsGRPHjJFiXfWBR05x5y5wdB\",\n                \"line_num\": 28,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"Eb3kpsPG0cdLTAAahEALuMu26YFpglJXAkwSwSLPYsGRPHjJFiXfWBR05x5y5wdB\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.10907\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 1jhhqlV6ZHO/osEJKb6tSHH0mYf0uMNu2speu2DgsjCjHHJwtSJMayfO1WZcSF+G\",\n                \"line_num\": 29,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"1jhhqlV6ZHO/osEJKb6tSHH0mYf0uMNu2speu2DgsjCjHHJwtSJMayfO1WZcSF+G\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.13462\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 wFXOY77MgB3VwMRcCoTMNwoBswcJeZRyNL+cHLZZcK0kpEJbBY60W5pHUceKrDDJ\",\n                \"line_num\": 30,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"wFXOY77MgB3VwMRcCoTMNwoBswcJeZRyNL+cHLZZcK0kpEJbBY60W5pHUceKrDDJ\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.02142\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 sr63qzPaUVNj0Vu2zFG8sEEMES55/JIKCoj6O66j821/qJ97RLPP5pKUpp2gCS7F\",\n                \"line_num\": 31,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"sr63qzPaUVNj0Vu2zFG8sEEMES55/JIKCoj6O66j821/qJ97RLPP5pKUpp2gCS7F\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.02298\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 GyCzMBiTsF4zNCr+FA1rQUCZqa50S3Gu90KANsv7VX1krJXXaSXQFaiDAyB+zL0f\",\n                \"line_num\": 32,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"GyCzMBiTsF4zNCr+FA1rQUCZqa50S3Gu90KANsv7VX1krJXXaSXQFaiDAyB+zL0f\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.04243\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 SQR7WrimYwMQaGX8c75+8L7NK2zdxMQH0chtdqv79WmoOn+fWGupCq7NlA32s7rb\",\n                \"line_num\": 33,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"SQR7WrimYwMQaGX8c75+8L7NK2zdxMQH0chtdqv79WmoOn+fWGupCq7NlA32s7rb\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.26532\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 Cq4auSoIF5ovQqw2F2wgi2nBpHwfF5ka6qSaQA4wiACrxkC255lCaAzy9jky4Ldt\",\n                \"line_num\": 34,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"Cq4auSoIF5ovQqw2F2wgi2nBpHwfF5ka6qSaQA4wiACrxkC255lCaAzy9jky4Ldt\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 4.84727\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 1iSmA7q2JSu8HEN8NG9AQqP+l44HRXFzJsF3cXTaOzKZKYlhlx5btb8F+M9aCgXi\",\n                \"line_num\": 35,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"1iSmA7q2JSu8HEN8NG9AQqP+l44HRXFzJsF3cXTaOzKZKYlhlx5btb8F+M9aCgXi\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.26532\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 pICqo0FqkQ03ULwswnF8yXsjpYkx63lc0pLStKn7dxI+cSOYYCu0cbxcBoZyqmH1\",\n                \"line_num\": 36,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"pICqo0FqkQ03ULwswnF8yXsjpYkx63lc0pLStKn7dxI+cSOYYCu0cbxcBoZyqmH1\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.07782\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 Kqmr2XMicIWCxQoiW4YT5UYfNsfwmRUWkJwmCahUFSzo5swUpBbeCo6bsEdkyxMM\",\n                \"line_num\": 37,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"Kqmr2XMicIWCxQoiW4YT5UYfNsfwmRUWkJwmCahUFSzo5swUpBbeCo6bsEdkyxMM\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.13618\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 I5bNV1cjSII5liHOyxnvZ77+giZAKglsiI3ZmmVh+l8fvDBDaLVmmMRfcwRHOxu1\",\n                \"line_num\": 38,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"I5bNV1cjSII5liHOyxnvZ77+giZAKglsiI3ZmmVh+l8fvDBDaLVmmMRfcwRHOxu1\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.04657\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 UMRr047T8ggKgEnyhQLK/FJh+Yp8ubo6wsTUwyyVcRULUVWeJbka6EDkMbPucHHb\",\n                \"line_num\": 39,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"UMRr047T8ggKgEnyhQLK/FJh+Yp8ubo6wsTUwyyVcRULUVWeJbka6EDkMbPucHHb\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.10141\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 vDdO61eP2yB+uQlwbBr1UquiQD1XrBHXFVwDw6rJoJxTkGQggaofpsUPa3F561LV\",\n                \"line_num\": 40,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"vDdO61eP2yB+uQlwbBr1UquiQD1XrBHXFVwDw6rJoJxTkGQggaofpsUPa3F561LV\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.11673\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 aQAFxU9BAgmdYb4uJxtlt46DCbx2tFW2OnoqQrpFW7nWlwmLJ2dUhIRkySTyhJpq\",\n                \"line_num\": 41,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"aQAFxU9BAgmdYb4uJxtlt46DCbx2tFW2OnoqQrpFW7nWlwmLJ2dUhIRkySTyhJpq\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.14798\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 K0hnrLThhA1tu8q3dTXOCDs+8csKnI9vVSqAFm6ax3lI6ilBFVIgyZi7dBI1TCKp\",\n                \"line_num\": 42,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"K0hnrLThhA1tu8q3dTXOCDs+8csKnI9vVSqAFm6ax3lI6ilBFVIgyZi7dBI1TCKp\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.18336\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 rDbvCzcWY6dxEUzHqTELG5sd955LQgoei2/86QDquRIgB2PGqblBYylUOA9tBTAv\",\n                \"line_num\": 43,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"rDbvCzcWY6dxEUzHqTELG5sd955LQgoei2/86QDquRIgB2PGqblBYylUOA9tBTAv\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.21461\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 wSVKoZuonI4ijDZz5yec2C9DiCZva6MbxASOLBl05qfeeDbzkhOWsas2ZpMRmaS8\",\n                \"line_num\": 44,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"wSVKoZuonI4ijDZz5yec2C9DiCZva6MbxASOLBl05qfeeDbzkhOWsas2ZpMRmaS8\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.26532\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 dI0Tmp732GkddM2R879ULHp0x4CI4Vh42mN/m22OInwW4mlPaUAy4MQUOWvuWb6/\",\n                \"line_num\": 45,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"dI0Tmp732GkddM2R879ULHp0x4CI4Vh42mN/m22OInwW4mlPaUAy4MQUOWvuWb6/\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.02752\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 o2/HcXJCoj9JsULCKXchFrawJHTgCTpi9BicMpmnPHpnpxlYRw77p4qWcmGqs2Yi\",\n                \"line_num\": 46,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"o2/HcXJCoj9JsULCKXchFrawJHTgCTpi9BicMpmnPHpnpxlYRw77p4qWcmGqs2Yi\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.02142\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 gQLAAQhZxzpT8MPgsomgC2nySQthEHsvF4XVbL60ImBv9Qig2hd7Jh4cI0D/+TdC\",\n                \"line_num\": 47,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"gQLAAQhZxzpT8MPgsomgC2nySQthEHsvF4XVbL60ImBv9Qig2hd7Jh4cI0D/+TdC\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.25\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 tky6B1MyPAxYCTN2QXXCo6CbdzMoVBhXuAI7prv2DA5zUwNCpxBKs2BgSIZ9677J\",\n                \"line_num\": 48,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"tky6B1MyPAxYCTN2QXXCo6CbdzMoVBhXuAI7prv2DA5zUwNCpxBKs2BgSIZ9677J\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.12852\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 RlxpsqbbVLVJl6BdbJcMRjIWEW0flKwbSb/PdEuEGheu5UuRZ4/MxrzrciW35CxX\",\n                \"line_num\": 49,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"RlxpsqbbVLVJl6BdbJcMRjIWEW0flKwbSb/PdEuEGheu5UuRZ4/MxrzrciW35CxX\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.12283\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 +XYlHBLCOQ6MCCSYtAy9olSBxQ1iMkiP0V20Crzm6JapZWxTC1EEFgMXAJERMXin\",\n                \"line_num\": 50,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"+XYlHBLCOQ6MCCSYtAy9olSBxQ1iMkiP0V20Crzm6JapZWxTC1EEFgMXAJERMXin\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.12696\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 NiY0wK8f8JFABRBxMZeHyBtT6EobR2Q1Ozcjmhb98rK6wUVhorCGV0mbZ4jzVFtH\",\n                \"line_num\": 51,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"NiY0wK8f8JFABRBxMZeHyBtT6EobR2Q1Ozcjmhb98rK6wUVhorCGV0mbZ4jzVFtH\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.23407\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 YD9UoTAQrI22NGLy+BupkM7OmaQ82SWZlZ8eiSqv5z7aBI8AAWOORHCYW07i9kCy\",\n                \"line_num\": 52,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"YD9UoTAQrI22NGLy+BupkM7OmaQ82SWZlZ8eiSqv5z7aBI8AAWOORHCYW07i9kCy\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.17923\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 OJ4nB3/Ko4OTiUeGYamtlj9/k7alhM5BE2fkEoygYFvL1cfFXMHH+wOEonSMi5qo\",\n                \"line_num\": 53,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"OJ4nB3/Ko4OTiUeGYamtlj9/k7alhM5BE2fkEoygYFvL1cfFXMHH+wOEonSMi5qo\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.24586\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 smQrWalr8aPEPGkXWYDjMsBZ4rHQ00z+cE3YiXJXMj2Y8JMY9LJrR1asaEY3IoBx\",\n                \"line_num\": 54,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"smQrWalr8aPEPGkXWYDjMsBZ4rHQ00z+cE3YiXJXMj2Y8JMY9LJrR1asaEY3IoBx\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 4.94712\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 ose+UxmIsZr1OD/Jy1euBJo0IQX3gnrvdGl9u8zQeCes+g5xl68gAU8n1J/Z4DoB\",\n                \"line_num\": 55,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"ose+UxmIsZr1OD/Jy1euBJo0IQX3gnrvdGl9u8zQeCes+g5xl68gAU8n1J/Z4DoB\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.02298\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 Y0mUMEgOuMu6aAvmQc/lqqP7lwrCKCfVe6SS6w2w3I9GrL2/3GkQkXJSc4rmZb7u\",\n                \"line_num\": 56,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"Y0mUMEgOuMu6aAvmQc/lqqP7lwrCKCfVe6SS6w2w3I9GrL2/3GkQkXJSc4rmZb7u\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.17923\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 JoAFyHleVFAnDFXlhLKFl0h3x7TD26LK2LApnLI344MvE6ZG9RFA6w2Q6JtRIEWU\",\n                \"line_num\": 57,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"JoAFyHleVFAnDFXlhLKFl0h3x7TD26LK2LApnLI344MvE6ZG9RFA6w2Q6JtRIEWU\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 4.98251\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 lheqsm3z9sfcOiHW/GWw0nTkC8btOFZ0uBTThDnHg0BvuXzmBDcle1GpXJdyzLyl\",\n                \"line_num\": 58,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"lheqsm3z9sfcOiHW/GWw0nTkC8btOFZ0uBTThDnHg0BvuXzmBDcle1GpXJdyzLyl\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.19102\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 cW4qlLb15J1zMb/hVBNGagquATVVclvcVKYGYkNsxGpWBC8/8iJTEUKEMwqti7PR\",\n                \"line_num\": 59,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"cW4qlLb15J1zMb/hVBNGagquATVVclvcVKYGYkNsxGpWBC8/8iJTEUKEMwqti7PR\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.18336\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 yh+r058rdhlVML+0F5aDJwjslkCppGpJF5nGQn4pwBzViz752YFUgRRz2jrhFYHE\",\n                \"line_num\": 60,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"yh+r058rdhlVML+0F5aDJwjslkCppGpJF5nGQn4pwBzViz752YFUgRRz2jrhFYHE\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.02711\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 KaVCtcczpnZhtqNMY49aRMaTphHu4YpgglMjbDuZ5wiK27Fq5RM+lF6sIG6SGycb\",\n                \"line_num\": 61,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"KaVCtcczpnZhtqNMY49aRMaTphHu4YpgglMjbDuZ5wiK27Fq5RM+lF6sIG6SGycb\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.15211\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 4whptwXeepJbATEQ55FWWckLVJ5lVWuZ0pCOMguparXRwXECzGnIHLxehCexiZqA\",\n                \"line_num\": 62,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"4whptwXeepJbATEQ55FWWckLVJ5lVWuZ0pCOMguparXRwXECzGnIHLxehCexiZqA\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.09727\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 QLJZNAFOyB3IhHZo5TrJY5sNIMXU94yraZLmQQ3cRMntNiW8kp6Pqj3I40bqlL3F\",\n                \"line_num\": 63,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"QLJZNAFOyB3IhHZo5TrJY5sNIMXU94yraZLmQQ3cRMntNiW8kp6Pqj3I40bqlL3F\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.25352\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 ahwNl8qwsjl44hMmWMfQk1c5OpCtkGJcIpIF08ILxDknAyBTQ35BJXMJ9XtI0nt2\",\n                \"line_num\": 64,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"ahwNl8qwsjl44hMmWMfQk1c5OpCtkGJcIpIF08ILxDknAyBTQ35BJXMJ9XtI0nt2\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.17157\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 OiGGA6YUqbb68bmXbEhzKQhulHs8GWh/sgXiN3NoI5ns6nU0a3e6Oz2BkXY708iM\",\n                \"line_num\": 65,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"OiGGA6YUqbb68bmXbEhzKQhulHs8GWh/sgXiN3NoI5ns6nU0a3e6Oz2BkXY708iM\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.05423\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 oxrQxsZ4uoM/pjlHG5xeOM62B3tpeghU5iFfOgr+hH9mGcOx4cSoNjn3a5gvMJqc\",\n                \"line_num\": 66,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"oxrQxsZ4uoM/pjlHG5xeOM62B3tpeghU5iFfOgr+hH9mGcOx4cSoNjn3a5gvMJqc\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.14798\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 Ycc60cOGalwlpLruUy4rdDwhInvsGAmaapDq8IxRpS/AIpij4Y/SmMl9uisvqBr9\",\n                \"line_num\": 67,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"Ycc60cOGalwlpLruUy4rdDwhInvsGAmaapDq8IxRpS/AIpij4Y/SmMl9uisvqBr9\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.03477\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 ypg1olTOJ8rk08AXY0Kl2D9lS5GK11g2VWtCgKiMdS/RvAXJnJGkdStVTGYiCnHJ\",\n                \"line_num\": 68,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"ypg1olTOJ8rk08AXY0Kl2D9lS5GK11g2VWtCgKiMdS/RvAXJnJGkdStVTGYiCnHJ\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 4.99173\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 OjgyHTrR2a+N2ZiYTldYtmF6H9pm/lfv6FNtw2cNQzqGoSSsrAHEugO0d94keir2\",\n                \"line_num\": 69,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"OjgyHTrR2a+N2ZiYTldYtmF6H9pm/lfv6FNtw2cNQzqGoSSsrAHEugO0d94keir2\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.24586\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 62w9ymkZWDurfZDVT8OIVWXhgKlR44rEMqSAR+iv6ap61WM2ZMFejOGy4XrDjLrH\",\n                \"line_num\": 70,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"62w9ymkZWDurfZDVT8OIVWXhgKlR44rEMqSAR+iv6ap61WM2ZMFejOGy4XrDjLrH\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.21048\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 qwI=\",\n                \"line_num\": 71,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"qwI=\",\n                \"value_start\": 20,\n                \"value_end\": 24,\n                \"entropy\": 2.0\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 -----END PRIVATE KEY-----\",\n                \"line_num\": 72,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"-----END PRIVATE KEY-----\",\n                \"value_start\": 20,\n                \"value_end\": 45,\n                \"entropy\": 3.04489\n            }\n        ]\n    },\n    {\n        \"rule\": \"PEM Private Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"{\\\"ML-KEM-1024.log\\\":\\\"\\\\r\\\\n\\\\r\\\\n#7 [4/4] RUN openssl genpkey -algorithm ML-KEM-1024 -out mlkem-privatekey.pem && cat mlkem-privatekey.pem\\\\r\\\\n2026-04-26 12:36:01 -----BEGIN PRIVATE KEY-----\\\\r\\\\n2026-04-26 12:36:01 MIIMvgIBADALBglghkgBZQMEBAMEggyqMIIMpgRATqJGETTwhb2gxXF41z3G5ztP\\\\r\\\\n2026-04-26 12:36:01 I+dcZ5zCOnpcALAIw+OAqVHjisQypIBH6K/pqnrVYzZkwV6M4bLhesOMuserAgSC\\\\r\\\\n2026-04-26 12:36:01 DGAygxLkWHaG9AEmQJsg1MeFxsNyehNphDUdaKHxVmXPYUNVm3J4c5+xBZigd8pa\\\\r\\\\n2026-04-26 12:36:01 LEIX4H6JKVWAwKs5UkCLw3uB434w+6mWMJlUjDwWZSGgEiRjS21nx6eKyLqlLE16\\\\r\\\\n2026-04-26 12:36:01 XAZ5Rg2oJAL5CVj8uAe7pUdweySS4EBgdMPJ9o0cEZDP5aD9yTSIeXzi1bgGJQ/s\\\\r\\\\n2026-04-26 12:36:01 aJ5DxXUVXDWTZgA05CHuojS/R1WlO2o30rxV4azc+Yr7IcR89i4wNGHUNQFmhhBF\\\\r\\\\n2026-04-26 12:36:01 OYyA41Ls/ESNS1UGWwfCuZ89CBzjjBQZhxp4ELW+ZLa+1w3iUhJZEYoc9GQm7E+v\\\\r\\\\n2026-04-26 12:36:01 VIQvl4RxKF8WZAc4uTaisTwcNAhYK5m5gpX5ZHLgBndWRjE32kOvask2BLdgjJig\\\\r\\\\n2026-04-26 12:36:01 Fs9mKlRU+ZqIQxukBDO6xkHjSr1JxIP2HJNyiiZxgCUKSi/I5h4UObW1yjNv0Ymw\\\\r\\\\n2026-04-26 12:36:01 FE/csKq4gcWvPD/QuFeW4XFQcZaoqkQVILnjVG10NqOTlDJaywMhcgjQq2QQlVXH\\\\r\\\\n2026-04-26 12:36:01 zMBgJI3W9qLDYFY69rN/xnL68wg5B1xv62ChNo4eTLlppGmNlLfX6YleXLYK2pTj\\\\r\\\\n2026-04-26 12:36:01 cmIbK3nvQ7BGLAXVMMYFOkkht0mHVC4sS3mwdUtS2l5KECOq1R+g4mrrAUyGpI1B\\\\r\\\\n2026-04-26 12:36:01 68+Eg5DkM86BUYI9N86V4cUtNGDbsmaJgCurGJHHupeJQhWj+Q2CNlXmSaP+mCau\\\\r\\\\n2026-04-26 12:36:01 GUEMVn/PVmqhSJIj+yEsojeZykecYXo7LMxiJkuX8HZ9R3ynOHdedcfV4DdAJc1E\\\\r\\\\n2026-04-26 12:36:01 t51bOzjJlLIlUEQicJcXMCrBJ8pL1bHJGkT7t7gxnC72Qz7D2Czh20oJIgFTs1yJ\\\\r\\\\n2026-04-26 12:36:01 kQSTxDFcMsakyRRZAAcDyGMGUnrMxIVSyrQDhIQrORaeiTDHcaS6pDuz5kkJsT+Y\\\\r\\\\n2026-04-26 12:36:01 ki/ZkkAldBpX4sDD1zvC6LyWU1IlZcx9F5V7I0P/BrpSwrvjNQEIeW4tNR1+fEYW\\\\r\\\\n2026-04-26 12:36:01 fE7gewlJZbTCVqTcQ7wQ+kA7JEQkU6I8YaIXuiwiG55EuSsO2MzpApgFtmAcWlT4\\\\r\\\\n2026-04-26 12:36:01 ybWzhp7kqwRFolOi6hb9y8y4aDRkRltYcTPswcjh40k1spoCRlwCcgahgTnuWJ8O\\\\r\\\\n2026-04-26 12:36:01 qq4uxkY8xkFvJ4VqZjcl7AbhdJg3R5gqlbhPZmEXBn3teYbihzMCBRI3RTI5/Hy2\\\\r\\\\n2026-04-26 12:36:01 Yh4VhW+MqaukgRTPk50aKFjEs0vj6D1RpLRUmq/EI2GKZbtZc4MDR8kZWXsP5yqO\\\\r\\\\n2026-04-26 12:36:01 o2OcG66cSXR5KrzmNRNdci1GNafm5qHiqj5NsnDax1B8t1hkpV+VMkZKGxGXt2YP\\\\r\\\\n2026-04-26 12:36:01 gx1/q1EgS5w2ciAuC8u5gitd1ie43B5lsysO0MY31Qy1eGO1Sj0g4pxM2szbpwso\\\\r\\\\n2026-04-26 12:36:01 0RZL8aKk645hElitcXDx8wUVc0Zm/Av4FsSiZkhFeKaHSAXJtTtlAkLMMTZaNwBA\\\\r\\\\n2026-04-26 12:36:01 hqmHqqtalptZmwGz2F0dmXF9cy+gOxzaBhQbVcH8SDdchpgTl14B93qh2iY2RjxY\\\\r\\\\n2026-04-26 12:36:01 Eb3kpsPG0cdLTAAahEALuMu26YFpglJXAkwSwSLPYsGRPHjJFiXfWBR05x5y5wdB\\\\r\\\\n2026-04-26 12:36:01 1jhhqlV6ZHO/osEJKb6tSHH0mYf0uMNu2speu2DgsjCjHHJwtSJMayfO1WZcSF+G\\\\r\\\\n2026-04-26 12:36:01 wFXOY77MgB3VwMRcCoTMNwoBswcJeZRyNL+cHLZZcK0kpEJbBY60W5pHUceKrDDJ\\\\r\\\\n2026-04-26 12:36:01 sr63qzPaUVNj0Vu2zFG8sEEMES55/JIKCoj6O66j821/qJ97RLPP5pKUpp2gCS7F\\\\r\\\\n2026-04-26 12:36:01 GyCzMBiTsF4zNCr+FA1rQUCZqa50S3Gu90KANsv7VX1krJXXaSXQFaiDAyB+zL0f\\\\r\\\\n2026-04-26 12:36:01 SQR7WrimYwMQaGX8c75+8L7NK2zdxMQH0chtdqv79WmoOn+fWGupCq7NlA32s7rb\\\\r\\\\n2026-04-26 12:36:01 Cq4auSoIF5ovQqw2F2wgi2nBpHwfF5ka6qSaQA4wiACrxkC255lCaAzy9jky4Ldt\\\\r\\\\n2026-04-26 12:36:01 1iSmA7q2JSu8HEN8NG9AQqP+l44HRXFzJsF3cXTaOzKZKYlhlx5btb8F+M9aCgXi\\\\r\\\\n2026-04-26 12:36:01 pICqo0FqkQ03ULwswnF8yXsjpYkx63lc0pLStKn7dxI+cSOYYCu0cbxcBoZyqmH1\\\\r\\\\n2026-04-26 12:36:01 Kqmr2XMicIWCxQoiW4YT5UYfNsfwmRUWkJwmCahUFSzo5swUpBbeCo6bsEdkyxMM\\\\r\\\\n2026-04-26 12:36:01 I5bNV1cjSII5liHOyxnvZ77+giZAKglsiI3ZmmVh+l8fvDBDaLVmmMRfcwRHOxu1\\\\r\\\\n2026-04-26 12:36:01 UMRr047T8ggKgEnyhQLK/FJh+Yp8ubo6wsTUwyyVcRULUVWeJbka6EDkMbPucHHb\\\\r\\\\n2026-04-26 12:36:01 vDdO61eP2yB+uQlwbBr1UquiQD1XrBHXFVwDw6rJoJxTkGQggaofpsUPa3F561LV\\\\r\\\\n2026-04-26 12:36:01 aQAFxU9BAgmdYb4uJxtlt46DCbx2tFW2OnoqQrpFW7nWlwmLJ2dUhIRkySTyhJpq\\\\r\\\\n2026-04-26 12:36:01 K0hnrLThhA1tu8q3dTXOCDs+8csKnI9vVSqAFm6ax3lI6ilBFVIgyZi7dBI1TCKp\\\\r\\\\n2026-04-26 12:36:01 rDbvCzcWY6dxEUzHqTELG5sd955LQgoei2/86QDquRIgB2PGqblBYylUOA9tBTAv\\\\r\\\\n2026-04-26 12:36:01 wSVKoZuonI4ijDZz5yec2C9DiCZva6MbxASOLBl05qfeeDbzkhOWsas2ZpMRmaS8\\\\r\\\\n2026-04-26 12:36:01 dI0Tmp732GkddM2R879ULHp0x4CI4Vh42mN/m22OInwW4mlPaUAy4MQUOWvuWb6/\\\\r\\\\n2026-04-26 12:36:01 o2/HcXJCoj9JsULCKXchFrawJHTgCTpi9BicMpmnPHpnpxlYRw77p4qWcmGqs2Yi\\\\r\\\\n2026-04-26 12:36:01 gQLAAQhZxzpT8MPgsomgC2nySQthEHsvF4XVbL60ImBv9Qig2hd7Jh4cI0D/+TdC\\\\r\\\\n2026-04-26 12:36:01 tky6B1MyPAxYCTN2QXXCo6CbdzMoVBhXuAI7prv2DA5zUwNCpxBKs2BgSIZ9677J\\\\r\\\\n2026-04-26 12:36:01 RlxpsqbbVLVJl6BdbJcMRjIWEW0flKwbSb/PdEuEGheu5UuRZ4/MxrzrciW35CxX\\\\r\\\\n2026-04-26 12:36:01 +XYlHBLCOQ6MCCSYtAy9olSBxQ1iMkiP0V20Crzm6JapZWxTC1EEFgMXAJERMXin\\\\r\\\\n2026-04-26 12:36:01 NiY0wK8f8JFABRBxMZeHyBtT6EobR2Q1Ozcjmhb98rK6wUVhorCGV0mbZ4jzVFtH\\\\r\\\\n2026-04-26 12:36:01 YD9UoTAQrI22NGLy+BupkM7OmaQ82SWZlZ8eiSqv5z7aBI8AAWOORHCYW07i9kCy\\\\r\\\\n2026-04-26 12:36:01 OJ4nB3/Ko4OTiUeGYamtlj9/k7alhM5BE2fkEoygYFvL1cfFXMHH+wOEonSMi5qo\\\\r\\\\n2026-04-26 12:36:01 smQrWalr8aPEPGkXWYDjMsBZ4rHQ00z+cE3YiXJXMj2Y8JMY9LJrR1asaEY3IoBx\\\\r\\\\n2026-04-26 12:36:01 ose+UxmIsZr1OD/Jy1euBJo0IQX3gnrvdGl9u8zQeCes+g5xl68gAU8n1J/Z4DoB\\\\r\\\\n2026-04-26 12:36:01 Y0mUMEgOuMu6aAvmQc/lqqP7lwrCKCfVe6SS6w2w3I9GrL2/3GkQkXJSc4rmZb7u\\\\r\\\\n2026-04-26 12:36:01 JoAFyHleVFAnDFXlhLKFl0h3x7TD26LK2LApnLI344MvE6ZG9RFA6w2Q6JtRIEWU\\\\r\\\\n2026-04-26 12:36:01 lheqsm3z9sfcOiHW/GWw0nTkC8btOFZ0uBTThDnHg0BvuXzmBDcle1GpXJdyzLyl\\\\r\\\\n2026-04-26 12:36:01 cW4qlLb15J1zMb/hVBNGagquATVVclvcVKYGYkNsxGpWBC8/8iJTEUKEMwqti7PR\\\\r\\\\n2026-04-26 12:36:01 yh+r058rdhlVML+0F5aDJwjslkCppGpJF5nGQn4pwBzViz752YFUgRRz2jrhFYHE\\\\r\\\\n2026-04-26 12:36:01 KaVCtcczpnZhtqNMY49aRMaTphHu4YpgglMjbDuZ5wiK27Fq5RM+lF6sIG6SGycb\\\\r\\\\n2026-04-26 12:36:01 4whptwXeepJbATEQ55FWWckLVJ5lVWuZ0pCOMguparXRwXECzGnIHLxehCexiZqA\\\\r\\\\n2026-04-26 12:36:01 QLJZNAFOyB3IhHZo5TrJY5sNIMXU94yraZLmQQ3cRMntNiW8kp6Pqj3I40bqlL3F\\\\r\\\\n2026-04-26 12:36:01 ahwNl8qwsjl44hMmWMfQk1c5OpCtkGJcIpIF08ILxDknAyBTQ35BJXMJ9XtI0nt2\\\\r\\\\n2026-04-26 12:36:01 OiGGA6YUqbb68bmXbEhzKQhulHs8GWh/sgXiN3NoI5ns6nU0a3e6Oz2BkXY708iM\\\\r\\\\n2026-04-26 12:36:01 oxrQxsZ4uoM/pjlHG5xeOM62B3tpeghU5iFfOgr+hH9mGcOx4cSoNjn3a5gvMJqc\\\\r\\\\n2026-04-26 12:36:01 Ycc60cOGalwlpLruUy4rdDwhInvsGAmaapDq8IxRpS/AIpij4Y/SmMl9uisvqBr9\\\\r\\\\n2026-04-26 12:36:01 ypg1olTOJ8rk08AXY0Kl2D9lS5GK11g2VWtCgKiMdS/RvAXJnJGkdStVTGYiCnHJ\\\\r\\\\n2026-04-26 12:36:01 OjgyHTrR2a+N2ZiYTldYtmF6H9pm/lfv6FNtw2cNQzqGoSSsrAHEugO0d94keir2\\\\r\\\\n2026-04-26 12:36:01 62w9ymkZWDurfZDVT8OIVWXhgKlR44rEMqSAR+iv6ap61WM2ZMFejOGy4XrDjLrH\\\\r\\\\n2026-04-26 12:36:01 qwI=\\\\r\\\\n2026-04-26 12:36:01 -----END PRIVATE KEY-----\\\\r\\\\n#7 DONE 0.3s\\\\r\\\\n\\\\r\\\\n#8 exporting to image\\\\r\\\\n#8 exporting layers 0.1s done\\\\r\\\\n#8 writing image sha256:3ed48eb4eb0c17e6baaf691a361afd8c75572517e5b729849da4e5344bf7f244 done\\\\r\\\\n#8 DONE 0.2s\\\"}\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/pem_key.p.log.json\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"-----BEGIN PRIVATE KEY-----\\\\r\\\\n2026-04-26 12:36:01 MIIMvgIBADALBglghkgBZQMEBAMEggyqMIIMpgRATqJGETTwhb2gxXF41z3G5ztP\\\\r\\\\n2026-04-26 12:36:01 I+dcZ5zCOnpcALAIw+OAqVHjisQypIBH6K/pqnrVYzZkwV6M4bLhesOMuserAgSC\\\\r\\\\n2026-04-26 12:36:01 DGAygxLkWHaG9AEmQJsg1MeFxsNyehNphDUdaKHxVmXPYUNVm3J4c5+xBZigd8pa\\\\r\\\\n2026-04-26 12:36:01 LEIX4H6JKVWAwKs5UkCLw3uB434w+6mWMJlUjDwWZSGgEiRjS21nx6eKyLqlLE16\\\\r\\\\n2026-04-26 12:36:01 XAZ5Rg2oJAL5CVj8uAe7pUdweySS4EBgdMPJ9o0cEZDP5aD9yTSIeXzi1bgGJQ/s\\\\r\\\\n2026-04-26 12:36:01 aJ5DxXUVXDWTZgA05CHuojS/R1WlO2o30rxV4azc+Yr7IcR89i4wNGHUNQFmhhBF\\\\r\\\\n2026-04-26 12:36:01 OYyA41Ls/ESNS1UGWwfCuZ89CBzjjBQZhxp4ELW+ZLa+1w3iUhJZEYoc9GQm7E+v\\\\r\\\\n2026-04-26 12:36:01 VIQvl4RxKF8WZAc4uTaisTwcNAhYK5m5gpX5ZHLgBndWRjE32kOvask2BLdgjJig\\\\r\\\\n2026-04-26 12:36:01 Fs9mKlRU+ZqIQxukBDO6xkHjSr1JxIP2HJNyiiZxgCUKSi/I5h4UObW1yjNv0Ymw\\\\r\\\\n2026-04-26 12:36:01 FE/csKq4gcWvPD/QuFeW4XFQcZaoqkQVILnjVG10NqOTlDJaywMhcgjQq2QQlVXH\\\\r\\\\n2026-04-26 12:36:01 zMBgJI3W9qLDYFY69rN/xnL68wg5B1xv62ChNo4eTLlppGmNlLfX6YleXLYK2pTj\\\\r\\\\n2026-04-26 12:36:01 cmIbK3nvQ7BGLAXVMMYFOkkht0mHVC4sS3mwdUtS2l5KECOq1R+g4mrrAUyGpI1B\\\\r\\\\n2026-04-26 12:36:01 68+Eg5DkM86BUYI9N86V4cUtNGDbsmaJgCurGJHHupeJQhWj+Q2CNlXmSaP+mCau\\\\r\\\\n2026-04-26 12:36:01 GUEMVn/PVmqhSJIj+yEsojeZykecYXo7LMxiJkuX8HZ9R3ynOHdedcfV4DdAJc1E\\\\r\\\\n2026-04-26 12:36:01 t51bOzjJlLIlUEQicJcXMCrBJ8pL1bHJGkT7t7gxnC72Qz7D2Czh20oJIgFTs1yJ\\\\r\\\\n2026-04-26 12:36:01 kQSTxDFcMsakyRRZAAcDyGMGUnrMxIVSyrQDhIQrORaeiTDHcaS6pDuz5kkJsT+Y\\\\r\\\\n2026-04-26 12:36:01 ki/ZkkAldBpX4sDD1zvC6LyWU1IlZcx9F5V7I0P/BrpSwrvjNQEIeW4tNR1+fEYW\\\\r\\\\n2026-04-26 12:36:01 fE7gewlJZbTCVqTcQ7wQ+kA7JEQkU6I8YaIXuiwiG55EuSsO2MzpApgFtmAcWlT4\\\\r\\\\n2026-04-26 12:36:01 ybWzhp7kqwRFolOi6hb9y8y4aDRkRltYcTPswcjh40k1spoCRlwCcgahgTnuWJ8O\\\\r\\\\n2026-04-26 12:36:01 qq4uxkY8xkFvJ4VqZjcl7AbhdJg3R5gqlbhPZmEXBn3teYbihzMCBRI3RTI5/Hy2\\\\r\\\\n2026-04-26 12:36:01 Yh4VhW+MqaukgRTPk50aKFjEs0vj6D1RpLRUmq/EI2GKZbtZc4MDR8kZWXsP5yqO\\\\r\\\\n2026-04-26 12:36:01 o2OcG66cSXR5KrzmNRNdci1GNafm5qHiqj5NsnDax1B8t1hkpV+VMkZKGxGXt2YP\\\\r\\\\n2026-04-26 12:36:01 gx1/q1EgS5w2ciAuC8u5gitd1ie43B5lsysO0MY31Qy1eGO1Sj0g4pxM2szbpwso\\\\r\\\\n2026-04-26 12:36:01 0RZL8aKk645hElitcXDx8wUVc0Zm/Av4FsSiZkhFeKaHSAXJtTtlAkLMMTZaNwBA\\\\r\\\\n2026-04-26 12:36:01 hqmHqqtalptZmwGz2F0dmXF9cy+gOxzaBhQbVcH8SDdchpgTl14B93qh2iY2RjxY\\\\r\\\\n2026-04-26 12:36:01 Eb3kpsPG0cdLTAAahEALuMu26YFpglJXAkwSwSLPYsGRPHjJFiXfWBR05x5y5wdB\\\\r\\\\n2026-04-26 12:36:01 1jhhqlV6ZHO/osEJKb6tSHH0mYf0uMNu2speu2DgsjCjHHJwtSJMayfO1WZcSF+G\\\\r\\\\n2026-04-26 12:36:01 wFXOY77MgB3VwMRcCoTMNwoBswcJeZRyNL+cHLZZcK0kpEJbBY60W5pHUceKrDDJ\\\\r\\\\n2026-04-26 12:36:01 sr63qzPaUVNj0Vu2zFG8sEEMES55/JIKCoj6O66j821/qJ97RLPP5pKUpp2gCS7F\\\\r\\\\n2026-04-26 12:36:01 GyCzMBiTsF4zNCr+FA1rQUCZqa50S3Gu90KANsv7VX1krJXXaSXQFaiDAyB+zL0f\\\\r\\\\n2026-04-26 12:36:01 SQR7WrimYwMQaGX8c75+8L7NK2zdxMQH0chtdqv79WmoOn+fWGupCq7NlA32s7rb\\\\r\\\\n2026-04-26 12:36:01 Cq4auSoIF5ovQqw2F2wgi2nBpHwfF5ka6qSaQA4wiACrxkC255lCaAzy9jky4Ldt\\\\r\\\\n2026-04-26 12:36:01 1iSmA7q2JSu8HEN8NG9AQqP+l44HRXFzJsF3cXTaOzKZKYlhlx5btb8F+M9aCgXi\\\\r\\\\n2026-04-26 12:36:01 pICqo0FqkQ03ULwswnF8yXsjpYkx63lc0pLStKn7dxI+cSOYYCu0cbxcBoZyqmH1\\\\r\\\\n2026-04-26 12:36:01 Kqmr2XMicIWCxQoiW4YT5UYfNsfwmRUWkJwmCahUFSzo5swUpBbeCo6bsEdkyxMM\\\\r\\\\n2026-04-26 12:36:01 I5bNV1cjSII5liHOyxnvZ77+giZAKglsiI3ZmmVh+l8fvDBDaLVmmMRfcwRHOxu1\\\\r\\\\n2026-04-26 12:36:01 UMRr047T8ggKgEnyhQLK/FJh+Yp8ubo6wsTUwyyVcRULUVWeJbka6EDkMbPucHHb\\\\r\\\\n2026-04-26 12:36:01 vDdO61eP2yB+uQlwbBr1UquiQD1XrBHXFVwDw6rJoJxTkGQggaofpsUPa3F561LV\\\\r\\\\n2026-04-26 12:36:01 aQAFxU9BAgmdYb4uJxtlt46DCbx2tFW2OnoqQrpFW7nWlwmLJ2dUhIRkySTyhJpq\\\\r\\\\n2026-04-26 12:36:01 K0hnrLThhA1tu8q3dTXOCDs+8csKnI9vVSqAFm6ax3lI6ilBFVIgyZi7dBI1TCKp\\\\r\\\\n2026-04-26 12:36:01 rDbvCzcWY6dxEUzHqTELG5sd955LQgoei2/86QDquRIgB2PGqblBYylUOA9tBTAv\\\\r\\\\n2026-04-26 12:36:01 wSVKoZuonI4ijDZz5yec2C9DiCZva6MbxASOLBl05qfeeDbzkhOWsas2ZpMRmaS8\\\\r\\\\n2026-04-26 12:36:01 dI0Tmp732GkddM2R879ULHp0x4CI4Vh42mN/m22OInwW4mlPaUAy4MQUOWvuWb6/\\\\r\\\\n2026-04-26 12:36:01 o2/HcXJCoj9JsULCKXchFrawJHTgCTpi9BicMpmnPHpnpxlYRw77p4qWcmGqs2Yi\\\\r\\\\n2026-04-26 12:36:01 gQLAAQhZxzpT8MPgsomgC2nySQthEHsvF4XVbL60ImBv9Qig2hd7Jh4cI0D/+TdC\\\\r\\\\n2026-04-26 12:36:01 tky6B1MyPAxYCTN2QXXCo6CbdzMoVBhXuAI7prv2DA5zUwNCpxBKs2BgSIZ9677J\\\\r\\\\n2026-04-26 12:36:01 RlxpsqbbVLVJl6BdbJcMRjIWEW0flKwbSb/PdEuEGheu5UuRZ4/MxrzrciW35CxX\\\\r\\\\n2026-04-26 12:36:01 +XYlHBLCOQ6MCCSYtAy9olSBxQ1iMkiP0V20Crzm6JapZWxTC1EEFgMXAJERMXin\\\\r\\\\n2026-04-26 12:36:01 NiY0wK8f8JFABRBxMZeHyBtT6EobR2Q1Ozcjmhb98rK6wUVhorCGV0mbZ4jzVFtH\\\\r\\\\n2026-04-26 12:36:01 YD9UoTAQrI22NGLy+BupkM7OmaQ82SWZlZ8eiSqv5z7aBI8AAWOORHCYW07i9kCy\\\\r\\\\n2026-04-26 12:36:01 OJ4nB3/Ko4OTiUeGYamtlj9/k7alhM5BE2fkEoygYFvL1cfFXMHH+wOEonSMi5qo\\\\r\\\\n2026-04-26 12:36:01 smQrWalr8aPEPGkXWYDjMsBZ4rHQ00z+cE3YiXJXMj2Y8JMY9LJrR1asaEY3IoBx\\\\r\\\\n2026-04-26 12:36:01 ose+UxmIsZr1OD/Jy1euBJo0IQX3gnrvdGl9u8zQeCes+g5xl68gAU8n1J/Z4DoB\\\\r\\\\n2026-04-26 12:36:01 Y0mUMEgOuMu6aAvmQc/lqqP7lwrCKCfVe6SS6w2w3I9GrL2/3GkQkXJSc4rmZb7u\\\\r\\\\n2026-04-26 12:36:01 JoAFyHleVFAnDFXlhLKFl0h3x7TD26LK2LApnLI344MvE6ZG9RFA6w2Q6JtRIEWU\\\\r\\\\n2026-04-26 12:36:01 lheqsm3z9sfcOiHW/GWw0nTkC8btOFZ0uBTThDnHg0BvuXzmBDcle1GpXJdyzLyl\\\\r\\\\n2026-04-26 12:36:01 cW4qlLb15J1zMb/hVBNGagquATVVclvcVKYGYkNsxGpWBC8/8iJTEUKEMwqti7PR\\\\r\\\\n2026-04-26 12:36:01 yh+r058rdhlVML+0F5aDJwjslkCppGpJF5nGQn4pwBzViz752YFUgRRz2jrhFYHE\\\\r\\\\n2026-04-26 12:36:01 KaVCtcczpnZhtqNMY49aRMaTphHu4YpgglMjbDuZ5wiK27Fq5RM+lF6sIG6SGycb\\\\r\\\\n2026-04-26 12:36:01 4whptwXeepJbATEQ55FWWckLVJ5lVWuZ0pCOMguparXRwXECzGnIHLxehCexiZqA\\\\r\\\\n2026-04-26 12:36:01 QLJZNAFOyB3IhHZo5TrJY5sNIMXU94yraZLmQQ3cRMntNiW8kp6Pqj3I40bqlL3F\\\\r\\\\n2026-04-26 12:36:01 ahwNl8qwsjl44hMmWMfQk1c5OpCtkGJcIpIF08ILxDknAyBTQ35BJXMJ9XtI0nt2\\\\r\\\\n2026-04-26 12:36:01 OiGGA6YUqbb68bmXbEhzKQhulHs8GWh/sgXiN3NoI5ns6nU0a3e6Oz2BkXY708iM\\\\r\\\\n2026-04-26 12:36:01 oxrQxsZ4uoM/pjlHG5xeOM62B3tpeghU5iFfOgr+hH9mGcOx4cSoNjn3a5gvMJqc\\\\r\\\\n2026-04-26 12:36:01 Ycc60cOGalwlpLruUy4rdDwhInvsGAmaapDq8IxRpS/AIpij4Y/SmMl9uisvqBr9\\\\r\\\\n2026-04-26 12:36:01 ypg1olTOJ8rk08AXY0Kl2D9lS5GK11g2VWtCgKiMdS/RvAXJnJGkdStVTGYiCnHJ\\\\r\\\\n2026-04-26 12:36:01 OjgyHTrR2a+N2ZiYTldYtmF6H9pm/lfv6FNtw2cNQzqGoSSsrAHEugO0d94keir2\\\\r\\\\n2026-04-26 12:36:01 62w9ymkZWDurfZDVT8OIVWXhgKlR44rEMqSAR+iv6ap61WM2ZMFejOGy4XrDjLrH\\\\r\\\\n2026-04-26 12:36:01 qwI=\\\\r\\\\n2026-04-26 12:36:01 -----END PRIVATE KEY-----\",\n                \"value_start\": 157,\n                \"value_end\": 6245,\n                \"entropy\": 5.8771\n            }\n        ]\n    },\n    {\n        \"rule\": \"Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"{\\\"ML-KEM-1024.log\\\":\\\"\\\\r\\\\n\\\\r\\\\n#7 [4/4] RUN openssl genpkey -algorithm ML-KEM-1024 -out mlkem-privatekey.pem && cat mlkem-privatekey.pem\\\\r\\\\n2026-04-26 12:36:01 -----BEGIN PRIVATE KEY-----\\\\r\\\\n2026-04-26 12:36:01 MIIMvgIBADALBglghkgBZQMEBAMEggyqMIIMpgRATqJGETTwhb2gxXF41z3G5ztP\\\\r\\\\n2026-04-26 12:36:01 I+dcZ5zCOnpcALAIw+OAqVHjisQypIBH6K/pqnrVYzZkwV6M4bLhesOMuserAgSC\\\\r\\\\n2026-04-26 12:36:01 DGAygxLkWHaG9AEmQJsg1MeFxsNyehNphDUdaKHxVmXPYUNVm3J4c5+xBZigd8pa\\\\r\\\\n2026-04-26 12:36:01 LEIX4H6JKVWAwKs5UkCLw3uB434w+6mWMJlUjDwWZSGgEiRjS21nx6eKyLqlLE16\\\\r\\\\n2026-04-26 12:36:01 XAZ5Rg2oJAL5CVj8uAe7pUdweySS4EBgdMPJ9o0cEZDP5aD9yTSIeXzi1bgGJQ/s\\\\r\\\\n2026-04-26 12:36:01 aJ5DxXUVXDWTZgA05CHuojS/R1WlO2o30rxV4azc+Yr7IcR89i4wNGHUNQFmhhBF\\\\r\\\\n2026-04-26 12:36:01 OYyA41Ls/ESNS1UGWwfCuZ89CBzjjBQZhxp4ELW+ZLa+1w3iUhJZEYoc9GQm7E+v\\\\r\\\\n2026-04-26 12:36:01 VIQvl4RxKF8WZAc4uTaisTwcNAhYK5m5gpX5ZHLgBndWRjE32kOvask2BLdgjJig\\\\r\\\\n2026-04-26 12:36:01 Fs9mKlRU+ZqIQxukBDO6xkHjSr1JxIP2HJNyiiZxgCUKSi/I5h4UObW1yjNv0Ymw\\\\r\\\\n2026-04-26 12:36:01 FE/csKq4gcWvPD/QuFeW4XFQcZaoqkQVILnjVG10NqOTlDJaywMhcgjQq2QQlVXH\\\\r\\\\n2026-04-26 12:36:01 zMBgJI3W9qLDYFY69rN/xnL68wg5B1xv62ChNo4eTLlppGmNlLfX6YleXLYK2pTj\\\\r\\\\n2026-04-26 12:36:01 cmIbK3nvQ7BGLAXVMMYFOkkht0mHVC4sS3mwdUtS2l5KECOq1R+g4mrrAUyGpI1B\\\\r\\\\n2026-04-26 12:36:01 68+Eg5DkM86BUYI9N86V4cUtNGDbsmaJgCurGJHHupeJQhWj+Q2CNlXmSaP+mCau\\\\r\\\\n2026-04-26 12:36:01 GUEMVn/PVmqhSJIj+yEsojeZykecYXo7LMxiJkuX8HZ9R3ynOHdedcfV4DdAJc1E\\\\r\\\\n2026-04-26 12:36:01 t51bOzjJlLIlUEQicJcXMCrBJ8pL1bHJGkT7t7gxnC72Qz7D2Czh20oJIgFTs1yJ\\\\r\\\\n2026-04-26 12:36:01 kQSTxDFcMsakyRRZAAcDyGMGUnrMxIVSyrQDhIQrORaeiTDHcaS6pDuz5kkJsT+Y\\\\r\\\\n2026-04-26 12:36:01 ki/ZkkAldBpX4sDD1zvC6LyWU1IlZcx9F5V7I0P/BrpSwrvjNQEIeW4tNR1+fEYW\\\\r\\\\n2026-04-26 12:36:01 fE7gewlJZbTCVqTcQ7wQ+kA7JEQkU6I8YaIXuiwiG55EuSsO2MzpApgFtmAcWlT4\\\\r\\\\n2026-04-26 12:36:01 ybWzhp7kqwRFolOi6hb9y8y4aDRkRltYcTPswcjh40k1spoCRlwCcgahgTnuWJ8O\\\\r\\\\n2026-04-26 12:36:01 qq4uxkY8xkFvJ4VqZjcl7AbhdJg3R5gqlbhPZmEXBn3teYbihzMCBRI3RTI5/Hy2\\\\r\\\\n2026-04-26 12:36:01 Yh4VhW+MqaukgRTPk50aKFjEs0vj6D1RpLRUmq/EI2GKZbtZc4MDR8kZWXsP5yqO\\\\r\\\\n2026-04-26 12:36:01 o2OcG66cSXR5KrzmNRNdci1GNafm5qHiqj5NsnDax1B8t1hkpV+VMkZKGxGXt2YP\\\\r\\\\n2026-04-26 12:36:01 gx1/q1EgS5w2ciAuC8u5gitd1ie43B5lsysO0MY31Qy1eGO1Sj0g4pxM2szbpwso\\\\r\\\\n2026-04-26 12:36:01 0RZL8aKk645hElitcXDx8wUVc0Zm/Av4FsSiZkhFeKaHSAXJtTtlAkLMMTZaNwBA\\\\r\\\\n2026-04-26 12:36:01 hqmHqqtalptZmwGz2F0dmXF9cy+gOxzaBhQbVcH8SDdchpgTl14B93qh2iY2RjxY\\\\r\\\\n2026-04-26 12:36:01 Eb3kpsPG0cdLTAAahEALuMu26YFpglJXAkwSwSLPYsGRPHjJFiXfWBR05x5y5wdB\\\\r\\\\n2026-04-26 12:36:01 1jhhqlV6ZHO/osEJKb6tSHH0mYf0uMNu2speu2DgsjCjHHJwtSJMayfO1WZcSF+G\\\\r\\\\n2026-04-26 12:36:01 wFXOY77MgB3VwMRcCoTMNwoBswcJeZRyNL+cHLZZcK0kpEJbBY60W5pHUceKrDDJ\\\\r\\\\n2026-04-26 12:36:01 sr63qzPaUVNj0Vu2zFG8sEEMES55/JIKCoj6O66j821/qJ97RLPP5pKUpp2gCS7F\\\\r\\\\n2026-04-26 12:36:01 GyCzMBiTsF4zNCr+FA1rQUCZqa50S3Gu90KANsv7VX1krJXXaSXQFaiDAyB+zL0f\\\\r\\\\n2026-04-26 12:36:01 SQR7WrimYwMQaGX8c75+8L7NK2zdxMQH0chtdqv79WmoOn+fWGupCq7NlA32s7rb\\\\r\\\\n2026-04-26 12:36:01 Cq4auSoIF5ovQqw2F2wgi2nBpHwfF5ka6qSaQA4wiACrxkC255lCaAzy9jky4Ldt\\\\r\\\\n2026-04-26 12:36:01 1iSmA7q2JSu8HEN8NG9AQqP+l44HRXFzJsF3cXTaOzKZKYlhlx5btb8F+M9aCgXi\\\\r\\\\n2026-04-26 12:36:01 pICqo0FqkQ03ULwswnF8yXsjpYkx63lc0pLStKn7dxI+cSOYYCu0cbxcBoZyqmH1\\\\r\\\\n2026-04-26 12:36:01 Kqmr2XMicIWCxQoiW4YT5UYfNsfwmRUWkJwmCahUFSzo5swUpBbeCo6bsEdkyxMM\\\\r\\\\n2026-04-26 12:36:01 I5bNV1cjSII5liHOyxnvZ77+giZAKglsiI3ZmmVh+l8fvDBDaLVmmMRfcwRHOxu1\\\\r\\\\n2026-04-26 12:36:01 UMRr047T8ggKgEnyhQLK/FJh+Yp8ubo6wsTUwyyVcRULUVWeJbka6EDkMbPucHHb\\\\r\\\\n2026-04-26 12:36:01 vDdO61eP2yB+uQlwbBr1UquiQD1XrBHXFVwDw6rJoJxTkGQggaofpsUPa3F561LV\\\\r\\\\n2026-04-26 12:36:01 aQAFxU9BAgmdYb4uJxtlt46DCbx2tFW2OnoqQrpFW7nWlwmLJ2dUhIRkySTyhJpq\\\\r\\\\n2026-04-26 12:36:01 K0hnrLThhA1tu8q3dTXOCDs+8csKnI9vVSqAFm6ax3lI6ilBFVIgyZi7dBI1TCKp\\\\r\\\\n2026-04-26 12:36:01 rDbvCzcWY6dxEUzHqTELG5sd955LQgoei2/86QDquRIgB2PGqblBYylUOA9tBTAv\\\\r\\\\n2026-04-26 12:36:01 wSVKoZuonI4ijDZz5yec2C9DiCZva6MbxASOLBl05qfeeDbzkhOWsas2ZpMRmaS8\\\\r\\\\n2026-04-26 12:36:01 dI0Tmp732GkddM2R879ULHp0x4CI4Vh42mN/m22OInwW4mlPaUAy4MQUOWvuWb6/\\\\r\\\\n2026-04-26 12:36:01 o2/HcXJCoj9JsULCKXchFrawJHTgCTpi9BicMpmnPHpnpxlYRw77p4qWcmGqs2Yi\\\\r\\\\n2026-04-26 12:36:01 gQLAAQhZxzpT8MPgsomgC2nySQthEHsvF4XVbL60ImBv9Qig2hd7Jh4cI0D/+TdC\\\\r\\\\n2026-04-26 12:36:01 tky6B1MyPAxYCTN2QXXCo6CbdzMoVBhXuAI7prv2DA5zUwNCpxBKs2BgSIZ9677J\\\\r\\\\n2026-04-26 12:36:01 RlxpsqbbVLVJl6BdbJcMRjIWEW0flKwbSb/PdEuEGheu5UuRZ4/MxrzrciW35CxX\\\\r\\\\n2026-04-26 12:36:01 +XYlHBLCOQ6MCCSYtAy9olSBxQ1iMkiP0V20Crzm6JapZWxTC1EEFgMXAJERMXin\\\\r\\\\n2026-04-26 12:36:01 NiY0wK8f8JFABRBxMZeHyBtT6EobR2Q1Ozcjmhb98rK6wUVhorCGV0mbZ4jzVFtH\\\\r\\\\n2026-04-26 12:36:01 YD9UoTAQrI22NGLy+BupkM7OmaQ82SWZlZ8eiSqv5z7aBI8AAWOORHCYW07i9kCy\\\\r\\\\n2026-04-26 12:36:01 OJ4nB3/Ko4OTiUeGYamtlj9/k7alhM5BE2fkEoygYFvL1cfFXMHH+wOEonSMi5qo\\\\r\\\\n2026-04-26 12:36:01 smQrWalr8aPEPGkXWYDjMsBZ4rHQ00z+cE3YiXJXMj2Y8JMY9LJrR1asaEY3IoBx\\\\r\\\\n2026-04-26 12:36:01 ose+UxmIsZr1OD/Jy1euBJo0IQX3gnrvdGl9u8zQeCes+g5xl68gAU8n1J/Z4DoB\\\\r\\\\n2026-04-26 12:36:01 Y0mUMEgOuMu6aAvmQc/lqqP7lwrCKCfVe6SS6w2w3I9GrL2/3GkQkXJSc4rmZb7u\\\\r\\\\n2026-04-26 12:36:01 JoAFyHleVFAnDFXlhLKFl0h3x7TD26LK2LApnLI344MvE6ZG9RFA6w2Q6JtRIEWU\\\\r\\\\n2026-04-26 12:36:01 lheqsm3z9sfcOiHW/GWw0nTkC8btOFZ0uBTThDnHg0BvuXzmBDcle1GpXJdyzLyl\\\\r\\\\n2026-04-26 12:36:01 cW4qlLb15J1zMb/hVBNGagquATVVclvcVKYGYkNsxGpWBC8/8iJTEUKEMwqti7PR\\\\r\\\\n2026-04-26 12:36:01 yh+r058rdhlVML+0F5aDJwjslkCppGpJF5nGQn4pwBzViz752YFUgRRz2jrhFYHE\\\\r\\\\n2026-04-26 12:36:01 KaVCtcczpnZhtqNMY49aRMaTphHu4YpgglMjbDuZ5wiK27Fq5RM+lF6sIG6SGycb\\\\r\\\\n2026-04-26 12:36:01 4whptwXeepJbATEQ55FWWckLVJ5lVWuZ0pCOMguparXRwXECzGnIHLxehCexiZqA\\\\r\\\\n2026-04-26 12:36:01 QLJZNAFOyB3IhHZo5TrJY5sNIMXU94yraZLmQQ3cRMntNiW8kp6Pqj3I40bqlL3F\\\\r\\\\n2026-04-26 12:36:01 ahwNl8qwsjl44hMmWMfQk1c5OpCtkGJcIpIF08ILxDknAyBTQ35BJXMJ9XtI0nt2\\\\r\\\\n2026-04-26 12:36:01 OiGGA6YUqbb68bmXbEhzKQhulHs8GWh/sgXiN3NoI5ns6nU0a3e6Oz2BkXY708iM\\\\r\\\\n2026-04-26 12:36:01 oxrQxsZ4uoM/pjlHG5xeOM62B3tpeghU5iFfOgr+hH9mGcOx4cSoNjn3a5gvMJqc\\\\r\\\\n2026-04-26 12:36:01 Ycc60cOGalwlpLruUy4rdDwhInvsGAmaapDq8IxRpS/AIpij4Y/SmMl9uisvqBr9\\\\r\\\\n2026-04-26 12:36:01 ypg1olTOJ8rk08AXY0Kl2D9lS5GK11g2VWtCgKiMdS/RvAXJnJGkdStVTGYiCnHJ\\\\r\\\\n2026-04-26 12:36:01 OjgyHTrR2a+N2ZiYTldYtmF6H9pm/lfv6FNtw2cNQzqGoSSsrAHEugO0d94keir2\\\\r\\\\n2026-04-26 12:36:01 62w9ymkZWDurfZDVT8OIVWXhgKlR44rEMqSAR+iv6ap61WM2ZMFejOGy4XrDjLrH\\\\r\\\\n2026-04-26 12:36:01 qwI=\\\\r\\\\n2026-04-26 12:36:01 -----END PRIVATE KEY-----\\\\r\\\\n#7 DONE 0.3s\\\\r\\\\n\\\\r\\\\n#8 exporting to image\\\\r\\\\n#8 exporting layers 0.1s done\\\\r\\\\n#8 writing image sha256:3ed48eb4eb0c17e6baaf691a361afd8c75572517e5b729849da4e5344bf7f244 done\\\\r\\\\n#8 DONE 0.2s\\\"}\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/pem_key.p.log.json\",\n                \"info\": \"\",\n                \"variable\": \"mlkem-privatekey.pem\\\\r\\\\n2026-04-26 12\",\n                \"variable_start\": 113,\n                \"variable_end\": 150,\n                \"value\": \"36:01\",\n                \"value_start\": 151,\n                \"value_end\": 156,\n                \"entropy\": 2.32193\n            }\n        ]\n    },\n    {\n        \"rule\": \"Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"{\\\"ML-KEM-1024.log\\\":\\\"\\\\r\\\\n\\\\r\\\\n#7 [4/4] RUN openssl genpkey -algorithm ML-KEM-1024 -out mlkem-privatekey.pem && cat mlkem-privatekey.pem\\\\r\\\\n2026-04-26 12:36:01 -----BEGIN PRIVATE KEY-----\\\\r\\\\n2026-04-26 12:36:01 MIIMvgIBADALBglghkgBZQMEBAMEggyqMIIMpgRATqJGETTwhb2gxXF41z3G5ztP\\\\r\\\\n2026-04-26 12:36:01 I+dcZ5zCOnpcALAIw+OAqVHjisQypIBH6K/pqnrVYzZkwV6M4bLhesOMuserAgSC\\\\r\\\\n2026-04-26 12:36:01 DGAygxLkWHaG9AEmQJsg1MeFxsNyehNphDUdaKHxVmXPYUNVm3J4c5+xBZigd8pa\\\\r\\\\n2026-04-26 12:36:01 LEIX4H6JKVWAwKs5UkCLw3uB434w+6mWMJlUjDwWZSGgEiRjS21nx6eKyLqlLE16\\\\r\\\\n2026-04-26 12:36:01 XAZ5Rg2oJAL5CVj8uAe7pUdweySS4EBgdMPJ9o0cEZDP5aD9yTSIeXzi1bgGJQ/s\\\\r\\\\n2026-04-26 12:36:01 aJ5DxXUVXDWTZgA05CHuojS/R1WlO2o30rxV4azc+Yr7IcR89i4wNGHUNQFmhhBF\\\\r\\\\n2026-04-26 12:36:01 OYyA41Ls/ESNS1UGWwfCuZ89CBzjjBQZhxp4ELW+ZLa+1w3iUhJZEYoc9GQm7E+v\\\\r\\\\n2026-04-26 12:36:01 VIQvl4RxKF8WZAc4uTaisTwcNAhYK5m5gpX5ZHLgBndWRjE32kOvask2BLdgjJig\\\\r\\\\n2026-04-26 12:36:01 Fs9mKlRU+ZqIQxukBDO6xkHjSr1JxIP2HJNyiiZxgCUKSi/I5h4UObW1yjNv0Ymw\\\\r\\\\n2026-04-26 12:36:01 FE/csKq4gcWvPD/QuFeW4XFQcZaoqkQVILnjVG10NqOTlDJaywMhcgjQq2QQlVXH\\\\r\\\\n2026-04-26 12:36:01 zMBgJI3W9qLDYFY69rN/xnL68wg5B1xv62ChNo4eTLlppGmNlLfX6YleXLYK2pTj\\\\r\\\\n2026-04-26 12:36:01 cmIbK3nvQ7BGLAXVMMYFOkkht0mHVC4sS3mwdUtS2l5KECOq1R+g4mrrAUyGpI1B\\\\r\\\\n2026-04-26 12:36:01 68+Eg5DkM86BUYI9N86V4cUtNGDbsmaJgCurGJHHupeJQhWj+Q2CNlXmSaP+mCau\\\\r\\\\n2026-04-26 12:36:01 GUEMVn/PVmqhSJIj+yEsojeZykecYXo7LMxiJkuX8HZ9R3ynOHdedcfV4DdAJc1E\\\\r\\\\n2026-04-26 12:36:01 t51bOzjJlLIlUEQicJcXMCrBJ8pL1bHJGkT7t7gxnC72Qz7D2Czh20oJIgFTs1yJ\\\\r\\\\n2026-04-26 12:36:01 kQSTxDFcMsakyRRZAAcDyGMGUnrMxIVSyrQDhIQrORaeiTDHcaS6pDuz5kkJsT+Y\\\\r\\\\n2026-04-26 12:36:01 ki/ZkkAldBpX4sDD1zvC6LyWU1IlZcx9F5V7I0P/BrpSwrvjNQEIeW4tNR1+fEYW\\\\r\\\\n2026-04-26 12:36:01 fE7gewlJZbTCVqTcQ7wQ+kA7JEQkU6I8YaIXuiwiG55EuSsO2MzpApgFtmAcWlT4\\\\r\\\\n2026-04-26 12:36:01 ybWzhp7kqwRFolOi6hb9y8y4aDRkRltYcTPswcjh40k1spoCRlwCcgahgTnuWJ8O\\\\r\\\\n2026-04-26 12:36:01 qq4uxkY8xkFvJ4VqZjcl7AbhdJg3R5gqlbhPZmEXBn3teYbihzMCBRI3RTI5/Hy2\\\\r\\\\n2026-04-26 12:36:01 Yh4VhW+MqaukgRTPk50aKFjEs0vj6D1RpLRUmq/EI2GKZbtZc4MDR8kZWXsP5yqO\\\\r\\\\n2026-04-26 12:36:01 o2OcG66cSXR5KrzmNRNdci1GNafm5qHiqj5NsnDax1B8t1hkpV+VMkZKGxGXt2YP\\\\r\\\\n2026-04-26 12:36:01 gx1/q1EgS5w2ciAuC8u5gitd1ie43B5lsysO0MY31Qy1eGO1Sj0g4pxM2szbpwso\\\\r\\\\n2026-04-26 12:36:01 0RZL8aKk645hElitcXDx8wUVc0Zm/Av4FsSiZkhFeKaHSAXJtTtlAkLMMTZaNwBA\\\\r\\\\n2026-04-26 12:36:01 hqmHqqtalptZmwGz2F0dmXF9cy+gOxzaBhQbVcH8SDdchpgTl14B93qh2iY2RjxY\\\\r\\\\n2026-04-26 12:36:01 Eb3kpsPG0cdLTAAahEALuMu26YFpglJXAkwSwSLPYsGRPHjJFiXfWBR05x5y5wdB\\\\r\\\\n2026-04-26 12:36:01 1jhhqlV6ZHO/osEJKb6tSHH0mYf0uMNu2speu2DgsjCjHHJwtSJMayfO1WZcSF+G\\\\r\\\\n2026-04-26 12:36:01 wFXOY77MgB3VwMRcCoTMNwoBswcJeZRyNL+cHLZZcK0kpEJbBY60W5pHUceKrDDJ\\\\r\\\\n2026-04-26 12:36:01 sr63qzPaUVNj0Vu2zFG8sEEMES55/JIKCoj6O66j821/qJ97RLPP5pKUpp2gCS7F\\\\r\\\\n2026-04-26 12:36:01 GyCzMBiTsF4zNCr+FA1rQUCZqa50S3Gu90KANsv7VX1krJXXaSXQFaiDAyB+zL0f\\\\r\\\\n2026-04-26 12:36:01 SQR7WrimYwMQaGX8c75+8L7NK2zdxMQH0chtdqv79WmoOn+fWGupCq7NlA32s7rb\\\\r\\\\n2026-04-26 12:36:01 Cq4auSoIF5ovQqw2F2wgi2nBpHwfF5ka6qSaQA4wiACrxkC255lCaAzy9jky4Ldt\\\\r\\\\n2026-04-26 12:36:01 1iSmA7q2JSu8HEN8NG9AQqP+l44HRXFzJsF3cXTaOzKZKYlhlx5btb8F+M9aCgXi\\\\r\\\\n2026-04-26 12:36:01 pICqo0FqkQ03ULwswnF8yXsjpYkx63lc0pLStKn7dxI+cSOYYCu0cbxcBoZyqmH1\\\\r\\\\n2026-04-26 12:36:01 Kqmr2XMicIWCxQoiW4YT5UYfNsfwmRUWkJwmCahUFSzo5swUpBbeCo6bsEdkyxMM\\\\r\\\\n2026-04-26 12:36:01 I5bNV1cjSII5liHOyxnvZ77+giZAKglsiI3ZmmVh+l8fvDBDaLVmmMRfcwRHOxu1\\\\r\\\\n2026-04-26 12:36:01 UMRr047T8ggKgEnyhQLK/FJh+Yp8ubo6wsTUwyyVcRULUVWeJbka6EDkMbPucHHb\\\\r\\\\n2026-04-26 12:36:01 vDdO61eP2yB+uQlwbBr1UquiQD1XrBHXFVwDw6rJoJxTkGQggaofpsUPa3F561LV\\\\r\\\\n2026-04-26 12:36:01 aQAFxU9BAgmdYb4uJxtlt46DCbx2tFW2OnoqQrpFW7nWlwmLJ2dUhIRkySTyhJpq\\\\r\\\\n2026-04-26 12:36:01 K0hnrLThhA1tu8q3dTXOCDs+8csKnI9vVSqAFm6ax3lI6ilBFVIgyZi7dBI1TCKp\\\\r\\\\n2026-04-26 12:36:01 rDbvCzcWY6dxEUzHqTELG5sd955LQgoei2/86QDquRIgB2PGqblBYylUOA9tBTAv\\\\r\\\\n2026-04-26 12:36:01 wSVKoZuonI4ijDZz5yec2C9DiCZva6MbxASOLBl05qfeeDbzkhOWsas2ZpMRmaS8\\\\r\\\\n2026-04-26 12:36:01 dI0Tmp732GkddM2R879ULHp0x4CI4Vh42mN/m22OInwW4mlPaUAy4MQUOWvuWb6/\\\\r\\\\n2026-04-26 12:36:01 o2/HcXJCoj9JsULCKXchFrawJHTgCTpi9BicMpmnPHpnpxlYRw77p4qWcmGqs2Yi\\\\r\\\\n2026-04-26 12:36:01 gQLAAQhZxzpT8MPgsomgC2nySQthEHsvF4XVbL60ImBv9Qig2hd7Jh4cI0D/+TdC\\\\r\\\\n2026-04-26 12:36:01 tky6B1MyPAxYCTN2QXXCo6CbdzMoVBhXuAI7prv2DA5zUwNCpxBKs2BgSIZ9677J\\\\r\\\\n2026-04-26 12:36:01 RlxpsqbbVLVJl6BdbJcMRjIWEW0flKwbSb/PdEuEGheu5UuRZ4/MxrzrciW35CxX\\\\r\\\\n2026-04-26 12:36:01 +XYlHBLCOQ6MCCSYtAy9olSBxQ1iMkiP0V20Crzm6JapZWxTC1EEFgMXAJERMXin\\\\r\\\\n2026-04-26 12:36:01 NiY0wK8f8JFABRBxMZeHyBtT6EobR2Q1Ozcjmhb98rK6wUVhorCGV0mbZ4jzVFtH\\\\r\\\\n2026-04-26 12:36:01 YD9UoTAQrI22NGLy+BupkM7OmaQ82SWZlZ8eiSqv5z7aBI8AAWOORHCYW07i9kCy\\\\r\\\\n2026-04-26 12:36:01 OJ4nB3/Ko4OTiUeGYamtlj9/k7alhM5BE2fkEoygYFvL1cfFXMHH+wOEonSMi5qo\\\\r\\\\n2026-04-26 12:36:01 smQrWalr8aPEPGkXWYDjMsBZ4rHQ00z+cE3YiXJXMj2Y8JMY9LJrR1asaEY3IoBx\\\\r\\\\n2026-04-26 12:36:01 ose+UxmIsZr1OD/Jy1euBJo0IQX3gnrvdGl9u8zQeCes+g5xl68gAU8n1J/Z4DoB\\\\r\\\\n2026-04-26 12:36:01 Y0mUMEgOuMu6aAvmQc/lqqP7lwrCKCfVe6SS6w2w3I9GrL2/3GkQkXJSc4rmZb7u\\\\r\\\\n2026-04-26 12:36:01 JoAFyHleVFAnDFXlhLKFl0h3x7TD26LK2LApnLI344MvE6ZG9RFA6w2Q6JtRIEWU\\\\r\\\\n2026-04-26 12:36:01 lheqsm3z9sfcOiHW/GWw0nTkC8btOFZ0uBTThDnHg0BvuXzmBDcle1GpXJdyzLyl\\\\r\\\\n2026-04-26 12:36:01 cW4qlLb15J1zMb/hVBNGagquATVVclvcVKYGYkNsxGpWBC8/8iJTEUKEMwqti7PR\\\\r\\\\n2026-04-26 12:36:01 yh+r058rdhlVML+0F5aDJwjslkCppGpJF5nGQn4pwBzViz752YFUgRRz2jrhFYHE\\\\r\\\\n2026-04-26 12:36:01 KaVCtcczpnZhtqNMY49aRMaTphHu4YpgglMjbDuZ5wiK27Fq5RM+lF6sIG6SGycb\\\\r\\\\n2026-04-26 12:36:01 4whptwXeepJbATEQ55FWWckLVJ5lVWuZ0pCOMguparXRwXECzGnIHLxehCexiZqA\\\\r\\\\n2026-04-26 12:36:01 QLJZNAFOyB3IhHZo5TrJY5sNIMXU94yraZLmQQ3cRMntNiW8kp6Pqj3I40bqlL3F\\\\r\\\\n2026-04-26 12:36:01 ahwNl8qwsjl44hMmWMfQk1c5OpCtkGJcIpIF08ILxDknAyBTQ35BJXMJ9XtI0nt2\\\\r\\\\n2026-04-26 12:36:01 OiGGA6YUqbb68bmXbEhzKQhulHs8GWh/sgXiN3NoI5ns6nU0a3e6Oz2BkXY708iM\\\\r\\\\n2026-04-26 12:36:01 oxrQxsZ4uoM/pjlHG5xeOM62B3tpeghU5iFfOgr+hH9mGcOx4cSoNjn3a5gvMJqc\\\\r\\\\n2026-04-26 12:36:01 Ycc60cOGalwlpLruUy4rdDwhInvsGAmaapDq8IxRpS/AIpij4Y/SmMl9uisvqBr9\\\\r\\\\n2026-04-26 12:36:01 ypg1olTOJ8rk08AXY0Kl2D9lS5GK11g2VWtCgKiMdS/RvAXJnJGkdStVTGYiCnHJ\\\\r\\\\n2026-04-26 12:36:01 OjgyHTrR2a+N2ZiYTldYtmF6H9pm/lfv6FNtw2cNQzqGoSSsrAHEugO0d94keir2\\\\r\\\\n2026-04-26 12:36:01 62w9ymkZWDurfZDVT8OIVWXhgKlR44rEMqSAR+iv6ap61WM2ZMFejOGy4XrDjLrH\\\\r\\\\n2026-04-26 12:36:01 qwI=\\\\r\\\\n2026-04-26 12:36:01 -----END PRIVATE KEY-----\\\\r\\\\n#7 DONE 0.3s\\\\r\\\\n\\\\r\\\\n#8 exporting to image\\\\r\\\\n#8 exporting layers 0.1s done\\\\r\\\\n#8 writing image sha256:3ed48eb4eb0c17e6baaf691a361afd8c75572517e5b729849da4e5344bf7f244 done\\\\r\\\\n#8 DONE 0.2s\\\"}\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/pem_key.p.log.json\",\n                \"info\": \"\",\n                \"variable\": \"KEY-----\\\\r\\\\n2026-04-26 12\",\n                \"variable_start\": 176,\n                \"variable_end\": 201,\n                \"value\": \"36:01\",\n                \"value_start\": 202,\n                \"value_end\": 207,\n                \"entropy\": 2.32193\n            }\n        ]\n    },\n    {\n        \"rule\": \"PEM Private Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"-----BEGIN PRIVATE KEY-----\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/pem_key.p.rsa\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"-----BEGIN PRIVATE KEY-----\",\n                \"value_start\": 0,\n                \"value_end\": 27,\n                \"entropy\": 3.20029\n            },\n            {\n                \"line\": \"MIIBVQIBADANBgkqhkiG9w0BAQEFAASCAT8wggE7AgEAAkEA12FhURMjPmqRNZZl\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/pem_key.p.rsa\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"MIIBVQIBADANBgkqhkiG9w0BAQEFAASCAT8wggE7AgEAAkEA12FhURMjPmqRNZZl\",\n                \"value_start\": 0,\n                \"value_end\": 64,\n                \"entropy\": 4.67611\n            },\n            {\n                \"line\": \"teTEEoNqzPBXPBgBSqihi1qWbk3NthnycOSinUz7prfasLMlEDqcS68FFh1t5rrX\",\n                \"line_num\": 3,\n                \"path\": \"./tests/samples/pem_key.p.rsa\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"teTEEoNqzPBXPBgBSqihi1qWbk3NthnycOSinUz7prfasLMlEDqcS68FFh1t5rrX\",\n                \"value_start\": 0,\n                \"value_end\": 64,\n                \"entropy\": 5.10493\n            },\n            {\n                \"line\": \"WknouwIDAQABAkAySCW0C8e6lp536Diukk3EFLImTiXPfbsvdtbf9bIQ5eNrfOhV\",\n                \"line_num\": 4,\n                \"path\": \"./tests/samples/pem_key.p.rsa\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"WknouwIDAQABAkAySCW0C8e6lp536Diukk3EFLImTiXPfbsvdtbf9bIQ5eNrfOhV\",\n                \"value_start\": 0,\n                \"value_end\": 64,\n                \"entropy\": 5.21461\n            },\n            {\n                \"line\": \"z4MuDWaaLPkL49si36Li4nLu8op3i9QVIlThAiEA74ZnMHks7VhxqpneOxWC896e\",\n                \"line_num\": 5,\n                \"path\": \"./tests/samples/pem_key.p.rsa\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"z4MuDWaaLPkL49si36Li4nLu8op3i9QVIlThAiEA74ZnMHks7VhxqpneOxWC896e\",\n                \"value_start\": 0,\n                \"value_end\": 64,\n                \"entropy\": 4.97641\n            },\n            {\n                \"line\": \"gS3TOtNx8sYYYlfeyh8CIQDmMdWhVAOWhdWMwdSvDVo9Qxk7ZpZJzVH5c+vzSWOF\",\n                \"line_num\": 6,\n                \"path\": \"./tests/samples/pem_key.p.rsa\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"gS3TOtNx8sYYYlfeyh8CIQDmMdWhVAOWhdWMwdSvDVo9Qxk7ZpZJzVH5c+vzSWOF\",\n                \"value_start\": 0,\n                \"value_end\": 64,\n                \"entropy\": 5.17923\n            },\n            {\n                \"line\": \"5QIhAJsOHZSyjNPkskhnLQaAiXJHRcKIILpvEM/BTx2ylmWvAiAkN3z79+LkoMPb\",\n                \"line_num\": 7,\n                \"path\": \"./tests/samples/pem_key.p.rsa\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"5QIhAJsOHZSyjNPkskhnLQaAiXJHRcKIILpvEM/BTx2ylmWvAiAkN3z79+LkoMPb\",\n                \"value_start\": 0,\n                \"value_end\": 64,\n                \"entropy\": 5.25766\n            },\n            {\n                \"line\": \"dHeI3xnuf4sNvHMyw1n9XE6oJUjCPQIhAL7L9UoJKVXkKu+RtislM1+rx9j5qy01\",\n                \"line_num\": 8,\n                \"path\": \"./tests/samples/pem_key.p.rsa\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"dHeI3xnuf4sNvHMyw1n9XE6oJUjCPQIhAL7L9UoJKVXkKu+RtislM1+rx9j5qy01\",\n                \"value_start\": 0,\n                \"value_end\": 64,\n                \"entropy\": 5.35141\n            },\n            {\n                \"line\": \"24n7nBfD3ZXv\",\n                \"line_num\": 9,\n                \"path\": \"./tests/samples/pem_key.p.rsa\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"24n7nBfD3ZXv\",\n                \"value_start\": 0,\n                \"value_end\": 12,\n                \"entropy\": 3.4183\n            },\n            {\n                \"line\": \"-----END PRIVATE KEY-----\",\n                \"line_num\": 10,\n                \"path\": \"./tests/samples/pem_key.p.rsa\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"-----END PRIVATE KEY-----\",\n                \"value_start\": 0,\n                \"value_end\": 25,\n                \"entropy\": 3.04489\n            }\n        ]\n    },\n    {\n        \"rule\": \"Perplexity API Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"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\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/perplexity\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"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\",\n                \"value_start\": 0,\n                \"value_end\": 53,\n                \"entropy\": 5.08142\n            }\n        ]\n    },\n    {\n        \"rule\": \"Picatic API Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"sk_live_gireogicracklegireogicrackle1231\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/picatic_key\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"sk_live_gireogicracklegireogicrackle1231\",\n                \"value_start\": 0,\n                \"value_end\": 40,\n                \"entropy\": 3.7037\n            }\n        ]\n    },\n    {\n        \"rule\": \"Stripe Credentials\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"sk_live_gireogicracklegireogicrackle1231\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/picatic_key\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"sk_live_gireogicracklegireogicrackle1231\",\n                \"value_start\": 0,\n                \"value_end\": 40,\n                \"entropy\": 3.7037\n            }\n        ]\n    },\n    {\n        \"rule\": \"PostHog Credentials\",\n        \"severity\": \"medium\",\n        \"confidence\": \"weak\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"phc_cJMqv5nG7Qtd0sfIwasTG87lgnDfJVbrcOOAZMOf\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/posthog\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"phc_cJMqv5nG7Qtd0sfIwasTG87lgnDfJVbrcOOAZMOf\",\n                \"value_start\": 0,\n                \"value_end\": 44,\n                \"entropy\": 4.86251\n            }\n        ]\n    },\n    {\n        \"rule\": \"PostHog Credentials\",\n        \"severity\": \"medium\",\n        \"confidence\": \"weak\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"phs_dNrZRd5etgv1B1gRTkfUrTJnf0EaZ5r6hUouJgXtWwFTrq\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/posthog\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"phs_dNrZRd5etgv1B1gRTkfUrTJnf0EaZ5r6hUouJgXtWwFTrq\",\n                \"value_start\": 0,\n                \"value_end\": 50,\n                \"entropy\": 4.89366\n            }\n        ]\n    },\n    {\n        \"rule\": \"PostHog Credentials\",\n        \"severity\": \"medium\",\n        \"confidence\": \"weak\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"phr_dNrZRd5etgv1B1gRTKedUjAkFCcvNdBLoQz4W8GCYEVUySGUt\",\n                \"line_num\": 3,\n                \"path\": \"./tests/samples/posthog\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"phr_dNrZRd5etgv1B1gRTKedUjAkFCcvNdBLoQz4W8GCYEVUySGUt\",\n                \"value_start\": 0,\n                \"value_end\": 53,\n                \"entropy\": 5.07217\n            }\n        ]\n    },\n    {\n        \"rule\": \"PostHog Credentials\",\n        \"severity\": \"medium\",\n        \"confidence\": \"weak\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"pha_BkeaIpOESh8OGcD1bhPGh6kH9UjVGp6nnaC6vF4E7q9TcJr7GapdQMVDX\",\n                \"line_num\": 4,\n                \"path\": \"./tests/samples/posthog\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"pha_BkeaIpOESh8OGcD1bhPGh6kH9UjVGp6nnaC6vF4E7q9TcJr7GapdQMVDX\",\n                \"value_start\": 0,\n                \"value_end\": 61,\n                \"entropy\": 5.03312\n            }\n        ]\n    },\n    {\n        \"rule\": \"PostHog Credentials\",\n        \"severity\": \"medium\",\n        \"confidence\": \"weak\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"phx_5nYpKltuz4gvt7LessoO3swaOH41RJh6pzT1x1NoeTrKbTuAaxtVMA7JmMxp\",\n                \"line_num\": 5,\n                \"path\": \"./tests/samples/posthog\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"phx_5nYpKltuz4gvt7LessoO3swaOH41RJh6pzT1x1NoeTrKbTuAaxtVMA7JmMxp\",\n                \"value_start\": 0,\n                \"value_end\": 64,\n                \"entropy\": 5.04657\n            }\n        ]\n    },\n    {\n        \"rule\": \"Postman Credentials\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"PMAK-be68a955d73619000f121d77-1d6ce2aa99d4b222bcc9fc01f345cf3168\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/postman\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"PMAK-be68a955d73619000f121d77-1d6ce2aa99d4b222bcc9fc01f345cf3168\",\n                \"value_start\": 0,\n                \"value_end\": 64,\n                \"entropy\": 4.21698\n            }\n        ]\n    },\n    {\n        \"rule\": \"Postman Credentials\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"PMAT-9GP54SGZ7TS928P0BW1K3AN0WX\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/postman\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"PMAT-9GP54SGZ7TS928P0BW1K3AN0WX\",\n                \"value_start\": 0,\n                \"value_end\": 31,\n                \"entropy\": 4.3492\n            }\n        ]\n    },\n    {\n        \"rule\": \"UUID\",\n        \"severity\": \"info\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"   Print, crumple, throw away. line # 10 a0572bc9-7a3e-beef-cafe-9129474bcd81\",\n                \"line_num\": 10,\n                \"path\": \"./tests/samples/pretty.html\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"a0572bc9-7a3e-beef-cafe-9129474bcd81\",\n                \"value_start\": 41,\n                \"value_end\": 77,\n                \"entropy\": 3.84286\n            }\n        ]\n    },\n    {\n        \"rule\": \"Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"        <a href=\\\"http://localhost:8888/v1/api/get?token=zUkITxodk63bDVUMwIymb3zKTxICz85zC00cv0Gel1nE8O\\\">\",\n                \"line_num\": 79,\n                \"path\": \"./tests/samples/pretty.html\",\n                \"info\": \"\",\n                \"variable\": \"token\",\n                \"variable_start\": 50,\n                \"variable_end\": 55,\n                \"value\": \"zUkITxodk63bDVUMwIymb3zKTxICz85zC00cv0Gel1nE8O\",\n                \"value_start\": 56,\n                \"value_end\": 102,\n                \"entropy\": 4.79509\n            }\n        ]\n    },\n    {\n        \"rule\": \"Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"         http://localhost:8888/v1/api/get?token=zUkITxodk63bDVUMwIymb3zKTxICz85zC00cv0Gel1nE8O\",\n                \"line_num\": 80,\n                \"path\": \"./tests/samples/pretty.html\",\n                \"info\": \"\",\n                \"variable\": \"token\",\n                \"variable_start\": 42,\n                \"variable_end\": 47,\n                \"value\": \"zUkITxodk63bDVUMwIymb3zKTxICz85zC00cv0Gel1nE8O\",\n                \"value_start\": 48,\n                \"value_end\": 94,\n                \"entropy\": 4.79509\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.998,\n        \"line_data_list\": [\n            {\n                \"line\": \"       147# password: Jd3OnNy^564eD5_sd\",\n                \"line_num\": 147,\n                \"path\": \"./tests/samples/pretty.html\",\n                \"info\": \"\",\n                \"variable\": \"password\",\n                \"variable_start\": 12,\n                \"variable_end\": 20,\n                \"value\": \"Jd3OnNy^564eD5_sd\",\n                \"value_start\": 22,\n                \"value_end\": 39,\n                \"entropy\": 3.85217\n            }\n        ]\n    },\n    {\n        \"rule\": \"UUID\",\n        \"severity\": \"info\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"        151# a0ce4d19-7a3e-beef-cafe-9129474bcd81\",\n                \"line_num\": 151,\n                \"path\": \"./tests/samples/pretty.html\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"a0ce4d19-7a3e-beef-cafe-9129474bcd81\",\n                \"value_start\": 13,\n                \"value_end\": 49,\n                \"entropy\": 3.74259\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.929,\n        \"line_data_list\": [\n            {\n                \"line\": \"pwd = \\\"cackle!\\\"\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/pwd.gradle\",\n                \"info\": \"\",\n                \"variable\": \"pwd\",\n                \"variable_start\": 0,\n                \"variable_end\": 3,\n                \"value\": \"cackle!\",\n                \"value_start\": 7,\n                \"value_end\": 14,\n                \"entropy\": 2.52164\n            }\n        ]\n    },\n    {\n        \"rule\": \"PyPi API Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"pypi-AgEIcHlvdS5bcmcCJGDmMTllXWJjLTRhODAtNDBhYi01Y2Y4LThjNjcxZTg3MsRjOAACKlszLCJlPDYzYmUxOC0wNjQ3LTQ4AzQtODFhYy1jZGRlNTk2MGYxNDYiXQAABiDDbVAEnaUMn4zZHlFr5NWy7JEYfvoay--cVmKO5lr3Xp\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/pypi_token\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"pypi-AgEIcHlvdS5bcmcCJGDmMTllXWJjLTRhODAtNDBhYi01Y2Y4LThjNjcxZTg3MsRjOAACKlszLCJlPDYzYmUxOC0wNjQ3LTQ4AzQtODFhYy1jZGRlNTk2MGYxNDYiXQAABiDDbVAEnaUMn4zZHlFr5NWy7JEYfvoay--cVmKO5lr3Xp\",\n                \"value_start\": 0,\n                \"value_end\": 179,\n                \"entropy\": 5.5923\n            }\n        ]\n    },\n    {\n        \"rule\": \"RubyGems API Key\",\n        \"severity\": \"medium\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"rubygems_2676e0138d75572e758e2b2252713061b8f26caf7f21630d\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/rubygems\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"rubygems_2676e0138d75572e758e2b2252713061b8f26caf7f21630d\",\n                \"value_start\": 0,\n                \"value_end\": 57,\n                \"entropy\": 4.06282\n            }\n        ]\n    },\n    {\n        \"rule\": \"Salesforce Credentials\",\n        \"severity\": \"medium\",\n        \"confidence\": \"weak\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"t_org_if 00DFT5H59PHLAN0IA 00DG9UE38D6ELk5l 00DyXD47kKDny11j 00Dh68fkeHGbDk92k\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/salesfoce\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"00DFT5H59PHLAN0IA\",\n                \"value_start\": 9,\n                \"value_end\": 26,\n                \"entropy\": 3.45482\n            }\n        ]\n    },\n    {\n        \"rule\": \"Salesforce Credentials\",\n        \"severity\": \"medium\",\n        \"confidence\": \"weak\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"t_org_if 00DFT5H59PHLAN0IA 00DG9UE38D6ELk5l 00DyXD47kKDny11j 00Dh68fkeHGbDk92k\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/salesfoce\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"00DG9UE38D6ELk5l\",\n                \"value_start\": 27,\n                \"value_end\": 43,\n                \"entropy\": 3.625\n            }\n        ]\n    },\n    {\n        \"rule\": \"Salesforce Credentials\",\n        \"severity\": \"medium\",\n        \"confidence\": \"weak\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"t_org_if 00DFT5H59PHLAN0IA 00DG9UE38D6ELk5l 00DyXD47kKDny11j 00Dh68fkeHGbDk92k\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/salesfoce\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"00Dh68fkeHGbDk92k\",\n                \"value_start\": 61,\n                \"value_end\": 78,\n                \"entropy\": 3.57247\n            }\n        ]\n    },\n    {\n        \"rule\": \"Salesforce Credentials\",\n        \"severity\": \"medium\",\n        \"confidence\": \"weak\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"t_org_if 00DFT5H59PHLAN0IA 00DG9UE38D6ELk5l 00DyXD47kKDny11j 00Dh68fkeHGbDk92k\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/salesfoce\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"00DyXD47kKDny11j\",\n                \"value_start\": 44,\n                \"value_end\": 60,\n                \"entropy\": 3.32782\n            }\n        ]\n    },\n    {\n        \"rule\": \"Salesforce Credentials\",\n        \"severity\": \"medium\",\n        \"confidence\": \"weak\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"t_token 00DUI000005AecQ!AR8Amtqc2drcmpoZ3dlanJoMzQ5ODc1OTg0Mzc5NzQ1OCsrKysKLS0tLQp.cm9jLVR5cGU6IDQsRU5DUllwwMzQ1NzY3MzQ1\",\n                \"line_num\": 3,\n                \"path\": \"./tests/samples/salesfoce\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"00DUI000005AecQ!AR8Amtqc2drcmpoZ3dlanJoMzQ5ODc1OTg0Mzc5NzQ1OCsrKysKLS0tLQp.cm9jLVR5cGU6IDQsRU5DUllwwMzQ1NzY3MzQ1\",\n                \"value_start\": 8,\n                \"value_end\": 120,\n                \"entropy\": 5.19811\n            }\n        ]\n    },\n    {\n        \"rule\": \"Salesforce Credentials\",\n        \"severity\": \"medium\",\n        \"confidence\": \"weak\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"t_client_id: 3MVGb3j9DpwrLFc90tWIy.nh7B89YzeymdX9VETUUokMus8xztUgf_5PksXuZmgYoNmvYcsk_qPpk1Y.zttO1\",\n                \"line_num\": 4,\n                \"path\": \"./tests/samples/salesfoce\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"3MVGb3j9DpwrLFc90tWIy.nh7B89YzeymdX9VETUUokMus8xztUgf_5PksXuZmgYoNmvYcsk_qPpk1Y.zttO1\",\n                \"value_start\": 13,\n                \"value_end\": 98,\n                \"entropy\": 5.45622\n            }\n        ]\n    },\n    {\n        \"rule\": \"Salt\",\n        \"severity\": \"low\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.492,\n        \"line_data_list\": [\n            {\n                \"line\": \"var Himalayan_salt = \\\"$hal$1te$TnnGdhednJsdQ5nfetwZ\\\";\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/salt.hs\",\n                \"info\": \"\",\n                \"variable\": \"Himalayan_salt\",\n                \"variable_start\": 4,\n                \"variable_end\": 18,\n                \"value\": \"$hal$1te$TnnGdhednJsdQ5nfetwZ\",\n                \"value_start\": 22,\n                \"value_end\": 51,\n                \"entropy\": 3.9523\n            }\n        ]\n    },\n    {\n        \"rule\": \"Salt\",\n        \"severity\": \"low\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.999,\n        \"line_data_list\": [\n            {\n                \"line\": \"salt1 = b\\\"\\\\x23!\\\\xae2389x&543@\\\"\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/salt.py\",\n                \"info\": \"\",\n                \"variable\": \"salt1\",\n                \"variable_start\": 0,\n                \"variable_end\": 5,\n                \"value\": \"\\\\x23!\\\\xae2389x&543@\",\n                \"value_start\": 10,\n                \"value_end\": 29,\n                \"entropy\": 3.53689\n            }\n        ]\n    },\n    {\n        \"rule\": \"Salt\",\n        \"severity\": \"low\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.237,\n        \"line_data_list\": [\n            {\n                \"line\": \"salt2 = r\\\"\\\"\\\"\\\\0x12\\\\0x3s\\\"\\\"\\\"\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/salt.py\",\n                \"info\": \"\",\n                \"variable\": \"salt2\",\n                \"variable_start\": 0,\n                \"variable_end\": 5,\n                \"value\": \"\\\\0x12\\\\0x3s\",\n                \"value_start\": 12,\n                \"value_end\": 22,\n                \"entropy\": 2.72193\n            }\n        ]\n    },\n    {\n        \"rule\": \"Salt\",\n        \"severity\": \"low\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.949,\n        \"line_data_list\": [\n            {\n                \"line\": \"salt3 = u\\\"\\\\u0020827634876\\\"\",\n                \"line_num\": 3,\n                \"path\": \"./tests/samples/salt.py\",\n                \"info\": \"\",\n                \"variable\": \"salt3\",\n                \"variable_start\": 0,\n                \"variable_end\": 5,\n                \"value\": \"\\\\u0020827634876\",\n                \"value_start\": 10,\n                \"value_end\": 25,\n                \"entropy\": 3.05656\n            }\n        ]\n    },\n    {\n        \"rule\": \"Salt\",\n        \"severity\": \"low\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.993,\n        \"line_data_list\": [\n            {\n                \"line\": \"salt4 = {\\\"salt5\\\": \\\"my124%#$@s\\\\x04clt\\\\0\\\"}\",\n                \"line_num\": 4,\n                \"path\": \"./tests/samples/salt.py\",\n                \"info\": \"\",\n                \"variable\": \"salt5\",\n                \"variable_start\": 10,\n                \"variable_end\": 15,\n                \"value\": \"my124%#$@s\\\\x04clt\\\\0\",\n                \"value_start\": 19,\n                \"value_end\": 38,\n                \"entropy\": 3.93214\n            }\n        ]\n    },\n    {\n        \"rule\": \"Salt\",\n        \"severity\": \"low\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"json_escaped = \\\"{\\\\\\\\\\\\\\\"salt8\\\\\\\\\\\\\\\":\\\\\\\\\\\\\\\"4b9a6d8b638eb0c6\\\\\\\\\\\\\\\"}\\\"\",\n                \"line_num\": 5,\n                \"path\": \"./tests/samples/salt.py\",\n                \"info\": \"\",\n                \"variable\": \"salt8\",\n                \"variable_start\": 21,\n                \"variable_end\": 26,\n                \"value\": \"4b9a6d8b638eb0c6\",\n                \"value_start\": 35,\n                \"value_end\": 51,\n                \"entropy\": 3.28064\n            }\n        ]\n    },\n    {\n        \"rule\": \"Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.812,\n        \"line_data_list\": [\n            {\n                \"line\": \"#define AESKEY {0x35, 0x34, 0x65, 0x9b, 0x1c, 0x2e, 023, 010, 041, 033, 043, 000, \\\\\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/sample.h\",\n                \"info\": \"\",\n                \"variable\": \"AESKEY\",\n                \"variable_start\": 8,\n                \"variable_end\": 14,\n                \"value\": \"0x35, 0x34, 0x65, 0x9b, 0x1c, 0x2e, 023, 010, 041, 033, 043, 000, \\\\\",\n                \"value_start\": 16,\n                \"value_end\": 83,\n                \"entropy\": 3.24263\n            }\n        ]\n    },\n    {\n        \"rule\": \"Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.997,\n        \"line_data_list\": [\n            {\n                \"line\": \"<a href=\\\"http://example.com?token=&quot;g1re0g1T0keN3zWx&quot;\\\">TokenRequest</a>\",\n                \"line_num\": 9,\n                \"path\": \"./tests/samples/sample.html\",\n                \"info\": \"\",\n                \"variable\": \"token\",\n                \"variable_start\": 28,\n                \"variable_end\": 33,\n                \"value\": \"g1re0g1T0keN3zWx\",\n                \"value_start\": 40,\n                \"value_end\": 56,\n                \"entropy\": 3.5\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.999,\n        \"line_data_list\": [\n            {\n                \"line\": \"    placeholder=\\\"Your password: &quot;g1re0g1Pa5$w0Rd&quot;\\\"\",\n                \"line_num\": 16,\n                \"path\": \"./tests/samples/sample.html\",\n                \"info\": \"\",\n                \"variable\": \"Your password\",\n                \"variable_start\": 17,\n                \"variable_end\": 30,\n                \"value\": \"g1re0g1Pa5$w0Rd\",\n                \"value_start\": 38,\n                \"value_end\": 53,\n                \"entropy\": 3.50689\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.993,\n        \"line_data_list\": [\n            {\n                \"line\": \" <button onclick=\\\"alert(&quot;password:g1re0g2Pa5$w0Rd&quot;)\\\">ShowPass</button>\",\n                \"line_num\": 21,\n                \"path\": \"./tests/samples/sample.html\",\n                \"info\": \"\",\n                \"variable\": \"password\",\n                \"variable_start\": 30,\n                \"variable_end\": 38,\n                \"value\": \"g1re0g2Pa5$w0Rd\",\n                \"value_start\": 39,\n                \"value_end\": 54,\n                \"entropy\": 3.64022\n            }\n        ]\n    },\n    {\n        \"rule\": \"UUID\",\n        \"severity\": \"info\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"81f50f8d-4c1a-de4d-8e3f-c1bc8b429a36}{\\\\loch\",\n                \"line_num\": 25,\n                \"path\": \"./tests/samples/sample.rtf\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"81f50f8d-4c1a-de4d-8e3f-c1bc8b429a36\",\n                \"value_start\": 0,\n                \"value_end\": 36,\n                \"entropy\": 3.84286\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.193,\n        \"line_data_list\": [\n            {\n                \"line\": \"%define bld %(if [[ \\\"%{password}\\\" =~ \\\"himmelsrand\\\"  ]]; then echo \\\"y\\\"; else echo \\\"n\\\"; fi)\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/sample.spec\",\n                \"info\": \"\",\n                \"variable\": \"%{password}\",\n                \"variable_start\": 21,\n                \"variable_end\": 32,\n                \"value\": \"himmelsrand\",\n                \"value_start\": 38,\n                \"value_end\": 49,\n                \"entropy\": 3.27761\n            }\n        ]\n    },\n    {\n        \"rule\": \"Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"%define token 4b9a6d8b4bc56fbfa1c638eb0c6cab3746bf32ac7bfa89a6d8b638eb0c619ff2\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/sample.spec\",\n                \"info\": \"\",\n                \"variable\": \"token\",\n                \"variable_start\": 8,\n                \"variable_end\": 13,\n                \"value\": \"4b9a6d8b4bc56fbfa1c638eb0c6cab3746bf32ac7bfa89a6d8b638eb0c619ff2\",\n                \"value_start\": 14,\n                \"value_end\": 78,\n                \"entropy\": 3.73644\n            }\n        ]\n    },\n    {\n        \"rule\": \"AWS Client ID\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"    <Image>AKIAGIREOGIAWSKEY321==</Image>\",\n                \"line_num\": 3,\n                \"path\": \"./tests/samples/sample.tm7\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"AKIAGIREOGIAWSKEY321\",\n                \"value_start\": 11,\n                \"value_end\": 31,\n                \"entropy\": 3.54644\n            }\n        ]\n    },\n    {\n        \"rule\": \"UUID\",\n        \"severity\": \"info\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"    <Key>17205d79-dead-beef-a311-26312ad6ea36</Key>\",\n                \"line_num\": 4,\n                \"path\": \"./tests/samples/sample.tm7\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"17205d79-dead-beef-a311-26312ad6ea36\",\n                \"value_start\": 9,\n                \"value_end\": 45,\n                \"entropy\": 3.60702\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.999,\n        \"line_data_list\": [\n            {\n                \"line\": \"    <Value>May password:6Ew1ThY0u</Value>\",\n                \"line_num\": 5,\n                \"path\": \"./tests/samples/sample.tm7\",\n                \"info\": \"\",\n                \"variable\": \"password\",\n                \"variable_start\": 15,\n                \"variable_end\": 23,\n                \"value\": \"6Ew1ThY0u\",\n                \"value_start\": 24,\n                \"value_end\": 33,\n                \"entropy\": 3.16993\n            }\n        ]\n    },\n    {\n        \"rule\": \"Nonce\",\n        \"severity\": \"low\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.998,\n        \"line_data_list\": [\n            {\n                \"line\": \"    __NONCE: AQ+n0Tth3F1Lt3ReDe+BrQwTzNcs7y+OFND0M/+ipSM+5xE91lsQWW0j1dxGh4PEJtVN0U1oVAL+ZVEIw0IpBDaQQYqkxkkp/+Aj1lp3UgUtGUyX+/CxXFnoK04XZzdpWxcwYeBUikykI5YUUQVldaoTql4BugUy733PXFK91q4UpPK0Dne5yCRKvpqSLWVgigXbUogfRugfYgTgkiGEPsv3izNgRWycIDUInfvpzVvODk1gz6/1nW7xISgLCdcewkRgO6l0WGuOn2dWcndURMOooj4ljD9Aw7g4eIu5hf/B5sCOYh7fB33QxOlAmiMZoliEo6WWGP7P8hneYli7YnRfvvqx7Yh30E3qokRKQXsT+OuSZgK1kKK5yzroO\",\n                \"line_num\": 13,\n                \"path\": \"./tests/samples/sealed_secrets.yaml\",\n                \"info\": \"\",\n                \"variable\": \"__NONCE\",\n                \"variable_start\": 4,\n                \"variable_end\": 11,\n                \"value\": \"AQ+n0Tth3F1Lt3ReDe+BrQwTzNcs7y+OFND0M/+ipSM+5xE91lsQWW0j1dxGh4PEJtVN0U1oVAL+ZVEIw0IpBDaQQYqkxkkp/+Aj1lp3UgUtGUyX+/CxXFnoK04XZzdpWxcwYeBUikykI5YUUQVldaoTql4BugUy733PXFK91q4UpPK0Dne5yCRKvpqSLWVgigXbUogfRugfYgTgkiGEPsv3izNgRWycIDUInfvpzVvODk1gz6/1nW7xISgLCdcewkRgO6l0WGuOn2dWcndURMOooj4ljD9Aw7g4eIu5hf/B5sCOYh7fB33QxOlAmiMZoliEo6WWGP7P8hneYli7YnRfvvqx7Yh30E3qokRKQXsT+OuSZgK1kKK5yzroO\",\n                \"value_start\": 13,\n                \"value_end\": 394,\n                \"entropy\": 5.81513\n            }\n        ]\n    },\n    {\n        \"rule\": \"Secret\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.265,\n        \"line_data_list\": [\n            {\n                \"line\": \"if string(secret) == \\\"cackle!\\\" {\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/secret.go\",\n                \"info\": \"\",\n                \"variable\": \"secret)\",\n                \"variable_start\": 10,\n                \"variable_end\": 17,\n                \"value\": \"cackle!\",\n                \"value_start\": 22,\n                \"value_end\": 29,\n                \"entropy\": 2.52164\n            }\n        ]\n    },\n    {\n        \"rule\": \"Secret\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.999,\n        \"line_data_list\": [\n            {\n                \"line\": \"        Secret: []byte{333, 9, 100, 114, 245, 164, 134, 217,225,26,0,       172, 39, 248,  203, 201},\",\n                \"line_num\": 3,\n                \"path\": \"./tests/samples/secret.go\",\n                \"info\": \"\",\n                \"variable\": \"Secret\",\n                \"variable_start\": 8,\n                \"variable_end\": 14,\n                \"value\": \"333, 9, 100, 114, 245, 164, 134, 217,225,26,0,       172, 39, 248,  203, 201\",\n                \"value_start\": 23,\n                \"value_end\": 99,\n                \"entropy\": 3.10882\n            }\n        ]\n    },\n    {\n        \"rule\": \"PEM Private Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"var SECRET = `-----BEGIN OPENSSH PRIVATE KEY-----\",\n                \"line_num\": 7,\n                \"path\": \"./tests/samples/secret.go\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"-----BEGIN OPENSSH PRIVATE KEY-----\",\n                \"value_start\": 14,\n                \"value_end\": 49,\n                \"entropy\": 3.58716\n            },\n            {\n                \"line\": \"b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAAAMwAAAAtzc2gtZWQyNTUx\",\n                \"line_num\": 8,\n                \"path\": \"./tests/samples/secret.go\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAAAMwAAAAtzc2gtZWQyNTUx\",\n                \"value_start\": 0,\n                \"value_end\": 76,\n                \"entropy\": 4.18903\n            },\n            {\n                \"line\": \"OQAAABWHkoN5N0V0OCSXOHWSOHAxRYMJSGc4clgVA0gJgFlIBAAAAJimRM7VpkTO1QAAAAtzc2gt\",\n                \"line_num\": 9,\n                \"path\": \"./tests/samples/secret.go\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"OQAAABWHkoN5N0V0OCSXOHWSOHAxRYMJSGc4clgVA0gJgFlIBAAAAJimRM7VpkTO1QAAAAtzc2gt\",\n                \"value_start\": 0,\n                \"value_end\": 76,\n                \"entropy\": 4.74471\n            },\n            {\n                \"line\": \"ZWQyNTUxOQAAACBqIPMG94HL7zedFzsvi45mHS8ZuyLQXqvHpHobcdNCJAAAAFRoZXJlXzE1LU4w\",\n                \"line_num\": 10,\n                \"path\": \"./tests/samples/secret.go\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"ZWQyNTUxOQAAACBqIPMG94HL7zedFzsvi45mHS8ZuyLQXqvHpHobcdNCJAAAAFRoZXJlXzE1LU4w\",\n                \"value_start\": 0,\n                \"value_end\": 76,\n                \"entropy\": 5.24555\n            },\n            {\n                \"line\": \"dF9UaGVLZXlZb3VBcmVMb29raW5nRm9S8wb3Mj0tZT1hc3A7ZHprejsuZm5tbmRmbmVuZm5pAAAA\",\n                \"line_num\": 11,\n                \"path\": \"./tests/samples/secret.go\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"dF9UaGVLZXlZb3VBcmVMb29raW5nRm9S8wb3Mj0tZT1hc3A7ZHprejsuZm5tbmRmbmVuZm5pAAAA\",\n                \"value_start\": 0,\n                \"value_end\": 76,\n                \"entropy\": 4.94996\n            },\n            {\n                \"line\": \"EXRpemVuQGNyZWRzd2VlcGVyAQIDBA==\",\n                \"line_num\": 12,\n                \"path\": \"./tests/samples/secret.go\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"EXRpemVuQGNyZWRzd2VlcGVyAQIDBA==\",\n                \"value_start\": 0,\n                \"value_end\": 32,\n                \"entropy\": 4.47641\n            },\n            {\n                \"line\": \"-----END OPENSSH PRIVATE KEY-----\",\n                \"line_num\": 13,\n                \"path\": \"./tests/samples/secret.go\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"-----END OPENSSH PRIVATE KEY-----\",\n                \"value_start\": 0,\n                \"value_end\": 33,\n                \"entropy\": 3.46942\n            }\n        ]\n    },\n    {\n        \"rule\": \"Secret\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"var secret_looks_like_linux_path_1=\\\"/VnpmUGWxhQW9KQAwrL2ZYdDJPNG1PQjYxMXNPaF\\\"\",\n                \"line_num\": 17,\n                \"path\": \"./tests/samples/secret.go\",\n                \"info\": \"\",\n                \"variable\": \"secret_looks_like_linux_path_1\",\n                \"variable_start\": 4,\n                \"variable_end\": 34,\n                \"value\": \"/VnpmUGWxhQW9KQAwrL2ZYdDJPNG1PQjYxMXNPaF\",\n                \"value_start\": 36,\n                \"value_end\": 76,\n                \"entropy\": 4.83418\n            }\n        ]\n    },\n    {\n        \"rule\": \"Secret\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"var secret_looks_like_linux_path_2=\\\"VnpmUGWxhQW/9KQAwrL2ZYd/DJPNG1PQjYxMXNPF\\\"\",\n                \"line_num\": 18,\n                \"path\": \"./tests/samples/secret.go\",\n                \"info\": \"\",\n                \"variable\": \"secret_looks_like_linux_path_2\",\n                \"variable_start\": 4,\n                \"variable_end\": 34,\n                \"value\": \"VnpmUGWxhQW/9KQAwrL2ZYd/DJPNG1PQjYxMXNPF\",\n                \"value_start\": 36,\n                \"value_end\": 76,\n                \"entropy\": 4.78418\n            }\n        ]\n    },\n    {\n        \"rule\": \"Secret\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"var secret_looks_like_linux_path_3=\\\"VnpmUGWxhQW/9KQAwrL2ZYdDJPNG1PQjYxMXNPF=\\\"\",\n                \"line_num\": 19,\n                \"path\": \"./tests/samples/secret.go\",\n                \"info\": \"\",\n                \"variable\": \"secret_looks_like_linux_path_3\",\n                \"variable_start\": 4,\n                \"variable_end\": 34,\n                \"value\": \"VnpmUGWxhQW/9KQAwrL2ZYdDJPNG1PQjYxMXNPF=\",\n                \"value_start\": 36,\n                \"value_end\": 76,\n                \"entropy\": 4.83418\n            }\n        ]\n    },\n    {\n        \"rule\": \"Secret\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"var secret_looks_like_linux_path__=\\\"VnpmUGWxhQW/9KQAwrL2ZYd/DJPNG1PQjEXAMbLE\\\"\",\n                \"line_num\": 20,\n                \"path\": \"./tests/samples/secret.go\",\n                \"info\": \"\",\n                \"variable\": \"secret_looks_like_linux_path__\",\n                \"variable_start\": 4,\n                \"variable_end\": 34,\n                \"value\": \"VnpmUGWxhQW/9KQAwrL2ZYd/DJPNG1PQjEXAMbLE\",\n                \"value_start\": 36,\n                \"value_end\": 76,\n                \"entropy\": 4.85306\n            }\n        ]\n    },\n    {\n        \"rule\": \"Secret\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"LEGACY_GITHUB_SECRET = \\\"fa87409ad3a4589fd279c501b3d2e174855ee9f4\\\"\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/secret.groovy\",\n                \"info\": \"\",\n                \"variable\": \"LEGACY_GITHUB_SECRET\",\n                \"variable_start\": 0,\n                \"variable_end\": 20,\n                \"value\": \"fa87409ad3a4589fd279c501b3d2e174855ee9f4\",\n                \"value_start\": 24,\n                \"value_end\": 64,\n                \"entropy\": 3.80869\n            }\n        ]\n    },\n    {\n        \"rule\": \"SendGrid API Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"SG.gireogigireogigi.gireogigireogigi\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/sendgrid_api_key\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"SG.gireogigireogigi.gireogigireogigi\",\n                \"value_start\": 0,\n                \"value_end\": 36,\n                \"entropy\": 2.60219\n            }\n        ]\n    },\n    {\n        \"rule\": \"Sentry Organization Auth Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"sntrys_eyJpYXQiOjE3NDEyNjQzNTYuMDAwMCwidXJsIjoiaHR0cHM6Ly9zZW50cnkuaW8iLCJyZWdpb25fdXJsIjoiaHR0cHM6Ly91YS5zZW50cnkuaW8iLCJvcmciOiIifQ==v8D-whr2cUQK91Civi4yNoLRjC3MDZH5I2aMcs_j5GDv\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/sentry\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"sntrys_eyJpYXQiOjE3NDEyNjQzNTYuMDAwMCwidXJsIjoiaHR0cHM6Ly9zZW50cnkuaW8iLCJyZWdpb25fdXJsIjoiaHR0cHM6Ly91YS5zZW50cnkuaW8iLCJvcmciOiIifQ==v8D-whr2cUQK91Civi4yNoLRjC3MDZH5I2aMcs_j5GDv\",\n                \"value_start\": 0,\n                \"value_end\": 179,\n                \"entropy\": 5.53873\n            }\n        ]\n    },\n    {\n        \"rule\": \"Sentry User Auth Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"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\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/sentry\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"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\",\n                \"value_start\": 0,\n                \"value_end\": 71,\n                \"entropy\": 4.14384\n            }\n        ]\n    },\n    {\n        \"rule\": \"Shopify Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"    \\\"shopyfy_k\\\": \\\"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\\\",\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/shopify_token\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"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\",\n                \"value_start\": 18,\n                \"value_end\": 56,\n                \"entropy\": 3.80396\n            }\n        ]\n    },\n    {\n        \"rule\": \"Slack Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"xapp-1-A0F6JEP4877-3425459257038-ff6379c940d5ed64f2cf3c820578dcebe5e83dccc0ebd89574184af9b9d2c1be\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/slack_token.hs\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"xapp-1-A0F6JEP4877-3425459257038-ff6379c940d5ed64f2cf3c820578dcebe5e83dccc0ebd89574184af9b9d2c1be\",\n                \"value_start\": 0,\n                \"value_end\": 97,\n                \"entropy\": 4.32216\n            }\n        ]\n    },\n    {\n        \"rule\": \"Slack Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"xoxb-391809548274-4236212766789-i8EoyACELx2FYnSOkRPEpePN\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/slack_token.hs\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"xoxb-391809548274-4236212766789-i8EoyACELx2FYnSOkRPEpePN\",\n                \"value_start\": 0,\n                \"value_end\": 56,\n                \"entropy\": 4.71996\n            }\n        ]\n    },\n    {\n        \"rule\": \"Slack Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"xoxp-1-Mi0yLTM5MTgwOTU0ODI3NC0xMDUzMjc0NTg2MzIxLTQyMzYyMTI3NjY3ODktMzQyNTQ1OTI1NzAzOC1mZjYzNzljOTQwZDVlZDY0ZjJjZjNjODIwNTc4ZGNlYmU1ZTgzZGNjYzBlYmQ4OTU3NDE4NGFmOWI5ZDJjMWJl\",\n                \"line_num\": 3,\n                \"path\": \"./tests/samples/slack_token.hs\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"xoxp-1-Mi0yLTM5MTgwOTU0ODI3NC0xMDUzMjc0NTg2MzIxLTQyMzYyMTI3NjY3ODktMzQyNTQ1OTI1NzAzOC1mZjYzNzljOTQwZDVlZDY0ZjJjZjNjODIwNTc4ZGNlYmU1ZTgzZGNjYzBlYmQ4OTU3NDE4NGFmOWI5ZDJjMWJl\",\n                \"value_start\": 0,\n                \"value_end\": 171,\n                \"entropy\": 4.93756\n            }\n        ]\n    },\n    {\n        \"rule\": \"Slack Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"xoxe-1-My0xLTM5MTgwOTU0ODI3NC00MjM2MjEyNzY2Nzg5LTM0MjU0NTkyNTcwMzgtZmY2Mzc5Yzk0MGQ1ZWQ2NGYyY2YzYzgyMDU3OGRjZWJlNWU4M2RjY2MwZWJkODk1NzQxODRhZjliOWQyYzFiZQ\",\n                \"line_num\": 4,\n                \"path\": \"./tests/samples/slack_token.hs\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"xoxe-1-My0xLTM5MTgwOTU0ODI3NC00MjM2MjEyNzY2Nzg5LTM0MjU0NTkyNTcwMzgtZmY2Mzc5Yzk0MGQ1ZWQ2NGYyY2YzYzgyMDU3OGRjZWJlNWU4M2RjY2MwZWJkODk1NzQxODRhZjliOWQyYzFiZQ\",\n                \"value_start\": 0,\n                \"value_end\": 153,\n                \"entropy\": 4.95538\n            }\n        ]\n    },\n    {\n        \"rule\": \"Slack Webhook\",\n        \"severity\": \"medium\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"    \\\"hook\\\": \\\"https://hooks.slack.com/services/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\\\",\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/slack_webhook.template\",\n                \"info\": \"\",\n                \"variable\": \"hooks.slack.com/services\",\n                \"variable_start\": 21,\n                \"variable_end\": 45,\n                \"value\": \"/T1029384756/B102984756/sjsbfzowhhqbsgftrvajxzpg\",\n                \"value_start\": 45,\n                \"value_end\": 93,\n                \"entropy\": 4.76184\n            }\n        ]\n    },\n    {\n        \"rule\": \"SonarQube Credentials\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"'sonar.login': 'squ_944fb17dc1ca18eb2750b6238e5c5ad27b68aaab',\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/sonarqube\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"squ_944fb17dc1ca18eb2750b6238e5c5ad27b68aaab\",\n                \"value_start\": 16,\n                \"value_end\": 60,\n                \"entropy\": 4.10151\n            }\n        ]\n    },\n    {\n        \"rule\": \"SonarQube Credentials\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"-Dsonar.login=squ_5f6278f46c0697b8ce6a07cfaabf363b5a97a984\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/sonarqube\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"squ_5f6278f46c0697b8ce6a07cfaabf363b5a97a984\",\n                \"value_start\": 14,\n                \"value_end\": 58,\n                \"entropy\": 3.954\n            }\n        ]\n    },\n    {\n        \"rule\": \"SQL Password\",\n        \"severity\": \"medium\",\n        \"confidence\": \"weak\",\n        \"ml_probability\": 0.918,\n        \"line_data_list\": [\n            {\n                \"line\": \"ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'SqLpa5sW0rD';\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/sql_password\",\n                \"info\": \"\",\n                \"variable\": \"ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY\",\n                \"variable_start\": 0,\n                \"variable_end\": 70,\n                \"value\": \"SqLpa5sW0rD\",\n                \"value_start\": 72,\n                \"value_end\": 83,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"SQL Password\",\n        \"severity\": \"medium\",\n        \"confidence\": \"weak\",\n        \"ml_probability\": 0.917,\n        \"line_data_list\": [\n            {\n                \"line\": \"'create user name identified by 'SqLpa5sW0rD' --\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/sql_password\",\n                \"info\": \"\",\n                \"variable\": \"create user name identified by\",\n                \"variable_start\": 1,\n                \"variable_end\": 31,\n                \"value\": \"SqLpa5sW0rD\",\n                \"value_start\": 33,\n                \"value_end\": 44,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"SQL Password\",\n        \"severity\": \"medium\",\n        \"confidence\": \"weak\",\n        \"ml_probability\": 0.996,\n        \"line_data_list\": [\n            {\n                \"line\": \"exec(\\\"CREATE USER ExposedTest ACCOUNT UNLOCK IDENTIFIED BY SqLpa5sW0rD\\\");\",\n                \"line_num\": 3,\n                \"path\": \"./tests/samples/sql_password\",\n                \"info\": \"\",\n                \"variable\": \"CREATE USER ExposedTest ACCOUNT UNLOCK IDENTIFIED BY\",\n                \"variable_start\": 6,\n                \"variable_end\": 58,\n                \"value\": \"SqLpa5sW0rD\",\n                \"value_start\": 59,\n                \"value_end\": 70,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"SQL Password\",\n        \"severity\": \"medium\",\n        \"confidence\": \"weak\",\n        \"ml_probability\": 0.964,\n        \"line_data_list\": [\n            {\n                \"line\": \"\\uff1a`CREATE USER 'haproxy'@'%' IDENTIFIED BY 'SqLpa5sW0rD';`\",\n                \"line_num\": 4,\n                \"path\": \"./tests/samples/sql_password\",\n                \"info\": \"\",\n                \"variable\": \"CREATE USER 'haproxy'@'%' IDENTIFIED BY\",\n                \"variable_start\": 2,\n                \"variable_end\": 41,\n                \"value\": \"SqLpa5sW0rD\",\n                \"value_start\": 43,\n                \"value_end\": 54,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"SQL Password\",\n        \"severity\": \"medium\",\n        \"confidence\": \"weak\",\n        \"ml_probability\": 0.996,\n        \"line_data_list\": [\n            {\n                \"line\": \"exec(\\\"CREATE USER ExposedTest ACCOUNT UNLOCK IDENTIFIED BY SqLpa5sW0rD\\\");\",\n                \"line_num\": 5,\n                \"path\": \"./tests/samples/sql_password\",\n                \"info\": \"\",\n                \"variable\": \"CREATE USER ExposedTest ACCOUNT UNLOCK IDENTIFIED BY\",\n                \"variable_start\": 6,\n                \"variable_end\": 58,\n                \"value\": \"SqLpa5sW0rD\",\n                \"value_start\": 59,\n                \"value_end\": 70,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"SQL Password\",\n        \"severity\": \"medium\",\n        \"confidence\": \"weak\",\n        \"ml_probability\": 0.041,\n        \"line_data_list\": [\n            {\n                \"line\": \"expected_statement = \\\"\\\"\\\"CREATE USER foo WITH ENCRYPTED PASSWORD 'SqLpa5sW0rD' CREATEDB;\",\n                \"line_num\": 6,\n                \"path\": \"./tests/samples/sql_password\",\n                \"info\": \"\",\n                \"variable\": \"CREATE USER foo WITH ENCRYPTED PASSWORD\",\n                \"variable_start\": 24,\n                \"variable_end\": 63,\n                \"value\": \"SqLpa5sW0rD\",\n                \"value_start\": 65,\n                \"value_end\": 76,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"SQL Password\",\n        \"severity\": \"medium\",\n        \"confidence\": \"weak\",\n        \"ml_probability\": 0.914,\n        \"line_data_list\": [\n            {\n                \"line\": \"CREATE USER foo WITH ENCRYPTED PASSWORD 'SqLpa5sW0rD' CREATEDB;\",\n                \"line_num\": 8,\n                \"path\": \"./tests/samples/sql_password\",\n                \"info\": \"\",\n                \"variable\": \"CREATE USER foo WITH ENCRYPTED PASSWORD\",\n                \"variable_start\": 0,\n                \"variable_end\": 39,\n                \"value\": \"SqLpa5sW0rD\",\n                \"value_start\": 41,\n                \"value_end\": 52,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.999,\n        \"line_data_list\": [\n            {\n                \"line\": \"ALTER LOGIN username WITH PASSWORD = 'SqLpa5sW0rD';\",\n                \"line_num\": 9,\n                \"path\": \"./tests/samples/sql_password\",\n                \"info\": \"\",\n                \"variable\": \"PASSWORD\",\n                \"variable_start\": 26,\n                \"variable_end\": 34,\n                \"value\": \"SqLpa5sW0rD\",\n                \"value_start\": 38,\n                \"value_end\": 49,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"SQL Password\",\n        \"severity\": \"medium\",\n        \"confidence\": \"weak\",\n        \"ml_probability\": 0.999,\n        \"line_data_list\": [\n            {\n                \"line\": \"ALTER LOGIN username WITH PASSWORD = 'SqLpa5sW0rD';\",\n                \"line_num\": 9,\n                \"path\": \"./tests/samples/sql_password\",\n                \"info\": \"\",\n                \"variable\": \"ALTER LOGIN username WITH PASSWORD =\",\n                \"variable_start\": 0,\n                \"variable_end\": 36,\n                \"value\": \"SqLpa5sW0rD\",\n                \"value_start\": 38,\n                \"value_end\": 49,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"SQL Password\",\n        \"severity\": \"medium\",\n        \"confidence\": \"weak\",\n        \"ml_probability\": 0.992,\n        \"line_data_list\": [\n            {\n                \"line\": \"ALTER ROLE postgres PASSWORD 'SqLpa5sW0rD'; SELECT pg_reload_conf()\\\"\",\n                \"line_num\": 10,\n                \"path\": \"./tests/samples/sql_password\",\n                \"info\": \"\",\n                \"variable\": \"ALTER ROLE postgres PASSWORD\",\n                \"variable_start\": 0,\n                \"variable_end\": 28,\n                \"value\": \"SqLpa5sW0rD\",\n                \"value_start\": 30,\n                \"value_end\": 41,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"SQL Password\",\n        \"severity\": \"medium\",\n        \"confidence\": \"weak\",\n        \"ml_probability\": 0.998,\n        \"line_data_list\": [\n            {\n                \"line\": \"ALTER USER username WITH PASSWORD 'SqLpa5sW0rD';\",\n                \"line_num\": 11,\n                \"path\": \"./tests/samples/sql_password\",\n                \"info\": \"\",\n                \"variable\": \"ALTER USER username WITH PASSWORD\",\n                \"variable_start\": 0,\n                \"variable_end\": 33,\n                \"value\": \"SqLpa5sW0rD\",\n                \"value_start\": 35,\n                \"value_end\": 46,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"CREATE LOGIN username WITH PASSWORD = 'SqLpa5sW0rD';\",\n                \"line_num\": 12,\n                \"path\": \"./tests/samples/sql_password\",\n                \"info\": \"\",\n                \"variable\": \"PASSWORD\",\n                \"variable_start\": 27,\n                \"variable_end\": 35,\n                \"value\": \"SqLpa5sW0rD\",\n                \"value_start\": 39,\n                \"value_end\": 50,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"SQL Password\",\n        \"severity\": \"medium\",\n        \"confidence\": \"weak\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"CREATE LOGIN username WITH PASSWORD = 'SqLpa5sW0rD';\",\n                \"line_num\": 12,\n                \"path\": \"./tests/samples/sql_password\",\n                \"info\": \"\",\n                \"variable\": \"CREATE LOGIN username WITH PASSWORD =\",\n                \"variable_start\": 0,\n                \"variable_end\": 37,\n                \"value\": \"SqLpa5sW0rD\",\n                \"value_start\": 39,\n                \"value_end\": 50,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"SQL Password\",\n        \"severity\": \"medium\",\n        \"confidence\": \"weak\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"CREATE USER chuck WITH PASSWORD 'SqLpa5sW0rD' SUPERUSER;\",\n                \"line_num\": 13,\n                \"path\": \"./tests/samples/sql_password\",\n                \"info\": \"\",\n                \"variable\": \"CREATE USER chuck WITH PASSWORD\",\n                \"variable_start\": 0,\n                \"variable_end\": 31,\n                \"value\": \"SqLpa5sW0rD\",\n                \"value_start\": 33,\n                \"value_end\": 44,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"SQL Password\",\n        \"severity\": \"medium\",\n        \"confidence\": \"weak\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"CREATE USER IF NOT EXISTS sandy WITH PASSWORD 'SqLpa5sW0rD' NOSUPERUSER;\",\n                \"line_num\": 14,\n                \"path\": \"./tests/samples/sql_password\",\n                \"info\": \"\",\n                \"variable\": \"CREATE USER IF NOT EXISTS sandy WITH PASSWORD\",\n                \"variable_start\": 0,\n                \"variable_end\": 45,\n                \"value\": \"SqLpa5sW0rD\",\n                \"value_start\": 47,\n                \"value_end\": 58,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"SQL Password\",\n        \"severity\": \"medium\",\n        \"confidence\": \"weak\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"CREATE USER myuser WITH PASSWORD 'SqLpa5sW0rD';\",\n                \"line_num\": 15,\n                \"path\": \"./tests/samples/sql_password\",\n                \"info\": \"\",\n                \"variable\": \"CREATE USER myuser WITH PASSWORD\",\n                \"variable_start\": 0,\n                \"variable_end\": 32,\n                \"value\": \"SqLpa5sW0rD\",\n                \"value_start\": 34,\n                \"value_end\": 45,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"SQL Password\",\n        \"severity\": \"medium\",\n        \"confidence\": \"weak\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"CREATE USER username WITH PASSWORD 'SqLpa5sW0rD';\",\n                \"line_num\": 16,\n                \"path\": \"./tests/samples/sql_password\",\n                \"info\": \"\",\n                \"variable\": \"CREATE USER username WITH PASSWORD\",\n                \"variable_start\": 0,\n                \"variable_end\": 34,\n                \"value\": \"SqLpa5sW0rD\",\n                \"value_start\": 36,\n                \"value_end\": 47,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"SQL Password\",\n        \"severity\": \"medium\",\n        \"confidence\": \"weak\",\n        \"ml_probability\": 0.964,\n        \"line_data_list\": [\n            {\n                \"line\": \"ALTER USER 'username'@'localhost' IDENTIFIED BY 'SqLpa5sW0rD';\",\n                \"line_num\": 17,\n                \"path\": \"./tests/samples/sql_password\",\n                \"info\": \"\",\n                \"variable\": \"ALTER USER 'username'@'localhost' IDENTIFIED BY\",\n                \"variable_start\": 0,\n                \"variable_end\": 47,\n                \"value\": \"SqLpa5sW0rD\",\n                \"value_start\": 49,\n                \"value_end\": 60,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"SQL Password\",\n        \"severity\": \"medium\",\n        \"confidence\": \"weak\",\n        \"ml_probability\": 0.553,\n        \"line_data_list\": [\n            {\n                \"line\": \"ALTER USER 'super_user'@'10.10.10.%' identified by 'SqLpa5sW0rD';\",\n                \"line_num\": 18,\n                \"path\": \"./tests/samples/sql_password\",\n                \"info\": \"\",\n                \"variable\": \"ALTER USER 'super_user'@'10.10.10.%' identified by\",\n                \"variable_start\": 0,\n                \"variable_end\": 50,\n                \"value\": \"SqLpa5sW0rD\",\n                \"value_start\": 52,\n                \"value_end\": 63,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"SQL Password\",\n        \"severity\": \"medium\",\n        \"confidence\": \"weak\",\n        \"ml_probability\": 0.899,\n        \"line_data_list\": [\n            {\n                \"line\": \"ALTER USER username IDENTIFIED BY SqLpa5sW0rD;\",\n                \"line_num\": 19,\n                \"path\": \"./tests/samples/sql_password\",\n                \"info\": \"\",\n                \"variable\": \"ALTER USER username IDENTIFIED BY\",\n                \"variable_start\": 0,\n                \"variable_end\": 33,\n                \"value\": \"SqLpa5sW0rD\",\n                \"value_start\": 34,\n                \"value_end\": 45,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"SQL Password\",\n        \"severity\": \"medium\",\n        \"confidence\": \"weak\",\n        \"ml_probability\": 0.991,\n        \"line_data_list\": [\n            {\n                \"line\": \"CREATE USER username IDENTIFIED BY SqLpa5sW0rD;\",\n                \"line_num\": 20,\n                \"path\": \"./tests/samples/sql_password\",\n                \"info\": \"\",\n                \"variable\": \"CREATE USER username IDENTIFIED BY\",\n                \"variable_start\": 0,\n                \"variable_end\": 34,\n                \"value\": \"SqLpa5sW0rD\",\n                \"value_start\": 35,\n                \"value_end\": 46,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"SQL Password\",\n        \"severity\": \"medium\",\n        \"confidence\": \"weak\",\n        \"ml_probability\": 0.997,\n        \"line_data_list\": [\n            {\n                \"line\": \"CREATE USER 'username'@'localhost' IDENTIFIED BY 'SqLpa5sW0rD';\",\n                \"line_num\": 21,\n                \"path\": \"./tests/samples/sql_password\",\n                \"info\": \"\",\n                \"variable\": \"CREATE USER 'username'@'localhost' IDENTIFIED BY\",\n                \"variable_start\": 0,\n                \"variable_end\": 48,\n                \"value\": \"SqLpa5sW0rD\",\n                \"value_start\": 50,\n                \"value_end\": 61,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"SQL Password\",\n        \"severity\": \"medium\",\n        \"confidence\": \"weak\",\n        \"ml_probability\": 0.998,\n        \"line_data_list\": [\n            {\n                \"line\": \"mysql -u root -pdbadmin -e \\\"CREATE USER 'cactiuser'@'localhost' IDENTIFIED BY 'SqLpa5sW0rD';\\\"\\u2013          \",\n                \"line_num\": 22,\n                \"path\": \"./tests/samples/sql_password\",\n                \"info\": \"\",\n                \"variable\": \"CREATE USER 'cactiuser'@'localhost' IDENTIFIED BY\",\n                \"variable_start\": 28,\n                \"variable_end\": 77,\n                \"value\": \"SqLpa5sW0rD\",\n                \"value_start\": 79,\n                \"value_end\": 90,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"SQL Password\",\n        \"severity\": \"medium\",\n        \"confidence\": \"weak\",\n        \"ml_probability\": 0.999,\n        \"line_data_list\": [\n            {\n                \"line\": \"-c \\\"CREATE ROLE scram_test login password 'SqLpa5sW0rD'\\\"\",\n                \"line_num\": 23,\n                \"path\": \"./tests/samples/sql_password\",\n                \"info\": \"\",\n                \"variable\": \"CREATE ROLE scram_test login password\",\n                \"variable_start\": 4,\n                \"variable_end\": 41,\n                \"value\": \"SqLpa5sW0rD\",\n                \"value_start\": 43,\n                \"value_end\": 54,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"SQL Password\",\n        \"severity\": \"medium\",\n        \"confidence\": \"weak\",\n        \"ml_probability\": 0.995,\n        \"line_data_list\": [\n            {\n                \"line\": \"CREATE ROLE app_admin WITH LOGIN PASSWORD SqLpa5sW0rD;\",\n                \"line_num\": 24,\n                \"path\": \"./tests/samples/sql_password\",\n                \"info\": \"\",\n                \"variable\": \"CREATE ROLE app_admin WITH LOGIN PASSWORD\",\n                \"variable_start\": 0,\n                \"variable_end\": 41,\n                \"value\": \"SqLpa5sW0rD\",\n                \"value_start\": 42,\n                \"value_end\": 53,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"SQL Password\",\n        \"severity\": \"medium\",\n        \"confidence\": \"weak\",\n        \"ml_probability\": 0.999,\n        \"line_data_list\": [\n            {\n                \"line\": \"CREATE ROLE flask_admin_geo LOGIN PASSWORD 'SqLpa5sW0rD';\",\n                \"line_num\": 25,\n                \"path\": \"./tests/samples/sql_password\",\n                \"info\": \"\",\n                \"variable\": \"CREATE ROLE flask_admin_geo LOGIN PASSWORD\",\n                \"variable_start\": 0,\n                \"variable_end\": 42,\n                \"value\": \"SqLpa5sW0rD\",\n                \"value_start\": 44,\n                \"value_end\": 55,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"SQL Password\",\n        \"severity\": \"medium\",\n        \"confidence\": \"weak\",\n        \"ml_probability\": 0.702,\n        \"line_data_list\": [\n            {\n                \"line\": \"create role forum_example_graph_demo login password 'SqLpa5sW0rD';\",\n                \"line_num\": 26,\n                \"path\": \"./tests/samples/sql_password\",\n                \"info\": \"\",\n                \"variable\": \"create role forum_example_graph_demo login password\",\n                \"variable_start\": 0,\n                \"variable_end\": 51,\n                \"value\": \"SqLpa5sW0rD\",\n                \"value_start\": 53,\n                \"value_end\": 64,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"SQL Password\",\n        \"severity\": \"medium\",\n        \"confidence\": \"weak\",\n        \"ml_probability\": 0.722,\n        \"line_data_list\": [\n            {\n                \"line\": \"create role forum_example_graph login password 'SqLpa5sW0rD';\",\n                \"line_num\": 27,\n                \"path\": \"./tests/samples/sql_password\",\n                \"info\": \"\",\n                \"variable\": \"create role forum_example_graph login password\",\n                \"variable_start\": 0,\n                \"variable_end\": 46,\n                \"value\": \"SqLpa5sW0rD\",\n                \"value_start\": 48,\n                \"value_end\": 59,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"SQL Password\",\n        \"severity\": \"medium\",\n        \"confidence\": \"weak\",\n        \"ml_probability\": 0.12,\n        \"line_data_list\": [\n            {\n                \"line\": \"SET PASSWORD FOR 'username'@'localhost' = PASSWORD('SqLpa5sW0rD');\",\n                \"line_num\": 28,\n                \"path\": \"./tests/samples/sql_password\",\n                \"info\": \"\",\n                \"variable\": \"SET PASSWORD FOR 'username'@'localhost' = PASSWORD\",\n                \"variable_start\": 0,\n                \"variable_end\": 50,\n                \"value\": \"SqLpa5sW0rD\",\n                \"value_start\": 52,\n                \"value_end\": 63,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"SQL Password\",\n        \"severity\": \"medium\",\n        \"confidence\": \"weak\",\n        \"ml_probability\": 0.549,\n        \"line_data_list\": [\n            {\n                \"line\": \"insert into mysql.user values(PASSWORD('SqLpa5sW0rD') );\",\n                \"line_num\": 29,\n                \"path\": \"./tests/samples/sql_password\",\n                \"info\": \"\",\n                \"variable\": \"insert into mysql.user values(PASSWORD\",\n                \"variable_start\": 0,\n                \"variable_end\": 38,\n                \"value\": \"SqLpa5sW0rD\",\n                \"value_start\": 40,\n                \"value_end\": 51,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"Auth\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.097,\n        \"line_data_list\": [\n            {\n                \"line\": \"UPDATE mysql.user SET authentication_string = PASSWORD ('SqLpa5sW0rD') WHERE User = 'username';\",\n                \"line_num\": 30,\n                \"path\": \"./tests/samples/sql_password\",\n                \"info\": \"\",\n                \"variable\": \"authentication_string\",\n                \"variable_start\": 22,\n                \"variable_end\": 43,\n                \"value\": \"SqLpa5sW0rD\",\n                \"value_start\": 57,\n                \"value_end\": 68,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"SQL Password\",\n        \"severity\": \"medium\",\n        \"confidence\": \"weak\",\n        \"ml_probability\": 0.097,\n        \"line_data_list\": [\n            {\n                \"line\": \"UPDATE mysql.user SET authentication_string = PASSWORD ('SqLpa5sW0rD') WHERE User = 'username';\",\n                \"line_num\": 30,\n                \"path\": \"./tests/samples/sql_password\",\n                \"info\": \"\",\n                \"variable\": \"UPDATE mysql.user SET authentication_string = PASSWORD\",\n                \"variable_start\": 0,\n                \"variable_end\": 54,\n                \"value\": \"SqLpa5sW0rD\",\n                \"value_start\": 57,\n                \"value_end\": 68,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"SQL Password\",\n        \"severity\": \"medium\",\n        \"confidence\": \"weak\",\n        \"ml_probability\": 0.996,\n        \"line_data_list\": [\n            {\n                \"line\": \"ALTER USER 'test'@'1.1.1.1' IDENTIFIED WITH 'mysql_native_password' AS '*92FD05ADCA2EC9D1E10C096DEB1618BC2470E409' REQUIRE NONE PASSWORD EXPIRE DEFAULT ACCOUNT UNLOCK; -- old MySQL hash scheme with sha1\",\n                \"line_num\": 31,\n                \"path\": \"./tests/samples/sql_password\",\n                \"info\": \"\",\n                \"variable\": \"ALTER USER 'test'@'1.1.1.1' IDENTIFIED WITH 'mysql_native_password' AS\",\n                \"variable_start\": 0,\n                \"variable_end\": 70,\n                \"value\": \"*92FD05ADCA2EC9D1E10C096DEB1618BC2470E409\",\n                \"value_start\": 72,\n                \"value_end\": 113,\n                \"entropy\": 3.78769\n            }\n        ]\n    },\n    {\n        \"rule\": \"SQL Password\",\n        \"severity\": \"medium\",\n        \"confidence\": \"weak\",\n        \"ml_probability\": 0.849,\n        \"line_data_list\": [\n            {\n                \"line\": \"sh -c 'echo CREATE USER typeorm_mg IDENTIFIED BY SqLpa5sW0rD\\\\; >>tmp.sql;'\",\n                \"line_num\": 32,\n                \"path\": \"./tests/samples/sql_password\",\n                \"info\": \"\",\n                \"variable\": \"CREATE USER typeorm_mg IDENTIFIED BY\",\n                \"variable_start\": 12,\n                \"variable_end\": 48,\n                \"value\": \"SqLpa5sW0rD\\\\;\",\n                \"value_start\": 49,\n                \"value_end\": 62,\n                \"entropy\": 3.70044\n            }\n        ]\n    },\n    {\n        \"rule\": \"SQL Password\",\n        \"severity\": \"medium\",\n        \"confidence\": \"weak\",\n        \"ml_probability\": 0.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"ALTER USER 'super_user'@'10.10.%' PASSWORD EXPIRE INTERVAL 90 DAY;\",\n                \"line_num\": 34,\n                \"path\": \"./tests/samples/sql_password\",\n                \"info\": \"\",\n                \"variable\": \"ALTER USER 'super_user'@'10.10.%' PASSWORD\",\n                \"variable_start\": 0,\n                \"variable_end\": 42,\n                \"value\": \"EXPIRE\",\n                \"value_start\": 43,\n                \"value_end\": 49,\n                \"entropy\": 2.25163\n            }\n        ]\n    },\n    {\n        \"rule\": \"SQL Password\",\n        \"severity\": \"medium\",\n        \"confidence\": \"weak\",\n        \"ml_probability\": 0.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"ALTER USER 'super_user'@'10.1.%' PASSWORD HISTORY 1;\",\n                \"line_num\": 35,\n                \"path\": \"./tests/samples/sql_password\",\n                \"info\": \"\",\n                \"variable\": \"ALTER USER 'super_user'@'10.1.%' PASSWORD\",\n                \"variable_start\": 0,\n                \"variable_end\": 41,\n                \"value\": \"HISTORY\",\n                \"value_start\": 42,\n                \"value_end\": 49,\n                \"entropy\": 2.80735\n            }\n        ]\n    },\n    {\n        \"rule\": \"SQL Password\",\n        \"severity\": \"medium\",\n        \"confidence\": \"weak\",\n        \"ml_probability\": 0.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"ALTER USER 'username'@'%' PASSWORD EXPIRE INTERVAL 90 DAY;\",\n                \"line_num\": 36,\n                \"path\": \"./tests/samples/sql_password\",\n                \"info\": \"\",\n                \"variable\": \"ALTER USER 'username'@'%' PASSWORD\",\n                \"variable_start\": 0,\n                \"variable_end\": 34,\n                \"value\": \"EXPIRE\",\n                \"value_start\": 35,\n                \"value_end\": 41,\n                \"entropy\": 2.25163\n            }\n        ]\n    },\n    {\n        \"rule\": \"SQL Password\",\n        \"severity\": \"medium\",\n        \"confidence\": \"weak\",\n        \"ml_probability\": 0.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"alter user \\\"bob\\\"@\\\"localhost\\\" identified with sha256_password by '<enter password>';\",\n                \"line_num\": 38,\n                \"path\": \"./tests/samples/sql_password\",\n                \"info\": \"\",\n                \"variable\": \"alter user \\\"bob\\\"@\\\"localhost\\\" identified with sha256_password by\",\n                \"variable_start\": 0,\n                \"variable_end\": 63,\n                \"value\": \"<enter password>\",\n                \"value_start\": 65,\n                \"value_end\": 81,\n                \"entropy\": 3.625\n            }\n        ]\n    },\n    {\n        \"rule\": \"Square Access Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"    \\\"SQT\\\": \\\"EAAAEEPtuW9FnP_CuCV-3DFPB54M7YWBUVEFOWKPRVMWEJYMODIDAEX4FASS64NF\\\",\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/square_access_token\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"EAAAEEPtuW9FnP_CuCV-3DFPB54M7YWBUVEFOWKPRVMWEJYMODIDAEX4FASS64NF\",\n                \"value_start\": 12,\n                \"value_end\": 76,\n                \"entropy\": 4.66018\n            }\n        ]\n    },\n    {\n        \"rule\": \"Square Credentials\",\n        \"severity\": \"medium\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"sq0atp-GIREOGICR0CKLE12W45A78\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/square_client_id\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"sq0atp-GIREOGICR0CKLE12W45A78\",\n                \"value_start\": 0,\n                \"value_end\": 29,\n                \"entropy\": 4.44419\n            }\n        ]\n    },\n    {\n        \"rule\": \"Square Credentials\",\n        \"severity\": \"medium\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"20241204_112356 Colored line: \\\"\\u001b[94msq0csp-ST2dsfwyVI7Ydj343EY72hb48ehKQINMST2ds_fwyVI\\u001b[0m\\\";\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/square_oauth_secret\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"sq0csp-ST2dsfwyVI7Ydj343EY72hb48ehKQINMST2ds_fwyVI\",\n                \"value_start\": 36,\n                \"value_end\": 86,\n                \"entropy\": 4.75856\n            }\n        ]\n    },\n    {\n        \"rule\": \"Stripe Credentials\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"pk_test_Tph4NiI7TYooMQaujxvdEDq5\",\n                \"line_num\": 3,\n                \"path\": \"./tests/samples/stripe_credentials\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"pk_test_Tph4NiI7TYooMQaujxvdEDq5\",\n                \"value_start\": 0,\n                \"value_end\": 32,\n                \"entropy\": 4.6875\n            }\n        ]\n    },\n    {\n        \"rule\": \"Stripe Credentials\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"rk_live_TsS4QI2dNfwyVM7YdjI78ehK\",\n                \"line_num\": 4,\n                \"path\": \"./tests/samples/stripe_credentials\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"rk_live_TsS4QI2dNfwyVM7YdjI78ehK\",\n                \"value_start\": 0,\n                \"value_end\": 32,\n                \"entropy\": 4.6875\n            }\n        ]\n    },\n    {\n        \"rule\": \"Stripe Credentials\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"sk_test_T1z4jtdp7dcC39HqLyjWareD\",\n                \"line_num\": 5,\n                \"path\": \"./tests/samples/stripe_credentials\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"sk_test_T1z4jtdp7dcC39HqLyjWareD\",\n                \"value_start\": 0,\n                \"value_end\": 32,\n                \"entropy\": 4.53891\n            }\n        ]\n    },\n    {\n        \"rule\": \"Stripe Credentials\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"pk_live_KQI2pIpqzh1Nv2ZXfJBqUJItqoO5WdI6zUkITxodxICz85zC00cv0Gk63bDVUMwIymb3zKTeiqfU588jyYJdNYekpiI56wY0IIx\",\n                \"line_num\": 6,\n                \"path\": \"./tests/samples/stripe_credentials\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"pk_live_KQI2pIpqzh1Nv2ZXfJBqUJItqoO5WdI6zUkITxodxICz85zC00cv0Gk63bDVUMwIymb3zKTeiqfU588jyYJdNYekpiI56wY0IIx\",\n                \"value_start\": 0,\n                \"value_end\": 107,\n                \"entropy\": 5.24966\n            }\n        ]\n    },\n    {\n        \"rule\": \"Stripe Credentials\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"sk_test_KQI2pIpqzh1Nv2ZXfyfDQUTUQ63Cw359VjKMwtfJ000DsiXxtcVuxT40W8QRSYWZLQZxszLqOMkbYwYWDV1xKCmRKWR3kgSpi9h\",\n                \"line_num\": 7,\n                \"path\": \"./tests/samples/stripe_credentials\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"sk_test_KQI2pIpqzh1Nv2ZXfyfDQUTUQ63Cw359VjKMwtfJ000DsiXxtcVuxT40W8QRSYWZLQZxszLqOMkbYwYWDV1xKCmRKWR3kgSpi9h\",\n                \"value_start\": 0,\n                \"value_end\": 107,\n                \"entropy\": 5.44092\n            }\n        ]\n    },\n    {\n        \"rule\": \"Stripe Credentials\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"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\",\n                \"line_num\": 8,\n                \"path\": \"./tests/samples/stripe_credentials\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"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\",\n                \"value_start\": 0,\n                \"value_end\": 107,\n                \"entropy\": 5.50064\n            }\n        ]\n    },\n    {\n        \"rule\": \"Stripe Credentials\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"whsec_IsQVcHgjVWTBwlClIsICTD0mpDr4gJ4m\",\n                \"line_num\": 9,\n                \"path\": \"./tests/samples/stripe_credentials\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"whsec_IsQVcHgjVWTBwlClIsICTD0mpDr4gJ4m\",\n                \"value_start\": 0,\n                \"value_end\": 38,\n                \"entropy\": 4.47135\n            }\n        ]\n    },\n    {\n        \"rule\": \"Stripe Credentials\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"whsec_Q4KGL7AstjhYfzCtzK2RTB2EmncHgjVW\",\n                \"line_num\": 10,\n                \"path\": \"./tests/samples/stripe_credentials\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"whsec_Q4KGL7AstjhYfzCtzK2RTB2EmncHgjVW\",\n                \"value_start\": 0,\n                \"value_end\": 38,\n                \"entropy\": 4.82687\n            }\n        ]\n    },\n    {\n        \"rule\": \"Telegram Bot API Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"508627689:AAEuLPKs-EhrjrYGnz60bnYNZqakf6HJxc0\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/telegram_api_key\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"508627689:AAEuLPKs-EhrjrYGnz60bnYNZqakf6HJxc0\",\n                \"value_start\": 0,\n                \"value_end\": 45,\n                \"entropy\": 4.94174\n            }\n        ]\n    },\n    {\n        \"rule\": \"Grafana Provisioned API Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"token in text: eyJrIjoiMDAwMDAwNDAwMDAwODAwNDAwMDAwMDAwNDAwMDAwMDAwMDAwMDAyMSIsIm4iOiJ4eHh4IiwiaWQiOjQzMDh9Cg\",\n                \"line_num\": 18,\n                \"path\": \"./tests/samples/test2.eml\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"eyJrIjoiMDAwMDAwNDAwMDAwODAwNDAwMDAwMDAwNDAwMDAwMDAwMDAwMDAyMSIsIm4iOiJ4eHh4IiwiaWQiOjQzMDh9Cg\",\n                \"value_start\": 15,\n                \"value_end\": 109,\n                \"entropy\": 4.02967\n            }\n        ]\n    },\n    {\n        \"rule\": \"Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"token in text: eyJrIjoiMDAwMDAwNDAwMDAwODAwNDAwMDAwMDAwNDAwMDAwMDAwMDAwMDAyMSIsIm4iOiJ4eHh4IiwiaWQiOjQzMDh9Cg\",\n                \"line_num\": 18,\n                \"path\": \"./tests/samples/test2.eml\",\n                \"info\": \"\",\n                \"variable\": \"token in text\",\n                \"variable_start\": 0,\n                \"variable_end\": 13,\n                \"value\": \"eyJrIjoiMDAwMDAwNDAwMDAwODAwNDAwMDAwMDAwNDAwMDAwMDAwMDAwMDAyMSIsIm4iOiJ4eHh4IiwiaWQiOjQzMDh9Cg\",\n                \"value_start\": 15,\n                \"value_end\": 109,\n                \"entropy\": 4.02967\n            }\n        ]\n    },\n    {\n        \"rule\": \"Together AI API Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"tgp_v1_45j-rhExaIPrLzTp--mCXcQwaWyNYUK86IG0_XWnNqc\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/together\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"tgp_v1_45j-rhExaIPrLzTp--mCXcQwaWyNYUK86IG0_XWnNqc\",\n                \"value_start\": 0,\n                \"value_end\": 50,\n                \"entropy\": 5.13366\n            }\n        ]\n    },\n    {\n        \"rule\": \"Together AI API Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"tgp_v1_LRvIfXDN2VjuqCi5zcGzrM3oIwIOhhIZd9H8JmE2CpR\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/together\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"tgp_v1_LRvIfXDN2VjuqCi5zcGzrM3oIwIOhhIZd9H8JmE2CpR\",\n                \"value_start\": 0,\n                \"value_end\": 50,\n                \"entropy\": 5.16386\n            }\n        ]\n    },\n    {\n        \"rule\": \"Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"gi_reo_gi_token = \\\"G1Re06G1BdgNseiJDN21Z094M\\\"\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/token.toml\",\n                \"info\": \"\",\n                \"variable\": \"gi_reo_gi_token\",\n                \"variable_start\": 0,\n                \"variable_end\": 15,\n                \"value\": \"G1Re06G1BdgNseiJDN21Z094M\",\n                \"value_start\": 19,\n                \"value_end\": 44,\n                \"entropy\": 4.13366\n            }\n        ]\n    },\n    {\n        \"rule\": \"Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"Token-> DemoToken: Nxs094M3ed2s1Re0F4M3ed2GZ8M= <- for User : demo\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/token.toml\",\n                \"info\": \"\",\n                \"variable\": \"DemoToken\",\n                \"variable_start\": 8,\n                \"variable_end\": 17,\n                \"value\": \"Nxs094M3ed2s1Re0F4M3ed2GZ8M=\",\n                \"value_start\": 19,\n                \"value_end\": 47,\n                \"entropy\": 4.03915\n            }\n        ]\n    },\n    {\n        \"rule\": \"Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"tp_token_value=\\\"b035d48j9X2dfjF0hb9sd8Guf5hWu2ia\\\"\",\n                \"line_num\": 4,\n                \"path\": \"./tests/samples/token.toml\",\n                \"info\": \"\",\n                \"variable\": \"tp_token_value\",\n                \"variable_start\": 0,\n                \"variable_end\": 14,\n                \"value\": \"b035d48j9X2dfjF0hb9sd8Guf5hWu2ia\",\n                \"value_start\": 16,\n                \"value_end\": 48,\n                \"entropy\": 4.22641\n            }\n        ]\n    },\n    {\n        \"rule\": \"Tavily API Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"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  # TP\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/tvly\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"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\",\n                \"value_start\": 0,\n                \"value_end\": 37,\n                \"entropy\": 4.84432\n            }\n        ]\n    },\n    {\n        \"rule\": \"Twilio Credentials\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"SK4D2F64E2A108CD72F648B1984C3B5A13\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/twilio_credentials_p\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"SK4D2F64E2A108CD72F648B1984C3B5A13\",\n                \"value_start\": 0,\n                \"value_end\": 34,\n                \"entropy\": 4.02086\n            }\n        ]\n    },\n    {\n        \"rule\": \"Twilio Credentials\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"AC4d2f64e2a108cd72f648b1984c3b5a13\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/twilio_credentials_p\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"AC4d2f64e2a108cd72f648b1984c3b5a13\",\n                \"value_start\": 0,\n                \"value_end\": 34,\n                \"entropy\": 4.02086\n            }\n        ]\n    },\n    {\n        \"rule\": \"URL Credentials\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"const connection_url = require('dbconnection://ad%6Din:5WdF4f2jE76a@db-host-local');\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/url_cred.js\",\n                \"info\": \"\",\n                \"variable\": \"dbconnection://\",\n                \"variable_start\": 32,\n                \"variable_end\": 47,\n                \"value\": \"5WdF4f2jE76a\",\n                \"value_start\": 55,\n                \"value_end\": 67,\n                \"entropy\": 3.58496\n            }\n        ]\n    },\n    {\n        \"rule\": \"Credential\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"url = \\\"https://secure.com/83675/39084?Credential=546DFS64N90P3AW7DX%2Fkeep%26cut\\\";\",\n                \"line_num\": 3,\n                \"path\": \"./tests/samples/url_cred.js\",\n                \"info\": \"\",\n                \"variable\": \"Credential\",\n                \"variable_start\": 38,\n                \"variable_end\": 48,\n                \"value\": \"546DFS64N90P3AW7DX%2Fkeep%26cut\",\n                \"value_start\": 49,\n                \"value_end\": 80,\n                \"entropy\": 4.41372\n            }\n        ]\n    },\n    {\n        \"rule\": \"Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.006,\n        \"line_data_list\": [\n            {\n                \"line\": \"// \\\"fp://no.host.real/any/path/to/nowhere/\\\",\\\"key\\\":\\\"f45VgF8jX79o@anydata.com\\\"\",\n                \"line_num\": 7,\n                \"path\": \"./tests/samples/url_cred.js\",\n                \"info\": \"\",\n                \"variable\": \"key\",\n                \"variable_start\": 45,\n                \"variable_end\": 48,\n                \"value\": \"f45VgF8jX79o@anydata.com\",\n                \"value_start\": 51,\n                \"value_end\": 75,\n                \"entropy\": 4.30351\n            }\n        ]\n    },\n    {\n        \"rule\": \"Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"39084?Credential=546DFS64N90P3AW7DX&key=3487263-2384579834-234732875-345&hasToBefound=2\",\n                \"line_num\": 10,\n                \"path\": \"./tests/samples/url_cred.js\",\n                \"info\": \"\",\n                \"variable\": \"key\",\n                \"variable_start\": 36,\n                \"variable_end\": 39,\n                \"value\": \"3487263-2384579834-234732875-345\",\n                \"value_start\": 40,\n                \"value_end\": 72,\n                \"entropy\": 2.97591\n            }\n        ]\n    },\n    {\n        \"rule\": \"Credential\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"39084?Credential=546DFS64N90P3AW7DX&key=3487263-2384579834-234732875-345&hasToBefound=2\",\n                \"line_num\": 10,\n                \"path\": \"./tests/samples/url_cred.js\",\n                \"info\": \"\",\n                \"variable\": \"Credential\",\n                \"variable_start\": 6,\n                \"variable_end\": 16,\n                \"value\": \"546DFS64N90P3AW7DX\",\n                \"value_start\": 17,\n                \"value_end\": 35,\n                \"entropy\": 3.83659\n            }\n        ]\n    },\n    {\n        \"rule\": \"URL Credentials\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"email_as_login = \\\"smtps://example@gmail.com:FnD83JZs@smtp.gmail.com:465\\\";\",\n                \"line_num\": 13,\n                \"path\": \"./tests/samples/url_cred.js\",\n                \"info\": \"\",\n                \"variable\": \"smtps://\",\n                \"variable_start\": 18,\n                \"variable_end\": 26,\n                \"value\": \"FnD83JZs\",\n                \"value_start\": 44,\n                \"value_end\": 52,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"url3d = \\\"https://localhost.com/013948?26timestamp%3D1395782596%26token%3Dh1d3Me4ch534d801sl3jdk%26version%3D3.14%26si\\\";\",\n                \"line_num\": 19,\n                \"path\": \"./tests/samples/url_cred.js\",\n                \"info\": \"\",\n                \"variable\": \"token\",\n                \"variable_start\": 65,\n                \"variable_end\": 70,\n                \"value\": \"h1d3Me4ch534d801sl3jdk\",\n                \"value_start\": 73,\n                \"value_end\": 95,\n                \"entropy\": 3.75444\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"if (password !== \\\"PaS5w0rD2#\\\"){\",\n                \"line_num\": 21,\n                \"path\": \"./tests/samples/url_cred.js\",\n                \"info\": \"\",\n                \"variable\": \"password\",\n                \"variable_start\": 4,\n                \"variable_end\": 12,\n                \"value\": \"PaS5w0rD2#\",\n                \"value_start\": 18,\n                \"value_end\": 28,\n                \"entropy\": 3.32193\n            }\n        ]\n    },\n    {\n        \"rule\": \"URL Credentials\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.933,\n        \"line_data_list\": [\n            {\n                \"line\": \"{\\\"line\\\": \\\"url: mongodb://jrfdeg42:p4Dsr8b@127.0.0.1:32768/architecture\\\"}\",\n                \"line_num\": 25,\n                \"path\": \"./tests/samples/url_cred.js\",\n                \"info\": \"\",\n                \"variable\": \"mongodb://\",\n                \"variable_start\": 15,\n                \"variable_end\": 25,\n                \"value\": \"p4Dsr8b\",\n                \"value_start\": 34,\n                \"value_end\": 41,\n                \"entropy\": 2.80735\n            }\n        ]\n    },\n    {\n        \"rule\": \"UUID\",\n        \"severity\": \"info\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"bace4d19-fa7e-beef-cafe-9129474bcd81 # tp\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/uuid\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"bace4d19-fa7e-beef-cafe-9129474bcd81\",\n                \"value_start\": 0,\n                \"value_end\": 36,\n                \"entropy\": 3.58954\n            }\n        ]\n    },\n    {\n        \"rule\": \"Vercel Token\",\n        \"severity\": \"medium\",\n        \"confidence\": \"weak\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"vcp_5G8LQP7fmw80eG7W8y0sWO1QFPuhsYUuLEqyd1ialdvz9r6pL4vzxkC3\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/vercel\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"vcp_5G8LQP7fmw80eG7W8y0sWO1QFPuhsYUuLEqyd1ialdvz9r6pL4vzxkC3\",\n                \"value_start\": 0,\n                \"value_end\": 60,\n                \"entropy\": 5.23581\n            }\n        ]\n    },\n    {\n        \"rule\": \"Tencent WeChat API App ID\",\n        \"severity\": \"medium\",\n        \"confidence\": \"weak\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"wxe191bc54fc7d529a\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/wechat_p\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"wxe191bc54fc7d529a\",\n                \"value_start\": 0,\n                \"value_end\": 18,\n                \"entropy\": 3.72548\n            }\n        ]\n    },\n    {\n        \"rule\": \"Tencent WeChat API App ID\",\n        \"severity\": \"medium\",\n        \"confidence\": \"weak\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"wx2274a335e18222d6\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/wechat_p\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"wx2274a335e18222d6\",\n                \"value_start\": 0,\n                \"value_end\": 18,\n                \"entropy\": 3.41383\n            }\n        ]\n    },\n    {\n        \"rule\": \"Tencent WeChat API App ID\",\n        \"severity\": \"medium\",\n        \"confidence\": \"weak\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"wx4d82d07e3eb5ba84\",\n                \"line_num\": 3,\n                \"path\": \"./tests/samples/wechat_p\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"wx4d82d07e3eb5ba84\",\n                \"value_start\": 0,\n                \"value_end\": 18,\n                \"entropy\": 3.61437\n            }\n        ]\n    },\n    {\n        \"rule\": \"X AI API Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"xai-wjluCw1zixzDiYOxeeGtIwuHjIyax8SukK2lFWtBRn1yfEPMQzv63sMCd1nzqylpuDXQjEGd19OJi3cL\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/xai\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"xai-wjluCw1zixzDiYOxeeGtIwuHjIyax8SukK2lFWtBRn1yfEPMQzv63sMCd1nzqylpuDXQjEGd19OJi3cL\",\n                \"value_start\": 0,\n                \"value_end\": 84,\n                \"entropy\": 5.35637\n            }\n        ]\n    },\n    {\n        \"rule\": \"BASE64 Private Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"data : MIIBOgIBAAJBAJtFfagSXdo0JmX6EdwWGvFMaXeOFY5xOTs3PWsnhRFakQFbAuI/\\n        DaJSTVnp3ObjJPZhJs/P/XPWIKRNIglRqkkCAwEAAQJAbErPFMWah3EPxtfeVO1l\\n        5R0yAZwrFKmLDO29/FoXyL2XbxthJlJmdMQgIYayZYn4W2PSq6C56AI201SlW7Ts\\n        AQIhAMwBYS+NST98g0nytTRD1Y94n+yrhTlyWNR/uC4tT8SpAiEAwthlcs9UDPh5\\n        BnaO8Y7A+im+Aw5ANIhJwSVBxB3QnKECIQCJm9ihic1B7MxmojgGxEcXGwfNTjl0\\n        caRn2qszQs9O2QIgdaBFvkXDrADkry4rpVBU17ETcKzNvej4/Y0MYuTM54ECIGtT\\n        EBUWuiacAxz/WKHb9WVp0F/zkRwucJ0Hr2W4P9cP\",\n                \"line_num\": 3,\n                \"path\": \"./tests/samples/xml_data.xml\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"MIIBOgIBAAJBAJtFfagSXdo0JmX6EdwWGvFMaXeOFY5xOTs3PWsnhRFakQFbAuI/\\n        DaJSTVnp3ObjJPZhJs/P/XPWIKRNIglRqkkCAwEAAQJAbErPFMWah3EPxtfeVO1l\\n        5R0yAZwrFKmLDO29/FoXyL2XbxthJlJmdMQgIYayZYn4W2PSq6C56AI201SlW7Ts\\n        AQIhAMwBYS+NST98g0nytTRD1Y94n+yrhTlyWNR/uC4tT8SpAiEAwthlcs9UDPh5\\n        BnaO8Y7A+im+Aw5ANIhJwSVBxB3QnKECIQCJm9ihic1B7MxmojgGxEcXGwfNTjl0\\n        caRn2qszQs9O2QIgdaBFvkXDrADkry4rpVBU17ETcKzNvej4/Y0MYuTM54ECIGtT\\n        EBUWuiacAxz/WKHb9WVp0F/zkRwucJ0Hr2W4P9cP\",\n                \"value_start\": 7,\n                \"value_end\": 485,\n                \"entropy\": 5.75738\n            }\n        ]\n    },\n    {\n        \"rule\": \"Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.993,\n        \"line_data_list\": [\n            {\n                \"line\": \"token : \\\"IBOgIBAAJBAJtFfagSXdo0JmX6EdwWGvFMaXeOFY5xOTs3PWsn\\n        hRFakQFbAuI769fdsbkjerfkjrekjnkerjnfkrejnfrejn==\\\"\",\n                \"line_num\": 12,\n                \"path\": \"./tests/samples/xml_data.xml\",\n                \"info\": \"\",\n                \"variable\": \"token\",\n                \"variable_start\": 0,\n                \"variable_end\": 5,\n                \"value\": \"IBOgIBAAJBAJtFfagSXdo0JmX6EdwWGvFMaXeOFY5xOTs3PWsn\\n        hRFakQFbAuI769fdsbkjerfkjrekjnkerjnfkrejnfrejn==\",\n                \"value_start\": 9,\n                \"value_end\": 116,\n                \"entropy\": 5.12458\n            }\n        ]\n    },\n    {\n        \"rule\": \"Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"token : IBOgIBAAJBAJtFfagSXdo0JmX6EdwWGvFMaXeOFY5xOTs3PWsn\\n        hRFakQFbAuI769fdsbkjerfkjrekjnkerjnfkrejnfrejn==\",\n                \"line_num\": 16,\n                \"path\": \"./tests/samples/xml_data.xml\",\n                \"info\": \"\",\n                \"variable\": \"token\",\n                \"variable_start\": 0,\n                \"variable_end\": 5,\n                \"value\": \"IBOgIBAAJBAJtFfagSXdo0JmX6EdwWGvFMaXeOFY5xOTs3PWsn\",\n                \"value_start\": 8,\n                \"value_end\": 58,\n                \"entropy\": 4.83327\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.857,\n        \"line_data_list\": [\n            {\n                \"line\": \"password : cackle!\",\n                \"line_num\": 5,\n                \"path\": \"./tests/samples/xml_password.xml\",\n                \"info\": \"\",\n                \"variable\": \"password\",\n                \"variable_start\": 0,\n                \"variable_end\": 8,\n                \"value\": \"cackle!\",\n                \"value_start\": 11,\n                \"value_end\": 18,\n                \"entropy\": 2.52164\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.01,\n        \"line_data_list\": [\n            {\n                \"line\": \"password : peace_for_ukraine\",\n                \"line_num\": 9,\n                \"path\": \"./tests/samples/xml_password.xml\",\n                \"info\": \"\",\n                \"variable\": \"password\",\n                \"variable_start\": 0,\n                \"variable_end\": 8,\n                \"value\": \"peace_for_ukraine\",\n                \"value_start\": 11,\n                \"value_end\": 28,\n                \"entropy\": 3.45482\n            }\n        ]\n    },\n    {\n        \"rule\": \"UUID\",\n        \"severity\": \"info\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"password : Password for authorization\\n        BAIT: bace4d59-fa7e-beef-cafe-9129474bcd81\",\n                \"line_num\": 11,\n                \"path\": \"./tests/samples/xml_password.xml\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"bace4d59-fa7e-beef-cafe-9129474bcd81\",\n                \"value_start\": 52,\n                \"value_end\": 88,\n                \"entropy\": 3.66606\n            }\n        ]\n    }\n]"
  },
  {
    "path": "tests/data/output.json",
    "content": "[\n    {\n        \"rule\": \"1Password Account Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"ops_eyJb11xLqNoZodWhBSRZjgXFblnyPe_NKm9AQtqj1-g2NkK6QBDIjHwxGYNea8w7cImHWxSXc4ISxk4G9R85CVS1TqBvOOOXycTTH0eqOnwcIGDCQelSMcMIXfHNQVE2pDBHWIsRHmjR-uMUS4SnCU3odPaE9i7BTpHI8mKYEyJzCXzsmLu-mfHfhPM2WffsDLSvlHGwNzVa6wCQio7lsOSrhsjsYkH_boPMB4ZUQ01hn-ix_yBaGvTrMEN6lAy4Z6Pd3KvPb9Pr6c-kI1ifadgIJfRUQJse3IuwLfxeqBUYdHXVgknJ71YECM0-Xg3xwcFjO8oQC1b6kJs2jGX-vdtbLt8MlGzUEn-zYmAam5cj5ye-b_4lVyQjzYrWTI2CP4EkWT7Jsv9KQPVlNye6HwOvUvpm2VHEQDrl-9Kb3XZwo6C53Df0xBfU5Rr6b9p8_r6XrrBGLZWqf2xZkh8pC4OXECo_JzZWNyZXRLZXkiO-jd180LqEfYwfv8_tnxyLXVDX989lmYjZGyJDisytEIwIIcsnnZLCabN-0bOgT_Api9RTXZt7q-9IVxSSm4sgK8ZJ96roIIeukKC_FWVfvZ7uCmGT-TrDc0Kvit44ulvWgt6uoTtMrLGzZYyAx8COjniLSpKk6OOv\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/1password\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"ops_eyJb11xLqNoZodWhBSRZjgXFblnyPe_NKm9AQtqj1-g2NkK6QBDIjHwxGYNea8w7cImHWxSXc4ISxk4G9R85CVS1TqBvOOOXycTTH0eqOnwcIGDCQelSMcMIXfHNQVE2pDBHWIsRHmjR-uMUS4SnCU3odPaE9i7BTpHI8mKYEyJzCXzsmLu-mfHfhPM2WffsDLSvlHGwNzVa6wCQio7lsOSrhsjsYkH_boPMB4ZUQ01hn-ix_yBaGvTrMEN6lAy4Z6Pd3KvPb9Pr6c-kI1ifadgIJfRUQJse3IuwLfxeqBUYdHXVgknJ71YECM0-Xg3xwcFjO8oQC1b6kJs2jGX-vdtbLt8MlGzUEn-zYmAam5cj5ye-b_4lVyQjzYrWTI2CP4EkWT7Jsv9KQPVlNye6HwOvUvpm2VHEQDrl-9Kb3XZwo6C53Df0xBfU5Rr6b9p8_r6XrrBGLZWqf2xZkh8pC4OXECo_JzZWNyZXRLZXkiO-jd180LqEfYwfv8_tnxyLXVDX989lmYjZGyJDisytEIwIIcsnnZLCabN-0bOgT_Api9RTXZt7q-9IVxSSm4sgK8ZJ96roIIeukKC_FWVfvZ7uCmGT-TrDc0Kvit44ulvWgt6uoTtMrLGzZYyAx8COjniLSpKk6OOv\",\n                \"value_start\": 0,\n                \"value_end\": 656,\n                \"entropy\": 5.94326\n            }\n        ]\n    },\n    {\n        \"rule\": \"BASE64 encoded PEM Private Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"ZGVidWdDb250YWluZXI6CiAgaW1hZ2U6CiAgICB2ZXJzaW9uOiBpbnN0YWxsLWRlYnVnLXZlcnNpb24KaGVhcnRiZWF0U2NoZWR1bGU6IDEgMiAzIDQgNQppZGVudGl0eToKICBpc3N1ZXI6CiAgICB0bHM6CiAgICAgIGNydFBFTTogfAogICAgICAgIC0tLS0tQkVHSU4gQ0VSVElGSUNBVEUtLS0tLQogICAgICAgIE1JSUJ3RENDQVdlZ0F3SUJBZ0lSQUpSSWdaOFJ0TzhFd2cxWGVwZjhUNDR3Q2dZSUtvWkl6ajBFQXdJd0tURW4KICAgICAgICBna2RqaHNsa2Roa2dkamhza2pkZmtkamhna2RqaGtkZmpibmtkZm52amtoYnZqaGRiZGpmaGJmamhiZGZNRGd5CiAgICAgICAgbGZrZGprc2xkamdrbGpkZmtnamhkZmtnamhzZGZrbGdqc2RrbGpmZ2hsa2Rmamhsa3NkZmpsa3Nkamt1YkdsdQogICAgICAgIGxzZGpoZnY1NDZtZmRza2dqaGRmamtoZ2tqZGhramhkZmtqZ2hrZGZqaGdramRmaGtqZGZoZ2tqZmRoZ2tqRnAKICAgICAgICBmY1JkZmdoZmRnbWRuZ2tqeGRuYnZqbmN2a2pua2pkbmdram5mZGtqYmt2YmpibnZja2puYmpuZGRmZ2ZkZ3QxCiAgICAgICAgMmJsa2puZ2JramhnbGpkZmxnaGtsamRmbmdqZGZuZ25sZGZrbWxrZGZqZ21sZGZrZ21sa2ZkbWdsa2RtTUFZQgogICAgICAgIEFmOENmZ2xibmpuZGJqZG5rZmpuZ2tkbmZnamtsbmRranZuYmlqZGlmamdpZXJqZ29pamRmbGtneGxrbmdrQ0MKICAgICAgICBIbWxkZmtmamdvaWRmamdnam5kamtmbmdranNkbnNram5qNXNiMk5oYkRBS0JnZ3Foa2pPUFFRREFnTkhBREJFCiAgICAgICAgQWlBdG9mZ2toOTk0NXU4OXV5OWU4dWdodWRmaGd1aGRmZmhpbGd1aGl1aGtkaGZna2pkaGZramhya2piazFwNQogICAgICAgIDVrZmRsc2lmaHU0aHRpdWg0aXR1aGtqaGt6az0KICAgICAgICAtLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCiAgICAgIGtleVBFTTogfAogICAgICAgIC0tLS0tQkVHSU4gRUMgUFJJVkFURSBLRVktLS0tLQogICAgICAgIE1IY0NBUUVFSUFBZThuZmJ6WnU5Yy9PQjJnZGZramdsaWRma2pibnhqa2hiZ2hiZmdoYmpoYmRqaGJzanhjazkKICAgICAgICBvZGlmanZpamRmdm9pamRmb2l2amRmb2lqZGpnbmZka2pnbmtqZGZna2pkZmtqZ2JrampoYmtnSmpYZ1p0TTcyCiAgICAgICAgZGZpb2hndXhoYmtqZ25rbGpkZm5rbGpkbmdram5rZ2puKz09CiAgICAgICAgLS0tLS1FTkQgRUMgUFJJVkFURSBLRVktLS0tLQppZGVudGl0eVRydXN0QW5jaG9yc1BFTTogfAogIC0tLS0tQkVHSU4gQ0VSVElGSUNBVEUtLS0tLQogIE1JSUJ3VENDQVdhZ0F3SUJBZ0lRZURacDVsRGFJeWdRNVVmTUtaZGZuZ2puZGZrZ2puZmRramdua2RqbmtkamYKICBkZmtuZ2tqYmtqZGZic2tqYm5ma2puc2RrZ2psbnhrY2pibmt4am5ja2pnbmtqbmdreGpuZ2tqeGNua2dqbkk0CiAgTURkc2xrZmpvaWVyOGhzZGY4ZmdoZzc4NGg5OHQ5OGVydWhpdXNkaGtmZ2hoc2poYmdqa2hzdmpmaHZzYVc1cgogIFpYNDhrbmdraGdkZmtmamdic2RoYmpoYnNkaGJoeGJkZmxqZ2xkZmtqZ2tqaGpmZGdramJka2pmYmdrYmM3MFoKICBsZGZsa2pna2xqZGZoZmRrZ2poZXJramJnaGZia2dqYmtqbmtqeGNua2pmbmtnam5ma2pnbmtmam43SEJXVUM0CiAgdWZkZ2tqZGZpZ2hmdWRoZ2l1dWRoYm5ma25iZ3NibmRma2poc2tqa3NqbmdranNibmdramJrZ2pieGtqYmdFQgogIC9zZGZiaHNiamZoYmVod3did2poZmJqc2hiZGpoYnppdWhya2hiZXJoYnNqaGJkZmpoYmpoYmpoc2JqaGJzcysKICBsZGpmbGhranNka2ZqaHNrZGpma2pzZG5ma2puc2RramZuc2Rram5ranhjbmtqdm5ram5kc2Z3bGVra0FNRVlDCiAgSWVmb2h3a3VlaGZranNkaGZranNkaGtmamhzZGtqZmhrc2RqaGZranNkaGZranNkaGRramZoc2trZGpmaGpDOAogIHNkZnNkaHlnZmpoZ2RqaGZnanNoZGdmamhncXIKICAtLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCmxpbmtlcmRWZXJzaW9uOiBpbnN0YWxsLWNvbnRyb2wtcGxhbmUtdmVyc2lvbgpwb2xpY3lWYWxpZGF0b3I6CiAgY2FCdW5kbGU6IHBvbGljeSB2YWxpZGF0b3IgQ0EgYnVuZGxlCiAgZXh0ZXJuYWxTZWNyZXQ6IHRydWUKcHJvZmlsZVZhbGlkYXRvcjoKICBjYUJ1bmRsZTogcHJvZmlsZSB2YWxpZGF0b3IgQ0EgYnVuZGxlCiAgZXh0ZXJuYWxTZWNyZXQ6IHRydWUKcHJveHk6CiAgaW1hZ2U6CiAgICB2ZXJzaW9uOiBpbnN0YWxsLXByb3h5LXZlcnNpb24KcHJveHlJbml0OgogIGlnbm9yZUluYm91bmRQb3J0czogMjIsMzMwNi02MTkyCiAgaWdub3JlT3V0Ym91bmRQb3J0czogIjMyNzgiCnByb3h5SW5qZWN0b3I6CiAgY2FCdW5kbGU6IHByb3h5IGluamVjdG9yIENBIGJ1bmRsZQogIGV4dGVybmFsU2VjcmV0OiB0cnVlCg==\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/LS0t_p\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"ZGVidWdDb250YWluZXI6CiAgaW1hZ2U6CiAgICB2ZXJzaW9uOiBpbnN0YWxsLWRlYnVnLXZlcnNpb24KaGVhcnRiZWF0U2NoZWR1bGU6IDEgMiAzIDQgNQppZGVudGl0eToKICBpc3N1ZXI6CiAgICB0bHM6CiAgICAgIGNydFBFTTogfAogICAgICAgIC0tLS0tQkVHSU4gQ0VSVElGSUNBVEUtLS0tLQogICAgICAgIE1JSUJ3RENDQVdlZ0F3SUJBZ0lSQUpSSWdaOFJ0TzhFd2cxWGVwZjhUNDR3Q2dZSUtvWkl6ajBFQXdJd0tURW4KICAgICAgICBna2RqaHNsa2Roa2dkamhza2pkZmtkamhna2RqaGtkZmpibmtkZm52amtoYnZqaGRiZGpmaGJmamhiZGZNRGd5CiAgICAgICAgbGZrZGprc2xkamdrbGpkZmtnamhkZmtnamhzZGZrbGdqc2RrbGpmZ2hsa2Rmamhsa3NkZmpsa3Nkamt1YkdsdQogICAgICAgIGxzZGpoZnY1NDZtZmRza2dqaGRmamtoZ2tqZGhramhkZmtqZ2hrZGZqaGdramRmaGtqZGZoZ2tqZmRoZ2tqRnAKICAgICAgICBmY1JkZmdoZmRnbWRuZ2tqeGRuYnZqbmN2a2pua2pkbmdram5mZGtqYmt2YmpibnZja2puYmpuZGRmZ2ZkZ3QxCiAgICAgICAgMmJsa2puZ2JramhnbGpkZmxnaGtsamRmbmdqZGZuZ25sZGZrbWxrZGZqZ21sZGZrZ21sa2ZkbWdsa2RtTUFZQgogICAgICAgIEFmOENmZ2xibmpuZGJqZG5rZmpuZ2tkbmZnamtsbmRranZuYmlqZGlmamdpZXJqZ29pamRmbGtneGxrbmdrQ0MKICAgICAgICBIbWxkZmtmamdvaWRmamdnam5kamtmbmdranNkbnNram5qNXNiMk5oYkRBS0JnZ3Foa2pPUFFRREFnTkhBREJFCiAgICAgICAgQWlBdG9mZ2toOTk0NXU4OXV5OWU4dWdodWRmaGd1aGRmZmhpbGd1aGl1aGtkaGZna2pkaGZramhya2piazFwNQogICAgICAgIDVrZmRsc2lmaHU0aHRpdWg0aXR1aGtqaGt6az0KICAgICAgICAtLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCiAgICAgIGtleVBFTTogfAogICAgICAgIC0tLS0tQkVHSU4gRUMgUFJJVkFURSBLRVktLS0tLQogICAgICAgIE1IY0NBUUVFSUFBZThuZmJ6WnU5Yy9PQjJnZGZramdsaWRma2pibnhqa2hiZ2hiZmdoYmpoYmRqaGJzanhjazkKICAgICAgICBvZGlmanZpamRmdm9pamRmb2l2amRmb2lqZGpnbmZka2pnbmtqZGZna2pkZmtqZ2JrampoYmtnSmpYZ1p0TTcyCiAgICAgICAgZGZpb2hndXhoYmtqZ25rbGpkZm5rbGpkbmdram5rZ2puKz09CiAgICAgICAgLS0tLS1FTkQgRUMgUFJJVkFURSBLRVktLS0tLQppZGVudGl0eVRydXN0QW5jaG9yc1BFTTogfAogIC0tLS0tQkVHSU4gQ0VSVElGSUNBVEUtLS0tLQogIE1JSUJ3VENDQVdhZ0F3SUJBZ0lRZURacDVsRGFJeWdRNVVmTUtaZGZuZ2puZGZrZ2puZmRramdua2RqbmtkamYKICBkZmtuZ2tqYmtqZGZic2tqYm5ma2puc2RrZ2psbnhrY2pibmt4am5ja2pnbmtqbmdreGpuZ2tqeGNua2dqbkk0CiAgTURkc2xrZmpvaWVyOGhzZGY4ZmdoZzc4NGg5OHQ5OGVydWhpdXNkaGtmZ2hoc2poYmdqa2hzdmpmaHZzYVc1cgogIFpYNDhrbmdraGdkZmtmamdic2RoYmpoYnNkaGJoeGJkZmxqZ2xkZmtqZ2tqaGpmZGdramJka2pmYmdrYmM3MFoKICBsZGZsa2pna2xqZGZoZmRrZ2poZXJramJnaGZia2dqYmtqbmtqeGNua2pmbmtnam5ma2pnbmtmam43SEJXVUM0CiAgdWZkZ2tqZGZpZ2hmdWRoZ2l1dWRoYm5ma25iZ3NibmRma2poc2tqa3NqbmdranNibmdramJrZ2pieGtqYmdFQgogIC9zZGZiaHNiamZoYmVod3did2poZmJqc2hiZGpoYnppdWhya2hiZXJoYnNqaGJkZmpoYmpoYmpoc2JqaGJzcysKICBsZGpmbGhranNka2ZqaHNrZGpma2pzZG5ma2puc2RramZuc2Rram5ranhjbmtqdm5ram5kc2Z3bGVra0FNRVlDCiAgSWVmb2h3a3VlaGZranNkaGZranNkaGtmamhzZGtqZmhrc2RqaGZranNkaGZranNkaGRramZoc2trZGpmaGpDOAogIHNkZnNkaHlnZmpoZ2RqaGZnanNoZGdmamhncXIKICAtLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCmxpbmtlcmRWZXJzaW9uOiBpbnN0YWxsLWNvbnRyb2wtcGxhbmUtdmVyc2lvbgpwb2xpY3lWYWxpZGF0b3I6CiAgY2FCdW5kbGU6IHBvbGljeSB2YWxpZGF0b3IgQ0EgYnVuZGxlCiAgZXh0ZXJuYWxTZWNyZXQ6IHRydWUKcHJvZmlsZVZhbGlkYXRvcjoKICBjYUJ1bmRsZTogcHJvZmlsZSB2YWxpZGF0b3IgQ0EgYnVuZGxlCiAgZXh0ZXJuYWxTZWNyZXQ6IHRydWUKcHJveHk6CiAgaW1hZ2U6CiAgICB2ZXJzaW9uOiBpbnN0YWxsLXByb3h5LXZlcnNpb24KcHJveHlJbml0OgogIGlnbm9yZUluYm91bmRQb3J0czogMjIsMzMwNi02MTkyCiAgaWdub3JlT3V0Ym91bmRQb3J0czogIjMyNzgiCnByb3h5SW5qZWN0b3I6CiAgY2FCdW5kbGU6IHByb3h5IGluamVjdG9yIENBIGJ1bmRsZQogIGV4dGVybmFsU2VjcmV0OiB0cnVlCg\",\n                \"value_start\": 0,\n                \"value_end\": 3078,\n                \"entropy\": 5.49785\n            }\n        ]\n    },\n    {\n        \"rule\": \"Akamai Credentials\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"T: akab-tblc7jkffv3wfxh3-h5stbzeswb3v4kj3\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/akamai\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"akab-tblc7jkffv3wfxh3-h5stbzeswb3v4kj3\",\n                \"value_start\": 3,\n                \"value_end\": 41,\n                \"entropy\": 4.15557\n            }\n        ]\n    },\n    {\n        \"rule\": \"Anthropic API Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"sk-ant-api03-gigCtxD_mMUnJuUOwVtpBmPFdG0-ybrcBb1EcgpJblpcwh7tpFu-DIChOfbCnT7NgKcobiQ5aQA1oxlu3aJ-HgvUeZoSew\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/antrhropic\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"sk-ant-api03-gigCtxD_mMUnJuUOwVtpBmPFdG0-ybrcBb1EcgpJblpcwh7tpFu-DIChOfbCnT7NgKcobiQ5aQA1oxlu3aJ-HgvUeZoSew\",\n                \"value_start\": 0,\n                \"value_end\": 107,\n                \"entropy\": 5.42952\n            }\n        ]\n    },\n    {\n        \"rule\": \"API\",\n        \"severity\": \"low\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"gi_reo_gi_api = \\\"DvMB_glvwjlEQ_uqIyn8k\\\";\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/api.toml\",\n                \"info\": \"\",\n                \"variable\": \"gi_reo_gi_api\",\n                \"variable_start\": 0,\n                \"variable_end\": 13,\n                \"value\": \"DvMB_glvwjlEQ_uqIyn8k\",\n                \"value_start\": 17,\n                \"value_end\": 38,\n                \"entropy\": 4.1066\n            }\n        ]\n    },\n    {\n        \"rule\": \"Atlassian PAT token\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"ATLASSIAN = \\\"ATATT3xFfGF0vNZ7oy6ON4KrWEzKEu96n-r2bCLOOcdOADizvJqPd89yKyP853uTZSflBi1Lk1zD460BqyMTa08VUEy8-oOzr1esg3j_mZKZwAELnRkCDTJZXhHsv5jaWHyAj4LRL-6h8LI-5MrYs4l7xXSaY8odQxDKJB4hDvdkmuh61xea2jE=00203E68\\\"\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/atlassian_pat\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"ATATT3xFfGF0vNZ7oy6ON4KrWEzKEu96n-r2bCLOOcdOADizvJqPd89yKyP853uTZSflBi1Lk1zD460BqyMTa08VUEy8-oOzr1esg3j_mZKZwAELnRkCDTJZXhHsv5jaWHyAj4LRL-6h8LI-5MrYs4l7xXSaY8odQxDKJB4hDvdkmuh61xea2jE=00203E68\",\n                \"value_start\": 13,\n                \"value_end\": 205,\n                \"entropy\": 5.77034\n            }\n        ]\n    },\n    {\n        \"rule\": \"Atlassian PAT token\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"escaped_backslash = ATATT3xFfGF0vNZ7oy6ON4KrWEzKEu96n-r2bCLOOcdOADizvJqPd89yKyP853uTZSflBi1Lk1zD460BqyMTa08VUEy8-oOzr1esg3j_mZKZwAELnRkCDTJZXhHsv5jaWHyAj4LRL-6h8LI-5MrYs4l7xXSaY8odQxDKJB4hDvdkmuh61xea2jE\\\\=00203E68\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/atlassian_pat\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"ATATT3xFfGF0vNZ7oy6ON4KrWEzKEu96n-r2bCLOOcdOADizvJqPd89yKyP853uTZSflBi1Lk1zD460BqyMTa08VUEy8-oOzr1esg3j_mZKZwAELnRkCDTJZXhHsv5jaWHyAj4LRL-6h8LI-5MrYs4l7xXSaY8odQxDKJB4hDvdkmuh61xea2jE\\\\=00203E68\",\n                \"value_start\": 20,\n                \"value_end\": 213,\n                \"entropy\": 5.78724\n            }\n        ]\n    },\n    {\n        \"rule\": \"Atlassian PAT token\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"url_escaped_capital = ATATT3xFfGF0vNZ7oy6ON4KrWEzKEu96n-r2bCLOOcdOADizvJqPd89yKyP853uTZSflBi1Lk1zD460BqyMTa08VUEy8-oOzr1esg3j_mZKZwAELnRkCDTJZXhHsv5jaWHyAj4LRL-6h8LI-5MrYs4l7xXSaY8odQxDKJB4hDvdkmuh61xea2jE%3D00203E68\",\n                \"line_num\": 3,\n                \"path\": \"./tests/samples/atlassian_pat\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"ATATT3xFfGF0vNZ7oy6ON4KrWEzKEu96n-r2bCLOOcdOADizvJqPd89yKyP853uTZSflBi1Lk1zD460BqyMTa08VUEy8-oOzr1esg3j_mZKZwAELnRkCDTJZXhHsv5jaWHyAj4LRL-6h8LI-5MrYs4l7xXSaY8odQxDKJB4hDvdkmuh61xea2jE%3D00203E68\",\n                \"value_start\": 22,\n                \"value_end\": 216,\n                \"entropy\": 5.76529\n            }\n        ]\n    },\n    {\n        \"rule\": \"Atlassian PAT token\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"url_escaped_lowercase = ATATT3xFfGF0vNZ7oy6ON4KrWEzKEu96n-r2bCLOOcdOADizvJqPd89yKyP853uTZSflBi1Lk1zD460BqyMTa08VUEy8-oOzr1esg3j_mZKZwAELnRkCDTJZXhHsv5jaWHyAj4LRL-6h8LI-5MrYs4l7xXSaY8odQxDKJB4hDvdkmuh61xea2jE%3d00203E68\",\n                \"line_num\": 4,\n                \"path\": \"./tests/samples/atlassian_pat\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"ATATT3xFfGF0vNZ7oy6ON4KrWEzKEu96n-r2bCLOOcdOADizvJqPd89yKyP853uTZSflBi1Lk1zD460BqyMTa08VUEy8-oOzr1esg3j_mZKZwAELnRkCDTJZXhHsv5jaWHyAj4LRL-6h8LI-5MrYs4l7xXSaY8odQxDKJB4hDvdkmuh61xea2jE%3d00203E68\",\n                \"value_start\": 24,\n                \"value_end\": 218,\n                \"entropy\": 5.76679\n            }\n        ]\n    },\n    {\n        \"rule\": \"Auth\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"\\\"kerberos_authentication\\\": \\\"YI7IB6wYJgaMgHAgIKoZI2AQBuIh2cSA0IB1qA\\\"\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/auth.hs\",\n                \"info\": \"\",\n                \"variable\": \"kerberos_authentication\",\n                \"variable_start\": 1,\n                \"variable_end\": 24,\n                \"value\": \"YI7IB6wYJgaMgHAgIKoZI2AQBuIh2cSA0IB1qA\",\n                \"value_start\": 28,\n                \"value_end\": 66,\n                \"entropy\": 4.27373\n            }\n        ]\n    },\n    {\n        \"rule\": \"Auth\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"\\\"authorization\\\": \\\"aMgHAgIKhwLgGq02iQoZI1AQBuOh4cSAQ8B1qA\\\"\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/auth.hs\",\n                \"info\": \"\",\n                \"variable\": \"authorization\",\n                \"variable_start\": 1,\n                \"variable_end\": 14,\n                \"value\": \"aMgHAgIKhwLgGq02iQoZI1AQBuOh4cSAQ8B1qA\",\n                \"value_start\": 18,\n                \"value_end\": 56,\n                \"entropy\": 4.52399\n            }\n        ]\n    },\n    {\n        \"rule\": \"Auth\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"headers = {authorization: /oauth_signature=\\\"JgEWaL6V6eM%2FFb9wuXG4I3IB6wY%3D\\\"/, content_type: 'application/json; charset=utf-8'}\",\n                \"line_num\": 3,\n                \"path\": \"./tests/samples/auth.hs\",\n                \"info\": \"\",\n                \"variable\": \"oauth_signature\",\n                \"variable_start\": 27,\n                \"variable_end\": 42,\n                \"value\": \"JgEWaL6V6eM%2FFb9wuXG4I3IB6wY%3D\",\n                \"value_start\": 44,\n                \"value_end\": 76,\n                \"entropy\": 4.53891\n            }\n        ]\n    },\n    {\n        \"rule\": \"Auth\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.999,\n        \"line_data_list\": [\n            {\n                \"line\": \"Authorization: NTLM TlRMTUAAABABoITVNIAAZI1AQBuOh4cSAQ8B1A=\",\n                \"line_num\": 4,\n                \"path\": \"./tests/samples/auth.hs\",\n                \"info\": \"\",\n                \"variable\": \"Authorization\",\n                \"variable_start\": 0,\n                \"variable_end\": 13,\n                \"value\": \"TlRMTUAAABABoITVNIAAZI1AQBuOh4cSAQ8B1A=\",\n                \"value_start\": 20,\n                \"value_end\": 59,\n                \"entropy\": 4.00235\n            }\n        ]\n    },\n    {\n        \"rule\": \"Bearer Authorization\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"Authorization: NTLM TlRMTUAAABABoITVNIAAZI1AQBuOh4cSAQ8B1A=\",\n                \"line_num\": 4,\n                \"path\": \"./tests/samples/auth.hs\",\n                \"info\": \"\",\n                \"variable\": \"NTLM\",\n                \"variable_start\": 15,\n                \"variable_end\": 19,\n                \"value\": \"TlRMTUAAABABoITVNIAAZI1AQBuOh4cSAQ8B1A=\",\n                \"value_start\": 20,\n                \"value_end\": 59,\n                \"entropy\": 4.00235\n            }\n        ]\n    },\n    {\n        \"rule\": \"Auth\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"curl -H \\\"Authorization: Basic R2hyZG5oYzpycWVpIGVuZ2xiZg==\\\" http://localhost:8080/.\",\n                \"line_num\": 8,\n                \"path\": \"./tests/samples/auth_n.template\",\n                \"info\": \"\",\n                \"variable\": \"Authorization\",\n                \"variable_start\": 9,\n                \"variable_end\": 22,\n                \"value\": \"R2hyZG5oYzpycWVpIGVuZ2xiZg==\",\n                \"value_start\": 30,\n                \"value_end\": 58,\n                \"entropy\": 4.20897\n            }\n        ]\n    },\n    {\n        \"rule\": \"Basic Authorization\",\n        \"severity\": \"medium\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"curl -H \\\"Authorization: Basic R2hyZG5oYzpycWVpIGVuZ2xiZg==\\\" http://localhost:8080/.\",\n                \"line_num\": 8,\n                \"path\": \"./tests/samples/auth_n.template\",\n                \"info\": \"\",\n                \"variable\": \"Basic\",\n                \"variable_start\": 24,\n                \"variable_end\": 29,\n                \"value\": \"R2hyZG5oYzpycWVpIGVuZ2xiZg==\",\n                \"value_start\": 30,\n                \"value_end\": 58,\n                \"entropy\": 4.20897\n            }\n        ]\n    },\n    {\n        \"rule\": \"Auth\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"curl -H \\\"Authorization: Bearer eyJGRpVu1c2VzY2-823r_db32hbf4W1lbj\\\" http://localhost:8080/.\",\n                \"line_num\": 9,\n                \"path\": \"./tests/samples/auth_n.template\",\n                \"info\": \"\",\n                \"variable\": \"Authorization\",\n                \"variable_start\": 9,\n                \"variable_end\": 22,\n                \"value\": \"eyJGRpVu1c2VzY2-823r_db32hbf4W1lbj\",\n                \"value_start\": 31,\n                \"value_end\": 65,\n                \"entropy\": 4.53585\n            }\n        ]\n    },\n    {\n        \"rule\": \"Bearer Authorization\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"curl -H \\\"Authorization: Bearer eyJGRpVu1c2VzY2-823r_db32hbf4W1lbj\\\" http://localhost:8080/.\",\n                \"line_num\": 9,\n                \"path\": \"./tests/samples/auth_n.template\",\n                \"info\": \"\",\n                \"variable\": \"Bearer\",\n                \"variable_start\": 24,\n                \"variable_end\": 30,\n                \"value\": \"eyJGRpVu1c2VzY2-823r_db32hbf4W1lbj\",\n                \"value_start\": 31,\n                \"value_end\": 65,\n                \"entropy\": 4.53585\n            }\n        ]\n    },\n    {\n        \"rule\": \"AWS Client ID\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"The items are AKIAGIREOGIAWSKEY123,AKIAGIREOGIAWSKEY45X,A3T1DJ4IS97DLLTH2SZ3\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/aws_client_id\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"A3T1DJ4IS97DLLTH2SZ3\",\n                \"value_start\": 56,\n                \"value_end\": 76,\n                \"entropy\": 3.82193\n            }\n        ]\n    },\n    {\n        \"rule\": \"AWS Client ID\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"The items are AKIAGIREOGIAWSKEY123,AKIAGIREOGIAWSKEY45X,A3T1DJ4IS97DLLTH2SZ3\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/aws_client_id\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"AKIAGIREOGIAWSKEY123\",\n                \"value_start\": 14,\n                \"value_end\": 34,\n                \"entropy\": 3.54644\n            }\n        ]\n    },\n    {\n        \"rule\": \"AWS Client ID\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"The items are AKIAGIREOGIAWSKEY123,AKIAGIREOGIAWSKEY45X,A3T1DJ4IS97DLLTH2SZ3\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/aws_client_id\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"AKIAGIREOGIAWSKEY45X\",\n                \"value_start\": 35,\n                \"value_end\": 55,\n                \"entropy\": 3.54644\n            }\n        ]\n    },\n    {\n        \"rule\": \"Amazon Bedrock API Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"bedrock-api-key-vZKDJRzMKwJH6ewnj9FiyoUlZemipP2t\",\n                \"line_num\": 8,\n                \"path\": \"./tests/samples/aws_client_id\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"bedrock-api-key-vZKDJRzMKwJH6ewnj9FiyoUlZemipP2t\",\n                \"value_start\": 0,\n                \"value_end\": 48,\n                \"entropy\": 4.88684\n            }\n        ]\n    },\n    {\n        \"rule\": \"Amazon Bedrock API Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"ABSKpA8zwd50pFVLlH+DeWUlP1+WQ44upInjTDDbiDdaS2IvMOcMgT//XXPzEeJvYPRozcaOxv/no3aR3p7CoHYQf9Yx3PnaQVTYO+iCyiUbinHue1+8DSAx61Froe42\",\n                \"line_num\": 9,\n                \"path\": \"./tests/samples/aws_client_id\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"ABSKpA8zwd50pFVLlH+DeWUlP1+WQ44upInjTDDbiDdaS2IvMOcMgT//XXPzEeJvYPRozcaOxv/no3aR3p7CoHYQf9Yx3PnaQVTYO+iCyiUbinHue1+8DSAx61Froe42\",\n                \"value_start\": 0,\n                \"value_end\": 128,\n                \"entropy\": 5.61388\n            }\n        ]\n    },\n    {\n        \"rule\": \"AWS Client ID\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"        \\\"AwsAccessID\\\": \\\"AKIAGIREOGIAWSKEY123\\\",\",\n                \"line_num\": 3,\n                \"path\": \"./tests/samples/aws_multi.json\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"AKIAGIREOGIAWSKEY123\",\n                \"value_start\": 24,\n                \"value_end\": 44,\n                \"entropy\": 3.54644\n            }\n        ]\n    },\n    {\n        \"rule\": \"Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"        \\\"AwsSecretKey\\\": \\\"J38YmIgn7dH6cw4W+yqoRgjsFsWvysFjfVcpCh7O9Yyv9/qNvNI\\\"\",\n                \"line_num\": 4,\n                \"path\": \"./tests/samples/aws_multi.json\",\n                \"info\": \"\",\n                \"variable\": \"AwsSecretKey\",\n                \"variable_start\": 9,\n                \"variable_end\": 21,\n                \"value\": \"J38YmIgn7dH6cw4W+yqoRgjsFsWvysFjfVcpCh7O9Yyv9/qNvNI\",\n                \"value_start\": 25,\n                \"value_end\": 76,\n                \"entropy\": 4.96135\n            }\n        ]\n    },\n    {\n        \"rule\": \"Secret\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"        \\\"AwsSecretKey\\\": \\\"J38YmIgn7dH6cw4W+yqoRgjsFsWvysFjfVcpCh7O9Yyv9/qNvNI\\\"\",\n                \"line_num\": 4,\n                \"path\": \"./tests/samples/aws_multi.json\",\n                \"info\": \"\",\n                \"variable\": \"AwsSecretKey\",\n                \"variable_start\": 9,\n                \"variable_end\": 21,\n                \"value\": \"J38YmIgn7dH6cw4W+yqoRgjsFsWvysFjfVcpCh7O9Yyv9/qNvNI\",\n                \"value_start\": 25,\n                \"value_end\": 76,\n                \"entropy\": 4.96135\n            }\n        ]\n    },\n    {\n        \"rule\": \"AWS Client ID\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"        \\\"request_url\\\": \\\"https://gireogi323.s3.amazonaws.com/x3342?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Date=203230516T251998Z&X-Amz-SignedHeaders=host&X-Amz-Expires=999999&X-Amz-Credential=AKIAGIREOGIAWSKEY323%2F21100651%2Feu-west-3%2Fs3%2Faws_dummy&X-Amz-Key=J38YmIgn7dH6cw4W1yqoRgjsFsWvysFjfVcpCh7O9Yyv9_qNvNI\\\"\",\n                \"line_num\": 28,\n                \"path\": \"./tests/samples/aws_multi.json\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"AKIAGIREOGIAWSKEY323\",\n                \"value_start\": 191,\n                \"value_end\": 211,\n                \"entropy\": 3.44644\n            }\n        ]\n    },\n    {\n        \"rule\": \"Credential\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"        \\\"request_url\\\": \\\"https://gireogi323.s3.amazonaws.com/x3342?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Date=203230516T251998Z&X-Amz-SignedHeaders=host&X-Amz-Expires=999999&X-Amz-Credential=AKIAGIREOGIAWSKEY323%2F21100651%2Feu-west-3%2Fs3%2Faws_dummy&X-Amz-Key=J38YmIgn7dH6cw4W1yqoRgjsFsWvysFjfVcpCh7O9Yyv9_qNvNI\\\"\",\n                \"line_num\": 28,\n                \"path\": \"./tests/samples/aws_multi.json\",\n                \"info\": \"\",\n                \"variable\": \"X-Amz-Credential\",\n                \"variable_start\": 174,\n                \"variable_end\": 190,\n                \"value\": \"AKIAGIREOGIAWSKEY323%2F21100651%2Feu-west-3%2Fs3%2Faws_dummy\",\n                \"value_start\": 191,\n                \"value_end\": 251,\n                \"entropy\": 4.6314\n            }\n        ]\n    },\n    {\n        \"rule\": \"Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"        \\\"request_url\\\": \\\"https://gireogi323.s3.amazonaws.com/x3342?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Date=203230516T251998Z&X-Amz-SignedHeaders=host&X-Amz-Expires=999999&X-Amz-Credential=AKIAGIREOGIAWSKEY323%2F21100651%2Feu-west-3%2Fs3%2Faws_dummy&X-Amz-Key=J38YmIgn7dH6cw4W1yqoRgjsFsWvysFjfVcpCh7O9Yyv9_qNvNI\\\"\",\n                \"line_num\": 28,\n                \"path\": \"./tests/samples/aws_multi.json\",\n                \"info\": \"\",\n                \"variable\": \"X-Amz-Key\",\n                \"variable_start\": 252,\n                \"variable_end\": 261,\n                \"value\": \"J38YmIgn7dH6cw4W1yqoRgjsFsWvysFjfVcpCh7O9Yyv9_qNvNI\",\n                \"value_start\": 262,\n                \"value_end\": 313,\n                \"entropy\": 4.96135\n            }\n        ]\n    },\n    {\n        \"rule\": \"AWS S3 Bucket\",\n        \"severity\": \"info\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"        \\\"request_url\\\": \\\"https://gireogi323.s3.amazonaws.com/x3342?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Date=203230516T251998Z&X-Amz-SignedHeaders=host&X-Amz-Expires=999999&X-Amz-Credential=AKIAGIREOGIAWSKEY323%2F21100651%2Feu-west-3%2Fs3%2Faws_dummy&X-Amz-Key=J38YmIgn7dH6cw4W1yqoRgjsFsWvysFjfVcpCh7O9Yyv9_qNvNI\\\"\",\n                \"line_num\": 28,\n                \"path\": \"./tests/samples/aws_multi.json\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"gireogi323.s3.amazonaws.com\",\n                \"value_start\": 32,\n                \"value_end\": 59,\n                \"entropy\": 3.75416\n            }\n        ]\n    },\n    {\n        \"rule\": \"Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"        \\\"AwsSecretKey\\\": \\\"J38YmIgn7dH6cw4W1yqoRgjsFsWvysFjfVcpCh7O9Yyv9/qNvNI\\\",\",\n                \"line_num\": 52,\n                \"path\": \"./tests/samples/aws_multi.json\",\n                \"info\": \"\",\n                \"variable\": \"AwsSecretKey\",\n                \"variable_start\": 9,\n                \"variable_end\": 21,\n                \"value\": \"J38YmIgn7dH6cw4W1yqoRgjsFsWvysFjfVcpCh7O9Yyv9/qNvNI\",\n                \"value_start\": 25,\n                \"value_end\": 76,\n                \"entropy\": 4.96135\n            }\n        ]\n    },\n    {\n        \"rule\": \"Secret\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"        \\\"AwsSecretKey\\\": \\\"J38YmIgn7dH6cw4W1yqoRgjsFsWvysFjfVcpCh7O9Yyv9/qNvNI\\\",\",\n                \"line_num\": 52,\n                \"path\": \"./tests/samples/aws_multi.json\",\n                \"info\": \"\",\n                \"variable\": \"AwsSecretKey\",\n                \"variable_start\": 9,\n                \"variable_end\": 21,\n                \"value\": \"J38YmIgn7dH6cw4W1yqoRgjsFsWvysFjfVcpCh7O9Yyv9/qNvNI\",\n                \"value_start\": 25,\n                \"value_end\": 76,\n                \"entropy\": 4.96135\n            }\n        ]\n    },\n    {\n        \"rule\": \"AWS Client ID\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"        \\\"AwsAccessID\\\": \\\"AKIAGIREOGIAWSKEY321\\\"\",\n                \"line_num\": 53,\n                \"path\": \"./tests/samples/aws_multi.json\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"AKIAGIREOGIAWSKEY321\",\n                \"value_start\": 24,\n                \"value_end\": 44,\n                \"entropy\": 3.54644\n            }\n        ]\n    },\n    {\n        \"rule\": \"AWS Client ID\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"    \\\"AccessKeyId\\\" : \\\"AKIA0ON7V2DD57PL3JXM\\\",\",\n                \"line_num\": 7,\n                \"path\": \"./tests/samples/aws_multi.md\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"AKIA0ON7V2DD57PL3JXM\",\n                \"value_start\": 21,\n                \"value_end\": 41,\n                \"entropy\": 4.02193\n            }\n        ]\n    },\n    {\n        \"rule\": \"AWS Multi\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"    \\\"AccessKeyId\\\" : \\\"AKIA0ON7V2DD57PL3JXM\\\",\",\n                \"line_num\": 7,\n                \"path\": \"./tests/samples/aws_multi.md\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"AKIA0ON7V2DD57PL3JXM\",\n                \"value_start\": 21,\n                \"value_end\": 41,\n                \"entropy\": 4.02193\n            },\n            {\n                \"line\": \"    \\\"SecretAccessKey\\\" : \\\"RMkMm8niUJ1iuhAA+AAyugy3fFt/rtrf7GFQ9xz1\\\",\",\n                \"line_num\": 8,\n                \"path\": \"./tests/samples/aws_multi.md\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"RMkMm8niUJ1iuhAA+AAyugy3fFt/rtrf7GFQ9xz1\",\n                \"value_start\": 25,\n                \"value_end\": 65,\n                \"entropy\": 4.67193\n            }\n        ]\n    },\n    {\n        \"rule\": \"Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"    \\\"AccessKeyId\\\" : \\\"AKIA0ON7V2DD57PL3JXM\\\",\",\n                \"line_num\": 7,\n                \"path\": \"./tests/samples/aws_multi.md\",\n                \"info\": \"\",\n                \"variable\": \"AccessKeyId\",\n                \"variable_start\": 5,\n                \"variable_end\": 16,\n                \"value\": \"AKIA0ON7V2DD57PL3JXM\",\n                \"value_start\": 21,\n                \"value_end\": 41,\n                \"entropy\": 4.02193\n            }\n        ]\n    },\n    {\n        \"rule\": \"Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"    \\\"SecretAccessKey\\\" : \\\"RMkMm8niUJ1iuhAA+AAyugy3fFt/rtrf7GFQ9xz1\\\",\",\n                \"line_num\": 8,\n                \"path\": \"./tests/samples/aws_multi.md\",\n                \"info\": \"\",\n                \"variable\": \"SecretAccessKey\",\n                \"variable_start\": 5,\n                \"variable_end\": 20,\n                \"value\": \"RMkMm8niUJ1iuhAA+AAyugy3fFt/rtrf7GFQ9xz1\",\n                \"value_start\": 25,\n                \"value_end\": 65,\n                \"entropy\": 4.67193\n            }\n        ]\n    },\n    {\n        \"rule\": \"Secret\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"    \\\"SecretAccessKey\\\" : \\\"RMkMm8niUJ1iuhAA+AAyugy3fFt/rtrf7GFQ9xz1\\\",\",\n                \"line_num\": 8,\n                \"path\": \"./tests/samples/aws_multi.md\",\n                \"info\": \"\",\n                \"variable\": \"SecretAccessKey\",\n                \"variable_start\": 5,\n                \"variable_end\": 20,\n                \"value\": \"RMkMm8niUJ1iuhAA+AAyugy3fFt/rtrf7GFQ9xz1\",\n                \"value_start\": 25,\n                \"value_end\": 65,\n                \"entropy\": 4.67193\n            }\n        ]\n    },\n    {\n        \"rule\": \"Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"    \\\"Token\\\" : \\\"J38YmIgn7dH6cw4W1yqoRgjsFsWvysFjfVcpCh7O9Yyv9/qNvNI\\\",\",\n                \"line_num\": 9,\n                \"path\": \"./tests/samples/aws_multi.md\",\n                \"info\": \"\",\n                \"variable\": \"Token\",\n                \"variable_start\": 5,\n                \"variable_end\": 10,\n                \"value\": \"J38YmIgn7dH6cw4W1yqoRgjsFsWvysFjfVcpCh7O9Yyv9/qNvNI\",\n                \"value_start\": 15,\n                \"value_end\": 66,\n                \"entropy\": 4.96135\n            }\n        ]\n    },\n    {\n        \"rule\": \"AWS MWS Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"AWS_MWS_KEY = \\\"amzn.mws.c1dg4haz-6xd6-4gqi-vna2-ed3whf71x9k6\\\"\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/aws_mws_key\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"amzn.mws.c1dg4haz-6xd6-4gqi-vna2-ed3whf71x9k6\",\n                \"value_start\": 15,\n                \"value_end\": 60,\n                \"entropy\": 4.55264\n            }\n        ]\n    },\n    {\n        \"rule\": \"AWS S3 Bucket\",\n        \"severity\": \"info\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"{\\\"url\\\" : \\\"https://circle-production-action-output.s3.amazonaws.com/283746ds4?X-Amz-Algorithm=AWS4-HMAC-SHA256\\\"}\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/aws_s3_bucket\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"circle-production-action-output.s3.amazonaws.com\",\n                \"value_start\": 18,\n                \"value_end\": 66,\n                \"entropy\": 4.02467\n            }\n        ]\n    },\n    {\n        \"rule\": \"Azure Access Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIng1dCI6Imk2bEdrM0ZaenhSY1ViMkMzbkVRN3N5SEpsWSIsImtpZCI6Imk2bEdrM0ZaenhSY1ViMkMzbkVRN3N5SEpsWSJ9.eyJhdWQiOiJlZjFkYTlkNC1mZjc3LTRjM2UtYTAwNS04NDBjM2Y4MzA3NDUiLCJpc3MiOiJodHRwczovL3N0cy53aW5kb3dzLm5ldC9mYTE1ZDY5Mi1lOWM3LTQ0NjAtYTc0My0yOWYyOTUyMjIyOS8iLCJpYXQiOjE1MzcyMzMxMDYsIm5iZiI6MTUzNzIzMzEwNiwiZXhwIjoxNTM3MjM3MDA2LCJhY3IiOiIxIiwiYWlvIjoiQVhRQWkvOElBQUFBRm0rRS9RVEcrZ0ZuVnhMaldkdzhLKzYxQUdyU091TU1GNmViYU1qN1hPM0libUQzZkdtck95RCtOdlp5R24yVmFUL2tES1h3NE1JaHJnR1ZxNkJuOHdMWG9UMUxrSVorRnpRVmtKUFBMUU9WNEtjWHFTbENWUERTL0RpQ0RnRTIyMlRJbU12V05hRU1hVU9Uc0lHdlRRPT0iLCJhbXIiOlsid2lhIl0sImFwcGlkIjoiNzVkYmU3N2YtMTBhMy00ZTU5LTg1ZmQtOGMxMjc1NDRmMTdjIiwiYXBwaWRhY3IiOiIwIiwiZW1haWwiOiJBYmVMaUBtaWNyb3NvZnQuY29tIiwiZmFtaWx5X25hbWUiOiJMaW5jb2xuIiwiZ2l2ZW5fbmFtZSI6IkFiZSAoTVNGVCkiLCJpZHAiOiJodHRwczovL3N0cy53aW5kb3dzLm5ldC83MmY5ODhiZi04NmYxLTQxYWYtOTFhYi0yZDdjZDAxMjIyNDcvIiwiaXBhZGRyIjoiMjIyLjIyMi4yMjIuMjIiLCJuYW1lIjoiYWJlbGkiLCJvaWQiOiIwMjIyM2I2Yi1hYTFkLTQyZDQtOWVjMC0xYjJiYjkxOTQ0MzgiLCJyaCI6IkkiLCJzY3AiOiJ1c2VyX2ltcGVyc29uYXRpb24iLCJzdWIiOiJsM19yb0lTUVUyMjJiVUxTOXlpMmswWHBxcE9pTXo1SDNaQUNvMUdlWEEiLCJ0aWQiOiJmYTE1ZDY5Mi1lOWM3LTQ0NjAtYTc0My0yOWYyOTU2ZmQ0MjkiLCJ1bmlxdWVfbmFtZSI6ImFiZWxpQG1pY3Jvc29mdC5jb20iLCJ1dGkiOiJGVnNHeFlYSTMwLVR1aWt1dVVvRkFBIiwidmVyIjoiMS4wIn0.D3H6pMUtQnoJAGq6AHd\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/azure_access_token\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIng1dCI6Imk2bEdrM0ZaenhSY1ViMkMzbkVRN3N5SEpsWSIsImtpZCI6Imk2bEdrM0ZaenhSY1ViMkMzbkVRN3N5SEpsWSJ9.eyJhdWQiOiJlZjFkYTlkNC1mZjc3LTRjM2UtYTAwNS04NDBjM2Y4MzA3NDUiLCJpc3MiOiJodHRwczovL3N0cy53aW5kb3dzLm5ldC9mYTE1ZDY5Mi1lOWM3LTQ0NjAtYTc0My0yOWYyOTUyMjIyOS8iLCJpYXQiOjE1MzcyMzMxMDYsIm5iZiI6MTUzNzIzMzEwNiwiZXhwIjoxNTM3MjM3MDA2LCJhY3IiOiIxIiwiYWlvIjoiQVhRQWkvOElBQUFBRm0rRS9RVEcrZ0ZuVnhMaldkdzhLKzYxQUdyU091TU1GNmViYU1qN1hPM0libUQzZkdtck95RCtOdlp5R24yVmFUL2tES1h3NE1JaHJnR1ZxNkJuOHdMWG9UMUxrSVorRnpRVmtKUFBMUU9WNEtjWHFTbENWUERTL0RpQ0RnRTIyMlRJbU12V05hRU1hVU9Uc0lHdlRRPT0iLCJhbXIiOlsid2lhIl0sImFwcGlkIjoiNzVkYmU3N2YtMTBhMy00ZTU5LTg1ZmQtOGMxMjc1NDRmMTdjIiwiYXBwaWRhY3IiOiIwIiwiZW1haWwiOiJBYmVMaUBtaWNyb3NvZnQuY29tIiwiZmFtaWx5X25hbWUiOiJMaW5jb2xuIiwiZ2l2ZW5fbmFtZSI6IkFiZSAoTVNGVCkiLCJpZHAiOiJodHRwczovL3N0cy53aW5kb3dzLm5ldC83MmY5ODhiZi04NmYxLTQxYWYtOTFhYi0yZDdjZDAxMjIyNDcvIiwiaXBhZGRyIjoiMjIyLjIyMi4yMjIuMjIiLCJuYW1lIjoiYWJlbGkiLCJvaWQiOiIwMjIyM2I2Yi1hYTFkLTQyZDQtOWVjMC0xYjJiYjkxOTQ0MzgiLCJyaCI6IkkiLCJzY3AiOiJ1c2VyX2ltcGVyc29uYXRpb24iLCJzdWIiOiJsM19yb0lTUVUyMjJiVUxTOXlpMmswWHBxcE9pTXo1SDNaQUNvMUdlWEEiLCJ0aWQiOiJmYTE1ZDY5Mi1lOWM3LTQ0NjAtYTc0My0yOWYyOTU2ZmQ0MjkiLCJ1bmlxdWVfbmFtZSI6ImFiZWxpQG1pY3Jvc29mdC5jb20iLCJ1dGkiOiJGVnNHeFlYSTMwLVR1aWt1dVVvRkFBIiwidmVyIjoiMS4wIn0.D3H6pMUtQnoJAGq6AHd\",\n                \"value_start\": 0,\n                \"value_end\": 1316,\n                \"entropy\": 5.63018\n            }\n        ]\n    },\n    {\n        \"rule\": \"JSON Web Token\",\n        \"severity\": \"medium\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIng1dCI6Imk2bEdrM0ZaenhSY1ViMkMzbkVRN3N5SEpsWSIsImtpZCI6Imk2bEdrM0ZaenhSY1ViMkMzbkVRN3N5SEpsWSJ9.eyJhdWQiOiJlZjFkYTlkNC1mZjc3LTRjM2UtYTAwNS04NDBjM2Y4MzA3NDUiLCJpc3MiOiJodHRwczovL3N0cy53aW5kb3dzLm5ldC9mYTE1ZDY5Mi1lOWM3LTQ0NjAtYTc0My0yOWYyOTUyMjIyOS8iLCJpYXQiOjE1MzcyMzMxMDYsIm5iZiI6MTUzNzIzMzEwNiwiZXhwIjoxNTM3MjM3MDA2LCJhY3IiOiIxIiwiYWlvIjoiQVhRQWkvOElBQUFBRm0rRS9RVEcrZ0ZuVnhMaldkdzhLKzYxQUdyU091TU1GNmViYU1qN1hPM0libUQzZkdtck95RCtOdlp5R24yVmFUL2tES1h3NE1JaHJnR1ZxNkJuOHdMWG9UMUxrSVorRnpRVmtKUFBMUU9WNEtjWHFTbENWUERTL0RpQ0RnRTIyMlRJbU12V05hRU1hVU9Uc0lHdlRRPT0iLCJhbXIiOlsid2lhIl0sImFwcGlkIjoiNzVkYmU3N2YtMTBhMy00ZTU5LTg1ZmQtOGMxMjc1NDRmMTdjIiwiYXBwaWRhY3IiOiIwIiwiZW1haWwiOiJBYmVMaUBtaWNyb3NvZnQuY29tIiwiZmFtaWx5X25hbWUiOiJMaW5jb2xuIiwiZ2l2ZW5fbmFtZSI6IkFiZSAoTVNGVCkiLCJpZHAiOiJodHRwczovL3N0cy53aW5kb3dzLm5ldC83MmY5ODhiZi04NmYxLTQxYWYtOTFhYi0yZDdjZDAxMjIyNDcvIiwiaXBhZGRyIjoiMjIyLjIyMi4yMjIuMjIiLCJuYW1lIjoiYWJlbGkiLCJvaWQiOiIwMjIyM2I2Yi1hYTFkLTQyZDQtOWVjMC0xYjJiYjkxOTQ0MzgiLCJyaCI6IkkiLCJzY3AiOiJ1c2VyX2ltcGVyc29uYXRpb24iLCJzdWIiOiJsM19yb0lTUVUyMjJiVUxTOXlpMmswWHBxcE9pTXo1SDNaQUNvMUdlWEEiLCJ0aWQiOiJmYTE1ZDY5Mi1lOWM3LTQ0NjAtYTc0My0yOWYyOTU2ZmQ0MjkiLCJ1bmlxdWVfbmFtZSI6ImFiZWxpQG1pY3Jvc29mdC5jb20iLCJ1dGkiOiJGVnNHeFlYSTMwLVR1aWt1dVVvRkFBIiwidmVyIjoiMS4wIn0.D3H6pMUtQnoJAGq6AHd\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/azure_access_token\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIng1dCI6Imk2bEdrM0ZaenhSY1ViMkMzbkVRN3N5SEpsWSIsImtpZCI6Imk2bEdrM0ZaenhSY1ViMkMzbkVRN3N5SEpsWSJ9.eyJhdWQiOiJlZjFkYTlkNC1mZjc3LTRjM2UtYTAwNS04NDBjM2Y4MzA3NDUiLCJpc3MiOiJodHRwczovL3N0cy53aW5kb3dzLm5ldC9mYTE1ZDY5Mi1lOWM3LTQ0NjAtYTc0My0yOWYyOTUyMjIyOS8iLCJpYXQiOjE1MzcyMzMxMDYsIm5iZiI6MTUzNzIzMzEwNiwiZXhwIjoxNTM3MjM3MDA2LCJhY3IiOiIxIiwiYWlvIjoiQVhRQWkvOElBQUFBRm0rRS9RVEcrZ0ZuVnhMaldkdzhLKzYxQUdyU091TU1GNmViYU1qN1hPM0libUQzZkdtck95RCtOdlp5R24yVmFUL2tES1h3NE1JaHJnR1ZxNkJuOHdMWG9UMUxrSVorRnpRVmtKUFBMUU9WNEtjWHFTbENWUERTL0RpQ0RnRTIyMlRJbU12V05hRU1hVU9Uc0lHdlRRPT0iLCJhbXIiOlsid2lhIl0sImFwcGlkIjoiNzVkYmU3N2YtMTBhMy00ZTU5LTg1ZmQtOGMxMjc1NDRmMTdjIiwiYXBwaWRhY3IiOiIwIiwiZW1haWwiOiJBYmVMaUBtaWNyb3NvZnQuY29tIiwiZmFtaWx5X25hbWUiOiJMaW5jb2xuIiwiZ2l2ZW5fbmFtZSI6IkFiZSAoTVNGVCkiLCJpZHAiOiJodHRwczovL3N0cy53aW5kb3dzLm5ldC83MmY5ODhiZi04NmYxLTQxYWYtOTFhYi0yZDdjZDAxMjIyNDcvIiwiaXBhZGRyIjoiMjIyLjIyMi4yMjIuMjIiLCJuYW1lIjoiYWJlbGkiLCJvaWQiOiIwMjIyM2I2Yi1hYTFkLTQyZDQtOWVjMC0xYjJiYjkxOTQ0MzgiLCJyaCI6IkkiLCJzY3AiOiJ1c2VyX2ltcGVyc29uYXRpb24iLCJzdWIiOiJsM19yb0lTUVUyMjJiVUxTOXlpMmswWHBxcE9pTXo1SDNaQUNvMUdlWEEiLCJ0aWQiOiJmYTE1ZDY5Mi1lOWM3LTQ0NjAtYTc0My0yOWYyOTU2ZmQ0MjkiLCJ1bmlxdWVfbmFtZSI6ImFiZWxpQG1pY3Jvc29mdC5jb20iLCJ1dGkiOiJGVnNHeFlYSTMwLVR1aWt1dVVvRkFBIiwidmVyIjoiMS4wIn0.D3H6pMUtQnoJAGq6AHd\",\n                \"value_start\": 0,\n                \"value_end\": 1316,\n                \"entropy\": 5.63018\n            }\n        ]\n    },\n    {\n        \"rule\": \"Azure Access Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImtpZCI6Imk2bEdrM0ZaenhSY1ViMkMzbkVRN3N5SEpsWSJ9.eyJhdWQiOiI2ZTc0MTcyYi1iZTU2LTQ4NDMtOWZmNC1lNjZhMzliYjEyZTMiLCJpc3MiOiJodHRwczovL2xvZ2luLm1pY3Jvc29mdG9ubGluZS5jb20vNzJmOTg4YmYtODZmMS00MWFmLTkxYWItMmQ3Y2QwMTFkYjQ3L3YyLjAiLCJpYXQiOjE1MzcyMzEwNDgsIm5iZiI6MTUzNzIzMTA0OCwiZXhwIjoxNTM3MjM0OTQ4LCJhaW8iOiJBWFFBaS84SUFBQUF0QWFaTG8zQ2hNaWY2S09udHRSQjdlQnE0L0RjY1F6amNKR3hQWXkvQzNqRGFOR3hYZDZ3TklJVkdSZ2hOUm53SjFsT2NBbk5aY2p2a295ckZ4Q3R0djMzMTQwUmlvT0ZKNGJDQ0dWdW9DYWcxdU9UVDIyMjIyZ0h3TFBZUS91Zjc5UVgrMEtJaWpkcm1wNjlSY3R6bVE9PSIsImF6cCI6IjZlNzQxNzJiLWJlNTYtNDg0My05ZmY0LWU2NmEzOWJiMTJlMyIsImF6cGFjciI6IjAiLCJuYW1lIjoiQWJlIExpbmNvbG4iLCJvaWQiOiI2OTAyMjJiZS1mZjFhLTRkNTYtYWJkMS03ZTRmN2QzOGU0NzQiLCJwcmVmZXJyZWRfdXNlcm5hbWUiOiJhYmVsaUBtaWNyb3NvZnQuY29tIiwicmgiOiJJIiwic2NwIjoiYWNjZXNzX2FzX3VzZXIiLCJzdWIiOiJIS1pwZmFIeVdhZGVPb3VZbGl0anJJLUtmZlRtMjIyWDVyclYzeERxZktRIiwidGlkIjoiNzJmOTg4YmYtODZmMS00MWFmLTkxYWItMmQ3Y2QwMTFkYjQ3IiwidXRpIjoiZnFpQnFYTFBqMGVRYTgyUy1JWUZBQSIsInZlciI6IjIuMCJ9.pj4N-w_3Us9DrBLfpCt\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/azure_access_token\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImtpZCI6Imk2bEdrM0ZaenhSY1ViMkMzbkVRN3N5SEpsWSJ9.eyJhdWQiOiI2ZTc0MTcyYi1iZTU2LTQ4NDMtOWZmNC1lNjZhMzliYjEyZTMiLCJpc3MiOiJodHRwczovL2xvZ2luLm1pY3Jvc29mdG9ubGluZS5jb20vNzJmOTg4YmYtODZmMS00MWFmLTkxYWItMmQ3Y2QwMTFkYjQ3L3YyLjAiLCJpYXQiOjE1MzcyMzEwNDgsIm5iZiI6MTUzNzIzMTA0OCwiZXhwIjoxNTM3MjM0OTQ4LCJhaW8iOiJBWFFBaS84SUFBQUF0QWFaTG8zQ2hNaWY2S09udHRSQjdlQnE0L0RjY1F6amNKR3hQWXkvQzNqRGFOR3hYZDZ3TklJVkdSZ2hOUm53SjFsT2NBbk5aY2p2a295ckZ4Q3R0djMzMTQwUmlvT0ZKNGJDQ0dWdW9DYWcxdU9UVDIyMjIyZ0h3TFBZUS91Zjc5UVgrMEtJaWpkcm1wNjlSY3R6bVE9PSIsImF6cCI6IjZlNzQxNzJiLWJlNTYtNDg0My05ZmY0LWU2NmEzOWJiMTJlMyIsImF6cGFjciI6IjAiLCJuYW1lIjoiQWJlIExpbmNvbG4iLCJvaWQiOiI2OTAyMjJiZS1mZjFhLTRkNTYtYWJkMS03ZTRmN2QzOGU0NzQiLCJwcmVmZXJyZWRfdXNlcm5hbWUiOiJhYmVsaUBtaWNyb3NvZnQuY29tIiwicmgiOiJJIiwic2NwIjoiYWNjZXNzX2FzX3VzZXIiLCJzdWIiOiJIS1pwZmFIeVdhZGVPb3VZbGl0anJJLUtmZlRtMjIyWDVyclYzeERxZktRIiwidGlkIjoiNzJmOTg4YmYtODZmMS00MWFmLTkxYWItMmQ3Y2QwMTFkYjQ3IiwidXRpIjoiZnFpQnFYTFBqMGVRYTgyUy1JWUZBQSIsInZlciI6IjIuMCJ9.pj4N-w_3Us9DrBLfpCt\",\n                \"value_start\": 0,\n                \"value_end\": 1029,\n                \"entropy\": 5.64141\n            }\n        ]\n    },\n    {\n        \"rule\": \"JSON Web Token\",\n        \"severity\": \"medium\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImtpZCI6Imk2bEdrM0ZaenhSY1ViMkMzbkVRN3N5SEpsWSJ9.eyJhdWQiOiI2ZTc0MTcyYi1iZTU2LTQ4NDMtOWZmNC1lNjZhMzliYjEyZTMiLCJpc3MiOiJodHRwczovL2xvZ2luLm1pY3Jvc29mdG9ubGluZS5jb20vNzJmOTg4YmYtODZmMS00MWFmLTkxYWItMmQ3Y2QwMTFkYjQ3L3YyLjAiLCJpYXQiOjE1MzcyMzEwNDgsIm5iZiI6MTUzNzIzMTA0OCwiZXhwIjoxNTM3MjM0OTQ4LCJhaW8iOiJBWFFBaS84SUFBQUF0QWFaTG8zQ2hNaWY2S09udHRSQjdlQnE0L0RjY1F6amNKR3hQWXkvQzNqRGFOR3hYZDZ3TklJVkdSZ2hOUm53SjFsT2NBbk5aY2p2a295ckZ4Q3R0djMzMTQwUmlvT0ZKNGJDQ0dWdW9DYWcxdU9UVDIyMjIyZ0h3TFBZUS91Zjc5UVgrMEtJaWpkcm1wNjlSY3R6bVE9PSIsImF6cCI6IjZlNzQxNzJiLWJlNTYtNDg0My05ZmY0LWU2NmEzOWJiMTJlMyIsImF6cGFjciI6IjAiLCJuYW1lIjoiQWJlIExpbmNvbG4iLCJvaWQiOiI2OTAyMjJiZS1mZjFhLTRkNTYtYWJkMS03ZTRmN2QzOGU0NzQiLCJwcmVmZXJyZWRfdXNlcm5hbWUiOiJhYmVsaUBtaWNyb3NvZnQuY29tIiwicmgiOiJJIiwic2NwIjoiYWNjZXNzX2FzX3VzZXIiLCJzdWIiOiJIS1pwZmFIeVdhZGVPb3VZbGl0anJJLUtmZlRtMjIyWDVyclYzeERxZktRIiwidGlkIjoiNzJmOTg4YmYtODZmMS00MWFmLTkxYWItMmQ3Y2QwMTFkYjQ3IiwidXRpIjoiZnFpQnFYTFBqMGVRYTgyUy1JWUZBQSIsInZlciI6IjIuMCJ9.pj4N-w_3Us9DrBLfpCt\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/azure_access_token\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImtpZCI6Imk2bEdrM0ZaenhSY1ViMkMzbkVRN3N5SEpsWSJ9.eyJhdWQiOiI2ZTc0MTcyYi1iZTU2LTQ4NDMtOWZmNC1lNjZhMzliYjEyZTMiLCJpc3MiOiJodHRwczovL2xvZ2luLm1pY3Jvc29mdG9ubGluZS5jb20vNzJmOTg4YmYtODZmMS00MWFmLTkxYWItMmQ3Y2QwMTFkYjQ3L3YyLjAiLCJpYXQiOjE1MzcyMzEwNDgsIm5iZiI6MTUzNzIzMTA0OCwiZXhwIjoxNTM3MjM0OTQ4LCJhaW8iOiJBWFFBaS84SUFBQUF0QWFaTG8zQ2hNaWY2S09udHRSQjdlQnE0L0RjY1F6amNKR3hQWXkvQzNqRGFOR3hYZDZ3TklJVkdSZ2hOUm53SjFsT2NBbk5aY2p2a295ckZ4Q3R0djMzMTQwUmlvT0ZKNGJDQ0dWdW9DYWcxdU9UVDIyMjIyZ0h3TFBZUS91Zjc5UVgrMEtJaWpkcm1wNjlSY3R6bVE9PSIsImF6cCI6IjZlNzQxNzJiLWJlNTYtNDg0My05ZmY0LWU2NmEzOWJiMTJlMyIsImF6cGFjciI6IjAiLCJuYW1lIjoiQWJlIExpbmNvbG4iLCJvaWQiOiI2OTAyMjJiZS1mZjFhLTRkNTYtYWJkMS03ZTRmN2QzOGU0NzQiLCJwcmVmZXJyZWRfdXNlcm5hbWUiOiJhYmVsaUBtaWNyb3NvZnQuY29tIiwicmgiOiJJIiwic2NwIjoiYWNjZXNzX2FzX3VzZXIiLCJzdWIiOiJIS1pwZmFIeVdhZGVPb3VZbGl0anJJLUtmZlRtMjIyWDVyclYzeERxZktRIiwidGlkIjoiNzJmOTg4YmYtODZmMS00MWFmLTkxYWItMmQ3Y2QwMTFkYjQ3IiwidXRpIjoiZnFpQnFYTFBqMGVRYTgyUy1JWUZBQSIsInZlciI6IjIuMCJ9.pj4N-w_3Us9DrBLfpCt\",\n                \"value_start\": 0,\n                \"value_end\": 1029,\n                \"entropy\": 5.64141\n            }\n        ]\n    },\n    {\n        \"rule\": \"Azure Storage Account Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"t 189shdhgr893rgdg74sdsdfkksdhtg87dyfwegjddshjhsgjsgdhJQQJ99ALACAAAAAAAAAAAAASAZDO1e4drs==\",\n                \"line_num\": 5,\n                \"path\": \"./tests/samples/azure_access_token\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"189shdhgr893rgdg74sdsdfkksdhtg87dyfwegjddshjhsgjsgdhJQQJ99ALACAAAAAAAAAAAAASAZDO1e4drs==\",\n                \"value_start\": 2,\n                \"value_end\": 90,\n                \"entropy\": 4.22483\n            }\n        ]\n    },\n    {\n        \"rule\": \"Azure Secret Value\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"client_srt = \\\"qpF8Q~PCM5MhMoyTFc5TYEomnzRUKim9UJhe8a2P\\\";\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/azure_secret_value\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"qpF8Q~PCM5MhMoyTFc5TYEomnzRUKim9UJhe8a2P\",\n                \"value_start\": 14,\n                \"value_end\": 54,\n                \"entropy\": 4.75306\n            }\n        ]\n    },\n    {\n        \"rule\": \"Bitbucket HTTP Access Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"\\\"bitbucket\\\" : \\\"BBDC-MzQ2Njc4NjkyMDgwOsEidtxMt9WDExIOYPEWBFXH093l\\\"\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/bitbuckert_http_access_token\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"BBDC-MzQ2Njc4NjkyMDgwOsEidtxMt9WDExIOYPEWBFXH093l\",\n                \"value_start\": 15,\n                \"value_end\": 64,\n                \"entropy\": 4.94084\n            }\n        ]\n    },\n    {\n        \"rule\": \"Bitbucket App Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"app_sample:ATBBcCe6fczW96Vzwgvb4r8F2gZS54D591C4\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/bitbucket_app_password\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"ATBBcCe6fczW96Vzwgvb4r8F2gZS54D591C4\",\n                \"value_start\": 11,\n                \"value_end\": 47,\n                \"entropy\": 4.5934\n            }\n        ]\n    },\n    {\n        \"rule\": \"Bitbucket Repository Access Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"\\\"Bitbucket Repository Access Token\\\" : \\\"ATCTT3xFfGN0zXtbKHz2POF86xa-2aBiYC4o_T3-myk01bmFVluUIFtGm_VFQwLizp4o1FKw-AMZhtdA0NzizshnA8WzRdfgv6GeTyowCD101oqKbJ4nx9DFsar5YyUNkwO9maR9-00tQvfciyfOHtPKG6K1d76Ki3iFo7roGeyJu4j1jM3GwQ4=EDDE81AD\\\"\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/bitbucket_repository_access_token\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"ATCTT3xFfGN0zXtbKHz2POF86xa-2aBiYC4o_T3-myk01bmFVluUIFtGm_VFQwLizp4o1FKw-AMZhtdA0NzizshnA8WzRdfgv6GeTyowCD101oqKbJ4nx9DFsar5YyUNkwO9maR9-00tQvfciyfOHtPKG6K1d76Ki3iFo7roGeyJu4j1jM3GwQ4=EDDE81AD\",\n                \"value_start\": 39,\n                \"value_end\": 231,\n                \"entropy\": 5.75803\n            }\n        ]\n    },\n    {\n        \"rule\": \"Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.994,\n        \"line_data_list\": [\n            {\n                \"line\": \"\\\"Bitbucket Repository Access Token\\\" : \\\"ATCTT3xFfGN0zXtbKHz2POF86xa-2aBiYC4o_T3-myk01bmFVluUIFtGm_VFQwLizp4o1FKw-AMZhtdA0NzizshnA8WzRdfgv6GeTyowCD101oqKbJ4nx9DFsar5YyUNkwO9maR9-00tQvfciyfOHtPKG6K1d76Ki3iFo7roGeyJu4j1jM3GwQ4=EDDE81AD\\\"\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/bitbucket_repository_access_token\",\n                \"info\": \"\",\n                \"variable\": \"Bitbucket Repository Access Token\",\n                \"variable_start\": 1,\n                \"variable_end\": 34,\n                \"value\": \"ATCTT3xFfGN0zXtbKHz2POF86xa-2aBiYC4o_T3-myk01bmFVluUIFtGm_VFQwLizp4o1FKw-AMZhtdA0NzizshnA8WzRdfgv6GeTyowCD101oqKbJ4nx9DFsar5YyUNkwO9maR9-00tQvfciyfOHtPKG6K1d76Ki3iFo7roGeyJu4j1jM3GwQ4=EDDE81AD\",\n                \"value_start\": 39,\n                \"value_end\": 231,\n                \"entropy\": 5.75803\n            }\n        ]\n    },\n    {\n        \"rule\": \"Brevo API Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"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\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/brevo\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"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\",\n                \"value_start\": 0,\n                \"value_end\": 89,\n                \"entropy\": 4.64688\n            }\n        ]\n    },\n    {\n        \"rule\": \"CMD Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"gpg --decrypt --passphrase N1DdkUD3E73 --output decrypted.txt encrypted.txt.gpg\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/cmd_credential\",\n                \"info\": \"\",\n                \"variable\": \"passphrase\",\n                \"variable_start\": 16,\n                \"variable_end\": 26,\n                \"value\": \"N1DdkUD3E73\",\n                \"value_start\": 27,\n                \"value_end\": 38,\n                \"entropy\": 3.0958\n            }\n        ]\n    },\n    {\n        \"rule\": \"CMD Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"mysql -u root --password Sne3sd8AZjq\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/cmd_credential\",\n                \"info\": \"\",\n                \"variable\": \"password\",\n                \"variable_start\": 16,\n                \"variable_end\": 24,\n                \"value\": \"Sne3sd8AZjq\",\n                \"value_start\": 25,\n                \"value_end\": 36,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"CMD Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"-Domain 'localhost' -Password 'Sjdn43ss@!'\",\n                \"line_num\": 3,\n                \"path\": \"./tests/samples/cmd_credential\",\n                \"info\": \"\",\n                \"variable\": \"Password\",\n                \"variable_start\": 21,\n                \"variable_end\": 29,\n                \"value\": \"Sjdn43ss@!\",\n                \"value_start\": 31,\n                \"value_end\": 41,\n                \"entropy\": 3.12193\n            }\n        ]\n    },\n    {\n        \"rule\": \"CMD Secret\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.999,\n        \"line_data_list\": [\n            {\n                \"line\": \"--super-secret_token 1ace4d19-fa7e-b4e2-c3f0-9129474bcd81\",\n                \"line_num\": 4,\n                \"path\": \"./tests/samples/cmd_credential\",\n                \"info\": \"\",\n                \"variable\": \"super-secret_token\",\n                \"variable_start\": 2,\n                \"variable_end\": 20,\n                \"value\": \"1ace4d19-fa7e-b4e2-c3f0-9129474bcd81\",\n                \"value_start\": 21,\n                \"value_end\": 57,\n                \"entropy\": 3.77368\n            }\n        ]\n    },\n    {\n        \"rule\": \"CMD Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.999,\n        \"line_data_list\": [\n            {\n                \"line\": \"--super-secret_token 1ace4d19-fa7e-b4e2-c3f0-9129474bcd81\",\n                \"line_num\": 4,\n                \"path\": \"./tests/samples/cmd_credential\",\n                \"info\": \"\",\n                \"variable\": \"super-secret_token\",\n                \"variable_start\": 2,\n                \"variable_end\": 20,\n                \"value\": \"1ace4d19-fa7e-b4e2-c3f0-9129474bcd81\",\n                \"value_start\": 21,\n                \"value_end\": 57,\n                \"entropy\": 3.77368\n            }\n        ]\n    },\n    {\n        \"rule\": \"UUID\",\n        \"severity\": \"info\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"--super-secret_token 1ace4d19-fa7e-b4e2-c3f0-9129474bcd81\",\n                \"line_num\": 4,\n                \"path\": \"./tests/samples/cmd_credential\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"1ace4d19-fa7e-b4e2-c3f0-9129474bcd81\",\n                \"value_start\": 21,\n                \"value_end\": 57,\n                \"entropy\": 3.77368\n            }\n        ]\n    },\n    {\n        \"rule\": \"CMD Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"    --oauth2-bearer \\\"eZs2fjkjD8hUcsQ37b8zHig==\\\" \\\\\",\n                \"line_num\": 7,\n                \"path\": \"./tests/samples/cmd_credential\",\n                \"info\": \"\",\n                \"variable\": \"oauth2-bearer\",\n                \"variable_start\": 6,\n                \"variable_end\": 19,\n                \"value\": \"eZs2fjkjD8hUcsQ37b8zHig==\",\n                \"value_start\": 21,\n                \"value_end\": 46,\n                \"entropy\": 4.32386\n            }\n        ]\n    },\n    {\n        \"rule\": \"CMD ConvertTo-SecureString\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.918,\n        \"line_data_list\": [\n            {\n                \"line\": \"ConvertTo-SecureString -String -Force dsjUE#$gds8s\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/cmd_secure_string\",\n                \"info\": \"\",\n                \"variable\": \"ConvertTo-SecureString -String -Force\",\n                \"variable_start\": 0,\n                \"variable_end\": 37,\n                \"value\": \"dsjUE#$gds8s\",\n                \"value_start\": 38,\n                \"value_end\": 50,\n                \"entropy\": 3.02206\n            }\n        ]\n    },\n    {\n        \"rule\": \"CMD ConvertTo-SecureString\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"\\\"ConvertTo-SecureString \\\\\\\"4yd21JKH~GE8dkd\\\\\\\"\\\"\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/cmd_secure_string\",\n                \"info\": \"\",\n                \"variable\": \"ConvertTo-SecureString\",\n                \"variable_start\": 1,\n                \"variable_end\": 23,\n                \"value\": \"4yd21JKH~GE8dkd\",\n                \"value_start\": 26,\n                \"value_end\": 41,\n                \"entropy\": 3.5899\n            }\n        ]\n    },\n    {\n        \"rule\": \"Credential\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.999,\n        \"line_data_list\": [\n            {\n                \"line\": \"gi_reo_gi_credential = \\\"K2u6mFw8wJOsAf\\\"\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/credential.hs\",\n                \"info\": \"\",\n                \"variable\": \"gi_reo_gi_credential\",\n                \"variable_start\": 0,\n                \"variable_end\": 20,\n                \"value\": \"K2u6mFw8wJOsAf\",\n                \"value_start\": 24,\n                \"value_end\": 38,\n                \"entropy\": 3.6645\n            }\n        ]\n    },\n    {\n        \"rule\": \"CURL User Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"curl -X PUT -u \\\"admin:dG9rZW4g\\\" https://127.0.0.1 # TP\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/curl_user_password\",\n                \"info\": \"\",\n                \"variable\": \"curl\",\n                \"variable_start\": 0,\n                \"variable_end\": 4,\n                \"value\": \"dG9rZW4g\",\n                \"value_start\": 22,\n                \"value_end\": 30,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"DeepSeek API Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \">>>\\u001b[93msk-615ef152bf865a131f88b23571dc4ee6\\u001b[0m<<<\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/deepseek\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"sk-615ef152bf865a131f88b23571dc4ee6\",\n                \"value_start\": 8,\n                \"value_end\": 43,\n                \"entropy\": 3.85416\n            }\n        ]\n    },\n    {\n        \"rule\": \"Digital Ocean Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"digital_oc = 'doo_v1_c46dde8bd623be6efab141fa2452e10fcc382e70d5da882493477828eba24a8c';\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/digital_ocean_oauth_access_token\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"doo_v1_c46dde8bd623be6efab141fa2452e10fcc382e70d5da882493477828eba24a8c\",\n                \"value_start\": 14,\n                \"value_end\": 85,\n                \"entropy\": 4.05874\n            }\n        ]\n    },\n    {\n        \"rule\": \"Digital Ocean Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"dop_v1_425522a565f532bc6532d453422e50334a42f5242a3090fbe553b543b124259b\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/digital_ocean_pat\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"dop_v1_425522a565f532bc6532d453422e50334a42f5242a3090fbe553b543b124259b\",\n                \"value_start\": 0,\n                \"value_end\": 71,\n                \"entropy\": 3.6568\n            }\n        ]\n    },\n    {\n        \"rule\": \"Discord Bot Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"MTIzNDU2Nzg5MDEyMzQ1Njc4OQ.E2-E4_.Zig9V5mpMk-JybgCFvqSfgY9EoqWjkA5O_qDje\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/discord_bot_token\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"MTIzNDU2Nzg5MDEyMzQ1Njc4OQ.E2-E4_.Zig9V5mpMk-JybgCFvqSfgY9EoqWjkA5O_qDje\",\n                \"value_start\": 0,\n                \"value_end\": 72,\n                \"entropy\": 5.16257\n            }\n        ]\n    },\n    {\n        \"rule\": \"Discord Webhook\",\n        \"severity\": \"medium\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"T https://discordapp.com/api/webhooks/148392840000482200/ihUFAgIi-OsnNHsjJBpvzkzZOicbe0R2UkWo1nvOnkLGHWJnW8HZjF_dRDj7fi5q3u2h\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/discord_webhook\",\n                \"info\": \"\",\n                \"variable\": \"discordapp.com/api/webhooks\",\n                \"variable_start\": 10,\n                \"variable_end\": 37,\n                \"value\": \"/148392840000482200/ihUFAgIi-OsnNHsjJBpvzkzZOicbe0R2UkWo1nvOnkLGHWJnW8HZjF_dRDj7fi5q3u2h\",\n                \"value_start\": 37,\n                \"value_end\": 125,\n                \"entropy\": 5.23454\n            }\n        ]\n    },\n    {\n        \"rule\": \"UUID\",\n        \"severity\": \"info\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"\\\"UserKeyword\\\": \\\"A1328E04-88B6-4E2A-A5C0-A4D9B21754C4\\\"\",\n                \"line_num\": 5,\n                \"path\": \"./tests/samples/doc_credentials_n\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"A1328E04-88B6-4E2A-A5C0-A4D9B21754C4\",\n                \"value_start\": 16,\n                \"value_end\": 52,\n                \"entropy\": 3.8055\n            }\n        ]\n    },\n    {\n        \"rule\": \"Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.993,\n        \"line_data_list\": [\n            {\n                \"line\": \"Activation key : ZAQWS-XCDER-VBGTR-FRTGU-KLMNX\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/doc_credentials_p\",\n                \"info\": \"\",\n                \"variable\": \"key\",\n                \"variable_start\": 11,\n                \"variable_end\": 14,\n                \"value\": \"ZAQWS-XCDER-VBGTR-FRTGU-KLMNX\",\n                \"value_start\": 17,\n                \"value_end\": 46,\n                \"entropy\": 4.21126\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.996,\n        \"line_data_list\": [\n            {\n                \"line\": \"password:!Dd5G4s9\",\n                \"line_num\": 3,\n                \"path\": \"./tests/samples/doc_credentials_p\",\n                \"info\": \"\",\n                \"variable\": \"password\",\n                \"variable_start\": 0,\n                \"variable_end\": 8,\n                \"value\": \"!Dd5G4s9\",\n                \"value_start\": 9,\n                \"value_end\": 17,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"Credential\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.996,\n        \"line_data_list\": [\n            {\n                \"line\": \"LONG_CREDENTIAL: AgV4TakqXDSaUSruBPiKENLUg+aN/Z5HzG4y5q21GOWteXBNZSVXAh1G8ZCdf8AKaa73TipBRAOT0gI0o2xrm1AFzfnoa2J56rr5WtWfAmr5WCGdZx68H+ghRZMa7C8c76I0zDleUKuPbRhJEM+OZPLGVrL/yodyF+7wF5di84Cb5NOyuAHBZUGxxMWCFuwjRH13JRABMygbrOKaauKjQ5aUAp6ggKijEwr4oysBclvocYin4w1TDApHF5lbd6ytfAYSREJIhbswoUmzlyJ/3ftvl3w6qC2Hikfc8S2rRZ7Evdsbr1lDeNckRmzb3ZQKmREjnxYWM5X5ZekKdLOyo9wdmUleEfX0gU0ZXgB9tKDdR7bP//2p8lJreW51DuF4EynVTSoPqB0mLo0iMkxx0xBCEp5BNC5XpYi7jjvuCKWaHETR+60CsZG1cy12cQlZKtscrc4MI7D7jg9y+GooV+pF05A7a9QgBmqTunmEYBvP7C54nmiHM91fb1W/9XBqCgJZB/Bky9R/nmrRb7+yeRoC8HodzrBlRdciWzkXk0MG63xUGA5K4cH/s+EvmbP+eAi42vneKt9mslid7cxq//AdnXOiIBmhVQ+hn07V/rQxetqbvIYHIEmCdUqqOAmtuV5ba2TPcMtbYEcEGxQJX9e8oYvoShpFbVDpSoEUlVkqI0Bjdts3hsl7B7vV09OdPcMGWFRswu8OIvtllh1C3+2XarwXBs/EfNCWOR5XYDMrHKAWHgvNEI2uZQukt0ekN4BGKA+XNs8T9gdKzun7FoWuSpsXqbvkNS1lXe4dOYay5OoY3Od6eSpwboYmC7Y1GxEi6ixOTePovwot4cIYFvILJExraDEnRQCm53mcvr2qewiy5o8brTr8cA/Fp2VJGiIGmU2cUmz90Tx15/9ZzWA6N/Q0aaiKVDYmAirhUJaMf6gNeDYbodN9tJxEbeNN6krZvdLrsxBZdBViciX2X8Ju8ws0DQlIh54FhHKwwWeoxKPN05RFLORlNQdrV5bKt9FCA/igQECZP233wg7pBEw0wvdASDhaZs0pWX98jDUEJzfwSK4ivc3F15BuKy2Sh3rNjUXht95Dzl4iGsPIsA8DgZjgPbmcjrZXaMdQ5H8l/L4xce0mIAz3s9S/O2ginpFCbwTl2Txrnv44OPjif1S45wSwjzNvchTwduBi1Q13S78xsP//BopuNjxScQU0W8e06HOf9Cg9EkEQ08g57ekS7QcuCfVTQeHj+bltRUbL9en1iwNDgkI49S7kCy2hpSAbVn9WIJMJvMaUEm+jICKQdhnY2XuBiic4bznR+4TOkBaBXBVTKUr1EUH9PigkyliiLtIhHsCvungvP3htfH325ZAKcNxarlKgJrJvfCBnxtNzplF0R8UQUPUmYBRO2VYRT14iFqsU9Y21bG4aiz9SdJgh20KIBjtY1bn7FUNlJ0LHPuKiZSoX5Z71Y5o06YHBP5ijXsfDbEYW5nwfL1sDIqIgxJ0d5bnY9lJ8IdgFjnNqWECLinfjFCXdqiOPprIHD9N/x7DmDstNzjDKw+3aUtRboJmUCN/VsNhOgvBbPux1+UZcf4W01u3fT/JglhjApwqtoQnszIglHxSTHL3WphAB671pr2PK9vgkDeASmrSSrG0LuTx9d5UQLm/NV6j5MXxL1q7/Kk/RTHRd4l5SkcjmA+7Ds7W5rTVIOXV7j/ZYL6HdVv6MWqMKL7QvwUNseM2cnbOxWKg2T37rpZsCk1eU7AeVA69LxS7BHFiswfEi32YWVaxJu0lNoMiZg4WaNhmOtTIzoZU/INWQsRkfbdSROOIiUAYy983kE6h8HjgCvmebb0BeJeMZBM5jyRVrcwrnPEnZzHOiPruNovstlEt6IFvUotNKZgk5Y3DBUUVB4fo/Dv2zBoobQHcomWa2W6Fux6uYuIxG2i6VEVBX3QhItPFr6wc6+n00qiLBG1vhUFGsJzsomMFJx0wrA6voi/kfjRU2TnJjwG0mKMwLurxVVJyLtgwJy3BEDmR2vcaW18G3xoNjc3E+5XS6MutGX3TSoY7n2DftHvKSj46tjPyGPujOQ0tsN9z3EDVLemgnEl42L4FgLtgMOERfIs2XiMy384LbTJQ6xtknjEL3cFNN765s04wFGyI/hc1npJnkCCfKg/sVFLW3YrVGMZAVo/648q655vw2oKKRq8h48g7rnOj239TKUZhxwXZiWqnNZnnBXMIT5hSXwNyIotGcWyuqG2WGL+us/rT6jekSofQaswm8XRDSQPLO9ZqSCX7uM709gLrc/gyNtWaZ9+jpi+o60ydRvYaAgnBzAqhG2spKFTcuOx3usTuQssR2eDZlomRi2zo/nGqDke1sFWr7AULH40IYXqyrle6oY4j8Wf7f6evtNm9b42fFmVAdE04X27tEOe9b1q4o2IWibni0eNdjvjCaMu+DveYqyGXTSTIZt6UzSYFP18YjHKrSsr8SJE9LNMlxwl93v1AfwVFejK7eg3tm7+HRgRVTBaQyuf3EWgXdwcRH8Nqo/rrLBjXmeKZSjWpQIOX9h0TRc91DSJFu02PdqcmIG5T3lFHToLZYB1ohQMIHmfX8+fyR59o86hE/dm8WD1LuEpDlHsIOe4ZKVB9PqRfFpEIZ9gBcyW4co3Kl7uxh5UJVWDLv97ROG29tLBC5rq9mUXxbFiuQSV1/YGnkJQL3IlJ+KKE9fd8Lk+QVjfz2Kc2LBiaTwGoJ5MreVo5LxGf4joXXOpmk+g2dbo6bmuz0WpoGDLYON26mOQawWP+LIpMGlPYiTbUlwgwVv4iQr1ntgpka309haHfh/PeadIJ5FftNERTbNEtO7yKdKbf8ESLl3mVfZW4/bWmO9PBQQAu7dhXNqwG8AmsS62w77UgS7OSvAoSbtCSGZ+9HiGNdn/LI/K+7W4y9S10lR5Npa+5WSnSSTvh9ICfBQVD6iO0HChhEfXKLhesp/250V9kC0yuwq5eLi+A7tCfNQ9iTsmj0hQvnemxISy26OyBe5y39+d+lx45sbx1ijnT6+5PHsmSKx+/tDf6FxdcJpp/D5jUYNvjDASBS9ZxeA/JJDCC3sde9F9ZHZDY4gASDLmzQJYGOthD+bm7aA/RWofNJVpbLRq/7AjonvEOMgc3sk2nLlkfppE7EChJ75xV3aJ4EenBpkjSJVdEMckybT6d+Io9lH8YOuxpzSLo2kVt1vDRr26UZKW/M5OXY3tEHFj8679f4oddmJ1OGLG8SYuCIf5U6qPiom5C1CSVz/8ObNAxPR4ECdGpIpfJO0HmtwMvRmsAbsOEBGg4wIVa945ukJugZNwklFZ6wI0ys2jyvNCDRcgDRrV/fzkfyEIO/WMT/dLx4tbgqksXpnbfvUEJKorLMm2Lye4LuJ3msHvu0c274bJ7E8Y8KXKoMLNRdL7ZwwNUfrbj2KHyaAyqE0YOjIF3+06YOWyC0rJVOthFh+I9ah7RKPwSpsaqK6abzCFZLFdx8qBYA7mO4avHlm2SqiIgdivfHMm/RIFKHuEv+FxWXzfT8KD/jtDhBo672uY8c+nVsfZQysAsalkjd9qkhaqZbDbsHZi2LssBabP5MFqOOGpHgiV9UgMd1vDmz42E7MDCVcgvOF6IgB2Qz62fWdgL94HpRJTY794aJfhPFdk1K4PVo1Cs4CPoCo7gYoqcIBa0vUYwz5zSJe+0Mk21E5ltTl9A2hZhnbt8XFJRTtmXP8g4Jx9EP5hMtj4o7nKgvUwUXcVpa7COGw2UL2eU8TtFvKpWkQd05G1WaTDzHaGUXmo5/LQTLyBvrgi+NbM5JXklvefyZ2Va6LtWethJBfU3KM/PNh/qn9PnjBbfvMe4gVeX1WLxud7DBER6aVL5SqSKlXLbvoi2osQKKM0ExfOvtIs5l5wCp/aoHVgbCnADu6dN877zmNpJdnov1Qj0RYALV1ivdN//vnr47Y7vCJqennCd6IAL5PiZFi0VIBjMG4WL+wwU5tkfnxPL1ukvpEdZqaejBrPqqU+ewlpX7enAwzAaihYMSOfLlVrM/ybIpBtuDtRkQRPr8nUa1r2EDQi/jWeKN1CNJpxnKv9peG2z9FHQBhFS2WdqshVeGBACqG/dqDhugOi/P9FLNv4buPcLL7Yd+GOg66DnvEWGAvUXuE3152NOykn1zRyMQZTLdcNRfuX3WfLklPYO6Nf2JRaylcMcrErbsixgcT+p1+qXLQ8GCnkfqyMjmPo+FJ2BWd5KDRUim0ihUmO6Vd4B2/JMTZXsWNwOPmN/DqjpX/Z64UVO7yh0emaA9Vt6+bNlxrR/l/9Hy1JGz9GpK22jLIHDBcUwGP53ZHKSSm/WyfNzOJxRdeSTK+SApsglmdYUSNLVJjVraDURTkVI0XjVFTvu98yM95w9y3DoX9iYWLdg4NRysVMoWkOB0Ts0MBQeCZkn+erzs+7KNFTXxPrQA5LHMgbT/2ukEeKhuKypLsu9s4BLqGWTFnHgv1SL37dqvqigY55fxfEvHBuw+ea41xnfFPSb2yjm9d/lLnXapCkIGoss6ecxHg9481heyM32bnlqzngiluuuMQoEU9Lwk5VBMhKuQN+LbJds2Nb+XnHz4yLIWLIXX+4+Uv4uh0zYJSLABk8piLuFQ7NwkHbQR+cptvefLwpZmBOC68065t5WR/IeOlYpg6ND320XSOyshBXH9hgCXWtIHzxG64rAf/UkmB+UsnP2g2xbklc2s8hoYtMQP8F3qKbL557mBBDVVc8MPyamBusSVbYowBNzASZ64PsdfOSIAmjb9gv8+4X0EK9F789s7predBaFZRJNzfUXwhMrPeCmVGP692781db4K9vD5HJISA7juhIjL5f1uLXaJkBFbJJxkp6MTtWDFtwnXPYmhkEDPIF4oas7scywk70fkAaXzIgDymYlBMUVXR29X2gp49Kvo/kuGR3/oDV4DpEMrfK94BBL9rSXicnF4zDcMnW30gYY5Q/NLTLVktfvoea8QTwJ18BsD27fxEkCkupxrez2JgHx+m6u+2hPEO+V8PhpHCgM2aONfr1ZCcGBjcRtZLw1v2Gtd6QkwkrNgDwy3B/7gShoZSDRno3ceu5V0//JgKQOGuQP2MpxeX/Wu+e3BsftOdBct8E0m3MKek4Ij9bIXNim8taEz0VczllW3nEhgy1IJ5pL2q8AgxsHxjqCsBIH8KL5l0rwWiqFSw+Kb4Y8dUi/im8kZQerV8LwOCXvyPlgkIkPcDFlkeoFaYgWhmPfFGqhJIab7g8cMmT0hp51sRq8KmkHCEU+GmHHkwBuycA9/5gp6niJAuLNuQf5t6DacELYr6U/wsddBce6vaaPWWMYPrkJh52TIvszYapEZSynFZsOqb3SAbe0AGZuSL3NbD3SYNOpXLcdIZbCfczHChbLB+ljuOhURZzWHaY6oxXGqLJyo3pzbiS2PQ3q7nFWzMXxrXWVEO+zL/2U14A==\",\n                \"line_num\": 4,\n                \"path\": \"./tests/samples/doc_credentials_p\",\n                \"info\": \"\",\n                \"variable\": \"LONG_CREDENTIAL\",\n                \"variable_start\": 0,\n                \"variable_end\": 15,\n                \"value\": \"AgV4TakqXDSaUSruBPiKENLUg+aN/Z5HzG4y5q21GOWteXBNZSVXAh1G8ZCdf8AKaa73TipBRAOT0gI0o2xrm1AFzfnoa2J56rr5WtWfAmr5WCGdZx68H+ghRZMa7C8c76I0zDleUKuPbRhJEM+OZPLGVrL/yodyF+7wF5di84Cb5NOyuAHBZUGxxMWCFuwjRH13JRABMygbrOKaauKjQ5aUAp6ggKijEwr4oysBclvocYin4w1TDApHF5lbd6ytfAYSREJIhbswoUmzlyJ/3ftvl3w6qC2Hikfc8S2rRZ7Evdsbr1lDeNckRmzb3ZQKmREjnxYWM5X5ZekKdLOyo9wdmUleEfX0gU0ZXgB9tKDdR7bP//2p8lJreW51DuF4EynVTSoPqB0mLo0iMkxx0xBCEp5BNC5XpYi7jjvuCKWaHETR+60CsZG1cy12cQlZKtscrc4MI7D7jg9y+GooV+pF05A7a9QgBmqTunmEYBvP7C54nmiHM91fb1W/9XBqCgJZB/Bky9R/nmrRb7+yeRoC8HodzrBlRdciWzkXk0MG63xUGA5K4cH/s+EvmbP+eAi42vneKt9mslid7cxq//AdnXOiIBmhVQ+hn07V/rQxetqbvIYHIEmCdUqqOAmtuV5ba2TPcMtbYEcEGxQJX9e8oYvoShpFbVDpSoEUlVkqI0Bjdts3hsl7B7vV09OdPcMGWFRswu8OIvtllh1C3+2XarwXBs/EfNCWOR5XYDMrHKAWHgvNEI2uZQukt0ekN4BGKA+XNs8T9gdKzun7FoWuSpsXqbvkNS1lXe4dOYay5OoY3Od6eSpwboYmC7Y1GxEi6ixOTePovwot4cIYFvILJExraDEnRQCm53mcvr2qewiy5o8brTr8cA/Fp2VJGiIGmU2cUmz90Tx15/9ZzWA6N/Q0aaiKVDYmAirhUJaMf6gNeDYbodN9tJxEbeNN6krZvdLrsxBZdBViciX2X8Ju8ws0DQlIh54FhHKwwWeoxKPN05RFLORlNQdrV5bKt9FCA/igQECZP233wg7pBEw0wvdASDhaZs0pWX98jDUEJzfwSK4ivc3F15BuKy2Sh3rNjUXht95Dzl4iGsPIsA8DgZjgPbmcjrZXaMdQ5H8l/L4xce0mIAz3s9S/O2ginpFCbwTl2Txrnv44OPjif1S45wSwjzNvchTwduBi1Q13S78xsP//BopuNjxScQU0W8e06HOf9Cg9EkEQ08g57ekS7QcuCfVTQeHj+bltRUbL9en1iwNDgkI49S7kCy2hpSAbVn9WIJMJvMaUEm+jICKQdhnY2XuBiic4bznR+4TOkBaBXBVTKUr1EUH9PigkyliiLtIhHsCvungvP3htfH325ZAKcNxarlKgJrJvfCBnxtNzplF0R8UQUPUmYBRO2VYRT14iFqsU9Y21bG4aiz9SdJgh20KIBjtY1bn7FUNlJ0LHPuKiZSoX5Z71Y5o06YHBP5ijXsfDbEYW5nwfL1sDIqIgxJ0d5bnY9lJ8IdgFjnNqWECLinfjFCXdqiOPprIHD9N/x7DmDstNzjDKw+3aUtRboJmUCN/VsNhOgvBbPux1+UZcf4W01u3fT/JglhjApwqtoQnszIglHxSTHL3WphAB671pr2PK9vgkDeASmrSSrG0LuTx9d5UQLm/NV6j5MXxL1q7/Kk/RTHRd4l5SkcjmA+7Ds7W5rTVIOXV7j/ZYL6HdVv6MWqMKL7QvwUNseM2cnbOxWKg2T37rpZsCk1eU7AeVA69LxS7BHFiswfEi32YWVaxJu0lNoMiZg4WaNhmOtTIzoZU/INWQsRkfbdSROOIiUAYy983kE6h8HjgCvmebb0BeJeMZBM5jyRVrcwrnPEnZzHOiPruNovstlEt6IFvUotNKZgk5Y3DBUUVB4fo/Dv2zBoobQHcomWa2W6Fux6uYuIxG2i6VEVBX3QhItPFr6wc6+n00qiLBG1vhUFGsJzsomMFJx0wrA6voi/kfjRU2TnJjwG0mKMwLurxVVJyLtgwJy3BEDmR2vcaW18G3xoNjc3E+5XS6MutGX3TSoY7n2DftHvKSj46tjPyGPujOQ0tsN9z3EDVLemgnEl42L4FgLtgMOERfIs2XiMy384LbTJQ6xtknjEL3cFNN765s04wFGyI/hc1npJnkCCfKg/sVFLW3YrVGMZAVo/648q655vw2oKKRq8h48g7rnOj239TKUZhxwXZiWqnNZnnBXMIT5hSXwNyIotGcWyuqG2WGL+us/rT6jekSofQaswm8XRDSQPLO9ZqSCX7uM709gLrc/gyNtWaZ9+jpi+o60ydRvYaAgnBzAqhG2spKFTcuOx3usTuQssR2eDZlomRi2zo/nGqDke1sFWr7AULH40IYXqyrle6oY4j8Wf7f6evtNm9b42fFmVAdE04X27tEOe9b1q4o2IWibni0eNdjvjCaMu+DveYqyGXTSTIZt6UzSYFP18YjHKrSsr8SJE9LNMlxwl93v1AfwVFejK7eg3tm7+HRgRVTBaQyuf3EWgXdwcRH8Nqo/rrLBjXmeKZSjWpQIOX9h0TRc91DSJFu02PdqcmIG5T3lFHToLZYB1ohQMIHmfX8+fyR59o86hE/dm8WD1LuEpDlHsIOe4ZKVB9PqRfFpEIZ9gBcyW4co3Kl7uxh5UJVWDLv97ROG29tLBC5rq9mUXxbFiuQSV1/YGnkJQL3IlJ+KKE9fd8Lk+QVjfz2Kc2LBiaTwGoJ5MreVo5LxGf4joXXOpmk+g2dbo6bmuz0WpoGDLYON26mOQawWP+LIpMGlPYiTbUlwgwVv4iQr1ntgpka309haHfh/PeadIJ5FftNERTbNEtO7yKdKbf8ESLl3mVfZW4/bWmO9PBQQAu7dhXNqwG8AmsS62w77UgS7OSvAoSbtCSGZ+9HiGNdn/LI/K+7W4y9S10lR5Npa+5WSnSSTvh9ICfBQVD6iO0HChhEfXKLhesp/250V9kC0yuwq5eLi+A7tCfNQ9iTsmj0hQvnemxISy26OyBe5y39+d+lx45sbx1ijnT6+5PHsmSKx+/tDf6FxdcJpp/D5jUYNvjDASBS9ZxeA/JJDCC3sde9F9ZHZDY4gASDLmzQJYGOthD+bm7aA/RWofNJVpbLRq/7AjonvEOMgc3sk2nLlkfppE7EChJ75xV3aJ4EenBpkjSJVdEMckybT6d+Io9lH8YOuxpzSLo2kVt1vDRr26UZKW/M5OXY3tEHFj8679f4oddmJ1OGLG8SYuCIf5U6qPiom5C1CSVz/8ObNAxPR4ECdGpIpfJO0HmtwMvRmsAbsOEBGg4wIVa945ukJugZNwklFZ6wI0ys2jyvNCDRcgDRrV/fzkfyEIO/WMT/dLx4tbgqksXpnbfvUEJKorLMm2Lye4LuJ3msHvu0c274bJ7E8Y8KXKoMLNRdL7ZwwNUfrbj2KHyaAyqE0YOjIF3+06YOWyC0rJVOthFh+I9ah7RKPwSpsaqK6abzCFZLFdx8qBYA7mO4avHlm2SqiIgdivfHMm/RIFKHuEv+FxWXzfT8KD/jtDhBo672uY8c+nVsfZQysAsalkjd9qkhaqZbDbsHZi2LssBabP5MFqOOGpHgiV9UgMd1vDmz42E7MDCVcgvOF6IgB2Qz62fWdgL94HpRJTY794aJfhPFdk1K4PVo1Cs4CPoCo7gYoqcIBa0vUYwz5zSJe+0Mk21E5ltTl9A2hZhnbt8XFJRTtmXP8g4Jx9EP5hMtj4o7nKgvUwUXcVpa7COGw2UL2eU8TtFvKpWkQd05G1WaTDzHaGUXmo5/LQTLyBvrgi+NbM5JXklvefyZ2Va6LtWethJBfU3KM/PNh/qn9PnjBbfvMe4gVeX1WLxud7DBER6aVL5SqSKlXLbvoi2osQKKM0ExfOvtIs5l5wCp/aoHVgbCnADu6dN877zmNpJdnov1Qj0RYALV1ivdN//vnr47Y7vCJqennCd6IAL5PiZFi0VIBjMG4WL+wwU5tkfnxPL1ukvpEdZqaejBrPqqU+ewlpX7enAwzAaihYMSOfLlVrM/ybIpBtuDtRkQRPr8nUa1r2EDQi/jWeKN1CNJpxnKv9peG2z9FHQBhFS2WdqshVeGBACqG/dqDhugOi/P9FLNv4buPcLL7Yd+GOg66DnvEWGAvUXuE3152NOykn1zRyMQZTLdcNRfuX3WfLklPYO6Nf2JRaylcMcrErbsixgcT+p1+qXLQ8GCnkfqyMjmPo+FJ2BWd5KDRUim0ihUmO6Vd4B2/JMTZXsWNwOPmN/DqjpX/Z64UVO7yh0emaA9Vt6+bNlxrR/l/9Hy1JGz9GpK22jLIHDBcUwGP53ZHKSSm/WyfNzOJxRdeSTK+SApsglmdYUSNLVJjVraDURTkVI0XjVFTvu98yM95w9y3DoX9iYWLdg4NRysVMoWkOB0Ts0MBQeCZkn+erzs+7KNFTXxPrQA5LHMgbT/2ukEeKhuKypLsu9s4BLqGWTFnHgv1SL37dqvqigY55fxfEvHBuw+ea41xnfFPSb2yjm9d/lLnXapCkIGoss6ecxHg9481heyM32bnlqzngiluuuMQoEU9Lwk5VBMhKuQN+LbJds2Nb+XnHz4yLIWLIXX+4+Uv4uh0zYJSLABk8piLuFQ7NwkHbQR+cptvefLwpZmBOC68065t5WR/IeOlYpg6ND320XSOyshBXH9hgCXWtIHzxG64rAf/UkmB+UsnP2g2xbklc2s8hoYtMQP8F3qKbL557mBBDVVc8MPyamBusSVbYowBNzASZ64PsdfOSIAmjb9gv8+4X0EK9F789s7predBaFZRJNzfUXwhMrPeCmVGP692781db4K9vD5HJISA7juhIjL5f1uLXaJkBFbJJxkp6MTtWDFtwnXPYmhkEDPIF4oas7scywk70fkAaXzIgDymYlBMUVXR29X2gp49Kvo/kuGR3/oDV4DpEMrfK94BBL9rSXicnF4zDcMnW30gYY5Q/NLTLVktfvoea8QTwJ18BsD27fxEkCkupxrez2JgHx+m6u+2hPEO+V8PhpHCgM2aONfr1ZCcGBjcRtZLw1v2Gtd6QkwkrNgDwy3B/7gShoZSDRno3ceu5V0//JgKQOGuQP2MpxeX/Wu+e3BsftOdBct8E0m3MKek4Ij9bIXNim8taEz0VczllW3nEhgy1IJ5pL2q8AgxsHxjqCsBIH8KL5l0rwWiqFSw+Kb4Y8dUi/im8kZQerV8LwOCXvyPlgkIkPcDFlkeoFaYgWhmPfFGqhJIab7g8cMmT0hp51sRq8KmkHCEU+GmHHkwBuycA9/5gp6niJAuLNuQf5t6DacELYr6U/wsddBce6vaaPWWMYPrkJh52TIvszYapEZSynFZsOqb3SAbe0AGZuSL3NbD3SYNOpXLcdIZbCfczHChbLB+ljuOhURZzWHaY6oxXGqLJyo3pzbiS2PQ3q7nFWzMXxrXWVEO+zL/2U14A==\",\n                \"value_start\": 17,\n                \"value_end\": 5485,\n                \"entropy\": 5.99409\n            }\n        ]\n    },\n    {\n        \"rule\": \"Secret\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.998,\n        \"line_data_list\": [\n            {\n                \"line\": \"if SECRET := getenv(\\\"CEKPET\\\", \\\"GEHEIMN1S\\\"):\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/doc_get_p\",\n                \"info\": \"\",\n                \"variable\": \"SECRET\",\n                \"variable_start\": 3,\n                \"variable_end\": 9,\n                \"value\": \"GEHEIMN1S\",\n                \"value_start\": 31,\n                \"value_end\": 40,\n                \"entropy\": 2.9477\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.999,\n        \"line_data_list\": [\n            {\n                \"line\": \"PASSWORD = os.environ.get(\\\"PASSWORD\\\") or \\\"at5G6zi!m\\\"\",\n                \"line_num\": 5,\n                \"path\": \"./tests/samples/doc_get_p\",\n                \"info\": \"\",\n                \"variable\": \"PASSWORD\",\n                \"variable_start\": 0,\n                \"variable_end\": 8,\n                \"value\": \"at5G6zi!m\",\n                \"value_start\": 42,\n                \"value_end\": 51,\n                \"entropy\": 3.16993\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.966,\n        \"line_data_list\": [\n            {\n                \"line\": \"ID:master,PW:dipPr10Gg!\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"PW\",\n                \"variable_start\": 10,\n                \"variable_end\": 12,\n                \"value\": \"dipPr10Gg!\",\n                \"value_start\": 13,\n                \"value_end\": 23,\n                \"entropy\": 3.32193\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.971,\n        \"line_data_list\": [\n            {\n                \"line\": \"ID:master PW:dipPr11Gg!\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"PW\",\n                \"variable_start\": 10,\n                \"variable_end\": 12,\n                \"value\": \"dipPr11Gg!\",\n                \"value_start\": 13,\n                \"value_end\": 23,\n                \"entropy\": 3.12193\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.983,\n        \"line_data_list\": [\n            {\n                \"line\": \"ANYID:master PW:dipPr12Gg!\",\n                \"line_num\": 3,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"PW\",\n                \"variable_start\": 13,\n                \"variable_end\": 15,\n                \"value\": \"dipPr12Gg!\",\n                \"value_start\": 16,\n                \"value_end\": 26,\n                \"entropy\": 3.32193\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.997,\n        \"line_data_list\": [\n            {\n                \"line\": \"Username:master Password:dipPr13Gg!\",\n                \"line_num\": 4,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"Password\",\n                \"variable_start\": 16,\n                \"variable_end\": 24,\n                \"value\": \"dipPr13Gg!\",\n                \"value_start\": 25,\n                \"value_end\": 35,\n                \"entropy\": 3.32193\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"id:master,password:dipPr14Gg!\",\n                \"line_num\": 5,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"password\",\n                \"variable_start\": 10,\n                \"variable_end\": 18,\n                \"value\": \"dipPr14Gg!\",\n                \"value_start\": 19,\n                \"value_end\": 29,\n                \"entropy\": 3.32193\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.977,\n        \"line_data_list\": [\n            {\n                \"line\": \"ID:master/PW:dipPr15Gg!\",\n                \"line_num\": 6,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"PW\",\n                \"variable_start\": 10,\n                \"variable_end\": 12,\n                \"value\": \"dipPr15Gg!\",\n                \"value_start\": 13,\n                \"value_end\": 23,\n                \"entropy\": 3.32193\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"id:master password:dipPr16Gg!\",\n                \"line_num\": 7,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"password\",\n                \"variable_start\": 10,\n                \"variable_end\": 18,\n                \"value\": \"dipPr16Gg!\",\n                \"value_start\": 19,\n                \"value_end\": 29,\n                \"entropy\": 3.32193\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.999,\n        \"line_data_list\": [\n            {\n                \"line\": \"user:master password:dipPr17Gg!\",\n                \"line_num\": 8,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"password\",\n                \"variable_start\": 12,\n                \"variable_end\": 20,\n                \"value\": \"dipPr17Gg!\",\n                \"value_start\": 21,\n                \"value_end\": 31,\n                \"entropy\": 3.32193\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.999,\n        \"line_data_list\": [\n            {\n                \"line\": \"username:master,password:dipPr19Gg!\",\n                \"line_num\": 10,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"password\",\n                \"variable_start\": 16,\n                \"variable_end\": 24,\n                \"value\": \"dipPr19Gg!\",\n                \"value_start\": 25,\n                \"value_end\": 35,\n                \"entropy\": 3.32193\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.986,\n        \"line_data_list\": [\n            {\n                \"line\": \"username:master pwd:dipPr110Gg!\",\n                \"line_num\": 11,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"pwd\",\n                \"variable_start\": 16,\n                \"variable_end\": 19,\n                \"value\": \"dipPr110Gg!\",\n                \"value_start\": 20,\n                \"value_end\": 31,\n                \"entropy\": 3.27761\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.987,\n        \"line_data_list\": [\n            {\n                \"line\": \"ANYid:master,password:dipPr111Gg!\",\n                \"line_num\": 12,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"password\",\n                \"variable_start\": 13,\n                \"variable_end\": 21,\n                \"value\": \"dipPr111Gg!\",\n                \"value_start\": 22,\n                \"value_end\": 33,\n                \"entropy\": 3.02717\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.965,\n        \"line_data_list\": [\n            {\n                \"line\": \"ID:master PWD:dipPr112Gg!\",\n                \"line_num\": 13,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"PWD\",\n                \"variable_start\": 10,\n                \"variable_end\": 13,\n                \"value\": \"dipPr112Gg!\",\n                \"value_start\": 14,\n                \"value_end\": 25,\n                \"entropy\": 3.27761\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.999,\n        \"line_data_list\": [\n            {\n                \"line\": \"user id:master password:dipPr113Gg!\",\n                \"line_num\": 14,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"password\",\n                \"variable_start\": 15,\n                \"variable_end\": 23,\n                \"value\": \"dipPr113Gg!\",\n                \"value_start\": 24,\n                \"value_end\": 35,\n                \"entropy\": 3.27761\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.999,\n        \"line_data_list\": [\n            {\n                \"line\": \"user:master,password:dipPr114Gg!\",\n                \"line_num\": 15,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"password\",\n                \"variable_start\": 12,\n                \"variable_end\": 20,\n                \"value\": \"dipPr114Gg!\",\n                \"value_start\": 21,\n                \"value_end\": 32,\n                \"entropy\": 3.27761\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.999,\n        \"line_data_list\": [\n            {\n                \"line\": \"user=master,password=dipPr115Gg!\",\n                \"line_num\": 16,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"password\",\n                \"variable_start\": 12,\n                \"variable_end\": 20,\n                \"value\": \"dipPr115Gg!\",\n                \"value_start\": 21,\n                \"value_end\": 32,\n                \"entropy\": 3.27761\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.999,\n        \"line_data_list\": [\n            {\n                \"line\": \"username=master password=dipPr116Gg!\",\n                \"line_num\": 17,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"password\",\n                \"variable_start\": 16,\n                \"variable_end\": 24,\n                \"value\": \"dipPr116Gg!\",\n                \"value_start\": 25,\n                \"value_end\": 36,\n                \"entropy\": 3.27761\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.999,\n        \"line_data_list\": [\n            {\n                \"line\": \"User name:master Password:dipPr117Gg!\",\n                \"line_num\": 18,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"Password\",\n                \"variable_start\": 17,\n                \"variable_end\": 25,\n                \"value\": \"dipPr117Gg!\",\n                \"value_start\": 26,\n                \"value_end\": 37,\n                \"entropy\": 3.27761\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.998,\n        \"line_data_list\": [\n            {\n                \"line\": \"username=master,password=dipPr118Gg!\",\n                \"line_num\": 19,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"password\",\n                \"variable_start\": 16,\n                \"variable_end\": 24,\n                \"value\": \"dipPr118Gg!\",\n                \"value_start\": 25,\n                \"value_end\": 36,\n                \"entropy\": 3.27761\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"--user=master --password=dipPr119Gg!\",\n                \"line_num\": 20,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"password\",\n                \"variable_start\": 16,\n                \"variable_end\": 24,\n                \"value\": \"dipPr119Gg!\",\n                \"value_start\": 25,\n                \"value_end\": 36,\n                \"entropy\": 3.27761\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.989,\n        \"line_data_list\": [\n            {\n                \"line\": \"user=master passwd=dipPr120Gg!\",\n                \"line_num\": 21,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"passwd\",\n                \"variable_start\": 12,\n                \"variable_end\": 18,\n                \"value\": \"dipPr120Gg!\",\n                \"value_start\": 19,\n                \"value_end\": 30,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"account:dipPr121Gg! password:dipPr121Gg!\",\n                \"line_num\": 22,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"password\",\n                \"variable_start\": 20,\n                \"variable_end\": 28,\n                \"value\": \"dipPr121Gg!\",\n                \"value_start\": 29,\n                \"value_end\": 40,\n                \"entropy\": 3.27761\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.993,\n        \"line_data_list\": [\n            {\n                \"line\": \"id:master pass:dipPr122Gg!\",\n                \"line_num\": 23,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"pass\",\n                \"variable_start\": 10,\n                \"variable_end\": 14,\n                \"value\": \"dipPr122Gg!\",\n                \"value_start\": 15,\n                \"value_end\": 26,\n                \"entropy\": 3.27761\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.994,\n        \"line_data_list\": [\n            {\n                \"line\": \"user:master pw:dipPr124Gg!\",\n                \"line_num\": 25,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"pw\",\n                \"variable_start\": 12,\n                \"variable_end\": 14,\n                \"value\": \"dipPr124Gg!\",\n                \"value_start\": 15,\n                \"value_end\": 26,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.997,\n        \"line_data_list\": [\n            {\n                \"line\": \"Username:master/Password:dipPr125Gg!\",\n                \"line_num\": 26,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"Password\",\n                \"variable_start\": 16,\n                \"variable_end\": 24,\n                \"value\": \"dipPr125Gg!\",\n                \"value_start\": 25,\n                \"value_end\": 36,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.997,\n        \"line_data_list\": [\n            {\n                \"line\": \"userId:master,password:dipPr126Gg!\",\n                \"line_num\": 27,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"password\",\n                \"variable_start\": 14,\n                \"variable_end\": 22,\n                \"value\": \"dipPr126Gg!\",\n                \"value_start\": 23,\n                \"value_end\": 34,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"CMD Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"--user master --password dipPr127Gg!\",\n                \"line_num\": 28,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"password\",\n                \"variable_start\": 16,\n                \"variable_end\": 24,\n                \"value\": \"dipPr127Gg!\",\n                \"value_start\": 25,\n                \"value_end\": 36,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.999,\n        \"line_data_list\": [\n            {\n                \"line\": \"dipPr128Gg! ID:master dipPr128Gg! Password:dipPr128Gg!\",\n                \"line_num\": 29,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"Password\",\n                \"variable_start\": 34,\n                \"variable_end\": 42,\n                \"value\": \"dipPr128Gg!\",\n                \"value_start\": 43,\n                \"value_end\": 54,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.999,\n        \"line_data_list\": [\n            {\n                \"line\": \"ANYid:master,pw:dipPr129Gg!\",\n                \"line_num\": 30,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"pw\",\n                \"variable_start\": 13,\n                \"variable_end\": 15,\n                \"value\": \"dipPr129Gg!\",\n                \"value_start\": 16,\n                \"value_end\": 27,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.992,\n        \"line_data_list\": [\n            {\n                \"line\": \"user:master pwd:dipPr130Gg!\",\n                \"line_num\": 31,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"pwd\",\n                \"variable_start\": 12,\n                \"variable_end\": 15,\n                \"value\": \"dipPr130Gg!\",\n                \"value_start\": 16,\n                \"value_end\": 27,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.999,\n        \"line_data_list\": [\n            {\n                \"line\": \"Login:dipPr131Gg! Pwd:dipPr131Gg!\",\n                \"line_num\": 32,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"Pwd\",\n                \"variable_start\": 18,\n                \"variable_end\": 21,\n                \"value\": \"dipPr131Gg!\",\n                \"value_start\": 22,\n                \"value_end\": 33,\n                \"entropy\": 3.27761\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.999,\n        \"line_data_list\": [\n            {\n                \"line\": \"ANYID:master Password:dipPr132Gg!\",\n                \"line_num\": 33,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"Password\",\n                \"variable_start\": 13,\n                \"variable_end\": 21,\n                \"value\": \"dipPr132Gg!\",\n                \"value_start\": 22,\n                \"value_end\": 33,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.995,\n        \"line_data_list\": [\n            {\n                \"line\": \"-Username:master -Password:dipPr133Gg!\",\n                \"line_num\": 34,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"Password\",\n                \"variable_start\": 18,\n                \"variable_end\": 26,\n                \"value\": \"dipPr133Gg!\",\n                \"value_start\": 27,\n                \"value_end\": 38,\n                \"entropy\": 3.27761\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"account:dipPr134Gg! pw:dipPr134Gg!\",\n                \"line_num\": 35,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"pw\",\n                \"variable_start\": 20,\n                \"variable_end\": 22,\n                \"value\": \"dipPr134Gg!\",\n                \"value_start\": 23,\n                \"value_end\": 34,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.995,\n        \"line_data_list\": [\n            {\n                \"line\": \"user id:master user pw:dipPr135Gg!\",\n                \"line_num\": 36,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"pw\",\n                \"variable_start\": 20,\n                \"variable_end\": 22,\n                \"value\": \"dipPr135Gg!\",\n                \"value_start\": 23,\n                \"value_end\": 34,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.999,\n        \"line_data_list\": [\n            {\n                \"line\": \"user_name=master password=dipPr136Gg!\",\n                \"line_num\": 37,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"password\",\n                \"variable_start\": 17,\n                \"variable_end\": 25,\n                \"value\": \"dipPr136Gg!\",\n                \"value_start\": 26,\n                \"value_end\": 37,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"CMD Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"--username master --password dipPr137Gg!\",\n                \"line_num\": 38,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"password\",\n                \"variable_start\": 20,\n                \"variable_end\": 28,\n                \"value\": \"dipPr137Gg!\",\n                \"value_start\": 29,\n                \"value_end\": 40,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.999,\n        \"line_data_list\": [\n            {\n                \"line\": \"ANYlogin:master,ANYpassword:dipPr138Gg!\",\n                \"line_num\": 39,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"ANYpassword\",\n                \"variable_start\": 16,\n                \"variable_end\": 27,\n                \"value\": \"dipPr138Gg!\",\n                \"value_start\": 28,\n                \"value_end\": 39,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"ANYusername=master ANYpassword=dipPr139Gg!\",\n                \"line_num\": 40,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"ANYpassword\",\n                \"variable_start\": 19,\n                \"variable_end\": 30,\n                \"value\": \"dipPr139Gg!\",\n                \"value_start\": 31,\n                \"value_end\": 42,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.983,\n        \"line_data_list\": [\n            {\n                \"line\": \"ID:master,PWD:dipPr140Gg!\",\n                \"line_num\": 41,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"PWD\",\n                \"variable_start\": 10,\n                \"variable_end\": 13,\n                \"value\": \"dipPr140Gg!\",\n                \"value_start\": 14,\n                \"value_end\": 25,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.995,\n        \"line_data_list\": [\n            {\n                \"line\": \"ID:master/PASS:dipPr141Gg!\",\n                \"line_num\": 42,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"PASS\",\n                \"variable_start\": 10,\n                \"variable_end\": 14,\n                \"value\": \"dipPr141Gg!\",\n                \"value_start\": 15,\n                \"value_end\": 26,\n                \"entropy\": 3.27761\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.999,\n        \"line_data_list\": [\n            {\n                \"line\": \"account:master passwd:dipPr142Gg!\",\n                \"line_num\": 43,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"passwd\",\n                \"variable_start\": 15,\n                \"variable_end\": 21,\n                \"value\": \"dipPr142Gg!\",\n                \"value_start\": 22,\n                \"value_end\": 33,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.999,\n        \"line_data_list\": [\n            {\n                \"line\": \"login:master password:dipPr143Gg!\",\n                \"line_num\": 44,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"password\",\n                \"variable_start\": 13,\n                \"variable_end\": 21,\n                \"value\": \"dipPr143Gg!\",\n                \"value_start\": 22,\n                \"value_end\": 33,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.995,\n        \"line_data_list\": [\n            {\n                \"line\": \"user=master,pass=dipPr144Gg!\",\n                \"line_num\": 45,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"pass\",\n                \"variable_start\": 12,\n                \"variable_end\": 16,\n                \"value\": \"dipPr144Gg!\",\n                \"value_start\": 17,\n                \"value_end\": 28,\n                \"entropy\": 3.27761\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"password:dipPr145Gg! username:master\",\n                \"line_num\": 46,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"password\",\n                \"variable_start\": 0,\n                \"variable_end\": 8,\n                \"value\": \"dipPr145Gg!\",\n                \"value_start\": 9,\n                \"value_end\": 20,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"Login as:master Password:dipPr146Gg!\",\n                \"line_num\": 47,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"Password\",\n                \"variable_start\": 16,\n                \"variable_end\": 24,\n                \"value\": \"dipPr146Gg!\",\n                \"value_start\": 25,\n                \"value_end\": 36,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.999,\n        \"line_data_list\": [\n            {\n                \"line\": \"ID:master,pass:dipPr147Gg!\",\n                \"line_num\": 48,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"pass\",\n                \"variable_start\": 10,\n                \"variable_end\": 14,\n                \"value\": \"dipPr147Gg!\",\n                \"value_start\": 15,\n                \"value_end\": 26,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.999,\n        \"line_data_list\": [\n            {\n                \"line\": \"id:master pw:dipPr148Gg!\",\n                \"line_num\": 49,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"pw\",\n                \"variable_start\": 10,\n                \"variable_end\": 12,\n                \"value\": \"dipPr148Gg!\",\n                \"value_start\": 13,\n                \"value_end\": 24,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.99,\n        \"line_data_list\": [\n            {\n                \"line\": \"(98.76.54.32)ID:master PW:dipPr149Gg!\",\n                \"line_num\": 50,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"PW\",\n                \"variable_start\": 23,\n                \"variable_end\": 25,\n                \"value\": \"dipPr149Gg!\",\n                \"value_start\": 26,\n                \"value_end\": 37,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.996,\n        \"line_data_list\": [\n            {\n                \"line\": \"-id:master -pw:dipPr151Gg!\",\n                \"line_num\": 52,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"pw\",\n                \"variable_start\": 12,\n                \"variable_end\": 14,\n                \"value\": \"dipPr151Gg!\",\n                \"value_start\": 15,\n                \"value_end\": 26,\n                \"entropy\": 3.27761\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.99,\n        \"line_data_list\": [\n            {\n                \"line\": \"username:master pw:dipPr152Gg!\",\n                \"line_num\": 53,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"pw\",\n                \"variable_start\": 16,\n                \"variable_end\": 18,\n                \"value\": \"dipPr152Gg!\",\n                \"value_start\": 19,\n                \"value_end\": 30,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.999,\n        \"line_data_list\": [\n            {\n                \"line\": \"-User Name:master -Password:dipPr154Gg!\",\n                \"line_num\": 55,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"Password\",\n                \"variable_start\": 19,\n                \"variable_end\": 27,\n                \"value\": \"dipPr154Gg!\",\n                \"value_start\": 28,\n                \"value_end\": 39,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"account:dipPr155Gg!/password:dipPr155Gg!\",\n                \"line_num\": 56,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"password\",\n                \"variable_start\": 20,\n                \"variable_end\": 28,\n                \"value\": \"dipPr155Gg!\",\n                \"value_start\": 29,\n                \"value_end\": 40,\n                \"entropy\": 3.27761\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.997,\n        \"line_data_list\": [\n            {\n                \"line\": \"ANYuser=master ANY_pass=dipPr156Gg!\",\n                \"line_num\": 57,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"ANY_pass\",\n                \"variable_start\": 15,\n                \"variable_end\": 23,\n                \"value\": \"dipPr156Gg!\",\n                \"value_start\": 24,\n                \"value_end\": 35,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"ANYUser:master password:dipPr157Gg!\",\n                \"line_num\": 58,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"password\",\n                \"variable_start\": 15,\n                \"variable_end\": 23,\n                \"value\": \"dipPr157Gg!\",\n                \"value_start\": 24,\n                \"value_end\": 35,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.996,\n        \"line_data_list\": [\n            {\n                \"line\": \"user:master,pwd:dipPr158Gg!\",\n                \"line_num\": 59,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"pwd\",\n                \"variable_start\": 12,\n                \"variable_end\": 15,\n                \"value\": \"dipPr158Gg!\",\n                \"value_start\": 16,\n                \"value_end\": 27,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.999,\n        \"line_data_list\": [\n            {\n                \"line\": \"ANY_username:master,ANY_password:dipPr159Gg!\",\n                \"line_num\": 60,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"ANY_password\",\n                \"variable_start\": 20,\n                \"variable_end\": 32,\n                \"value\": \"dipPr159Gg!\",\n                \"value_start\": 33,\n                \"value_end\": 44,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.998,\n        \"line_data_list\": [\n            {\n                \"line\": \"ANYusername:master,ANY_password:dipPr160Gg!\",\n                \"line_num\": 61,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"ANY_password\",\n                \"variable_start\": 19,\n                \"variable_end\": 31,\n                \"value\": \"dipPr160Gg!\",\n                \"value_start\": 32,\n                \"value_end\": 43,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.998,\n        \"line_data_list\": [\n            {\n                \"line\": \"ANY_USER=master ANY_PASS=dipPr161Gg!\",\n                \"line_num\": 62,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"ANY_PASS\",\n                \"variable_start\": 16,\n                \"variable_end\": 24,\n                \"value\": \"dipPr161Gg!\",\n                \"value_start\": 25,\n                \"value_end\": 36,\n                \"entropy\": 3.27761\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"User Account:master User password:dipPr162Gg!\",\n                \"line_num\": 63,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"password\",\n                \"variable_start\": 25,\n                \"variable_end\": 33,\n                \"value\": \"dipPr162Gg!\",\n                \"value_start\": 34,\n                \"value_end\": 45,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.991,\n        \"line_data_list\": [\n            {\n                \"line\": \"dipPr163Gg! ID:master dipPr163Gg! PWD:dipPr163Gg!\",\n                \"line_num\": 64,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"PWD\",\n                \"variable_start\": 34,\n                \"variable_end\": 37,\n                \"value\": \"dipPr163Gg!\",\n                \"value_start\": 38,\n                \"value_end\": 49,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.999,\n        \"line_data_list\": [\n            {\n                \"line\": \"userid=master password=dipPr164Gg!\",\n                \"line_num\": 65,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"password\",\n                \"variable_start\": 14,\n                \"variable_end\": 22,\n                \"value\": \"dipPr164Gg!\",\n                \"value_start\": 23,\n                \"value_end\": 34,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"ANY-username=master ANY-password=dipPr165Gg!\",\n                \"line_num\": 66,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"ANY-password\",\n                \"variable_start\": 20,\n                \"variable_end\": 32,\n                \"value\": \"dipPr165Gg!\",\n                \"value_start\": 33,\n                \"value_end\": 44,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.993,\n        \"line_data_list\": [\n            {\n                \"line\": \"username:master pass:dipPr166Gg!\",\n                \"line_num\": 67,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"pass\",\n                \"variable_start\": 16,\n                \"variable_end\": 20,\n                \"value\": \"dipPr166Gg!\",\n                \"value_start\": 21,\n                \"value_end\": 32,\n                \"entropy\": 3.27761\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.998,\n        \"line_data_list\": [\n            {\n                \"line\": \"user=master pwd=dipPr168Gg!\",\n                \"line_num\": 69,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"pwd\",\n                \"variable_start\": 12,\n                \"variable_end\": 15,\n                \"value\": \"dipPr168Gg!\",\n                \"value_start\": 16,\n                \"value_end\": 27,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.981,\n        \"line_data_list\": [\n            {\n                \"line\": \"Name:master,PW:dipPr169Gg!\",\n                \"line_num\": 70,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"PW\",\n                \"variable_start\": 12,\n                \"variable_end\": 14,\n                \"value\": \"dipPr169Gg!\",\n                \"value_start\": 15,\n                \"value_end\": 26,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.994,\n        \"line_data_list\": [\n            {\n                \"line\": \"user:master pass:dipPr172Gg!\",\n                \"line_num\": 73,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"pass\",\n                \"variable_start\": 12,\n                \"variable_end\": 16,\n                \"value\": \"dipPr172Gg!\",\n                \"value_start\": 17,\n                \"value_end\": 28,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"user=master password=dipPr174Gg!\",\n                \"line_num\": 75,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"password\",\n                \"variable_start\": 12,\n                \"variable_end\": 20,\n                \"value\": \"dipPr174Gg!\",\n                \"value_start\": 21,\n                \"value_end\": 32,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.999,\n        \"line_data_list\": [\n            {\n                \"line\": \"Host name:master/Password:dipPr175Gg!\",\n                \"line_num\": 76,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"Password\",\n                \"variable_start\": 17,\n                \"variable_end\": 25,\n                \"value\": \"dipPr175Gg!\",\n                \"value_start\": 26,\n                \"value_end\": 37,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"role:master,password:dipPr176Gg!\",\n                \"line_num\": 77,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"password\",\n                \"variable_start\": 12,\n                \"variable_end\": 20,\n                \"value\": \"dipPr176Gg!\",\n                \"value_start\": 21,\n                \"value_end\": 32,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.983,\n        \"line_data_list\": [\n            {\n                \"line\": \"Wifi Name:master,PW:dipPr177Gg!\",\n                \"line_num\": 78,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"PW\",\n                \"variable_start\": 17,\n                \"variable_end\": 19,\n                \"value\": \"dipPr177Gg!\",\n                \"value_start\": 20,\n                \"value_end\": 31,\n                \"entropy\": 3.27761\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.999,\n        \"line_data_list\": [\n            {\n                \"line\": \"ID:master/Password:dipPr178Gg!\",\n                \"line_num\": 79,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"Password\",\n                \"variable_start\": 10,\n                \"variable_end\": 18,\n                \"value\": \"dipPr178Gg!\",\n                \"value_start\": 19,\n                \"value_end\": 30,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"name:master,password:dipPr179Gg!\",\n                \"line_num\": 80,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"password\",\n                \"variable_start\": 12,\n                \"variable_end\": 20,\n                \"value\": \"dipPr179Gg!\",\n                \"value_start\": 21,\n                \"value_end\": 32,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.999,\n        \"line_data_list\": [\n            {\n                \"line\": \"Loging:master Password:dipPr180Gg!\",\n                \"line_num\": 81,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"Password\",\n                \"variable_start\": 14,\n                \"variable_end\": 22,\n                \"value\": \"dipPr180Gg!\",\n                \"value_start\": 23,\n                \"value_end\": 34,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.996,\n        \"line_data_list\": [\n            {\n                \"line\": \"Loging:master Pwd:dipPr181Gg!\",\n                \"line_num\": 82,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"Pwd\",\n                \"variable_start\": 14,\n                \"variable_end\": 17,\n                \"value\": \"dipPr181Gg!\",\n                \"value_start\": 18,\n                \"value_end\": 29,\n                \"entropy\": 3.27761\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.996,\n        \"line_data_list\": [\n            {\n                \"line\": \"id:master,default pw:dipPr182Gg!\",\n                \"line_num\": 83,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"pw\",\n                \"variable_start\": 18,\n                \"variable_end\": 20,\n                \"value\": \"dipPr182Gg!\",\n                \"value_start\": 21,\n                \"value_end\": 32,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.997,\n        \"line_data_list\": [\n            {\n                \"line\": \"id/pw id:master pw:dipPr185Gg!\",\n                \"line_num\": 86,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"pw\",\n                \"variable_start\": 16,\n                \"variable_end\": 18,\n                \"value\": \"dipPr185Gg!\",\n                \"value_start\": 19,\n                \"value_end\": 30,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.996,\n        \"line_data_list\": [\n            {\n                \"line\": \"user:master,pwd:dipPr186Gg!\",\n                \"line_num\": 87,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"pwd\",\n                \"variable_start\": 12,\n                \"variable_end\": 15,\n                \"value\": \"dipPr186Gg!\",\n                \"value_start\": 16,\n                \"value_end\": 27,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.989,\n        \"line_data_list\": [\n            {\n                \"line\": \"username:master/pw:dipPr188Gg!\",\n                \"line_num\": 89,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"pw\",\n                \"variable_start\": 16,\n                \"variable_end\": 18,\n                \"value\": \"dipPr188Gg!\",\n                \"value_start\": 19,\n                \"value_end\": 30,\n                \"entropy\": 3.27761\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.996,\n        \"line_data_list\": [\n            {\n                \"line\": \"username:master pw:dipPr189Gg!\",\n                \"line_num\": 90,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"pw\",\n                \"variable_start\": 16,\n                \"variable_end\": 18,\n                \"value\": \"dipPr189Gg!\",\n                \"value_start\": 19,\n                \"value_end\": 30,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.947,\n        \"line_data_list\": [\n            {\n                \"line\": \"PW:dipPr190Gg! ID:master\",\n                \"line_num\": 91,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"PW\",\n                \"variable_start\": 0,\n                \"variable_end\": 2,\n                \"value\": \"dipPr190Gg!\",\n                \"value_start\": 3,\n                \"value_end\": 14,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"ANYid:master pw:dipPr194Gg! ip:98.76.54.32\",\n                \"line_num\": 95,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"pw\",\n                \"variable_start\": 13,\n                \"variable_end\": 15,\n                \"value\": \"dipPr194Gg!\",\n                \"value_start\": 16,\n                \"value_end\": 27,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.999,\n        \"line_data_list\": [\n            {\n                \"line\": \"id: master pw:dipPr197Gg!\",\n                \"line_num\": 98,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"pw\",\n                \"variable_start\": 11,\n                \"variable_end\": 13,\n                \"value\": \"dipPr197Gg!\",\n                \"value_start\": 14,\n                \"value_end\": 25,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.97,\n        \"line_data_list\": [\n            {\n                \"line\": \"id:master@example.com,pw:dipPr198Gg!\",\n                \"line_num\": 99,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"pw\",\n                \"variable_start\": 22,\n                \"variable_end\": 24,\n                \"value\": \"dipPr198Gg!\",\n                \"value_start\": 25,\n                \"value_end\": 36,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.941,\n        \"line_data_list\": [\n            {\n                \"line\": \"id:master@example.com,pw:IHQSB1GG!\",\n                \"line_num\": 102,\n                \"path\": \"./tests/samples/doc_id_pair_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"pw\",\n                \"variable_start\": 22,\n                \"variable_end\": 24,\n                \"value\": \"IHQSB1GG!\",\n                \"value_start\": 25,\n                \"value_end\": 34,\n                \"entropy\": 2.9477\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.882,\n        \"line_data_list\": [\n            {\n                \"line\": \"98.76.54.32(ID:master/PW:iPp10@GRq)      # todo: move into other sample ?\",\n                \"line_num\": 11,\n                \"path\": \"./tests/samples/doc_id_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"PW\",\n                \"variable_start\": 22,\n                \"variable_end\": 24,\n                \"value\": \"iPp10@GRq\",\n                \"value_start\": 25,\n                \"value_end\": 34,\n                \"entropy\": 3.16993\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.651,\n        \"line_data_list\": [\n            {\n                \"line\": \"ID/Password=master/iPp27@GRq\",\n                \"line_num\": 28,\n                \"path\": \"./tests/samples/doc_id_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"Password\",\n                \"variable_start\": 3,\n                \"variable_end\": 11,\n                \"value\": \"master/iPp27@GRq\",\n                \"value_start\": 12,\n                \"value_end\": 28,\n                \"entropy\": 4.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.988,\n        \"line_data_list\": [\n            {\n                \"line\": \"Password:Prl23Db#@\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/doc_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"Password\",\n                \"variable_start\": 0,\n                \"variable_end\": 8,\n                \"value\": \"Prl23Db#@\",\n                \"value_start\": 9,\n                \"value_end\": 18,\n                \"entropy\": 3.16993\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.993,\n        \"line_data_list\": [\n            {\n                \"line\": \"pw:Prl23Db#@\",\n                \"line_num\": 3,\n                \"path\": \"./tests/samples/doc_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"pw\",\n                \"variable_start\": 0,\n                \"variable_end\": 2,\n                \"value\": \"Prl23Db#@\",\n                \"value_start\": 3,\n                \"value_end\": 12,\n                \"entropy\": 3.16993\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.987,\n        \"line_data_list\": [\n            {\n                \"line\": \"Password=Prl23Db#@\",\n                \"line_num\": 4,\n                \"path\": \"./tests/samples/doc_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"Password\",\n                \"variable_start\": 0,\n                \"variable_end\": 8,\n                \"value\": \"Prl23Db#@\",\n                \"value_start\": 9,\n                \"value_end\": 18,\n                \"entropy\": 3.16993\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.996,\n        \"line_data_list\": [\n            {\n                \"line\": \"pwd:Prl23Db#@\",\n                \"line_num\": 5,\n                \"path\": \"./tests/samples/doc_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"pwd\",\n                \"variable_start\": 0,\n                \"variable_end\": 3,\n                \"value\": \"Prl23Db#@\",\n                \"value_start\": 4,\n                \"value_end\": 13,\n                \"entropy\": 3.16993\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.997,\n        \"line_data_list\": [\n            {\n                \"line\": \"ANY_password=Prl23Db#@\",\n                \"line_num\": 8,\n                \"path\": \"./tests/samples/doc_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"ANY_password\",\n                \"variable_start\": 0,\n                \"variable_end\": 12,\n                \"value\": \"Prl23Db#@\",\n                \"value_start\": 13,\n                \"value_end\": 22,\n                \"entropy\": 3.16993\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.988,\n        \"line_data_list\": [\n            {\n                \"line\": \"pass:Prl23Db#@\",\n                \"line_num\": 10,\n                \"path\": \"./tests/samples/doc_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"pass\",\n                \"variable_start\": 0,\n                \"variable_end\": 4,\n                \"value\": \"Prl23Db#@\",\n                \"value_start\": 5,\n                \"value_end\": 14,\n                \"entropy\": 3.16993\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.999,\n        \"line_data_list\": [\n            {\n                \"line\": \"ANY-password=Prl23Db#@\",\n                \"line_num\": 11,\n                \"path\": \"./tests/samples/doc_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"ANY-password\",\n                \"variable_start\": 0,\n                \"variable_end\": 12,\n                \"value\": \"Prl23Db#@\",\n                \"value_start\": 13,\n                \"value_end\": 22,\n                \"entropy\": 3.16993\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"master@98.76.54.32 password:Prl23Db#@\",\n                \"line_num\": 14,\n                \"path\": \"./tests/samples/doc_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"password\",\n                \"variable_start\": 19,\n                \"variable_end\": 27,\n                \"value\": \"Prl23Db#@\",\n                \"value_start\": 28,\n                \"value_end\": 37,\n                \"entropy\": 3.16993\n            }\n        ]\n    },\n    {\n        \"rule\": \"CMD Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.998,\n        \"line_data_list\": [\n            {\n                \"line\": \"--Password Prl23Db#@\",\n                \"line_num\": 15,\n                \"path\": \"./tests/samples/doc_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"Password\",\n                \"variable_start\": 2,\n                \"variable_end\": 10,\n                \"value\": \"Prl23Db#@\",\n                \"value_start\": 11,\n                \"value_end\": 20,\n                \"entropy\": 3.16993\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.989,\n        \"line_data_list\": [\n            {\n                \"line\": \"ANY_PW:Prl23Db#@\",\n                \"line_num\": 17,\n                \"path\": \"./tests/samples/doc_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"ANY_PW\",\n                \"variable_start\": 0,\n                \"variable_end\": 6,\n                \"value\": \"Prl23Db#@\",\n                \"value_start\": 7,\n                \"value_end\": 16,\n                \"entropy\": 3.16993\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"default password:Prl23Db#@\",\n                \"line_num\": 18,\n                \"path\": \"./tests/samples/doc_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"password\",\n                \"variable_start\": 8,\n                \"variable_end\": 16,\n                \"value\": \"Prl23Db#@\",\n                \"value_start\": 17,\n                \"value_end\": 26,\n                \"entropy\": 3.16993\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"\\\"password\\\":\\\"Prl23Db#@\\\"\",\n                \"line_num\": 21,\n                \"path\": \"./tests/samples/doc_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"password\",\n                \"variable_start\": 1,\n                \"variable_end\": 9,\n                \"value\": \"Prl23Db#@\",\n                \"value_start\": 12,\n                \"value_end\": 21,\n                \"entropy\": 3.16993\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.99,\n        \"line_data_list\": [\n            {\n                \"line\": \"Passwd:Prl23Db#@ Prl23Db#@\",\n                \"line_num\": 23,\n                \"path\": \"./tests/samples/doc_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"Passwd\",\n                \"variable_start\": 0,\n                \"variable_end\": 6,\n                \"value\": \"Prl23Db#@\",\n                \"value_start\": 7,\n                \"value_end\": 16,\n                \"entropy\": 3.16993\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.999,\n        \"line_data_list\": [\n            {\n                \"line\": \"PW:Prl23Db#@,password:Prl23Db#@\",\n                \"line_num\": 24,\n                \"path\": \"./tests/samples/doc_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"password\",\n                \"variable_start\": 13,\n                \"variable_end\": 21,\n                \"value\": \"Prl23Db#@\",\n                \"value_start\": 22,\n                \"value_end\": 31,\n                \"entropy\": 3.16993\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.999,\n        \"line_data_list\": [\n            {\n                \"line\": \"password:Prl23Db#@,\\ube44\\ubc88:Prl23Db#@\",\n                \"line_num\": 25,\n                \"path\": \"./tests/samples/doc_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"password\",\n                \"variable_start\": 0,\n                \"variable_end\": 8,\n                \"value\": \"Prl23Db#@\",\n                \"value_start\": 9,\n                \"value_end\": 18,\n                \"entropy\": 3.16993\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.989,\n        \"line_data_list\": [\n            {\n                \"line\": \"passwd=Prl23Db#@\",\n                \"line_num\": 26,\n                \"path\": \"./tests/samples/doc_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"passwd\",\n                \"variable_start\": 0,\n                \"variable_end\": 6,\n                \"value\": \"Prl23Db#@\",\n                \"value_start\": 7,\n                \"value_end\": 16,\n                \"entropy\": 3.16993\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.998,\n        \"line_data_list\": [\n            {\n                \"line\": \"password:Prl23Db#@, paasword:Prl23Db#@\",\n                \"line_num\": 30,\n                \"path\": \"./tests/samples/doc_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"password\",\n                \"variable_start\": 0,\n                \"variable_end\": 8,\n                \"value\": \"Prl23Db#@\",\n                \"value_start\": 9,\n                \"value_end\": 18,\n                \"entropy\": 3.16993\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.988,\n        \"line_data_list\": [\n            {\n                \"line\": \"password:Prl23Db#@,ANYPassword:Prl23Db#@\",\n                \"line_num\": 31,\n                \"path\": \"./tests/samples/doc_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"password\",\n                \"variable_start\": 0,\n                \"variable_end\": 8,\n                \"value\": \"Prl23Db#@\",\n                \"value_start\": 9,\n                \"value_end\": 18,\n                \"entropy\": 3.16993\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.995,\n        \"line_data_list\": [\n            {\n                \"line\": \"password:Prl23Db#@,ANYPassword:Prl23Db#@\",\n                \"line_num\": 31,\n                \"path\": \"./tests/samples/doc_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"ANYPassword\",\n                \"variable_start\": 19,\n                \"variable_end\": 30,\n                \"value\": \"Prl23Db#@\",\n                \"value_start\": 31,\n                \"value_end\": 40,\n                \"entropy\": 3.16993\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.983,\n        \"line_data_list\": [\n            {\n                \"line\": \"Password:Prl23Db#@,pwd=Prl23Db#@\",\n                \"line_num\": 32,\n                \"path\": \"./tests/samples/doc_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"Password\",\n                \"variable_start\": 0,\n                \"variable_end\": 8,\n                \"value\": \"Prl23Db#@\",\n                \"value_start\": 9,\n                \"value_end\": 18,\n                \"entropy\": 3.16993\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.926,\n        \"line_data_list\": [\n            {\n                \"line\": \"Password:Prl23Db#@,pwd=Prl23Db#@\",\n                \"line_num\": 32,\n                \"path\": \"./tests/samples/doc_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"pwd\",\n                \"variable_start\": 19,\n                \"variable_end\": 22,\n                \"value\": \"Prl23Db#@\",\n                \"value_start\": 23,\n                \"value_end\": 32,\n                \"entropy\": 3.16993\n            }\n        ]\n    },\n    {\n        \"rule\": \"CMD Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"-password \\\"Prl23Db#@\\\"\",\n                \"line_num\": 33,\n                \"path\": \"./tests/samples/doc_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"password\",\n                \"variable_start\": 1,\n                \"variable_end\": 9,\n                \"value\": \"Prl23Db#@\",\n                \"value_start\": 11,\n                \"value_end\": 20,\n                \"entropy\": 3.16993\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.997,\n        \"line_data_list\": [\n            {\n                \"line\": \"ANY_password:Prl23Db#@\",\n                \"line_num\": 34,\n                \"path\": \"./tests/samples/doc_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"ANY_password\",\n                \"variable_start\": 0,\n                \"variable_end\": 12,\n                \"value\": \"Prl23Db#@\",\n                \"value_start\": 13,\n                \"value_end\": 22,\n                \"entropy\": 3.16993\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.998,\n        \"line_data_list\": [\n            {\n                \"line\": \"--password=Prl23Db#@\",\n                \"line_num\": 37,\n                \"path\": \"./tests/samples/doc_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"password\",\n                \"variable_start\": 2,\n                \"variable_end\": 10,\n                \"value\": \"Prl23Db#@\",\n                \"value_start\": 11,\n                \"value_end\": 20,\n                \"entropy\": 3.16993\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.999,\n        \"line_data_list\": [\n            {\n                \"line\": \"root/Prl23Db#@,root password:Prl23Db#@\",\n                \"line_num\": 38,\n                \"path\": \"./tests/samples/doc_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"password\",\n                \"variable_start\": 20,\n                \"variable_end\": 28,\n                \"value\": \"Prl23Db#@\",\n                \"value_start\": 29,\n                \"value_end\": 38,\n                \"entropy\": 3.16993\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"Prl23Db#@ username:Prl23Db#@,Prl23Db#@ password:Prl23Db#@\",\n                \"line_num\": 40,\n                \"path\": \"./tests/samples/doc_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"password\",\n                \"variable_start\": 39,\n                \"variable_end\": 47,\n                \"value\": \"Prl23Db#@\",\n                \"value_start\": 48,\n                \"value_end\": 57,\n                \"entropy\": 3.16993\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.999,\n        \"line_data_list\": [\n            {\n                \"line\": \"Prl23Db#@:password:Prl23Db#@\",\n                \"line_num\": 41,\n                \"path\": \"./tests/samples/doc_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"password\",\n                \"variable_start\": 10,\n                \"variable_end\": 18,\n                \"value\": \"Prl23Db#@\",\n                \"value_start\": 19,\n                \"value_end\": 28,\n                \"entropy\": 3.16993\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.998,\n        \"line_data_list\": [\n            {\n                \"line\": \"ANYpassword=Prl23Db#@\",\n                \"line_num\": 45,\n                \"path\": \"./tests/samples/doc_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"ANYpassword\",\n                \"variable_start\": 0,\n                \"variable_end\": 11,\n                \"value\": \"Prl23Db#@\",\n                \"value_start\": 12,\n                \"value_end\": 21,\n                \"entropy\": 3.16993\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.997,\n        \"line_data_list\": [\n            {\n                \"line\": \"passwords:Prl23Db#@\",\n                \"line_num\": 46,\n                \"path\": \"./tests/samples/doc_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"passwords\",\n                \"variable_start\": 0,\n                \"variable_end\": 9,\n                \"value\": \"Prl23Db#@\",\n                \"value_start\": 10,\n                \"value_end\": 19,\n                \"entropy\": 3.16993\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.994,\n        \"line_data_list\": [\n            {\n                \"line\": \"password=>Prl23Db#@\",\n                \"line_num\": 48,\n                \"path\": \"./tests/samples/doc_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"password\",\n                \"variable_start\": 0,\n                \"variable_end\": 8,\n                \"value\": \"Prl23Db#@\",\n                \"value_start\": 10,\n                \"value_end\": 19,\n                \"entropy\": 3.16993\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.984,\n        \"line_data_list\": [\n            {\n                \"line\": \"# password: keep empty\",\n                \"line_num\": 56,\n                \"path\": \"./tests/samples/doc_passwd_pair\",\n                \"info\": \"\",\n                \"variable\": \"password\",\n                \"variable_start\": 2,\n                \"variable_end\": 10,\n                \"value\": \"keep\",\n                \"value_start\": 12,\n                \"value_end\": 16,\n                \"entropy\": 1.5\n            }\n        ]\n    },\n    {\n        \"rule\": \"Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"ANY-Token:AIhq5Xyb1Gga9Q0\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/doc_secret_pair\",\n                \"info\": \"\",\n                \"variable\": \"ANY-Token\",\n                \"variable_start\": 0,\n                \"variable_end\": 9,\n                \"value\": \"AIhq5Xyb1Gga9Q0\",\n                \"value_start\": 10,\n                \"value_end\": 25,\n                \"entropy\": 3.90689\n            }\n        ]\n    },\n    {\n        \"rule\": \"Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"token:AIhq5Xyb1Gga9Q2\",\n                \"line_num\": 3,\n                \"path\": \"./tests/samples/doc_secret_pair\",\n                \"info\": \"\",\n                \"variable\": \"token\",\n                \"variable_start\": 0,\n                \"variable_end\": 5,\n                \"value\": \"AIhq5Xyb1Gga9Q2\",\n                \"value_start\": 6,\n                \"value_end\": 21,\n                \"entropy\": 3.90689\n            }\n        ]\n    },\n    {\n        \"rule\": \"Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"SECRET KEY:AIhq5Xyb1Gga9Q3\",\n                \"line_num\": 4,\n                \"path\": \"./tests/samples/doc_secret_pair\",\n                \"info\": \"\",\n                \"variable\": \"KEY\",\n                \"variable_start\": 7,\n                \"variable_end\": 10,\n                \"value\": \"AIhq5Xyb1Gga9Q3\",\n                \"value_start\": 11,\n                \"value_end\": 26,\n                \"entropy\": 3.90689\n            }\n        ]\n    },\n    {\n        \"rule\": \"Secret\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"SECRET KEY:AIhq5Xyb1Gga9Q3\",\n                \"line_num\": 4,\n                \"path\": \"./tests/samples/doc_secret_pair\",\n                \"info\": \"\",\n                \"variable\": \"SECRET KEY\",\n                \"variable_start\": 0,\n                \"variable_end\": 10,\n                \"value\": \"AIhq5Xyb1Gga9Q3\",\n                \"value_start\": 11,\n                \"value_end\": 26,\n                \"entropy\": 3.90689\n            }\n        ]\n    },\n    {\n        \"rule\": \"Secret\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"secret=AIhq5Xyb1Gga9Q4\",\n                \"line_num\": 5,\n                \"path\": \"./tests/samples/doc_secret_pair\",\n                \"info\": \"\",\n                \"variable\": \"secret\",\n                \"variable_start\": 0,\n                \"variable_end\": 6,\n                \"value\": \"AIhq5Xyb1Gga9Q4\",\n                \"value_start\": 7,\n                \"value_end\": 22,\n                \"entropy\": 3.90689\n            }\n        ]\n    },\n    {\n        \"rule\": \"CMD Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"--token AIhq5Xyb1Gga9Q5\",\n                \"line_num\": 6,\n                \"path\": \"./tests/samples/doc_secret_pair\",\n                \"info\": \"\",\n                \"variable\": \"token\",\n                \"variable_start\": 2,\n                \"variable_end\": 7,\n                \"value\": \"AIhq5Xyb1Gga9Q5\",\n                \"value_start\": 8,\n                \"value_end\": 23,\n                \"entropy\": 3.77356\n            }\n        ]\n    },\n    {\n        \"rule\": \"Secret\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"secret:AIhq5Xyb1Gga9Q6\",\n                \"line_num\": 7,\n                \"path\": \"./tests/samples/doc_secret_pair\",\n                \"info\": \"\",\n                \"variable\": \"secret\",\n                \"variable_start\": 0,\n                \"variable_end\": 6,\n                \"value\": \"AIhq5Xyb1Gga9Q6\",\n                \"value_start\": 7,\n                \"value_end\": 22,\n                \"entropy\": 3.90689\n            }\n        ]\n    },\n    {\n        \"rule\": \"Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"ANY_token=AIhq5Xyb1Gga9Q7\",\n                \"line_num\": 8,\n                \"path\": \"./tests/samples/doc_secret_pair\",\n                \"info\": \"\",\n                \"variable\": \"ANY_token\",\n                \"variable_start\": 0,\n                \"variable_end\": 9,\n                \"value\": \"AIhq5Xyb1Gga9Q7\",\n                \"value_start\": 10,\n                \"value_end\": 25,\n                \"entropy\": 3.90689\n            }\n        ]\n    },\n    {\n        \"rule\": \"CMD Secret\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"-secret AIhq5Xyb1Gga9Q10\",\n                \"line_num\": 11,\n                \"path\": \"./tests/samples/doc_secret_pair\",\n                \"info\": \"\",\n                \"variable\": \"secret\",\n                \"variable_start\": 1,\n                \"variable_end\": 7,\n                \"value\": \"AIhq5Xyb1Gga9Q10\",\n                \"value_start\": 8,\n                \"value_end\": 24,\n                \"entropy\": 3.875\n            }\n        ]\n    },\n    {\n        \"rule\": \"Secret\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"ANY.secret=AIhq5Xyb1Gga9Q19\",\n                \"line_num\": 20,\n                \"path\": \"./tests/samples/doc_secret_pair\",\n                \"info\": \"\",\n                \"variable\": \"ANY.secret\",\n                \"variable_start\": 0,\n                \"variable_end\": 10,\n                \"value\": \"AIhq5Xyb1Gga9Q19\",\n                \"value_start\": 11,\n                \"value_end\": 27,\n                \"entropy\": 3.75\n            }\n        ]\n    },\n    {\n        \"rule\": \"Secret\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"--secret=AIhq5Xyb1Gga9Q21\",\n                \"line_num\": 22,\n                \"path\": \"./tests/samples/doc_secret_pair\",\n                \"info\": \"\",\n                \"variable\": \"secret\",\n                \"variable_start\": 2,\n                \"variable_end\": 8,\n                \"value\": \"AIhq5Xyb1Gga9Q21\",\n                \"value_start\": 9,\n                \"value_end\": 25,\n                \"entropy\": 3.875\n            }\n        ]\n    },\n    {\n        \"rule\": \"Secret\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"ANY_secret:AIhq5Xyb1Gga9Q22\",\n                \"line_num\": 23,\n                \"path\": \"./tests/samples/doc_secret_pair\",\n                \"info\": \"\",\n                \"variable\": \"ANY_secret\",\n                \"variable_start\": 0,\n                \"variable_end\": 10,\n                \"value\": \"AIhq5Xyb1Gga9Q22\",\n                \"value_start\": 11,\n                \"value_end\": 27,\n                \"entropy\": 3.875\n            }\n        ]\n    },\n    {\n        \"rule\": \"Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"-Token:AIhq5Xyb1Gga9Q23\",\n                \"line_num\": 24,\n                \"path\": \"./tests/samples/doc_secret_pair\",\n                \"info\": \"\",\n                \"variable\": \"Token\",\n                \"variable_start\": 1,\n                \"variable_end\": 6,\n                \"value\": \"AIhq5Xyb1Gga9Q23\",\n                \"value_start\": 7,\n                \"value_end\": 23,\n                \"entropy\": 4.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"API\",\n        \"severity\": \"low\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"API Secret:AIhq5Xyb1Gga9Q24\",\n                \"line_num\": 25,\n                \"path\": \"./tests/samples/doc_secret_pair\",\n                \"info\": \"\",\n                \"variable\": \"API Secret\",\n                \"variable_start\": 0,\n                \"variable_end\": 10,\n                \"value\": \"AIhq5Xyb1Gga9Q24\",\n                \"value_start\": 11,\n                \"value_end\": 27,\n                \"entropy\": 4.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"Secret\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"API Secret:AIhq5Xyb1Gga9Q24\",\n                \"line_num\": 25,\n                \"path\": \"./tests/samples/doc_secret_pair\",\n                \"info\": \"\",\n                \"variable\": \"Secret\",\n                \"variable_start\": 4,\n                \"variable_end\": 10,\n                \"value\": \"AIhq5Xyb1Gga9Q24\",\n                \"value_start\": 11,\n                \"value_end\": 27,\n                \"entropy\": 4.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"access key:AIhq5Xyb1Gga9Q26\",\n                \"line_num\": 27,\n                \"path\": \"./tests/samples/doc_secret_pair\",\n                \"info\": \"\",\n                \"variable\": \"key\",\n                \"variable_start\": 7,\n                \"variable_end\": 10,\n                \"value\": \"AIhq5Xyb1Gga9Q26\",\n                \"value_start\": 11,\n                \"value_end\": 27,\n                \"entropy\": 4.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"Secret Key:AIhq5Xyb1Gga9Q27\",\n                \"line_num\": 28,\n                \"path\": \"./tests/samples/doc_secret_pair\",\n                \"info\": \"\",\n                \"variable\": \"Key\",\n                \"variable_start\": 7,\n                \"variable_end\": 10,\n                \"value\": \"AIhq5Xyb1Gga9Q27\",\n                \"value_start\": 11,\n                \"value_end\": 27,\n                \"entropy\": 4.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"Secret\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"Secret Key:AIhq5Xyb1Gga9Q27\",\n                \"line_num\": 28,\n                \"path\": \"./tests/samples/doc_secret_pair\",\n                \"info\": \"\",\n                \"variable\": \"Secret Key\",\n                \"variable_start\": 0,\n                \"variable_end\": 10,\n                \"value\": \"AIhq5Xyb1Gga9Q27\",\n                \"value_start\": 11,\n                \"value_end\": 27,\n                \"entropy\": 4.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"ANY_key=AIhq5Xyb1Gga9Q29\",\n                \"line_num\": 30,\n                \"path\": \"./tests/samples/doc_secret_pair\",\n                \"info\": \"\",\n                \"variable\": \"ANY_key\",\n                \"variable_start\": 0,\n                \"variable_end\": 7,\n                \"value\": \"AIhq5Xyb1Gga9Q29\",\n                \"value_start\": 8,\n                \"value_end\": 24,\n                \"entropy\": 3.875\n            }\n        ]\n    },\n    {\n        \"rule\": \"Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"secret-ANYkey:AIhq5Xyb1Gga9Q30\",\n                \"line_num\": 31,\n                \"path\": \"./tests/samples/doc_secret_pair\",\n                \"info\": \"\",\n                \"variable\": \"secret-ANYkey\",\n                \"variable_start\": 0,\n                \"variable_end\": 13,\n                \"value\": \"AIhq5Xyb1Gga9Q30\",\n                \"value_start\": 14,\n                \"value_end\": 30,\n                \"entropy\": 4.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"Secret\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"secret-ANYkey:AIhq5Xyb1Gga9Q30\",\n                \"line_num\": 31,\n                \"path\": \"./tests/samples/doc_secret_pair\",\n                \"info\": \"\",\n                \"variable\": \"secret-ANYkey\",\n                \"variable_start\": 0,\n                \"variable_end\": 13,\n                \"value\": \"AIhq5Xyb1Gga9Q30\",\n                \"value_start\": 14,\n                \"value_end\": 30,\n                \"entropy\": 4.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"ANY_id=AIhq5Xyb1Gga9Q31 ANY_token=AIhq5Xyb1Gga9Q31\",\n                \"line_num\": 32,\n                \"path\": \"./tests/samples/doc_secret_pair\",\n                \"info\": \"\",\n                \"variable\": \"ANY_token\",\n                \"variable_start\": 24,\n                \"variable_end\": 33,\n                \"value\": \"AIhq5Xyb1Gga9Q31\",\n                \"value_start\": 34,\n                \"value_end\": 50,\n                \"entropy\": 3.875\n            }\n        ]\n    },\n    {\n        \"rule\": \"Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"access_token:AIhq5Xyb1Gga9Q33\",\n                \"line_num\": 34,\n                \"path\": \"./tests/samples/doc_secret_pair\",\n                \"info\": \"\",\n                \"variable\": \"access_token\",\n                \"variable_start\": 0,\n                \"variable_end\": 12,\n                \"value\": \"AIhq5Xyb1Gga9Q33\",\n                \"value_start\": 13,\n                \"value_end\": 29,\n                \"entropy\": 3.875\n            }\n        ]\n    },\n    {\n        \"rule\": \"Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"Authentication key:AIhq5Xyb1Gga9Q35\",\n                \"line_num\": 36,\n                \"path\": \"./tests/samples/doc_secret_pair\",\n                \"info\": \"\",\n                \"variable\": \"key\",\n                \"variable_start\": 15,\n                \"variable_end\": 18,\n                \"value\": \"AIhq5Xyb1Gga9Q35\",\n                \"value_start\": 19,\n                \"value_end\": 35,\n                \"entropy\": 3.875\n            }\n        ]\n    },\n    {\n        \"rule\": \"Auth\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"Authentication key:AIhq5Xyb1Gga9Q35\",\n                \"line_num\": 36,\n                \"path\": \"./tests/samples/doc_secret_pair\",\n                \"info\": \"\",\n                \"variable\": \"Authentication key\",\n                \"variable_start\": 0,\n                \"variable_end\": 18,\n                \"value\": \"AIhq5Xyb1Gga9Q35\",\n                \"value_start\": 19,\n                \"value_end\": 35,\n                \"entropy\": 3.875\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"master@98.76.54.32(pw:IhqSb1Gg)\",\n                \"line_num\": 3,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"\",\n                \"variable\": \"pw\",\n                \"variable_start\": 19,\n                \"variable_end\": 21,\n                \"value\": \"IhqSb1Gg\",\n                \"value_start\": 22,\n                \"value_end\": 30,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.964,\n        \"line_data_list\": [\n            {\n                \"line\": \"ID:gildong.hong@example.com mailto:{1} PW:IhqSb1Gg\",\n                \"line_num\": 4,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"\",\n                \"variable\": \"PW\",\n                \"variable_start\": 39,\n                \"variable_end\": 41,\n                \"value\": \"IhqSb1Gg\",\n                \"value_start\": 42,\n                \"value_end\": 50,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.999,\n        \"line_data_list\": [\n            {\n                \"line\": \"ssh gildong.hong@98.76.54.32 mailto:{1} (PW:IhqSb1Gg)\",\n                \"line_num\": 6,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"\",\n                \"variable\": \"PW\",\n                \"variable_start\": 41,\n                \"variable_end\": 43,\n                \"value\": \"IhqSb1Gg\",\n                \"value_start\": 44,\n                \"value_end\": 52,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"ssh gildong.hong@98.76.54.32 mailto:{1} password:IhqSb1Gg\",\n                \"line_num\": 7,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"\",\n                \"variable\": \"password\",\n                \"variable_start\": 40,\n                \"variable_end\": 48,\n                \"value\": \"IhqSb1Gg\",\n                \"value_start\": 49,\n                \"value_end\": 57,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"ssh -P IhqSb1Gg gildong.hong@98.76.54.32 mailto:{1} (password:IhqSb1Gg)\",\n                \"line_num\": 11,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"\",\n                \"variable\": \"password\",\n                \"variable_start\": 53,\n                \"variable_end\": 61,\n                \"value\": \"IhqSb1Gg\",\n                \"value_start\": 62,\n                \"value_end\": 70,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"gildong.hong@98.76.54.32 pwd:IhqSb1Gg\",\n                \"line_num\": 15,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"\",\n                \"variable\": \"pwd\",\n                \"variable_start\": 25,\n                \"variable_end\": 28,\n                \"value\": \"IhqSb1Gg\",\n                \"value_start\": 29,\n                \"value_end\": 37,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.999,\n        \"line_data_list\": [\n            {\n                \"line\": \"98.76.54.32(pw:IhqSb1Gg)\",\n                \"line_num\": 17,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"\",\n                \"variable\": \"pw\",\n                \"variable_start\": 12,\n                \"variable_end\": 14,\n                \"value\": \"IhqSb1Gg\",\n                \"value_start\": 15,\n                \"value_end\": 23,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.999,\n        \"line_data_list\": [\n            {\n                \"line\": \"98.76.54.32/pw:IhqSb1Gg\",\n                \"line_num\": 19,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"\",\n                \"variable\": \"pw\",\n                \"variable_start\": 12,\n                \"variable_end\": 14,\n                \"value\": \"IhqSb1Gg\",\n                \"value_start\": 15,\n                \"value_end\": 23,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.998,\n        \"line_data_list\": [\n            {\n                \"line\": \"ID:gildong.hong@example.com mailto:{1}/pw:IhqSb1Gg\",\n                \"line_num\": 20,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"\",\n                \"variable\": \"pw\",\n                \"variable_start\": 39,\n                \"variable_end\": 41,\n                \"value\": \"IhqSb1Gg\",\n                \"value_start\": 42,\n                \"value_end\": 50,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.97,\n        \"line_data_list\": [\n            {\n                \"line\": \"ID:gildong.hong@any.example.com mailto:{1} PWD:IhqSb1Gg\",\n                \"line_num\": 21,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"\",\n                \"variable\": \"PWD\",\n                \"variable_start\": 43,\n                \"variable_end\": 46,\n                \"value\": \"IhqSb1Gg\",\n                \"value_start\": 47,\n                \"value_end\": 55,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"sftp gildong.hong@98.76.54.32 mailto:{1} (pw:IhqSb1Gg)\",\n                \"line_num\": 22,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"\",\n                \"variable\": \"pw\",\n                \"variable_start\": 42,\n                \"variable_end\": 44,\n                \"value\": \"IhqSb1Gg\",\n                \"value_start\": 45,\n                \"value_end\": 53,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"gildong.hong@98.76.54.32 mailto:{1} (pw:IhqSb1Gg)\",\n                \"line_num\": 23,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"\",\n                \"variable\": \"pw\",\n                \"variable_start\": 37,\n                \"variable_end\": 39,\n                \"value\": \"IhqSb1Gg\",\n                \"value_start\": 40,\n                \"value_end\": 48,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.997,\n        \"line_data_list\": [\n            {\n                \"line\": \"-id:gildong.hong@example.com mailto:{1} -pwd:IhqSb1Gg\",\n                \"line_num\": 24,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"\",\n                \"variable\": \"pwd\",\n                \"variable_start\": 41,\n                \"variable_end\": 44,\n                \"value\": \"IhqSb1Gg\",\n                \"value_start\": 45,\n                \"value_end\": 53,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"ssh gildong.hong@98.76.54.32 mailto:{1} (password:IhqSb1Gg)\",\n                \"line_num\": 25,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"\",\n                \"variable\": \"password\",\n                \"variable_start\": 41,\n                \"variable_end\": 49,\n                \"value\": \"IhqSb1Gg\",\n                \"value_start\": 50,\n                \"value_end\": 58,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"id:gildong.hong@example.com mailto:{1} password:IhqSb1Gg\",\n                \"line_num\": 28,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"\",\n                \"variable\": \"password\",\n                \"variable_start\": 39,\n                \"variable_end\": 47,\n                \"value\": \"IhqSb1Gg\",\n                \"value_start\": 48,\n                \"value_end\": 56,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.997,\n        \"line_data_list\": [\n            {\n                \"line\": \"ANY_password,default:IhqSb1Gg\",\n                \"line_num\": 31,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"\",\n                \"variable\": \"ANY_password,default\",\n                \"variable_start\": 0,\n                \"variable_end\": 20,\n                \"value\": \"IhqSb1Gg\",\n                \"value_start\": 21,\n                \"value_end\": 29,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"Secret\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.996,\n        \"line_data_list\": [\n            {\n                \"line\": \"Key(ANYSecret):IhqSb1Gg\",\n                \"line_num\": 32,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"\",\n                \"variable\": \"ANYSecret)\",\n                \"variable_start\": 4,\n                \"variable_end\": 14,\n                \"value\": \"IhqSb1Gg\",\n                \"value_start\": 15,\n                \"value_end\": 23,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.999,\n        \"line_data_list\": [\n            {\n                \"line\": \"98.76.54.32 ANY_PW:IhqSb1Gg\",\n                \"line_num\": 34,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"\",\n                \"variable\": \"ANY_PW\",\n                \"variable_start\": 12,\n                \"variable_end\": 18,\n                \"value\": \"IhqSb1Gg\",\n                \"value_start\": 19,\n                \"value_end\": 27,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.995,\n        \"line_data_list\": [\n            {\n                \"line\": \"98.76.54.32(ID/PW:IhqSb1Gg)\",\n                \"line_num\": 36,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"\",\n                \"variable\": \"PW\",\n                \"variable_start\": 15,\n                \"variable_end\": 17,\n                \"value\": \"IhqSb1Gg\",\n                \"value_start\": 18,\n                \"value_end\": 26,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"gildong.hong@98.76.54.32 (pwd:IhqSb1Gg)\",\n                \"line_num\": 38,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"\",\n                \"variable\": \"pwd\",\n                \"variable_start\": 26,\n                \"variable_end\": 29,\n                \"value\": \"IhqSb1Gg\",\n                \"value_start\": 30,\n                \"value_end\": 38,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.996,\n        \"line_data_list\": [\n            {\n                \"line\": \"password for master:IhqSb1Gg\",\n                \"line_num\": 43,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"\",\n                \"variable\": \"password for master\",\n                \"variable_start\": 0,\n                \"variable_end\": 19,\n                \"value\": \"IhqSb1Gg\",\n                \"value_start\": 20,\n                \"value_end\": 28,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.992,\n        \"line_data_list\": [\n            {\n                \"line\": \"id:xxxx(ANYpw:IhqSb1Ga)\",\n                \"line_num\": 46,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"\",\n                \"variable\": \"ANYpw\",\n                \"variable_start\": 8,\n                \"variable_end\": 13,\n                \"value\": \"IhqSb1Ga\",\n                \"value_start\": 14,\n                \"value_end\": 22,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"gildong.hong@98.76.54.32,pw:IhqSb1Gg\",\n                \"line_num\": 47,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"\",\n                \"variable\": \"pw\",\n                \"variable_start\": 25,\n                \"variable_end\": 27,\n                \"value\": \"IhqSb1Gg\",\n                \"value_start\": 28,\n                \"value_end\": 36,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.998,\n        \"line_data_list\": [\n            {\n                \"line\": \"98.76.54.32:xxxx(PW:IhqSb1Gg)\",\n                \"line_num\": 51,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"\",\n                \"variable\": \"PW\",\n                \"variable_start\": 17,\n                \"variable_end\": 19,\n                \"value\": \"IhqSb1Gg\",\n                \"value_start\": 20,\n                \"value_end\": 28,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.999,\n        \"line_data_list\": [\n            {\n                \"line\": \"gildong.hong@98.76.54.32 PW:IhqSb1Gg\",\n                \"line_num\": 56,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"\",\n                \"variable\": \"PW\",\n                \"variable_start\": 25,\n                \"variable_end\": 27,\n                \"value\": \"IhqSb1Gg\",\n                \"value_start\": 28,\n                \"value_end\": 36,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.999,\n        \"line_data_list\": [\n            {\n                \"line\": \"ANY_user:xxxx ANY_pwd:IhqSb1Gg\",\n                \"line_num\": 61,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"\",\n                \"variable\": \"ANY_pwd\",\n                \"variable_start\": 14,\n                \"variable_end\": 21,\n                \"value\": \"IhqSb1Gg\",\n                \"value_start\": 22,\n                \"value_end\": 30,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"Acount name:xxxx Initial Password:IhqSb1Gg\",\n                \"line_num\": 62,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"\",\n                \"variable\": \"Password\",\n                \"variable_start\": 25,\n                \"variable_end\": 33,\n                \"value\": \"IhqSb1Gg\",\n                \"value_start\": 34,\n                \"value_end\": 42,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.997,\n        \"line_data_list\": [\n            {\n                \"line\": \"Access wifi:xxxx(PW:IhqSb1Gg)\",\n                \"line_num\": 63,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"\",\n                \"variable\": \"PW\",\n                \"variable_start\": 17,\n                \"variable_end\": 19,\n                \"value\": \"IhqSb1Gg\",\n                \"value_start\": 20,\n                \"value_end\": 28,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"-User:master -PasswordANY:IhqSb1Gg\",\n                \"line_num\": 66,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"\",\n                \"variable\": \"PasswordANY\",\n                \"variable_start\": 14,\n                \"variable_end\": 25,\n                \"value\": \"IhqSb1Gg\",\n                \"value_start\": 26,\n                \"value_end\": 34,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"master@98.76.54.32(pw:IhqSb1Gg)\",\n                \"line_num\": 73,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"\",\n                \"variable\": \"pw\",\n                \"variable_start\": 19,\n                \"variable_end\": 21,\n                \"value\": \"IhqSb1Gg\",\n                \"value_start\": 22,\n                \"value_end\": 30,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.999,\n        \"line_data_list\": [\n            {\n                \"line\": \"master@98.76.54.32,PW:IhqSb1Gg\",\n                \"line_num\": 74,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"\",\n                \"variable\": \"PW\",\n                \"variable_start\": 19,\n                \"variable_end\": 21,\n                \"value\": \"IhqSb1Gg\",\n                \"value_start\": 22,\n                \"value_end\": 30,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"98.76.54.32 pw:IhqSb1Gg\",\n                \"line_num\": 75,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"\",\n                \"variable\": \"pw\",\n                \"variable_start\": 12,\n                \"variable_end\": 14,\n                \"value\": \"IhqSb1Gg\",\n                \"value_start\": 15,\n                \"value_end\": 23,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.996,\n        \"line_data_list\": [\n            {\n                \"line\": \"config:xxxx,PW:IhqSb1Gg\",\n                \"line_num\": 78,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"\",\n                \"variable\": \"PW\",\n                \"variable_start\": 12,\n                \"variable_end\": 14,\n                \"value\": \"IhqSb1Gg\",\n                \"value_start\": 15,\n                \"value_end\": 23,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"scp gildong.hong@98.76.54.32 mailto:{1} pw:IhqSb1Gg\",\n                \"line_num\": 82,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"\",\n                \"variable\": \"pw\",\n                \"variable_start\": 40,\n                \"variable_end\": 42,\n                \"value\": \"IhqSb1Gg\",\n                \"value_start\": 43,\n                \"value_end\": 51,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"id:gildong.hong@xxx.com mailto:{1} pw:IhqSb1Gg\",\n                \"line_num\": 83,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"\",\n                \"variable\": \"pw\",\n                \"variable_start\": 35,\n                \"variable_end\": 37,\n                \"value\": \"IhqSb1Gg\",\n                \"value_start\": 38,\n                \"value_end\": 46,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"gildong.hong@98.76.54.32 mailto:{1} pw:IhqSb1Gg\",\n                \"line_num\": 84,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"\",\n                \"variable\": \"pw\",\n                \"variable_start\": 36,\n                \"variable_end\": 38,\n                \"value\": \"IhqSb1Gg\",\n                \"value_start\": 39,\n                \"value_end\": 47,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"ssh gildong.hong@98.76.54.32 mailto:{1},pw:IhqSb1Gg\",\n                \"line_num\": 85,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"\",\n                \"variable\": \"pw\",\n                \"variable_start\": 40,\n                \"variable_end\": 42,\n                \"value\": \"IhqSb1Gg\",\n                \"value_start\": 43,\n                \"value_end\": 51,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"(ssh gildong.hong@98.76.54.32 mailto{1}) pwd:IhqSb1Gg\",\n                \"line_num\": 87,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"\",\n                \"variable\": \"pwd\",\n                \"variable_start\": 41,\n                \"variable_end\": 44,\n                \"value\": \"IhqSb1Gg\",\n                \"value_start\": 45,\n                \"value_end\": 53,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"ssh gildong.hong@98.76.54.32 mailto:{1}, pw:IhqSb1Gg\",\n                \"line_num\": 90,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"\",\n                \"variable\": \"pw\",\n                \"variable_start\": 41,\n                \"variable_end\": 43,\n                \"value\": \"IhqSb1Gg\",\n                \"value_start\": 44,\n                \"value_end\": 52,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"ssh gildong.hong@98.76.54.32 mailto:{1} (pwd:IhqSb1Gg)\",\n                \"line_num\": 93,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"\",\n                \"variable\": \"pwd\",\n                \"variable_start\": 41,\n                \"variable_end\": 44,\n                \"value\": \"IhqSb1Gg\",\n                \"value_start\": 45,\n                \"value_end\": 53,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"gildong.hong@98.76.54.32 mailto:{1} (password:IhqSb1Gg)\",\n                \"line_num\": 94,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"\",\n                \"variable\": \"password\",\n                \"variable_start\": 37,\n                \"variable_end\": 45,\n                \"value\": \"IhqSb1Gg\",\n                \"value_start\": 46,\n                \"value_end\": 54,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"gildong.hong@98.76.54.32 mailto:{1} Password:IhqSb1Gg\",\n                \"line_num\": 96,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"\",\n                \"variable\": \"Password\",\n                \"variable_start\": 36,\n                \"variable_end\": 44,\n                \"value\": \"IhqSb1Gg\",\n                \"value_start\": 45,\n                \"value_end\": 53,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"gildong.hong@98.76.54.32 mailto:{1} (pass:IhqSb1Gg)\",\n                \"line_num\": 97,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"\",\n                \"variable\": \"pass\",\n                \"variable_start\": 37,\n                \"variable_end\": 41,\n                \"value\": \"IhqSb1Gg\",\n                \"value_start\": 42,\n                \"value_end\": 50,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"ssh gildong.hong@98.76.54.32 mailto:{1} pw:IhqSb1Gg\",\n                \"line_num\": 100,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"\",\n                \"variable\": \"pw\",\n                \"variable_start\": 40,\n                \"variable_end\": 42,\n                \"value\": \"IhqSb1Gg\",\n                \"value_start\": 43,\n                \"value_end\": 51,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"ssh gildong.hong@98.76.54.32 mailto:{1} pass:IhqSb1Gg\",\n                \"line_num\": 101,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"\",\n                \"variable\": \"pass\",\n                \"variable_start\": 40,\n                \"variable_end\": 44,\n                \"value\": \"IhqSb1Gg\",\n                \"value_start\": 45,\n                \"value_end\": 53,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"id:gildong.hong@xxx.com mailto:{1}/password:IhqSb1Gg\",\n                \"line_num\": 102,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"\",\n                \"variable\": \"password\",\n                \"variable_start\": 35,\n                \"variable_end\": 43,\n                \"value\": \"IhqSb1Gg\",\n                \"value_start\": 44,\n                \"value_end\": 52,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"ssh gildong.hong@98.76.54.32 mailto:{1}/password:IhqSb1Gg\",\n                \"line_num\": 104,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"\",\n                \"variable\": \"password\",\n                \"variable_start\": 40,\n                \"variable_end\": 48,\n                \"value\": \"IhqSb1Gg\",\n                \"value_start\": 49,\n                \"value_end\": 57,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.998,\n        \"line_data_list\": [\n            {\n                \"line\": \"-ANYID:gildong.hong@example.com mailto:{1} -pw:IhqSb1Gg\",\n                \"line_num\": 105,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"\",\n                \"variable\": \"pw\",\n                \"variable_start\": 44,\n                \"variable_end\": 46,\n                \"value\": \"IhqSb1Gg\",\n                \"value_start\": 47,\n                \"value_end\": 55,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"ID:gildong.hong@xxxx.net mailto:{1} pw:IhqSb1Gg\",\n                \"line_num\": 106,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"\",\n                \"variable\": \"pw\",\n                \"variable_start\": 36,\n                \"variable_end\": 38,\n                \"value\": \"IhqSb1Gg\",\n                \"value_start\": 39,\n                \"value_end\": 47,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.998,\n        \"line_data_list\": [\n            {\n                \"line\": \"http://98.76.54.32:xxx(pw:IhqSb1Gg)\",\n                \"line_num\": 108,\n                \"path\": \"./tests/samples/doc_various\",\n                \"info\": \"\",\n                \"variable\": \"pw\",\n                \"variable_start\": 23,\n                \"variable_end\": 25,\n                \"value\": \"IhqSb1Gg\",\n                \"value_start\": 26,\n                \"value_end\": 34,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"Docker Access Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"POSITIVE: dckr_pat_mcF-hLK_JoBxXUNJy1kU7-WSbk0\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/docker\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"dckr_pat_mcF-hLK_JoBxXUNJy1kU7-WSbk0\",\n                \"value_start\": 10,\n                \"value_end\": 46,\n                \"entropy\": 4.68354\n            }\n        ]\n    },\n    {\n        \"rule\": \"Docker Access Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"NEGATIVE: dckr_pat_EXAMPLE-EXAMPLE-EXAMPLE-123\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/docker\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"dckr_pat_EXAMPLE-EXAMPLE-EXAMPLE-123\",\n                \"value_start\": 10,\n                \"value_end\": 46,\n                \"entropy\": 3.89106\n            }\n        ]\n    },\n    {\n        \"rule\": \"Docker Access Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"POSITIVE: dckr_oat_fXUgJy1nU2WSbk_0vH2S-mcF-hLKJoB-\",\n                \"line_num\": 3,\n                \"path\": \"./tests/samples/docker\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"dckr_oat_fXUgJy1nU2WSbk_0vH2S-mcF-hLKJoB-\",\n                \"value_start\": 10,\n                \"value_end\": 51,\n                \"entropy\": 4.78414\n            }\n        ]\n    },\n    {\n        \"rule\": \"Docker Swarm Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"POSITIVE: SWMTKN-1-edmua5ub12inlget8wkvz35kckxkeyznuvc49brsy84wgfssrw-otjll8wdy3yikfrksskvqzqh1\",\n                \"line_num\": 4,\n                \"path\": \"./tests/samples/docker\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"SWMTKN-1-edmua5ub12inlget8wkvz35kckxkeyznuvc49brsy84wgfssrw-otjll8wdy3yikfrksskvqzqh1\",\n                \"value_start\": 10,\n                \"value_end\": 95,\n                \"entropy\": 5.06757\n            }\n        ]\n    },\n    {\n        \"rule\": \"Docker Swarm Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"POSITIVE: SWMKEY-1-fySn8TY4w5lKcWcJPIpKufejh9hxx5KYwx6XZigx3Q4\",\n                \"line_num\": 6,\n                \"path\": \"./tests/samples/docker\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"SWMKEY-1-fySn8TY4w5lKcWcJPIpKufejh9hxx5KYwx6XZigx3Q4\",\n                \"value_start\": 10,\n                \"value_end\": 62,\n                \"entropy\": 4.95515\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.999,\n        \"line_data_list\": [\n            {\n                \"line\": \"        <mxCell id=\\\"ip0j-2\\\" value=\\\"&lt;div&gt;password is NsIdksKJdj&lt;/div&gt;&lt;div&gt;token is bace4d19-fa7e-b2e4-1afe-9129474bcd81&lt;br&gt;Password: &quot;Dw7^&amp;amp;nd&amp;lt;dj&quot;&lt;br&gt;&lt;/div&gt;\\\" style=\\\"rounded=0;whiteSpace=wrap;html=1;\\\" parent=\\\"1\\\" vertex=\\\"1\\\">\",\n                \"line_num\": 13,\n                \"path\": \"./tests/samples/drawio\",\n                \"info\": \"\",\n                \"variable\": \"Password\",\n                \"variable_start\": 146,\n                \"variable_end\": 154,\n                \"value\": \"Dw7^&amp;amp;nd&amp;lt;dj\",\n                \"value_start\": 162,\n                \"value_end\": 187,\n                \"entropy\": 3.59327\n            }\n        ]\n    },\n    {\n        \"rule\": \"UUID\",\n        \"severity\": \"info\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"        <mxCell id=\\\"ip0j-2\\\" value=\\\"&lt;div&gt;password is NsIdksKJdj&lt;/div&gt;&lt;div&gt;token is bace4d19-fa7e-b2e4-1afe-9129474bcd81&lt;br&gt;Password: &quot;Dw7^&amp;amp;nd&amp;lt;dj&quot;&lt;br&gt;&lt;/div&gt;\\\" style=\\\"rounded=0;whiteSpace=wrap;html=1;\\\" parent=\\\"1\\\" vertex=\\\"1\\\">\",\n                \"line_num\": 13,\n                \"path\": \"./tests/samples/drawio\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"bace4d19-fa7e-b2e4-1afe-9129474bcd81\",\n                \"value_start\": 100,\n                \"value_end\": 136,\n                \"entropy\": 3.60702\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.991,\n        \"line_data_list\": [\n            {\n                \"line\": \"        <mxCell id=\\\"REcl-1\\\" value=\\\"&lt;div&gt;textpassword: Df34D&amp;lt;345&amp;amp;&amp;gt;gf&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;\\\" style=\\\"text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;\\\" parent=\\\"1\\\" vertex=\\\"1\\\">\",\n                \"line_num\": 16,\n                \"path\": \"./tests/samples/drawio\",\n                \"info\": \"\",\n                \"variable\": \"textpassword\",\n                \"variable_start\": 46,\n                \"variable_end\": 58,\n                \"value\": \"Df34D&amp\",\n                \"value_start\": 60,\n                \"value_end\": 69,\n                \"entropy\": 2.9477\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.998,\n        \"line_data_list\": [\n            {\n                \"line\": \"        <mxCell id=\\\"REcl-6\\\" value=\\\"pass: Dsfgh%$d&amp;lt;&amp;gt;s&amp;amp;\\\" style=\\\"text;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;spacingLeft=4;spacingRight=4;overflow=hidden;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rotatable=0;whiteSpace=wrap;html=1;\\\" parent=\\\"REcl-5\\\" vertex=\\\"1\\\">\",\n                \"line_num\": 34,\n                \"path\": \"./tests/samples/drawio\",\n                \"info\": \"\",\n                \"variable\": \"pass\",\n                \"variable_start\": 35,\n                \"variable_end\": 39,\n                \"value\": \"Dsfgh%$d&amp\",\n                \"value_start\": 41,\n                \"value_end\": 53,\n                \"entropy\": 3.58496\n            }\n        ]\n    },\n    {\n        \"rule\": \"UUID\",\n        \"severity\": \"info\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"        <mxCell id=\\\"jC_dE-1\\\" value=\\\"page2 secret is ce49dba1-e4fe-b2a7-4ffa-132bcd819474\\\" style=\\\"text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;\\\" vertex=\\\"1\\\" parent=\\\"1\\\">\",\n                \"line_num\": 45,\n                \"path\": \"./tests/samples/drawio\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"ce49dba1-e4fe-b2a7-4ffa-132bcd819474\",\n                \"value_start\": 52,\n                \"value_end\": 88,\n                \"entropy\": 3.68703\n            }\n        ]\n    },\n    {\n        \"rule\": \"Dropbox API secret (long term)\",\n        \"severity\": \"high\",\n        \"confidence\": \"weak\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"var g = '7rBynGo0b1cAAAAAAAAAAc72L3T6rQK51mB5a06ijnwRG91deTxvSqdZNAlxq8pZ'\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/dropbox_api_secret_long_term\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"7rBynGo0b1cAAAAAAAAAAc72L3T6rQK51mB5a06ijnwRG91deTxvSqdZNAlxq8pZ\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 4.89362\n            }\n        ]\n    },\n    {\n        \"rule\": \"Dropbox App secret\",\n        \"severity\": \"info\",\n        \"confidence\": \"weak\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"var app_unique_val_s = 'wpv1jq9xwanbn3n';\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/dropbox_app_secret\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"wpv1jq9xwanbn3n\",\n                \"value_start\": 24,\n                \"value_end\": 39,\n                \"entropy\": 3.45656\n            }\n        ]\n    },\n    {\n        \"rule\": \"Dropbox OAuth2 API Access Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"var dropbox = 'sl.BdmpmC82mhhySscKk2oQGyE5l--8LdAQftLTXVGQhP39Z8FtAK1BhePhyevurA-Elt7ToIr6OpwzKAYE7RBqpu6VVyQU5WlCTL_Q7N4gElXahaWou6aPpOIwgGCIOq9aeC3YFoc';\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/dropbox_oauth_token\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"sl.BdmpmC82mhhySscKk2oQGyE5l--8LdAQftLTXVGQhP39Z8FtAK1BhePhyevurA-Elt7ToIr6OpwzKAYE7RBqpu6VVyQU5WlCTL_Q7N4gElXahaWou6aPpOIwgGCIOq9aeC3YFoc\",\n                \"value_start\": 15,\n                \"value_end\": 153,\n                \"entropy\": 5.61894\n            }\n        ]\n    },\n    {\n        \"rule\": \"Dynatrace API Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"dt0c01.ST2EY72KQINMH574WMNVI7YN.G3DFPBEJYMOD1DAEX454M7YWBUVEFOWKPRVMWFASS64NFH52PX6BNDVFFM572RZM\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/dynatrace_api.hs\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"dt0c01.ST2EY72KQINMH574WMNVI7YN.G3DFPBEJYMOD1DAEX454M7YWBUVEFOWKPRVMWFASS64NFH52PX6BNDVFFM572RZM\",\n                \"value_start\": 0,\n                \"value_end\": 96,\n                \"entropy\": 4.93241\n            }\n        ]\n    },\n    {\n        \"rule\": \"Facebook Access Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"GI_REO_GI_FACEBOOK_TOKEN = \\\"EAACEb00Kse0BAlGy7KeQ5YnaCEd09Eose0cBAlGy7KeQ5Yna9CoDsup39tiYdoQ4jH9Coup39tiYdWoQ4jHFZD\\\"\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/facebook_key\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"EAACEb00Kse0BAlGy7KeQ5YnaCEd09Eose0cBAlGy7KeQ5Yna9CoDsup39tiYdoQ4jH9Coup39tiYdWoQ4jHFZD\",\n                \"value_start\": 28,\n                \"value_end\": 115,\n                \"entropy\": 4.93612\n            }\n        ]\n    },\n    {\n        \"rule\": \"Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.964,\n        \"line_data_list\": [\n            {\n                \"line\": \"GI_REO_GI_FACEBOOK_TOKEN = \\\"EAACEb00Kse0BAlGy7KeQ5YnaCEd09Eose0cBAlGy7KeQ5Yna9CoDsup39tiYdoQ4jH9Coup39tiYdWoQ4jHFZD\\\"\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/facebook_key\",\n                \"info\": \"\",\n                \"variable\": \"GI_REO_GI_FACEBOOK_TOKEN\",\n                \"variable_start\": 0,\n                \"variable_end\": 24,\n                \"value\": \"EAACEb00Kse0BAlGy7KeQ5YnaCEd09Eose0cBAlGy7KeQ5Yna9CoDsup39tiYdoQ4jH9Coup39tiYdWoQ4jHFZD\",\n                \"value_start\": 28,\n                \"value_end\": 115,\n                \"entropy\": 4.93612\n            }\n        ]\n    },\n    {\n        \"rule\": \"Facebook App Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"1527194624358273|qbBf2-fdB9zZpqLA0_2nNzZDw2M\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/facebook_key\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"1527194624358273|qbBf2-fdB9zZpqLA0_2nNzZDw2M\",\n                \"value_start\": 0,\n                \"value_end\": 44,\n                \"entropy\": 4.60694\n            }\n        ]\n    },\n    {\n        \"rule\": \"Figma Personal Access Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"figd__fU7rxH-KUAmCv5vI78kKlnEF6bne_yvSvPLz3JO\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/figma\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"figd__fU7rxH-KUAmCv5vI78kKlnEF6bne_yvSvPLz3JO\",\n                \"value_start\": 0,\n                \"value_end\": 45,\n                \"entropy\": 4.98619\n            }\n        ]\n    },\n    {\n        \"rule\": \"Figma Personal Access Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"figd_h65Ugiu76WD3xf233a6KAmo9ZmbWNnNrny9Q6IHl\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/figma\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"figd_h65Ugiu76WD3xf233a6KAmo9ZmbWNnNrny9Q6IHl\",\n                \"value_start\": 0,\n                \"value_end\": 45,\n                \"entropy\": 4.85286\n            }\n        ]\n    },\n    {\n        \"rule\": \"Firebase Domain\",\n        \"severity\": \"info\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"test-app-domain-42.firebaseapp.com\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/firebase_domain\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"test-app-domain-42.firebaseapp.com\",\n                \"value_start\": 0,\n                \"value_end\": 34,\n                \"entropy\": 3.98423\n            }\n        ]\n    },\n    {\n        \"rule\": \"Firebase Domain\",\n        \"severity\": \"info\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"test2.io.firebaseio.com\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/firebase_domain\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"test2.io.firebaseio.com\",\n                \"value_start\": 0,\n                \"value_end\": 23,\n                \"entropy\": 3.52271\n            }\n        ]\n    },\n    {\n        \"rule\": \"Github Classic Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"ghp_00000000000000000000000000000004WZ4EQ # classic\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/github_classic_token\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"ghp_00000000000000000000000000000004WZ4EQ\",\n                \"value_start\": 0,\n                \"value_end\": 41,\n                \"entropy\": 1.56292\n            }\n        ]\n    },\n    {\n        \"rule\": \"Github Fine-granted Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"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\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/github_fine_granted_token\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"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\",\n                \"value_start\": 0,\n                \"value_end\": 93,\n                \"entropy\": 5.41519\n            }\n        ]\n    },\n    {\n        \"rule\": \"Gitlab Prefix Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"glpat-8d5ri2n9g85LAnC9YW85.01.cgpAsnEmP # Personal access token, Impersonation token, Project access token, Group access token\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/gitlab_prefix_token\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"glpat-8d5ri2n9g85LAnC9YW85.01.cgpAsnEmP\",\n                \"value_start\": 0,\n                \"value_end\": 39,\n                \"entropy\": 4.59259\n            }\n        ]\n    },\n    {\n        \"rule\": \"Gitlab Prefix Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"gloas-7fc1974b38580e6ceca8c077863cd5e88745895dfcbe1ae3c36eab9c498103dc # OAuth Application Secret\",\n                \"line_num\": 3,\n                \"path\": \"./tests/samples/gitlab_prefix_token\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"gloas-7fc1974b38580e6ceca8c077863cd5e88745895dfcbe1ae3c36eab9c498103dc\",\n                \"value_start\": 0,\n                \"value_end\": 70,\n                \"entropy\": 4.0466\n            }\n        ]\n    },\n    {\n        \"rule\": \"Gitlab Prefix Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"gldt-9BeUoeWu2V9uUS3uLoMy # Deploy token\",\n                \"line_num\": 4,\n                \"path\": \"./tests/samples/gitlab_prefix_token\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"gldt-9BeUoeWu2V9uUS3uLoMy\",\n                \"value_start\": 0,\n                \"value_end\": 25,\n                \"entropy\": 4.13366\n            }\n        ]\n    },\n    {\n        \"rule\": \"Gitlab Prefix Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"glrt-2CR8_eVxiio-1QmzPZwa # Runner authentication token\",\n                \"line_num\": 5,\n                \"path\": \"./tests/samples/gitlab_prefix_token\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"glrt-2CR8_eVxiio-1QmzPZwa\",\n                \"value_start\": 0,\n                \"value_end\": 25,\n                \"entropy\": 4.48386\n            }\n        ]\n    },\n    {\n        \"rule\": \"Gitlab Prefix Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"glcbt-1375_cgpAsnEmP-79kcfRLyK_\",\n                \"line_num\": 6,\n                \"path\": \"./tests/samples/gitlab_prefix_token\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"glcbt-1375_cgpAsnEmP-79kcfRLyK_\",\n                \"value_start\": 0,\n                \"value_end\": 31,\n                \"entropy\": 4.54275\n            }\n        ]\n    },\n    {\n        \"rule\": \"Gitlab Prefix Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"glcbt-0_c1k_AsgyRp4mP-Kcn8fL # CI/CD Job token\",\n                \"line_num\": 7,\n                \"path\": \"./tests/samples/gitlab_prefix_token\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"glcbt-0_c1k_AsgyRp4mP-Kcn8fL\",\n                \"value_start\": 0,\n                \"value_end\": 28,\n                \"entropy\": 4.42325\n            }\n        ]\n    },\n    {\n        \"rule\": \"Gitlab Prefix Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"glptt-33276248c9748113e978392e5c074b7f974f8683 # Trigger token\",\n                \"line_num\": 8,\n                \"path\": \"./tests/samples/gitlab_prefix_token\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"glptt-33276248c9748113e978392e5c074b7f974f8683\",\n                \"value_start\": 0,\n                \"value_end\": 46,\n                \"entropy\": 3.96956\n            }\n        ]\n    },\n    {\n        \"rule\": \"Gitlab Prefix Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"glft-Aafqn5A31G-2VipZMh28 # Feed token\",\n                \"line_num\": 9,\n                \"path\": \"./tests/samples/gitlab_prefix_token\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"glft-Aafqn5A31G-2VipZMh28\",\n                \"value_start\": 0,\n                \"value_end\": 25,\n                \"entropy\": 4.32386\n            }\n        ]\n    },\n    {\n        \"rule\": \"Gitlab Prefix Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"glimt-1jpqzsnw2n71om0r9kgt06os3 # Incoming mail token\",\n                \"line_num\": 10,\n                \"path\": \"./tests/samples/gitlab_prefix_token\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"glimt-1jpqzsnw2n71om0r9kgt06os3\",\n                \"value_start\": 0,\n                \"value_end\": 31,\n                \"entropy\": 4.43807\n            }\n        ]\n    },\n    {\n        \"rule\": \"Gitlab Prefix Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"glagent-ZQmgbRr-Ydu5YehnXCGiiSLxjd53EkFnYapS7A4TwyNE8Y2XVg # GitLab agent for Kubernetes token\",\n                \"line_num\": 11,\n                \"path\": \"./tests/samples/gitlab_prefix_token\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"glagent-ZQmgbRr-Ydu5YehnXCGiiSLxjd53EkFnYapS7A4TwyNE8Y2XVg\",\n                \"value_start\": 0,\n                \"value_end\": 58,\n                \"entropy\": 5.18979\n            }\n        ]\n    },\n    {\n        \"rule\": \"Gitlab Prefix Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"_gitlab_session=8d2a78c080a3af1e6a4677be474432f2 # GitLab session cookies\",\n                \"line_num\": 12,\n                \"path\": \"./tests/samples/gitlab_prefix_token\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"_gitlab_session=8d2a78c080a3af1e6a4677be474432f2\",\n                \"value_start\": 0,\n                \"value_end\": 48,\n                \"entropy\": 4.32185\n            }\n        ]\n    },\n    {\n        \"rule\": \"Gitlab Prefix Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"glsoat-971om0ecn5A386r9k481 # SCIM Tokens\",\n                \"line_num\": 13,\n                \"path\": \"./tests/samples/gitlab_prefix_token\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"glsoat-971om0ecn5A386r9k481\",\n                \"value_start\": 0,\n                \"value_end\": 27,\n                \"entropy\": 4.45859\n            }\n        ]\n    },\n    {\n        \"rule\": \"Gitlab Prefix Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"glffct-AnRWYdo3Si_Xm2Q6n7zu # Feature Flags Client token\",\n                \"line_num\": 14,\n                \"path\": \"./tests/samples/gitlab_prefix_token\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"glffct-AnRWYdo3Si_Xm2Q6n7zu\",\n                \"value_start\": 0,\n                \"value_end\": 27,\n                \"entropy\": 4.60674\n            }\n        ]\n    },\n    {\n        \"rule\": \"Gitlab Prefix Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"glrtr-KZX7Mizo7RYFKh2JScz6aeqZ3WG8nxujE21QpZVIr # Registration runner token\",\n                \"line_num\": 15,\n                \"path\": \"./tests/samples/gitlab_prefix_token\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"glrtr-KZX7Mizo7RYFKh2JScz6aeqZ3WG8nxujE21QpZVIr\",\n                \"value_start\": 0,\n                \"value_end\": 47,\n                \"entropy\": 5.18204\n            }\n        ]\n    },\n    {\n        \"rule\": \"Gitlab Prefix Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"glwt-G9dr9LJjGiSfBdxzDVyHi7vSdDcAftOmJ # Workspace token\",\n                \"line_num\": 16,\n                \"path\": \"./tests/samples/gitlab_prefix_token\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"glwt-G9dr9LJjGiSfBdxzDVyHi7vSdDcAftOmJ\",\n                \"value_start\": 0,\n                \"value_end\": 38,\n                \"entropy\": 4.70175\n            }\n        ]\n    },\n    {\n        \"rule\": \"Gitlab Prefix Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"GR1348941jG6xeSsmN8DFVKoyBYu2 # Runner registration token\",\n                \"line_num\": 18,\n                \"path\": \"./tests/samples/gitlab_prefix_token\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"GR1348941jG6xeSsmN8DFVKoyBYu2\",\n                \"value_start\": 0,\n                \"value_end\": 29,\n                \"entropy\": 4.58212\n            }\n        ]\n    },\n    {\n        \"rule\": \"Google API Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"AIzaGiReoG-Cr0ckleCr0ckle12315618_12315 # Google API Key\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/google_creds\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"AIzaGiReoG-Cr0ckleCr0ckle12315618_12315\",\n                \"value_start\": 0,\n                \"value_end\": 39,\n                \"entropy\": 4.35298\n            }\n        ]\n    },\n    {\n        \"rule\": \"Google OAuth Secret\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"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 # Google OAuth Secret\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/google_creds\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"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\",\n                \"value_start\": 0,\n                \"value_end\": 35,\n                \"entropy\": 4.67214\n            }\n        ]\n    },\n    {\n        \"rule\": \"Google OAuth Access Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"ya29.zmZDrADaFxE_IS6fl4sbDxCpH-ltO2BoHEwXOglsXbgd_S # Google OAuth Access Token\",\n                \"line_num\": 3,\n                \"path\": \"./tests/samples/google_creds\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"ya29.zmZDrADaFxE_IS6fl4sbDxCpH-ltO2BoHEwXOglsXbgd_S\",\n                \"value_start\": 0,\n                \"value_end\": 51,\n                \"entropy\": 5.01537\n            }\n        ]\n    },\n    {\n        \"rule\": \"Google OAuth Refresh Token\",\n        \"severity\": \"medium\",\n        \"confidence\": \"weak\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"1//0T4eRe15N0tT4Et0kEHY0U4Rel0Ok1ng4-hPyg7SWC7tZ1WE5vZvtCwqrJF9rLsyiKFeDGT_0ZHafDhc4-Y2qij02mClU1InwQ_ # Google OAuth Refresh Token\",\n                \"line_num\": 4,\n                \"path\": \"./tests/samples/google_creds\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"1//0T4eRe15N0tT4Et0kEHY0U4Rel0Ok1ng4-hPyg7SWC7tZ1WE5vZvtCwqrJF9rLsyiKFeDGT_0ZHafDhc4-Y2qij02mClU1InwQ_\",\n                \"value_start\": 0,\n                \"value_end\": 102,\n                \"entropy\": 5.43821\n            }\n        ]\n    },\n    {\n        \"rule\": \"Google Multi\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"194206074328-qp89pdv6fi35vsi71258g1eh31q6h7c3.apps.googleusercontent.com\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/google_multi\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"194206074328-qp89pdv6fi35vsi71258g1eh31q6h7c3.apps.googleusercontent.com\",\n                \"value_start\": 0,\n                \"value_end\": 72,\n                \"entropy\": 4.80827\n            },\n            {\n                \"line\": \"4L2QMyTm6Rr0o46ytGiReoG1\",\n                \"line_num\": 4,\n                \"path\": \"./tests/samples/google_multi\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"4L2QMyTm6Rr0o46ytGiReoG1\",\n                \"value_start\": 0,\n                \"value_end\": 24,\n                \"entropy\": 4.08496\n            }\n        ]\n    },\n    {\n        \"rule\": \"Google Multi\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"\\\"id\\\":\\\"194206074328-qdv6fi3eh31q6h7c35vsi7p89p1258g1.apps.googleusercontent.com\\\",\\\"CEKPET\\\":\\\"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\\\",\",\n                \"line_num\": 18,\n                \"path\": \"./tests/samples/google_multi\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"194206074328-qdv6fi3eh31q6h7c35vsi7p89p1258g1.apps.googleusercontent.com\",\n                \"value_start\": 6,\n                \"value_end\": 78,\n                \"entropy\": 4.80827\n            },\n            {\n                \"line\": \"\\\"id\\\":\\\"194206074328-qdv6fi3eh31q6h7c35vsi7p89p1258g1.apps.googleusercontent.com\\\",\\\"CEKPET\\\":\\\"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\\\",\",\n                \"line_num\": 18,\n                \"path\": \"./tests/samples/google_multi\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"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\",\n                \"value_start\": 90,\n                \"value_end\": 125,\n                \"entropy\": 4.67214\n            }\n        ]\n    },\n    {\n        \"rule\": \"Google OAuth Secret\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"\\\"id\\\":\\\"194206074328-qdv6fi3eh31q6h7c35vsi7p89p1258g1.apps.googleusercontent.com\\\",\\\"CEKPET\\\":\\\"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\\\",\",\n                \"line_num\": 18,\n                \"path\": \"./tests/samples/google_multi\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"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\",\n                \"value_start\": 90,\n                \"value_end\": 125,\n                \"entropy\": 4.67214\n            }\n        ]\n    },\n    {\n        \"rule\": \"Grafana Access Policy Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"grafana_policy = 'glc_eyJvIjoiMjA0NjMwIiwibiI6InRlc3QtdG9rZW4iLCJrIjoidklnbjJ2WHc5MTVXOWtNOWxsNHcyZHEyIiwibSI6eyJyIjoicHJvZC0wIn19'\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/grafana_access_policy_token\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"glc_eyJvIjoiMjA0NjMwIiwibiI6InRlc3QtdG9rZW4iLCJrIjoidklnbjJ2WHc5MTVXOWtNOWxsNHcyZHEyIiwibSI6eyJyIjoicHJvZC0wIn19\",\n                \"value_start\": 18,\n                \"value_end\": 130,\n                \"entropy\": 5.15841\n            }\n        ]\n    },\n    {\n        \"rule\": \"Grafana Provisioned API Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"grafana = 'eyJrIjoiMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCIsIm4iOiJ4eHh4IiwiaWQiOjIwNDM2MH0='\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/grafana_provisioned_api_key\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"eyJrIjoiMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCIsIm4iOiJ4eHh4IiwiaWQiOjIwNDM2MH0=\",\n                \"value_start\": 11,\n                \"value_end\": 107,\n                \"entropy\": 3.81531\n            }\n        ]\n    },\n    {\n        \"rule\": \"Grafana Service Account Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"glsa_ThisI5NtTheTok3nYou8reLo0k1ngF0r_0a2a3df7\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/grafana_service_accounts\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"glsa_ThisI5NtTheTok3nYou8reLo0k1ngF0r_0a2a3df7\",\n                \"value_start\": 0,\n                \"value_end\": 46,\n                \"entropy\": 4.71879\n            }\n        ]\n    },\n    {\n        \"rule\": \"Groq API Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"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\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/groq_api_key\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"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\",\n                \"value_start\": 0,\n                \"value_end\": 56,\n                \"entropy\": 5.01691\n            }\n        ]\n    },\n    {\n        \"rule\": \"Groq API Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"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\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/groq_api_key\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"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\",\n                \"value_start\": 0,\n                \"value_end\": 56,\n                \"entropy\": 5.02567\n            }\n        ]\n    },\n    {\n        \"rule\": \"Groq API Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"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\",\n                \"line_num\": 3,\n                \"path\": \"./tests/samples/groq_api_key\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"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\",\n                \"value_start\": 0,\n                \"value_end\": 56,\n                \"entropy\": 5.02567\n            }\n        ]\n    },\n    {\n        \"rule\": \"Hashicorp Terraform Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"Z28P3STmkBQi1Y.atlasv1.YE7RBqu6VVyQIOq9a1eC3YFU5Elt7ToIr6OwzKAWlCTQ7N4gElXaWou6aPpOIwGCoc0\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/hashicorp\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"Z28P3STmkBQi1Y.atlasv1.YE7RBqu6VVyQIOq9a1eC3YFU5Elt7ToIr6OwzKAWlCTQ7N4gElXaWou6aPpOIwGCoc0\",\n                \"value_start\": 0,\n                \"value_end\": 90,\n                \"entropy\": 5.47059\n            }\n        ]\n    },\n    {\n        \"rule\": \"Hashicorp Vault Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"hvs.atlasv1-Z28P3STmkBQi1Y-YE7RBqu6VVyQIOq9a1eC3YFU5Elt7ToIr6OwzKAWlCTQ7N4gElXaWou6aPpOIwGCoc0\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/hashicorp\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"hvs.atlasv1-Z28P3STmkBQi1Y-YE7RBqu6VVyQIOq9a1eC3YFU5Elt7ToIr6OwzKAWlCTQ7N4gElXaWou6aPpOIwGCoc0\",\n                \"value_start\": 0,\n                \"value_end\": 94,\n                \"entropy\": 5.53423\n            }\n        ]\n    },\n    {\n        \"rule\": \"Heroku Credentials\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"HRKU-RAjCYR7Mai1JAIhHASD6ITENvdVydAPCnNcAlrMrTLozPkj9_BGqh1J5P4Wf\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/heroku\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"HRKU-RAjCYR7Mai1JAIhHASD6ITENvdVydAPCnNcAlrMrTLozPkj9_BGqh1J5P4Wf\",\n                \"value_start\": 0,\n                \"value_end\": 65,\n                \"entropy\": 5.32822\n            }\n        ]\n    },\n    {\n        \"rule\": \"Heroku Credentials\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"HRKU-f1274537-88fb-deaf-beda-453bd9a496ef\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/heroku\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"HRKU-f1274537-88fb-deaf-beda-453bd9a496ef\",\n                \"value_start\": 0,\n                \"value_end\": 41,\n                \"entropy\": 4.0555\n            }\n        ]\n    },\n    {\n        \"rule\": \"Hugging Face User Access Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"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\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/huggingface\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"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\",\n                \"value_start\": 0,\n                \"value_end\": 37,\n                \"entropy\": 4.70256\n            }\n        ]\n    },\n    {\n        \"rule\": \"Hugging Face User Access Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"url/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/part\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/huggingface\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"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\",\n                \"value_start\": 4,\n                \"value_end\": 41,\n                \"entropy\": 4.77702\n            }\n        ]\n    },\n    {\n        \"rule\": \"Hugging Face User Access Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"hf_UdYjVqYvybBLEhIrwwEUYjOgkeyexample\",\n                \"line_num\": 6,\n                \"path\": \"./tests/samples/huggingface\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"hf_UdYjVqYvybBLEhIrwwEUYjOgkeyexample\",\n                \"value_start\": 0,\n                \"value_end\": 37,\n                \"entropy\": 4.62811\n            }\n        ]\n    },\n    {\n        \"rule\": \"Instagram Access Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"IGQVJWS3pUNmZA2MUJDVlRwLW9ac1lrU05nZAmpzWHQtWHFJSEFRMF9tWVpRdEd70HQ5Wk8wSnY0R0VEQnVQdUU0MnpxNWxocUYyNmZAXSTUtVVNrMmh1ZAHZAQQno2ZA0VHR0lLWkk1N1R5RDFvM0dmVEpIYQZGZX\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/instagram_access_token\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"IGQVJWS3pUNmZA2MUJDVlRwLW9ac1lrU05nZAmpzWHQtWHFJSEFRMF9tWVpRdEd70HQ5Wk8wSnY0R0VEQnVQdUU0MnpxNWxocUYyNmZAXSTUtVVNrMmh1ZAHZAQQno2ZA0VHR0lLWkk1N1R5RDFvM0dmVEpIYQZGZX\",\n                \"value_start\": 0,\n                \"value_end\": 162,\n                \"entropy\": 5.23164\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"+  \\\"password\\\": \\\"dkajco1\\\"\",\n                \"line_num\": 10,\n                \"path\": \"./tests/samples/iso_ir_111.patch\",\n                \"info\": \"\",\n                \"variable\": \"password\",\n                \"variable_start\": 4,\n                \"variable_end\": 12,\n                \"value\": \"dkajco1\",\n                \"value_start\": 16,\n                \"value_end\": 23,\n                \"entropy\": 2.80735\n            }\n        ]\n    },\n    {\n        \"rule\": \"Jfrog Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"cmVmdGtuOjAxOjAxMjM0NTY3ODk6QWJjZGVmR2hpamtsbW5vUHFyc3R1dnd4eXow\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/jfrog_p\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"cmVmdGtuOjAxOjAxMjM0NTY3ODk6QWJjZGVmR2hpamtsbW5vUHFyc3R1dnd4eXow\",\n                \"value_start\": 0,\n                \"value_end\": 64,\n                \"entropy\": 5.28891\n            }\n        ]\n    },\n    {\n        \"rule\": \"Jfrog Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"AKCp2UNCd8uK7hQoxZnFE4PGtRHnAcBHr43HgLcj7nJmWb4JhVUqBwa2iwXszftnogpo2EVFa\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/jfrog_p\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"AKCp2UNCd8uK7hQoxZnFE4PGtRHnAcBHr43HgLcj7nJmWb4JhVUqBwa2iwXszftnogpo2EVFa\",\n                \"value_start\": 0,\n                \"value_end\": 73,\n                \"entropy\": 5.35394\n            }\n        ]\n    },\n    {\n        \"rule\": \"Jira / Confluence PAT token\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"TP: https://www.example.com/api/verification/version2322/token/OTI2NjA3NjU1NTI2Oh2DOnASdOHoIhEGyqIuYrdkYaQZ\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/jira_confluence_pat\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"OTI2NjA3NjU1NTI2Oh2DOnASdOHoIhEGyqIuYrdkYaQZ\",\n                \"value_start\": 63,\n                \"value_end\": 107,\n                \"entropy\": 4.60694\n            }\n        ]\n    },\n    {\n        \"rule\": \"Jira / Confluence PAT token\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"TP: \\\"image/png\\\": \\\"iVBORx09VIskhxhCe7sh03R1dnENPiB66xQSIZjEYN13vafX/OTI2NjA3NjU1NTI2Oh2DOnASdOHoIhEGyqIuYrdkYaQZ/hZwUteHsmN+z+aoEAAAAvL+Q5FSQGyqIuYrdkYaQZuW1TvI=\\\\n\\\",\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/jira_confluence_pat\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"OTI2NjA3NjU1NTI2Oh2DOnASdOHoIhEGyqIuYrdkYaQZ\",\n                \"value_start\": 67,\n                \"value_end\": 111,\n                \"entropy\": 4.60694\n            }\n        ]\n    },\n    {\n        \"rule\": \"JSON Web Key\",\n        \"severity\": \"medium\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"WwogICAgewogICAgICAgICJrdHkiOiAiRUMiLAogICAgICAgICJkIjogInNsYVFxeUhRUHVkT3BxMm1iRHNrdW04ck91OUlNa0xHaklOQUZXd2Zxci0iCiAgICB9LAogICAgewogICAgICAgICJrdHkiOiAiUlNBIiwKICAgICAgICAiZCI6ICItcGhaOE40R3V3WmNoeTdGQ01CMTRJQTM1ZEJVM3NXeTJPUnh3V044UGJLcUtPa1piOG1oNHZfZ1Fnd2c3ajE2dVNkOTFDT0JOUEdIMGhOemFIMmpPWSIKICAgIH0sCiAgICB7CiAgICAgICAgImt0eSI6ICJvY3QiLAogICAgICAgICJrIjogIldyTXdRZm9OYUhUZ1hVNWZadlJHQUQiCiAgICB9Cl0=\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/json_web_key\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"WwogICAgewogICAgICAgICJrdHkiOiAiRUMiLAogICAgICAgICJkIjogInNsYVFxeUhRUHVkT3BxMm1iRHNrdW04ck91OUlNa0xHaklOQUZXd2Zxci0iCiAgICB9LAogICAgewogICAgICAgICJrdHkiOiAiUlNBIiwKICAgICAgICAiZCI6ICItcGhaOE40R3V3WmNoeTdGQ01CMTRJQTM1ZEJVM3NXeTJPUnh3V044UGJLcUtPa1piOG1oNHZfZ1Fnd2c3ajE2dVNkOTFDT0JOUEdIMGhOemFIMmpPWSIKICAgIH0sCiAgICB7CiAgICAgICAgImt0eSI6ICJvY3QiLAogICAgICAgICJrIjogIldyTXdRZm9OYUhUZ1hVNWZadlJHQUQiCiAgICB9Cl0\",\n                \"value_start\": 0,\n                \"value_end\": 407,\n                \"entropy\": 5.27189\n            }\n        ]\n    },\n    {\n        \"rule\": \"JSON Web Token\",\n        \"severity\": \"medium\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"detected: eyJhbGciOiJSUzI1NiJ9Cg.eyJleHAiOjY1NTM2fQo.Ce7sh0ENPiBlE_dose0cBA\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/json_web_token\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"eyJhbGciOiJSUzI1NiJ9Cg.eyJleHAiOjY1NTM2fQo.Ce7sh0ENPiBlE_dose0cBA\",\n                \"value_start\": 10,\n                \"value_end\": 75,\n                \"entropy\": 5.03815\n            }\n        ]\n    },\n    {\n        \"rule\": \"JWK\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"        \\\"kty\\\": \\\"[EC]\\\",\",\n                \"line_num\": 3,\n                \"path\": \"./tests/samples/jwk.json\",\n                \"info\": \"\",\n                \"variable\": \"kty\",\n                \"variable_start\": 9,\n                \"variable_end\": 12,\n                \"value\": \"\\\"kty\\\": \\\"[EC\",\n                \"value_start\": 8,\n                \"value_end\": 19,\n                \"entropy\": 3.02717\n            },\n            {\n                \"line\": \"        \\\"d\\\": \\\"slaQqyHQPudOpq2mbDskum8rOu9IMkLGjINAFWwfqr-\\\"\",\n                \"line_num\": 4,\n                \"path\": \"./tests/samples/jwk.json\",\n                \"info\": \"\",\n                \"variable\": \"d\",\n                \"variable_start\": 9,\n                \"variable_end\": 10,\n                \"value\": \"slaQqyHQPudOpq2mbDskum8rOu9IMkLGjINAFWwfqr-\",\n                \"value_start\": 14,\n                \"value_end\": 57,\n                \"entropy\": 4.87953\n            }\n        ]\n    },\n    {\n        \"rule\": \"JWK\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"        \\\"kty\\\": \\\"RSA\\\",\",\n                \"line_num\": 7,\n                \"path\": \"./tests/samples/jwk.json\",\n                \"info\": \"\",\n                \"variable\": \"kty\",\n                \"variable_start\": 9,\n                \"variable_end\": 12,\n                \"value\": \"\\\"kty\\\": \\\"RSA\\\"\",\n                \"value_start\": 8,\n                \"value_end\": 20,\n                \"entropy\": 2.9183\n            },\n            {\n                \"line\": \"        \\\"d\\\": \\\"-phZ8N4GuwZchy7FCMB14IA35dBU3sWy2ORxwWN8PbKqKOkZb8mh4v_gQgwg7j16uSd91COBNPGH0hNzaH2jOY\\\"\",\n                \"line_num\": 10,\n                \"path\": \"./tests/samples/jwk.json\",\n                \"info\": \"\",\n                \"variable\": \"d\",\n                \"variable_start\": 9,\n                \"variable_end\": 10,\n                \"value\": \"-phZ8N4GuwZchy7FCMB14IA35dBU3sWy2ORxwWN8PbKqKOkZb8mh4v_gQgwg7j16uSd91COBNPGH0hNzaH2jOY\",\n                \"value_start\": 14,\n                \"value_end\": 100,\n                \"entropy\": 5.43459\n            }\n        ]\n    },\n    {\n        \"rule\": \"JWK\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"        \\\"kty\\\": \\\"oct\\\",\",\n                \"line_num\": 13,\n                \"path\": \"./tests/samples/jwk.json\",\n                \"info\": \"\",\n                \"variable\": \"kty\",\n                \"variable_start\": 9,\n                \"variable_end\": 12,\n                \"value\": \"\\\"kty\\\": \\\"oct\\\"\",\n                \"value_start\": 8,\n                \"value_end\": 20,\n                \"entropy\": 2.75163\n            },\n            {\n                \"line\": \"        \\\"k\\\": \\\"WrMwQfoNaHTgXU5fZvRGAD\\\"\",\n                \"line_num\": 16,\n                \"path\": \"./tests/samples/jwk.json\",\n                \"info\": \"\",\n                \"variable\": \"k\",\n                \"variable_start\": 9,\n                \"variable_end\": 10,\n                \"value\": \"WrMwQfoNaHTgXU5fZvRGAD\",\n                \"value_start\": 14,\n                \"value_end\": 36,\n                \"entropy\": 4.36852\n            }\n        ]\n    },\n    {\n        \"rule\": \"PEM Private Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"var PKEY = `-----BEGIN OPENSSH PRIVATE KEY-----\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/key.go\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"-----BEGIN OPENSSH PRIVATE KEY-----\",\n                \"value_start\": 12,\n                \"value_end\": 47,\n                \"entropy\": 3.58716\n            },\n            {\n                \"line\": \"b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAAAMwAAAAtzc2gtZWQyNTUx\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/key.go\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAAAMwAAAAtzc2gtZWQyNTUx\",\n                \"value_start\": 0,\n                \"value_end\": 76,\n                \"entropy\": 4.18903\n            },\n            {\n                \"line\": \"OQAAABWHkoN5N0V0OCSXOHWSOHAxRYMJSGc4clgVA0gJgFlIBAAAAJimRM7VpkTO1QAAAAtzc2gt\",\n                \"line_num\": 3,\n                \"path\": \"./tests/samples/key.go\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"OQAAABWHkoN5N0V0OCSXOHWSOHAxRYMJSGc4clgVA0gJgFlIBAAAAJimRM7VpkTO1QAAAAtzc2gt\",\n                \"value_start\": 0,\n                \"value_end\": 76,\n                \"entropy\": 4.74471\n            },\n            {\n                \"line\": \"ZWQyNTUxOQAAACBqIPMG94HL7zedFzsvi45mHS8ZuyLQXqvHpHobcdNCJAAAAFRoZXJlXzE1LU4w\",\n                \"line_num\": 4,\n                \"path\": \"./tests/samples/key.go\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"ZWQyNTUxOQAAACBqIPMG94HL7zedFzsvi45mHS8ZuyLQXqvHpHobcdNCJAAAAFRoZXJlXzE1LU4w\",\n                \"value_start\": 0,\n                \"value_end\": 76,\n                \"entropy\": 5.24555\n            },\n            {\n                \"line\": \"dF9UaGVLZXlZb3VBcmVMb29raW5nRm9S8wb3Mj0tZT1hc3A7ZHprejsuZm5tbmRmbmVuZm5pAAAA\",\n                \"line_num\": 5,\n                \"path\": \"./tests/samples/key.go\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"dF9UaGVLZXlZb3VBcmVMb29raW5nRm9S8wb3Mj0tZT1hc3A7ZHprejsuZm5tbmRmbmVuZm5pAAAA\",\n                \"value_start\": 0,\n                \"value_end\": 76,\n                \"entropy\": 4.94996\n            },\n            {\n                \"line\": \"EXRpemVuQGNyZWRzd2VlcGVyAQIDBA==\",\n                \"line_num\": 6,\n                \"path\": \"./tests/samples/key.go\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"EXRpemVuQGNyZWRzd2VlcGVyAQIDBA==\",\n                \"value_start\": 0,\n                \"value_end\": 32,\n                \"entropy\": 4.47641\n            },\n            {\n                \"line\": \"-----END OPENSSH PRIVATE KEY-----\",\n                \"line_num\": 7,\n                \"path\": \"./tests/samples/key.go\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"-----END OPENSSH PRIVATE KEY-----\",\n                \"value_start\": 0,\n                \"value_end\": 33,\n                \"entropy\": 3.46942\n            }\n        ]\n    },\n    {\n        \"rule\": \"Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"$key = 'gmUGWxhQW9KQWdhd0lCQVFRZ0ViVnpwrLzZYdDJPNG1PQjYxMXNPaFJ1\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/key.php\",\n                \"info\": \"\",\n                \"variable\": \"$key\",\n                \"variable_start\": 0,\n                \"variable_end\": 4,\n                \"value\": \"gmUGWxhQW9KQWdhd0lCQVFRZ0ViVnpwrLzZYdDJPNG1PQjYxMXNPaFJ1\",\n                \"value_start\": 8,\n                \"value_end\": 64,\n                \"entropy\": 4.96772\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"define( 'PASSWORD' , '2Arh5dA1Sn0ywiVYdnpwr3aLzZDJPNG' );\",\n                \"line_num\": 3,\n                \"path\": \"./tests/samples/key.php\",\n                \"info\": \"\",\n                \"variable\": \"PASSWORD\",\n                \"variable_start\": 9,\n                \"variable_end\": 17,\n                \"value\": \"2Arh5dA1Sn0ywiVYdnpwr3aLzZDJPNG\",\n                \"value_start\": 22,\n                \"value_end\": 53,\n                \"entropy\": 4.63162\n            }\n        ]\n    },\n    {\n        \"rule\": \"Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.993,\n        \"line_data_list\": [\n            {\n                \"line\": \"pkey = (\\\"LS0tLS1CRUdJTiBQUklWQVRFIENDcUdTTTQ5QXdFSEJHMHdhd0lCQVFRZ0ViVn\\\"\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/key.py\",\n                \"info\": \"\",\n                \"variable\": \"pkey\",\n                \"variable_start\": 0,\n                \"variable_end\": 4,\n                \"value\": \"LS0tLS1CRUdJTiBQUklWQVRFIENDcUdTTTQ5QXdFSEJHMHdhd0lCQVFRZ0ViVn\",\n                \"value_start\": 9,\n                \"value_end\": 71,\n                \"entropy\": 4.71236\n            }\n        ]\n    },\n    {\n        \"rule\": \"Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"print(\\\"https://example.com/api/js?key=dhd0lCQVFRZ0ViVnpmUGWxhQW9KQWwrLzZYdDJPNG1PQjYxMXNPaFJB&bug=true\\\")\",\n                \"line_num\": 7,\n                \"path\": \"./tests/samples/key.py\",\n                \"info\": \"\",\n                \"variable\": \"key\",\n                \"variable_start\": 34,\n                \"variable_end\": 37,\n                \"value\": \"dhd0lCQVFRZ0ViVnpmUGWxhQW9KQWwrLzZYdDJPNG1PQjYxMXNPaFJB\",\n                \"value_start\": 38,\n                \"value_end\": 93,\n                \"entropy\": 4.96282\n            }\n        ]\n    },\n    {\n        \"rule\": \"PEM Private Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"PKEY = \\\"\\\"\\\"-----BEGIN OPENSSH PRIVATE KEY-----\",\n                \"line_num\": 9,\n                \"path\": \"./tests/samples/key.py\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"-----BEGIN OPENSSH PRIVATE KEY-----\",\n                \"value_start\": 10,\n                \"value_end\": 45,\n                \"entropy\": 3.58716\n            },\n            {\n                \"line\": \"b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAAAMwAAAAtzc2gtZWQyNTUx\",\n                \"line_num\": 10,\n                \"path\": \"./tests/samples/key.py\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAAAMwAAAAtzc2gtZWQyNTUx\",\n                \"value_start\": 0,\n                \"value_end\": 76,\n                \"entropy\": 4.18903\n            },\n            {\n                \"line\": \"OQAAABWHkoN5N0V0OCSXOHWSOHAxRYMJSGc4clgVA0gJgFlIBAAAAJimRM7VpkTO1QAAAAtzc2gt\",\n                \"line_num\": 11,\n                \"path\": \"./tests/samples/key.py\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"OQAAABWHkoN5N0V0OCSXOHWSOHAxRYMJSGc4clgVA0gJgFlIBAAAAJimRM7VpkTO1QAAAAtzc2gt\",\n                \"value_start\": 0,\n                \"value_end\": 76,\n                \"entropy\": 4.74471\n            },\n            {\n                \"line\": \"ZWQyNTUxOQAAACBqIPMG94HL7zedFzsvi45mHS8ZuyLQXqvHpHobcdNCJAAAAFRoZXJlXzE1LU4w\",\n                \"line_num\": 12,\n                \"path\": \"./tests/samples/key.py\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"ZWQyNTUxOQAAACBqIPMG94HL7zedFzsvi45mHS8ZuyLQXqvHpHobcdNCJAAAAFRoZXJlXzE1LU4w\",\n                \"value_start\": 0,\n                \"value_end\": 76,\n                \"entropy\": 5.24555\n            },\n            {\n                \"line\": \"dF9UaGVLZXlZb3VBcmVMb29raW5nRm9S8wb3Mj0tZT1hc3A7ZHprejsuZm5tbmRmbmVuZm5pAAAA\",\n                \"line_num\": 13,\n                \"path\": \"./tests/samples/key.py\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"dF9UaGVLZXlZb3VBcmVMb29raW5nRm9S8wb3Mj0tZT1hc3A7ZHprejsuZm5tbmRmbmVuZm5pAAAA\",\n                \"value_start\": 0,\n                \"value_end\": 76,\n                \"entropy\": 4.94996\n            },\n            {\n                \"line\": \"EXRpemVuQGNyZWRzd2VlcGVyAQIDBA==\",\n                \"line_num\": 14,\n                \"path\": \"./tests/samples/key.py\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"EXRpemVuQGNyZWRzd2VlcGVyAQIDBA==\",\n                \"value_start\": 0,\n                \"value_end\": 32,\n                \"entropy\": 4.47641\n            },\n            {\n                \"line\": \"-----END OPENSSH PRIVATE KEY-----\\\"\\\"\\\"\",\n                \"line_num\": 15,\n                \"path\": \"./tests/samples/key.py\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"-----END OPENSSH PRIVATE KEY-----\",\n                \"value_start\": 0,\n                \"value_end\": 33,\n                \"entropy\": 3.46942\n            }\n        ]\n    },\n    {\n        \"rule\": \"LLAMA API Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"llx-gOpoyW2vlgfBcYEYlSu8x3Tk3lrtW1AWJU8nXQ6XOCZah4h1\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/llama\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"llx-gOpoyW2vlgfBcYEYlSu8x3Tk3lrtW1AWJU8nXQ6XOCZah4h1\",\n                \"value_start\": 0,\n                \"value_end\": 52,\n                \"entropy\": 5.03958\n            }\n        ]\n    },\n    {\n        \"rule\": \"LLAMA API Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"llx-vYx_tfO1AgW73_hwAET-u7p7YVDTBERNn4ij4a8wrDrGM6RT\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/llama\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"llx-vYx_tfO1AgW73_hwAET-u7p7YVDTBERNn4ij4a8wrDrGM6RT\",\n                \"value_start\": 0,\n                \"value_end\": 52,\n                \"entropy\": 5.05602\n            }\n        ]\n    },\n    {\n        \"rule\": \"MailChimp API Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"mailchimp = \\\"LRINSm5Vdi9BMCzCWSJ8M3TMysUHwDzB-us36\\\"\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/mailchimp_key\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"LRINSm5Vdi9BMCzCWSJ8M3TMysUHwDzB-us36\",\n                \"value_start\": 13,\n                \"value_end\": 50,\n                \"entropy\": 4.75662\n            }\n        ]\n    },\n    {\n        \"rule\": \"MailGun API Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"key-a25a4ac62a074cd52c668c6b9937cf40\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/mailgun\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"key-a25a4ac62a074cd52c668c6b9937cf40\",\n                \"value_start\": 0,\n                \"value_end\": 36,\n                \"entropy\": 3.91661\n            }\n        ]\n    },\n    {\n        \"rule\": \"MailGun API Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"a25a4ac62a074cd52c668c6b9937cf40-432f2836-db15b420\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/mailgun\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"a25a4ac62a074cd52c668c6b9937cf40-432f2836-db15b420\",\n                \"value_start\": 0,\n                \"value_end\": 50,\n                \"entropy\": 3.85669\n            }\n        ]\n    },\n    {\n        \"rule\": \"AWS Client ID\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"+  clid = \\\"AKIAQWADE5R42RDZ4JEM\\\"\",\n                \"line_num\": 45,\n                \"path\": \"./tests/samples/multifile.patch\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"AKIAQWADE5R42RDZ4JEM\",\n                \"value_start\": 11,\n                \"value_end\": 31,\n                \"entropy\": 3.68418\n            }\n        ]\n    },\n    {\n        \"rule\": \"AWS Multi\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"+  clid = \\\"AKIAQWADE5R42RDZ4JEM\\\"\",\n                \"line_num\": 45,\n                \"path\": \"./tests/samples/multifile.patch\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"AKIAQWADE5R42RDZ4JEM\",\n                \"value_start\": 11,\n                \"value_end\": 31,\n                \"entropy\": 3.68418\n            },\n            {\n                \"line\": \"+  token = \\\"V84C7sDU001tFFodKU95USNy97TkqXymnvsFmYhQ\\\"\",\n                \"line_num\": 46,\n                \"path\": \"./tests/samples/multifile.patch\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"V84C7sDU001tFFodKU95USNy97TkqXymnvsFmYhQ\",\n                \"value_start\": 12,\n                \"value_end\": 52,\n                \"entropy\": 4.78418\n            }\n        ]\n    },\n    {\n        \"rule\": \"Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"+  token = \\\"V84C7sDU001tFFodKU95USNy97TkqXymnvsFmYhQ\\\"\",\n                \"line_num\": 46,\n                \"path\": \"./tests/samples/multifile.patch\",\n                \"info\": \"\",\n                \"variable\": \"token\",\n                \"variable_start\": 3,\n                \"variable_end\": 8,\n                \"value\": \"V84C7sDU001tFFodKU95USNy97TkqXymnvsFmYhQ\",\n                \"value_start\": 12,\n                \"value_end\": 52,\n                \"entropy\": 4.78418\n            }\n        ]\n    },\n    {\n        \"rule\": \"AWS Client ID\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"+  clid = \\\"AKIAQWADE5R42RDZ4JEM\\\"\",\n                \"line_num\": 8,\n                \"path\": \"./tests/samples/multiline.patch\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"AKIAQWADE5R42RDZ4JEM\",\n                \"value_start\": 11,\n                \"value_end\": 31,\n                \"entropy\": 3.68418\n            }\n        ]\n    },\n    {\n        \"rule\": \"AWS Multi\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"+  clid = \\\"AKIAQWADE5R42RDZ4JEM\\\"\",\n                \"line_num\": 8,\n                \"path\": \"./tests/samples/multiline.patch\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"AKIAQWADE5R42RDZ4JEM\",\n                \"value_start\": 11,\n                \"value_end\": 31,\n                \"entropy\": 3.68418\n            },\n            {\n                \"line\": \"+  token = \\\"V84C7sDU001tFFodKU95USNy97TkqXymnvsFmYhQ\\\"\",\n                \"line_num\": 9,\n                \"path\": \"./tests/samples/multiline.patch\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"V84C7sDU001tFFodKU95USNy97TkqXymnvsFmYhQ\",\n                \"value_start\": 12,\n                \"value_end\": 52,\n                \"entropy\": 4.78418\n            }\n        ]\n    },\n    {\n        \"rule\": \"Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"+  token = \\\"V84C7sDU001tFFodKU95USNy97TkqXymnvsFmYhQ\\\"\",\n                \"line_num\": 9,\n                \"path\": \"./tests/samples/multiline.patch\",\n                \"info\": \"\",\n                \"variable\": \"token\",\n                \"variable_start\": 3,\n                \"variable_end\": 8,\n                \"value\": \"V84C7sDU001tFFodKU95USNy97TkqXymnvsFmYhQ\",\n                \"value_start\": 12,\n                \"value_end\": 52,\n                \"entropy\": 4.78418\n            }\n        ]\n    },\n    {\n        \"rule\": \"Netlify Token\",\n        \"severity\": \"medium\",\n        \"confidence\": \"weak\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"nfp_0i5OM4MV7L02wV3E6rrwiTwhvEkkkPJ9C3EP\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/netlify\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"nfp_0i5OM4MV7L02wV3E6rrwiTwhvEkkkPJ9C3EP\",\n                \"value_start\": 0,\n                \"value_end\": 40,\n                \"entropy\": 4.61531\n            }\n        ]\n    },\n    {\n        \"rule\": \"NKEY Seed\",\n        \"severity\": \"high\",\n        \"confidence\": \"weak\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"// SUAML2GCZ7IK7E7UD4VZ7ELPZW7DK2ZNL35WSMW3IORHC3BWBSDQXUQRBU\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/nkey_seed\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"SUAML2GCZ7IK7E7UD4VZ7ELPZW7DK2ZNL35WSMW3IORHC3BWBSDQXUQRBU\",\n                \"value_start\": 3,\n                \"value_end\": 61,\n                \"entropy\": 4.55826\n            }\n        ]\n    },\n    {\n        \"rule\": \"Nonce\",\n        \"severity\": \"low\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"nonce = 'bsfcvir57nt40rydvtbhs8lzbgljmet5'\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/nonce.py\",\n                \"info\": \"\",\n                \"variable\": \"nonce\",\n                \"variable_start\": 0,\n                \"variable_end\": 5,\n                \"value\": \"bsfcvir57nt40rydvtbhs8lzbgljmet5\",\n                \"value_start\": 9,\n                \"value_end\": 41,\n                \"entropy\": 4.39032\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"password: F1lT3ReDw17hQoT3s\",\n                \"line_num\": 3,\n                \"path\": \"./tests/samples/nonce.py\",\n                \"info\": \"\",\n                \"variable\": \"password\",\n                \"variable_start\": 0,\n                \"variable_end\": 8,\n                \"value\": \"F1lT3ReDw17hQoT3s\",\n                \"value_start\": 10,\n                \"value_end\": 27,\n                \"entropy\": 3.73452\n            }\n        ]\n    },\n    {\n        \"rule\": \"Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"key_wrap = 'KJHhJKhKU7yguyuyfrtsdESffhjgkhYT\\\\\",\n                \"line_num\": 7,\n                \"path\": \"./tests/samples/nonce.py\",\n                \"info\": \"\",\n                \"variable\": \"key_wrap\",\n                \"variable_start\": 0,\n                \"variable_end\": 8,\n                \"value\": \"KJHhJKhKU7yguyuyfrtsdESffhjgkhYT\",\n                \"value_start\": 12,\n                \"value_end\": 44,\n                \"entropy\": 4.11673\n            }\n        ]\n    },\n    {\n        \"rule\": \"Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"key_multi = '''KJHfdjs8767gr54534wsFHGf5hJKhK\",\n                \"line_num\": 11,\n                \"path\": \"./tests/samples/nonce.py\",\n                \"info\": \"\",\n                \"variable\": \"key_multi\",\n                \"variable_start\": 0,\n                \"variable_end\": 9,\n                \"value\": \"KJHfdjs8767gr54534wsFHGf5hJKhK\",\n                \"value_start\": 15,\n                \"value_end\": 45,\n                \"entropy\": 4.12323\n            }\n        ]\n    },\n    {\n        \"rule\": \"Notion Integration Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"ntn_123465789l62YMNJKXLKpjiCVEXbx4CBxkfprOA96Y15wZ\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/notion\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"ntn_123465789l62YMNJKXLKpjiCVEXbx4CBxkfprOA96Y15wZ\",\n                \"value_start\": 0,\n                \"value_end\": 50,\n                \"entropy\": 5.06876\n            }\n        ]\n    },\n    {\n        \"rule\": \"NPM Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"positive: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\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/npm\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"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\",\n                \"value_start\": 9,\n                \"value_end\": 49,\n                \"entropy\": 4.80306\n            }\n        ]\n    },\n    {\n        \"rule\": \"NTLM Token\",\n        \"severity\": \"medium\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"Positive: TlRMTVNTUAADAAAAGAAYAFYAAAAYABgAbgAAAAAAAABIAAAADgAOAEgAAAAAAAAAVgAAAAAAAACGAAAARmFLZURhVGEAAAAPQwByAGUAZABTAHcAZQBlAHCgZQBy3wAAAAAAAAAAAAAAAAAAAAAph0MQmDQmCVaJEmhiOGSYIXNJMoc2KLo=\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/ntlm\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"TlRMTVNTUAADAAAAGAAYAFYAAAAYABgAbgAAAAAAAABIAAAADgAOAEgAAAAAAAAAVgAAAAAAAACGAAAARmFLZURhVGEAAAAPQwByAGUAZABTAHcAZQBlAHCgZQBy3wAAAAAAAAAAAAAAAAAAAAAph0MQmDQmCVaJEmhiOGSYIXNJMoc2KLo=\",\n                \"value_start\": 10,\n                \"value_end\": 190,\n                \"entropy\": 3.79713\n            }\n        ]\n    },\n    {\n        \"rule\": \"NuGet API key\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"k = 'oy2mlf2v7jl2firuegfqwzc4zxyebz3ethzd14g4hw4iam'\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/nuget_api_key\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"oy2mlf2v7jl2firuegfqwzc4zxyebz3ethzd14g4hw4iam\",\n                \"value_start\": 5,\n                \"value_end\": 51,\n                \"entropy\": 4.56129\n            }\n        ]\n    },\n    {\n        \"rule\": \"OpenAI Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"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\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/open_ai_token\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"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\",\n                \"value_start\": 0,\n                \"value_end\": 51,\n                \"entropy\": 5.22625\n            }\n        ]\n    },\n    {\n        \"rule\": \"OpenAI Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"sk-proj-qa25MV9c7Qu0EjDIEWdcT3BlbkFJ83uCF0K4yw7RzpY39bio\",\n                \"line_num\": 3,\n                \"path\": \"./tests/samples/open_ai_token\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"sk-proj-qa25MV9c7Qu0EjDIEWdcT3BlbkFJ83uCF0K4yw7RzpY39bio\",\n                \"value_start\": 0,\n                \"value_end\": 56,\n                \"entropy\": 5.25816\n            }\n        ]\n    },\n    {\n        \"rule\": \"OpenAI Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"sk-proj-asdfgasdfasdfdcQbzdcT3BlbkFJ83uCasdfgasdfgasdfjk\",\n                \"line_num\": 7,\n                \"path\": \"./tests/samples/open_ai_token\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"sk-proj-asdfgasdfasdfdcQbzdcT3BlbkFJ83uCasdfgasdfgasdfjk\",\n                \"value_start\": 0,\n                \"value_end\": 56,\n                \"entropy\": 4.12555\n            }\n        ]\n    },\n    {\n        \"rule\": \"OTP / 2FA Secret\",\n        \"severity\": \"info\",\n        \"confidence\": \"weak\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"WXFES7QNTET5DQYC\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/otp_2fa\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"WXFES7QNTET5DQYC\",\n                \"value_start\": 0,\n                \"value_end\": 16,\n                \"entropy\": 3.625\n            }\n        ]\n    },\n    {\n        \"rule\": \"OTP / 2FA Secret\",\n        \"severity\": \"info\",\n        \"confidence\": \"weak\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"JERZOR2XLQYTUQG7YBZYHLK3KSLRYTWB\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/otp_2fa\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"JERZOR2XLQYTUQG7YBZYHLK3KSLRYTWB\",\n                \"value_start\": 0,\n                \"value_end\": 32,\n                \"entropy\": 4.14032\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.99,\n        \"line_data_list\": [\n            {\n                \"line\": \"gi_reo_gi_passwd = \\\"cAc48k1Zd7\\\"; password_confirmation = \\\"cAc48k1Zd7\\\";\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/passwd.groovy\",\n                \"info\": \"\",\n                \"variable\": \"gi_reo_gi_passwd\",\n                \"variable_start\": 0,\n                \"variable_end\": 16,\n                \"value\": \"cAc48k1Zd7\",\n                \"value_start\": 20,\n                \"value_end\": 30,\n                \"entropy\": 3.12193\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"gi_reo_gi_passwd = \\\"cAc48k1Zd7\\\"; password_confirmation = \\\"cAc48k1Zd7\\\";\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/passwd.groovy\",\n                \"info\": \"\",\n                \"variable\": \"password_confirmation\",\n                \"variable_start\": 33,\n                \"variable_end\": 54,\n                \"value\": \"cAc48k1Zd7\",\n                \"value_start\": 58,\n                \"value_end\": 68,\n                \"entropy\": 3.12193\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.993,\n        \"line_data_list\": [\n            {\n                \"line\": \"password = \\\"cackle!\\\"\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/password.gradle\",\n                \"info\": \"\",\n                \"variable\": \"password\",\n                \"variable_start\": 0,\n                \"variable_end\": 8,\n                \"value\": \"cackle!\",\n                \"value_start\": 12,\n                \"value_end\": 19,\n                \"entropy\": 2.52164\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"+  \\\"password\\\": \\\"dkajco1\\\"\",\n                \"line_num\": 9,\n                \"path\": \"./tests/samples/password.patch\",\n                \"info\": \"\",\n                \"variable\": \"password\",\n                \"variable_start\": 4,\n                \"variable_end\": 12,\n                \"value\": \"dkajco1\",\n                \"value_start\": 16,\n                \"value_end\": 23,\n                \"entropy\": 2.80735\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"password = \\\"MYPSWRD!@#$%^&*\\\"\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/password.tfvars\",\n                \"info\": \"\",\n                \"variable\": \"password\",\n                \"variable_start\": 0,\n                \"variable_end\": 8,\n                \"value\": \"MYPSWRD!@#$%^&*\",\n                \"value_start\": 12,\n                \"value_end\": 27,\n                \"entropy\": 3.90689\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.996,\n        \"line_data_list\": [\n            {\n                \"line\": \"MYSQLPASS: Ce7shE0ENPiBlE_EdEose0cBAA\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/password_TRUE\",\n                \"info\": \"\",\n                \"variable\": \"MYSQLPASS\",\n                \"variable_start\": 0,\n                \"variable_end\": 9,\n                \"value\": \"Ce7shE0ENPiBlE_EdEose0cBAA\",\n                \"value_start\": 11,\n                \"value_end\": 37,\n                \"entropy\": 3.8693\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.997,\n        \"line_data_list\": [\n            {\n                \"line\": \"my_pw: nCzx8A8#!\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/password_TRUE\",\n                \"info\": \"\",\n                \"variable\": \"my_pw\",\n                \"variable_start\": 0,\n                \"variable_end\": 5,\n                \"value\": \"nCzx8A8#!\",\n                \"value_start\": 7,\n                \"value_end\": 16,\n                \"entropy\": 2.9477\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"val password: String = \\\"exord13Paw64\\\", // scala\",\n                \"line_num\": 3,\n                \"path\": \"./tests/samples/password_TRUE\",\n                \"info\": \"\",\n                \"variable\": \"password\",\n                \"variable_start\": 4,\n                \"variable_end\": 12,\n                \"value\": \"exord13Paw64\",\n                \"value_start\": 24,\n                \"value_end\": 36,\n                \"entropy\": 3.58496\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.993,\n        \"line_data_list\": [\n            {\n                \"line\": \"def connect(passwd: str = \\\"cq2tPr1a2\\\"): # python default arg\",\n                \"line_num\": 4,\n                \"path\": \"./tests/samples/password_TRUE\",\n                \"info\": \"\",\n                \"variable\": \"passwd\",\n                \"variable_start\": 12,\n                \"variable_end\": 18,\n                \"value\": \"cq2tPr1a2\",\n                \"value_start\": 27,\n                \"value_end\": 36,\n                \"entropy\": 2.9477\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"if passworsd == \\\"q4c1a2oPd\\\": # __eq__ separator\",\n                \"line_num\": 5,\n                \"path\": \"./tests/samples/password_TRUE\",\n                \"info\": \"\",\n                \"variable\": \"passworsd\",\n                \"variable_start\": 3,\n                \"variable_end\": 12,\n                \"value\": \"q4c1a2oPd\",\n                \"value_start\": 17,\n                \"value_end\": 26,\n                \"entropy\": 3.16993\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"if passworsd != \\\"x6s7djtEa\\\": # __ne__ separator\",\n                \"line_num\": 6,\n                \"path\": \"./tests/samples/password_TRUE\",\n                \"info\": \"\",\n                \"variable\": \"passworsd\",\n                \"variable_start\": 3,\n                \"variable_end\": 12,\n                \"value\": \"x6s7djtEa\",\n                \"value_start\": 17,\n                \"value_end\": 26,\n                \"entropy\": 3.16993\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"password=2bkJgtJDiLcq1t\",\n                \"line_num\": 7,\n                \"path\": \"./tests/samples/password_TRUE\",\n                \"info\": \"\",\n                \"variable\": \"password\",\n                \"variable_start\": 0,\n                \"variable_end\": 8,\n                \"value\": \"2bkJgtJDiLcq1t\",\n                \"value_start\": 9,\n                \"value_end\": 23,\n                \"entropy\": 3.52164\n            }\n        ]\n    },\n    {\n        \"rule\": \"CMD Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"RUN openssl x509 -req -days 365 -passin \\\"pass:nCzx8A8#!\\\" -sha256 -in server.csr -CA ca.pem -CAkey ca-key\",\n                \"line_num\": 8,\n                \"path\": \"./tests/samples/password_TRUE\",\n                \"info\": \"\",\n                \"variable\": \"passin\",\n                \"variable_start\": 33,\n                \"variable_end\": 39,\n                \"value\": \"nCzx8A8#!\",\n                \"value_start\": 46,\n                \"value_end\": 55,\n                \"entropy\": 2.9477\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"RUN openssl x509 -req -days 365 -passin \\\"pass:nCzx8A8#!\\\" -sha256 -in server.csr -CA ca.pem -CAkey ca-key\",\n                \"line_num\": 8,\n                \"path\": \"./tests/samples/password_TRUE\",\n                \"info\": \"\",\n                \"variable\": \"pass\",\n                \"variable_start\": 41,\n                \"variable_end\": 45,\n                \"value\": \"nCzx8A8#!\",\n                \"value_start\": 46,\n                \"value_end\": 55,\n                \"entropy\": 2.9477\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"MYSQL_DATABASE_USER=CRED;MYSQL_DATABASE_PASSWORD=2IWJD88FH4Y;\",\n                \"line_num\": 12,\n                \"path\": \"./tests/samples/password_TRUE\",\n                \"info\": \"\",\n                \"variable\": \"MYSQL_DATABASE_PASSWORD\",\n                \"variable_start\": 25,\n                \"variable_end\": 48,\n                \"value\": \"2IWJD88FH4Y\",\n                \"value_start\": 49,\n                \"value_end\": 60,\n                \"entropy\": 3.27761\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"#define password \\\"n84ASM54y4\\\"\",\n                \"line_num\": 15,\n                \"path\": \"./tests/samples/password_TRUE\",\n                \"info\": \"\",\n                \"variable\": \"password\",\n                \"variable_start\": 8,\n                \"variable_end\": 16,\n                \"value\": \"n84ASM54y4\",\n                \"value_start\": 18,\n                \"value_end\": 28,\n                \"entropy\": 2.84644\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"%define PASSWORD \\\"n84ASM54y4\\\"\",\n                \"line_num\": 18,\n                \"path\": \"./tests/samples/password_TRUE\",\n                \"info\": \"\",\n                \"variable\": \"PASSWORD\",\n                \"variable_start\": 8,\n                \"variable_end\": 16,\n                \"value\": \"n84ASM54y4\",\n                \"value_start\": 18,\n                \"value_end\": 28,\n                \"entropy\": 2.84644\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"%global PASSWORD \\\"n84RPM54y4\\\"\",\n                \"line_num\": 19,\n                \"path\": \"./tests/samples/password_TRUE\",\n                \"info\": \"\",\n                \"variable\": \"PASSWORD\",\n                \"variable_start\": 8,\n                \"variable_end\": 16,\n                \"value\": \"n84RPM54y4\",\n                \"value_start\": 18,\n                \"value_end\": 28,\n                \"entropy\": 2.84644\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"SET password \\\"n83.bat47Fy4\\\"\",\n                \"line_num\": 21,\n                \"path\": \"./tests/samples/password_TRUE\",\n                \"info\": \"\",\n                \"variable\": \"password\",\n                \"variable_start\": 4,\n                \"variable_end\": 12,\n                \"value\": \"n83.bat47Fy4\",\n                \"value_start\": 14,\n                \"value_end\": 26,\n                \"entropy\": 3.4183\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"\\\"#define\\\\tpassword\\\\t\\\\\\\"n84ASM54y4\\\\\\\"\\\"\",\n                \"line_num\": 23,\n                \"path\": \"./tests/samples/password_TRUE\",\n                \"info\": \"\",\n                \"variable\": \"password\",\n                \"variable_start\": 10,\n                \"variable_end\": 18,\n                \"value\": \"n84ASM54y4\",\n                \"value_start\": 22,\n                \"value_end\": 32,\n                \"entropy\": 2.84644\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.991,\n        \"line_data_list\": [\n            {\n                \"line\": \"WPA2_PASSWORD: e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\",\n                \"line_num\": 25,\n                \"path\": \"./tests/samples/password_TRUE\",\n                \"info\": \"\",\n                \"variable\": \"WPA2_PASSWORD\",\n                \"variable_start\": 0,\n                \"variable_end\": 13,\n                \"value\": \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\",\n                \"value_start\": 15,\n                \"value_end\": 79,\n                \"entropy\": 3.67082\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"+  \\\"password\\\": \\\"dkajco1\\\"\",\n                \"line_num\": 10,\n                \"path\": \"./tests/samples/password_utf16.patch\",\n                \"info\": \"\",\n                \"variable\": \"password\",\n                \"variable_start\": 4,\n                \"variable_end\": 12,\n                \"value\": \"dkajco1\",\n                \"value_start\": 16,\n                \"value_end\": 23,\n                \"entropy\": 2.80735\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.914,\n        \"line_data_list\": [\n            {\n                \"line\": \"+  \\\"password\\\": \\\"dkajc\\u00f61\\\"\",\n                \"line_num\": 9,\n                \"path\": \"./tests/samples/password_western.patch\",\n                \"info\": \"\",\n                \"variable\": \"password\",\n                \"variable_start\": 4,\n                \"variable_end\": 12,\n                \"value\": \"dkajc\\u00f61\",\n                \"value_start\": 16,\n                \"value_end\": 23,\n                \"entropy\": 2.80735\n            }\n        ]\n    },\n    {\n        \"rule\": \"PayPal Braintree Access Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"access_token$production$gireogi121451781$abcaeaabadef01134517891121451781\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/paypal_key\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"access_token$production$gireogi121451781$abcaeaabadef01134517891121451781\",\n                \"value_start\": 0,\n                \"value_end\": 73,\n                \"entropy\": 4.39985\n            }\n        ]\n    },\n    {\n        \"rule\": \"PEM Private Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"str value = \\\"-----BEGIN RSA PRIVATE KEY-----\\\\n\\\" +\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/pem_key\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"-----BEGIN RSA PRIVATE KEY-----\",\n                \"value_start\": 13,\n                \"value_end\": 44,\n                \"entropy\": 3.38229\n            },\n            {\n                \"line\": \"\\\"MIICXQIBAAKBgQDwcEN7vZygGg6DvPpsw17hRD6S5N8+huaqs1JGXQfPhbvLTUsHdzGLVNQ/Z0wQVGdPiaJDflqhcT1IH8BLD4SHn+  \\\\n\\\"\",\n                \"line_num\": 3,\n                \"path\": \"./tests/samples/pem_key\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"\\\"MIICXQIBAAKBgQDwcEN7vZygGg6DvPpsw17hRD6S5N8+huaqs1JGXQfPhbvLTUsHdzGLVNQ/Z0wQVGdPiaJDflqhcT1IH8BLD4SHn+  \\\\n\\\"\",\n                \"value_start\": 0,\n                \"value_end\": 108,\n                \"entropy\": 5.52555\n            },\n            {\n                \"line\": \"\\t+ \\\"WuRIzX77P7oVKM2CoTA6VzT6s/bvr7HxFLl4NhohfyDsV0YCDc4I6EHGWMCUHZb0IWxzEGRWD3jbG8KAZUsQIDAQABAoGAOD7a2o\\\\r \\\\n\\\"\",\n                \"line_num\": 4,\n                \"path\": \"./tests/samples/pem_key\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"\\t+ \\\"WuRIzX77P7oVKM2CoTA6VzT6s/bvr7HxFLl4NhohfyDsV0YCDc4I6EHGWMCUHZb0IWxzEGRWD3jbG8KAZUsQIDAQABAoGAOD7a2o\\\\r \\\\n\\\"\",\n                \"value_start\": 0,\n                \"value_end\": 110,\n                \"entropy\": 5.49388\n            },\n            {\n                \"line\": \"\\\"  CRujY+PP0hS/4sHOBdDvnxa2wdW8NVNNagdCBhvP5Y1edBNMnkWOyuM4e7HzUgO0+8ndWis1OSJTz9EFTyHJm6GOn+/JR62NWNr   \\\"\",\n                \"line_num\": 5,\n                \"path\": \"./tests/samples/pem_key\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"\\\"  CRujY+PP0hS/4sHOBdDvnxa2wdW8NVNNagdCBhvP5Y1edBNMnkWOyuM4e7HzUgO0+8ndWis1OSJTz9EFTyHJm6GOn+/JR62NWNr   \\\"\",\n                \"value_start\": 0,\n                \"value_end\": 106,\n                \"entropy\": 5.44383\n            },\n            {\n                \"line\": \"\\t\\t\\\"9lfCb8cWq0eoOk3UUO9P+1nZNHjE/iDhuTi3x/5naW4SzdkZfxHo/NMI6i5w1ZnQ60CQQD9d0G9gBy6lPhC  \\\\\\\\\",\n                \"line_num\": 6,\n                \"path\": \"./tests/samples/pem_key\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"\\t\\t\\\"9lfCb8cWq0eoOk3UUO9P+1nZNHjE/iDhuTi3x/5naW4SzdkZfxHo/NMI6i5w1ZnQ60CQQD9d0G9gBy6lPhC  \\\\\\\\\",\n                \"value_start\": 0,\n                \"value_end\": 90,\n                \"entropy\": 5.53586\n            },\n            {\n                \"line\": \"\\\"\\\"\\\" mbHzYovVjSnyfzUtyWPNSrXNiUCR5vu2f6eCgSVzFZ0oHAv8nLaYnXrhyT25lwzNK5OhR/oPAkEA8tep3NmfxV \\\"\\\"\\\" +\",\n                \"line_num\": 7,\n                \"path\": \"./tests/samples/pem_key\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"\\\"\\\"\\\" mbHzYovVjSnyfzUtyWPNSrXNiUCR5vu2f6eCgSVzFZ0oHAv8nLaYnXrhyT25lwzNK5OhR/oPAkEA8tep3NmfxV \\\"\\\"\\\" +\",\n                \"value_start\": 0,\n                \"value_end\": 96,\n                \"entropy\": 5.46977\n            },\n            {\n                \"line\": \"QSBfKGfotblIG709xxfd6vHfDS0eZuTFUxkZDcayZDhMDjTMZxP8rokSbMaOSqUseUeYhx5TqFPwJAAhC0smyWz1ZjZ3eFIayN4yGRU+6B\\\\r\\\\n\",\n                \"line_num\": 8,\n                \"path\": \"./tests/samples/pem_key\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"QSBfKGfotblIG709xxfd6vHfDS0eZuTFUxkZDcayZDhMDjTMZxP8rokSbMaOSqUseUeYhx5TqFPwJAAhC0smyWz1ZjZ3eFIayN4yGRU+6B\\\\r\\\\n\",\n                \"value_start\": 0,\n                \"value_end\": 110,\n                \"entropy\": 5.55951\n            },\n            {\n                \"line\": \"\\\"amwXqhaPwKr7obS2HFiR7thKi9ODQk5oMpi8TCYMWEahgB+g9RMD0u6ZNQJBAMla\\\\\\\\\\\\\\\\nUJmySGuRnbAYu7PJURH90AOG0QOQ1Jp6yBMKgYIB\\\\\\\\\",\n                \"line_num\": 9,\n                \"path\": \"./tests/samples/pem_key\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"\\\"amwXqhaPwKr7obS2HFiR7thKi9ODQk5oMpi8TCYMWEahgB+g9RMD0u6ZNQJBAMla\\\\\\\\\\\\\\\\nUJmySGuRnbAYu7PJURH90AOG0QOQ1Jp6yBMKgYIB\\\\\\\\\",\n                \"value_start\": 0,\n                \"value_end\": 112,\n                \"entropy\": 5.49108\n            },\n            {\n                \"line\": \"Uaxk9J5Th8BXPyC1mclPMS7J\\\\\\\\\\\\\\\\ngMuobiFdIpryq51pvHkCQQDInvDaKI24Ho+cj6SCKnEO4kbjh/yx1XGwNmY0ld1i\\\\\\\\r5micHFiMI7/IcVZ4\\\\n\",\n                \"line_num\": 10,\n                \"path\": \"./tests/samples/pem_key\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"Uaxk9J5Th8BXPyC1mclPMS7J\\\\\\\\\\\\\\\\ngMuobiFdIpryq51pvHkCQQDInvDaKI24Ho+cj6SCKnEO4kbjh/yx1XGwNmY0ld1i\\\\\\\\r5micHFiMI7/IcVZ4\\\\n\",\n                \"value_start\": 0,\n                \"value_end\": 114,\n                \"entropy\": 5.57587\n            },\n            {\n                \"line\": \"2cl1OwdGjRdmO1LT6P1cl8UYIj/S\\\\n-----END RSA PRIVATE KEY-----\\\"\\\"\\\";\",\n                \"line_num\": 11,\n                \"path\": \"./tests/samples/pem_key\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"2cl1OwdGjRdmO1LT6P1cl8UYIj/S\\\\n-----END RSA PRIVATE KEY-----\\\"\\\"\\\";\",\n                \"value_start\": 0,\n                \"value_end\": 63,\n                \"entropy\": 4.72341\n            }\n        ]\n    },\n    {\n        \"rule\": \"PEM Private Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"char pk[] = \\\"\\\\\\\\n-----BEGIN EC PRIVATE KEY-----\\\\nMHcCAQEEID4VC4s0b2n3yvypHb2GO9prFUctYt\\\\r\\\\r\\\\n\\\\nHmGCMvpxkpexbHoAoGCCqGSM49\\\\\\\\\\\\\\\\\\\\nAwEHoUQDQgAE2GwUUuO9/dKl51bOryWzHF8wTSezSqdRIucGhDRsmDITLcNEZw3V\\\\\\\\\\\\\\\\rIaQP59Ufkz8NIkLeIAa1HZGZxCVMQ907FA==\\\\\\\\n-----END EC PRIVATE KEY-----\\\\n\\\";\",\n                \"line_num\": 14,\n                \"path\": \"./tests/samples/pem_key\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"-----BEGIN EC PRIVATE KEY-----\\\\nMHcCAQEEID4VC4s0b2n3yvypHb2GO9prFUctYt\\\\r\\\\r\\\\n\\\\nHmGCMvpxkpexbHoAoGCCqGSM49\\\\\\\\\\\\\\\\\\\\nAwEHoUQDQgAE2GwUUuO9/dKl51bOryWzHF8wTSezSqdRIucGhDRsmDITLcNEZw3V\\\\\\\\\\\\\\\\rIaQP59Ufkz8NIkLeIAa1HZGZxCVMQ907FA==\\\\\\\\n-----END EC PRIVATE KEY-----\",\n                \"value_start\": 16,\n                \"value_end\": 262,\n                \"entropy\": 5.56558\n            }\n        ]\n    },\n    {\n        \"rule\": \"PEM Private Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"-----BEGIN OPENSSH LOW ENTROPY PRIVATE KEY-----\",\n                \"line_num\": 27,\n                \"path\": \"./tests/samples/pem_key\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"-----BEGIN OPENSSH LOW ENTROPY PRIVATE KEY-----\",\n                \"value_start\": 0,\n                \"value_end\": 47,\n                \"entropy\": 3.8375\n            },\n            {\n                \"line\": \"12345678901231278634987284736283548102438723941563428762374129402103402394932746672734543664375t7323341253845186253784==\",\n                \"line_num\": 28,\n                \"path\": \"./tests/samples/pem_key\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"12345678901231278634987284736283548102438723941563428762374129402103402394932746672734543664375t7323341253845186253784==\",\n                \"value_start\": 0,\n                \"value_end\": 120,\n                \"entropy\": 3.30679\n            },\n            {\n                \"line\": \"-----END LOW ENTROPY PRIVATE KEY-----\",\n                \"line_num\": 29,\n                \"path\": \"./tests/samples/pem_key\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"-----END LOW ENTROPY PRIVATE KEY-----\",\n                \"value_start\": 0,\n                \"value_end\": 37,\n                \"entropy\": 3.55488\n            }\n        ]\n    },\n    {\n        \"rule\": \"PEM Private Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"  *  -----BEGIN PGP PRIVATE KEY BLOCK-----\",\n                \"line_num\": 35,\n                \"path\": \"./tests/samples/pem_key\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"-----BEGIN PGP PRIVATE KEY BLOCK-----\",\n                \"value_start\": 5,\n                \"value_end\": 42,\n                \"entropy\": 3.62218\n            },\n            {\n                \"line\": \"  *  Version: GnuPG v1.4.12 (GNU/Linux)\",\n                \"line_num\": 36,\n                \"path\": \"./tests/samples/pem_key\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"  *  Version: GnuPG v1.4.12 (GNU/Linux)\",\n                \"value_start\": 0,\n                \"value_end\": 39,\n                \"entropy\": 4.33255\n            },\n            {\n                \"line\": \"\",\n                \"line_num\": 37,\n                \"path\": \"./tests/samples/pem_key\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"\",\n                \"value_start\": 0,\n                \"value_end\": 0,\n                \"entropy\": 0.0\n            },\n            {\n                \"line\": \"  *  KzUsCyhuzSRrWk74aarzJ6i3z4wB01Y6wUn5rkbB8ig3eRjZtke1iX8c5cLtx3Mj\",\n                \"line_num\": 38,\n                \"path\": \"./tests/samples/pem_key\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"KzUsCyhuzSRrWk74aarzJ6i3z4wB01Y6wUn5rkbB8ig3eRjZtke1iX8c5cLtx3Mj\",\n                \"value_start\": 5,\n                \"value_end\": 69,\n                \"entropy\": 5.14032\n            },\n            {\n                \"line\": \"  *  SkMlXtGJEXbSEcN4wyPJkLZ6YxI76+WKuWlHZWdMXTrDYJLhvN6X7xUx4LgsGtb8\",\n                \"line_num\": 39,\n                \"path\": \"./tests/samples/pem_key\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"SkMlXtGJEXbSEcN4wyPJkLZ6YxI76+WKuWlHZWdMXTrDYJLhvN6X7xUx4LgsGtb8\",\n                \"value_start\": 5,\n                \"value_end\": 69,\n                \"entropy\": 5.09727\n            },\n            {\n                \"line\": \" //\\tGuVDoS4h4fZPyksjPyNpjUklFOZT6vTT2/QvOYxRTt/NLBleEpQEIHu6lHiwqsqB\",\n                \"line_num\": 40,\n                \"path\": \"./tests/samples/pem_key\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"GuVDoS4h4fZPyksjPyNpjUklFOZT6vTT2/QvOYxRTt/NLBleEpQEIHu6lHiwqsqB\",\n                \"value_start\": 4,\n                \"value_end\": 68,\n                \"entropy\": 5.20695\n            },\n            {\n                \"line\": \" ///\\t57KDXUMrZH/hk9Rr8mgdCT/evvhuKLBljh6ShBqn+jrMy101jHBlhxRefDjq9pmI\",\n                \"line_num\": 41,\n                \"path\": \"./tests/samples/pem_key\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"57KDXUMrZH/hk9Rr8mgdCT/evvhuKLBljh6ShBqn+jrMy101jHBlhxRefDjq9pmI\",\n                \"value_start\": 5,\n                \"value_end\": 69,\n                \"entropy\": 5.13876\n            },\n            {\n                \"line\": \"  //  UhZRwnRxgNb86LEEcgcK35SZCFnQu+POJWwWwWpkzpPiYHS+G66c3k0ApdIJjn2k\",\n                \"line_num\": 42,\n                \"path\": \"./tests/samples/pem_key\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"UhZRwnRxgNb86LEEcgcK35SZCFnQu+POJWwWwWpkzpPiYHS+G66c3k0ApdIJjn2k\",\n                \"value_start\": 6,\n                \"value_end\": 70,\n                \"entropy\": 5.19868\n            },\n            {\n                \"line\": \"  ///  q1yJq3TyI0Uc/snUIboAFHI5HIJHXQX/lwmeY/pDtuT6S+tf7XFMHXWWDtzb2xkI\",\n                \"line_num\": 43,\n                \"path\": \"./tests/samples/pem_key\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"q1yJq3TyI0Uc/snUIboAFHI5HIJHXQX/lwmeY/pDtuT6S+tf7XFMHXWWDtzb2xkI\",\n                \"value_start\": 7,\n                \"value_end\": 71,\n                \"entropy\": 5.13876\n            },\n            {\n                \"line\": \"// # /*iO/qjWpQtL6R1C03xMpECkmQaMOY/k9Hwg4JJa9YTe3DrehBz/NDw9iKaBHHKxf1*/\",\n                \"line_num\": 44,\n                \"path\": \"./tests/samples/pem_key\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"iO/qjWpQtL6R1C03xMpECkmQaMOY/k9Hwg4JJa9YTe3DrehBz/NDw9iKaBHHKxf1\",\n                \"value_start\": 7,\n                \"value_end\": 71,\n                \"entropy\": 5.17157\n            },\n            {\n                \"line\": \"# # # *  874RZktKcNFG9Yx0CZH7mRhAxiQG1iTbzLzM/rN+rb8DZnt8ijlp5/YzZeAVXUi9\",\n                \"line_num\": 45,\n                \"path\": \"./tests/samples/pem_key\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"874RZktKcNFG9Yx0CZH7mRhAxiQG1iTbzLzM/rN+rb8DZnt8ijlp5/YzZeAVXUi9\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.22641\n            },\n            {\n                \"line\": \"#+#+#+# *  IunznTXS1QmfDC6dVyRGfaJwzf6hk8RlM24JuZ3ATLaZ9sY5uZuXVa8syNwAGqVb\",\n                \"line_num\": 46,\n                \"path\": \"./tests/samples/pem_key\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"IunznTXS1QmfDC6dVyRGfaJwzf6hk8RlM24JuZ3ATLaZ9sY5uZuXVa8syNwAGqVb\",\n                \"value_start\": 11,\n                \"value_end\": 75,\n                \"entropy\": 5.17157\n            },\n            {\n                \"line\": \"  +  'yGeBfo8L8SigTUdhFrLc1AlgAGPh99fYyscpE+U+Tqm3Jl3vDLJ/VGGOLRlqLKgi' +\",\n                \"line_num\": 47,\n                \"path\": \"./tests/samples/pem_key\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"yGeBfo8L8SigTUdhFrLc1AlgAGPh99fYyscpE+U+Tqm3Jl3vDLJ/VGGOLRlqLKgi\",\n                \"value_start\": 6,\n                \"value_end\": 70,\n                \"entropy\": 5.10751\n            },\n            {\n                \"line\": \" +\\\"\\\" +\\\" 1DDOZJIuWH1Yo5/FUyH7x7McRO7ckDnCwknuXUlaCCzjomFZkoAUSym59+u0LlAh\\\"+\",\n                \"line_num\": 48,\n                \"path\": \"./tests/samples/pem_key\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"1DDOZJIuWH1Yo5/FUyH7x7McRO7ckDnCwknuXUlaCCzjomFZkoAUSym59+u0LlAh\",\n                \"value_start\": 8,\n                \"value_end\": 72,\n                \"entropy\": 5.10493\n            },\n            {\n                \"line\": \"  *  pBUvFiIZFQb3auylOTyOvXI4ZG8lPQfHKdpK3x2U4nUdCD9z7/awEpODLPWkdzjf\",\n                \"line_num\": 49,\n                \"path\": \"./tests/samples/pem_key\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"pBUvFiIZFQb3auylOTyOvXI4ZG8lPQfHKdpK3x2U4nUdCD9z7/awEpODLPWkdzjf\",\n                \"value_start\": 5,\n                \"value_end\": 69,\n                \"entropy\": 5.23407\n            },\n            {\n                \"line\": \"  *  gUjuP7eJrK/5p2iJ9PSz6+fytneqnUdwVbKOdlcj7UFnVUAIxlBiA2xdwVKqNo70\",\n                \"line_num\": 50,\n                \"path\": \"./tests/samples/pem_key\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"gUjuP7eJrK/5p2iJ9PSz6+fytneqnUdwVbKOdlcj7UFnVUAIxlBiA2xdwVKqNo70\",\n                \"value_start\": 5,\n                \"value_end\": 69,\n                \"entropy\": 5.15977\n            },\n            {\n                \"line\": \"  *  QMnczlCtGqUmeAwimQ+IyMkyV0KJYwV/PFCXjfQ2G/mnN88OtWcz793omSsWmwGc\",\n                \"line_num\": 51,\n                \"path\": \"./tests/samples/pem_key\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"QMnczlCtGqUmeAwimQ+IyMkyV0KJYwV/PFCXjfQ2G/mnN88OtWcz793omSsWmwGc\",\n                \"value_start\": 5,\n                \"value_end\": 69,\n                \"entropy\": 5.20892\n            },\n            {\n                \"line\": \"  *  iAViSZ0A0JWpTZHnZs8DDpmuDcydnyLMJDXHyOqtVe0lmWxpSTmfESFlSKeveYeY\",\n                \"line_num\": 52,\n                \"path\": \"./tests/samples/pem_key\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"iAViSZ0A0JWpTZHnZs8DDpmuDcydnyLMJDXHyOqtVe0lmWxpSTmfESFlSKeveYeY\",\n                \"value_start\": 5,\n                \"value_end\": 69,\n                \"entropy\": 4.94102\n            },\n            {\n                \"line\": \"  *  5Wq3vumtleWydYNgxgwwaPEApnr+uCk2J0Ye0+BjFRJHfPT4oBHzfrvWZq3lTnMJ\",\n                \"line_num\": 53,\n                \"path\": \"./tests/samples/pem_key\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"5Wq3vumtleWydYNgxgwwaPEApnr+uCk2J0Ye0+BjFRJHfPT4oBHzfrvWZq3lTnMJ\",\n                \"value_start\": 5,\n                \"value_end\": 69,\n                \"entropy\": 5.28891\n            },\n            {\n                \"line\": \"  *  HFNAoTz9q//Ty/CsKdla5HOsOgFJx42T12tb+N0eK9Bc5/Fj3FBLKtXUgI7gqOcw\",\n                \"line_num\": 54,\n                \"path\": \"./tests/samples/pem_key\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"HFNAoTz9q//Ty/CsKdla5HOsOgFJx42T12tb+N0eK9Bc5/Fj3FBLKtXUgI7gqOcw\",\n                \"value_start\": 5,\n                \"value_end\": 69,\n                \"entropy\": 5.14032\n            },\n            {\n                \"line\": \"  *  pFZSbyaPPMRZ/4kPx0+KaDZcZ7r2roCJFKxpeIeyeMXvLr0C2dAmB/oBWBuHuAsw\",\n                \"line_num\": 55,\n                \"path\": \"./tests/samples/pem_key\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"pFZSbyaPPMRZ/4kPx0+KaDZcZ7r2roCJFKxpeIeyeMXvLr0C2dAmB/oBWBuHuAsw\",\n                \"value_start\": 5,\n                \"value_end\": 69,\n                \"entropy\": 5.14032\n            },\n            {\n                \"line\": \"  *  ESn0CmT7gTwJ33lQHYBFAUeNMXPERcAFAWUXPxWGfgmOBBADCwDFcKVwnhM9UGTy\",\n                \"line_num\": 56,\n                \"path\": \"./tests/samples/pem_key\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"ESn0CmT7gTwJ33lQHYBFAUeNMXPERcAFAWUXPxWGfgmOBBADCwDFcKVwnhM9UGTy\",\n                \"value_start\": 5,\n                \"value_end\": 69,\n                \"entropy\": 5.09727\n            },\n            {\n                \"line\": \"  *  OBDjurirbyR6QM4cbq2qAzR0CRO6yyI9aXGkzy4P6y0LKQ0hJ9je2rp/4Ud2CdY4\",\n                \"line_num\": 57,\n                \"path\": \"./tests/samples/pem_key\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"OBDjurirbyR6QM4cbq2qAzR0CRO6yyI9aXGkzy4P6y0LKQ0hJ9je2rp/4Ud2CdY4\",\n                \"value_start\": 5,\n                \"value_end\": 69,\n                \"entropy\": 5.04087\n            },\n            {\n                \"line\": \"  *  idZTtlIeiFfpHqjCQLjH+zaEG2pqRGuBHxqeGTuJKcpTzDeJkUr278hNDUSFtCQI\",\n                \"line_num\": 58,\n                \"path\": \"./tests/samples/pem_key\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"idZTtlIeiFfpHqjCQLjH+zaEG2pqRGuBHxqeGTuJKcpTzDeJkUr278hNDUSFtCQI\",\n                \"value_start\": 5,\n                \"value_end\": 69,\n                \"entropy\": 5.14798\n            },\n            {\n                \"line\": \"  *  TGnx4JlcYHYLAvcjg0a2YhQyOcaS8iJhxaF+4yoMIh0DB5FA0V3ifF364h/o5wN7\",\n                \"line_num\": 59,\n                \"path\": \"./tests/samples/pem_key\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"TGnx4JlcYHYLAvcjg0a2YhQyOcaS8iJhxaF+4yoMIh0DB5FA0V3ifF364h/o5wN7\",\n                \"value_start\": 5,\n                \"value_end\": 69,\n                \"entropy\": 5.17923\n            },\n            {\n                \"line\": \"  *  /XOifXctwWKfR91qGtltlCWeVdFuumSOPG2hxLPW4HOlOWkhdOCRFtkqQuYd+bRz\",\n                \"line_num\": 60,\n                \"path\": \"./tests/samples/pem_key\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"/XOifXctwWKfR91qGtltlCWeVdFuumSOPG2hxLPW4HOlOWkhdOCRFtkqQuYd+bRz\",\n                \"value_start\": 5,\n                \"value_end\": 69,\n                \"entropy\": 4.99017\n            },\n            {\n                \"line\": \"  *  OoMgCLuFYDUvd7bso+IjrhPLTPHhr8V1CYz9jsKDXLvoz5XHvobkyijxOt+332SB\",\n                \"line_num\": 61,\n                \"path\": \"./tests/samples/pem_key\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"OoMgCLuFYDUvd7bso+IjrhPLTPHhr8V1CYz9jsKDXLvoz5XHvobkyijxOt+332SB\",\n                \"value_start\": 5,\n                \"value_end\": 69,\n                \"entropy\": 5.21461\n            },\n            {\n                \"line\": \"  *  4Rez5/vpHftx6pHbCa+LfdUZDYPeTUHgtTvqmbDMvwHMMwgMJP6gF6jyQINYXTIN\",\n                \"line_num\": 62,\n                \"path\": \"./tests/samples/pem_key\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"4Rez5/vpHftx6pHbCa+LfdUZDYPeTUHgtTvqmbDMvwHMMwgMJP6gF6jyQINYXTIN\",\n                \"value_start\": 5,\n                \"value_end\": 69,\n                \"entropy\": 5.07782\n            },\n            {\n                \"line\": \"  *  sTFVBS2exAu1uy/2onjE1ROZJqsKF6At24LzlZJZvKJRVh8n0Jrchs+8EluojWyv\",\n                \"line_num\": 63,\n                \"path\": \"./tests/samples/pem_key\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"sTFVBS2exAu1uy/2onjE1ROZJqsKF6At24LzlZJZvKJRVh8n0Jrchs+8EluojWyv\",\n                \"value_start\": 5,\n                \"value_end\": 69,\n                \"entropy\": 5.10907\n            },\n            {\n                \"line\": \"  *  ZIgdqdWv+SLPoZX7+2X/3DptmnL4PWZgjoW5n9fEkmr9LgblEpKp5z6vyN2kGdvk\",\n                \"line_num\": 64,\n                \"path\": \"./tests/samples/pem_key\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"ZIgdqdWv+SLPoZX7+2X/3DptmnL4PWZgjoW5n9fEkmr9LgblEpKp5z6vyN2kGdvk\",\n                \"value_start\": 5,\n                \"value_end\": 69,\n                \"entropy\": 5.09314\n            },\n            {\n                \"line\": \"  *  n57vMlC96VDbJkJ4ZwLx+XCdbSArsmOJ9QIKaxXSH2lV\",\n                \"line_num\": 65,\n                \"path\": \"./tests/samples/pem_key\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"n57vMlC96VDbJkJ4ZwLx+XCdbSArsmOJ9QIKaxXSH2lV\",\n                \"value_start\": 5,\n                \"value_end\": 49,\n                \"entropy\": 4.98773\n            },\n            {\n                \"line\": \"  *  =JG+I\",\n                \"line_num\": 66,\n                \"path\": \"./tests/samples/pem_key\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"=JG+I\",\n                \"value_start\": 5,\n                \"value_end\": 10,\n                \"entropy\": 2.32193\n            },\n            {\n                \"line\": \"  *  -----END PGP PRIVATE KEY BLOCK-----\",\n                \"line_num\": 67,\n                \"path\": \"./tests/samples/pem_key\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"-----END PGP PRIVATE KEY BLOCK-----\",\n                \"value_start\": 5,\n                \"value_end\": 40,\n                \"entropy\": 3.62274\n            }\n        ]\n    },\n    {\n        \"rule\": \"PEM Private Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"k = \\\"\\\\\\\"-----BEGIN PRIVATE KEY-----\\\\\\\\n\\\"\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/pem_key.p.code\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"-----BEGIN PRIVATE KEY-----\",\n                \"value_start\": 7,\n                \"value_end\": 34,\n                \"entropy\": 3.20029\n            },\n            {\n                \"line\": \" +   \\\"MIIBVAIBADANBgkqhkiG9w0BAQEFAASCAT4wggE6AgEAAkEAxAIxg6QtxmnJ0Bsj\\\\\\\\n\\\"\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/pem_key.p.code\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"MIIBVAIBADANBgkqhkiG9w0BAQEFAASCAT4wggE6AgEAAkEAxAIxg6QtxmnJ0Bsj\",\n                \"value_start\": 6,\n                \"value_end\": 70,\n                \"entropy\": 4.44143\n            },\n            {\n                \"line\": \" +   \\\"VRsEhjLB9lSY9CaFvvEbXK9eBezqR6x6epxm4w/bx1xAK1O9m4iyEN72+jhpZHZs\\\\\\\\n\\\"\",\n                \"line_num\": 3,\n                \"path\": \"./tests/samples/pem_key.p.code\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"VRsEhjLB9lSY9CaFvvEbXK9eBezqR6x6epxm4w/bx1xAK1O9m4iyEN72+jhpZHZs\",\n                \"value_start\": 6,\n                \"value_end\": 70,\n                \"entropy\": 5.16391\n            },\n            {\n                \"line\": \" +   \\\"6RZsxQIDAQABAkBbzksyxWtLS7Fi79MUwZrU4GFI50bc1E5AqN2QA/OeAg+tdgRC\\\\\\\\n\\\"\",\n                \"line_num\": 4,\n                \"path\": \"./tests/samples/pem_key.p.code\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"6RZsxQIDAQABAkBbzksyxWtLS7Fi79MUwZrU4GFI50bc1E5AqN2QA/OeAg+tdgRC\",\n                \"value_start\": 6,\n                \"value_end\": 70,\n                \"entropy\": 5.24586\n            },\n            {\n                \"line\": \" +   \\\"eTVV2eZEM750xZUCoqDwLsLeYrGFR7zy0VkBAiEA5ljPCFu3UIVOgZXhSr342mTX\\\\\\\\n\\\"\",\n                \"line_num\": 5,\n                \"path\": \"./tests/samples/pem_key.p.code\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"eTVV2eZEM750xZUCoqDwLsLeYrGFR7zy0VkBAiEA5ljPCFu3UIVOgZXhSr342mTX\",\n                \"value_start\": 6,\n                \"value_end\": 70,\n                \"entropy\": 5.28891\n            },\n            {\n                \"line\": \" +   \\\"vC9/t9XrGuHCQU8oOW0CIQDZ1mYBOniJmPD0h5j1wadmLkmmZRPUNyMTEHiBUEmB\\\\\\\\n\\\"\",\n                \"line_num\": 6,\n                \"path\": \"./tests/samples/pem_key.p.code\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"vC9/t9XrGuHCQU8oOW0CIQDZ1mYBOniJmPD0h5j1wadmLkmmZRPUNyMTEHiBUEmB\",\n                \"value_start\": 6,\n                \"value_end\": 70,\n                \"entropy\": 5.19102\n            },\n            {\n                \"line\": \" +   \\\"uQIgSpG1dB882PRO1eSPaoLVbN34eRNnZTv7QFiVak8V1oECIGk3tKdtPaGAnQoP\\\\\\\\n\\\"\",\n                \"line_num\": 7,\n                \"path\": \"./tests/samples/pem_key.p.code\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"uQIgSpG1dB882PRO1eSPaoLVbN34eRNnZTv7QFiVak8V1oECIGk3tKdtPaGAnQoP\",\n                \"value_start\": 6,\n                \"value_end\": 70,\n                \"entropy\": 5.04243\n            },\n            {\n                \"line\": \" +   \\\"oOM7eYbSXsKfWdeMFkX0E7CqPgcJAiEAlydP8ln92gy4LefZuIJn1/M5PEeRFKrq\\\\\\\\n\\\"\",\n                \"line_num\": 8,\n                \"path\": \"./tests/samples/pem_key.p.code\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"oOM7eYbSXsKfWdeMFkX0E7CqPgcJAiEAlydP8ln92gy4LefZuIJn1/M5PEeRFKrq\",\n                \"value_start\": 6,\n                \"value_end\": 70,\n                \"entropy\": 5.24586\n            },\n            {\n                \"line\": \" +   \\\"aAjRMKT7uCM=\\\\\\\\n\\\"\",\n                \"line_num\": 9,\n                \"path\": \"./tests/samples/pem_key.p.code\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"aAjRMKT7uCM=\",\n                \"value_start\": 6,\n                \"value_end\": 18,\n                \"entropy\": 3.4183\n            },\n            {\n                \"line\": \" +   \\\"-----END RSA PRIVATE KEY-----\\\\\\\"\\\";\",\n                \"line_num\": 10,\n                \"path\": \"./tests/samples/pem_key.p.code\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"-----END RSA PRIVATE KEY-----\",\n                \"value_start\": 6,\n                \"value_end\": 35,\n                \"entropy\": 3.24663\n            }\n        ]\n    },\n    {\n        \"rule\": \"PEM Private Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"#6 0.245 -----BEGIN PRIVATE KEY-----\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"-----BEGIN PRIVATE KEY-----\",\n                \"value_start\": 9,\n                \"value_end\": 36,\n                \"entropy\": 3.20029\n            },\n            {\n                \"line\": \"#6 0.245 MIITXgIBADALBglghkgBZQMEAxMEghNKMIITRgQgD1HmdulwXADuIR7CZpjn+kQ0\",\n                \"line_num\": 3,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"MIITXgIBADALBglghkgBZQMEAxMEghNKMIITRgQgD1HmdulwXADuIR7CZpjn+kQ0\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 4.69647\n            },\n            {\n                \"line\": \"#6 0.245 YQQLBsEKL+QJ4mm5BhsEghMg0QKJZBJu8a93tNmECcVyVI3601WKlimBrior84u+\",\n                \"line_num\": 4,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"YQQLBsEKL+QJ4mm5BhsEghMg0QKJZBJu8a93tNmECcVyVI3601WKlimBrior84u+\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 4.99586\n            },\n            {\n                \"line\": \"#6 0.245 9hLuy5J9PtjU05AGBBMW2LmlLopK1mROkYdqKofmVjQ625mx0+VmcrlcPBwO2Ows\",\n                \"line_num\": 5,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"9hLuy5J9PtjU05AGBBMW2LmlLopK1mROkYdqKofmVjQ625mx0+VmcrlcPBwO2Ows\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.13462\n            },\n            {\n                \"line\": \"#6 0.245 P0F354UFIsuK8u9gKDv1QUuJBcub6W/4aPBBmCSlKK6t4X6ODXmTZm0q4krMQsAk\",\n                \"line_num\": 6,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"P0F354UFIsuK8u9gKDv1QUuJBcub6W/4aPBBmCSlKK6t4X6ODXmTZm0q4krMQsAk\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.12086\n            },\n            {\n                \"line\": \"#6 0.245 doxhFgUQJS6SAAGTwoDjEIAckTAao1AQsQkUBA3SOEzQwDGTyJCQFI0IkRARl4kS\",\n                \"line_num\": 7,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"doxhFgUQJS6SAAGTwoDjEIAckTAao1AQsQkUBA3SOEzQwDGTyJCQFI0IkRARl4kS\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 4.78866\n            },\n            {\n                \"line\": \"#6 0.245 BInUAmzcgGHjBE3MmEXTQAFjiCnIFgAApYSToJAMFYASoBHaIHEUJy2KGIbSAhIB\",\n                \"line_num\": 8,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"BInUAmzcgGHjBE3MmEXTQAFjiCnIFgAApYSToJAMFYASoBHaIHEUJy2KGIbSAhIB\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 4.74561\n            },\n            {\n                \"line\": \"#6 0.245 QRKCGIUgkWkhMI4JIZHRhGWBllELxIxhkCRJwinIFGIMqTHJRm6jEoBJAI0SBQVD\",\n                \"line_num\": 9,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"QRKCGIUgkWkhMI4JIZHRhGWBllELxIxhkCRJwinIFGIMqTHJRm6jEoBJAI0SBQVD\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 4.89577\n            },\n            {\n                \"line\": \"#6 0.245 qBAgEQERJoVIgE0Ct42IMEJIMoxJAggSQwYhsiXjmEkMR3HZNAXRFiqjFgAkwUgE\",\n                \"line_num\": 10,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"qBAgEQERJoVIgE0Ct42IMEJIMoxJAggSQwYhsiXjmEkMR3HZNAXRFiqjFgAkwUgE\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 4.81189\n            },\n            {\n                \"line\": \"#6 0.245 A4YTFQ1aFgrYNo7TGApJBkTggC0kR0wDAJKUGDBBNoqjAAkTKWEBto0AAIYERWxE\",\n                \"line_num\": 11,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"A4YTFQ1aFgrYNo7TGApJBkTggC0kR0wDAJKUGDBBNoqjAAkTKWEBto0AAIYERWxE\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 4.74717\n            },\n            {\n                \"line\": \"#6 0.245 xEwiqYgUxxGAKICTkEQIwRDDFmgQhEGbEgySGDASuUhbIkWJtCAKgGGhBoXDImGY\",\n                \"line_num\": 12,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"xEwiqYgUxxGAKICTkEQIwRDDFmgQhEGbEgySGDASuUhbIkWJtCAKgGGhBoXDImGY\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 4.72227\n            },\n            {\n                \"line\": \"#6 0.245 JEULtzEQMCIhKY0jwGThQIwBQY6QhpDDGAwUQCHUJpDhAiwiIZJTME6kFipBGA3R\",\n                \"line_num\": 13,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"JEULtzEQMCIhKY0jwGThQIwBQY6QhpDDGAwUQCHUJpDhAiwiIZJTME6kFipBGA3R\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 4.71244\n            },\n            {\n                \"line\": \"#6 0.245 qCzDQDKiAiUDBDEZuGXhAnASMDCMNpAEsWChJBATpUFUMilgyIlgyEwYJoUZGVGY\",\n                \"line_num\": 14,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"qCzDQDKiAiUDBDEZuGXhAnASMDCMNpAEsWChJBATpUFUMilgyIlgyEwYJoUZGVGY\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 4.85947\n            },\n            {\n                \"line\": \"#6 0.245 ogjZhJHTECwUFgUjQCkBRgbMEI4blUSEyAHklAXklgUYw0xaSDIJIkGDFiJRkkiK\",\n                \"line_num\": 15,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"ogjZhJHTECwUFgUjQCkBRgbMEI4blUSEyAHklAXklgUYw0xaSDIJIkGDFiJRkkiK\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 4.86673\n            },\n            {\n                \"line\": \"#6 0.245 gCDTQITBBBGRsmGcBJIYBXIQp4yDtA3QmE3UJI0QgCVawCwLBRCKNDAcMoIDAxII\",\n                \"line_num\": 16,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"gCDTQITBBBGRsmGcBJIYBXIQp4yDtA3QmE3UJI0QgCVawCwLBRCKNDAcMoIDAxII\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 4.72006\n            },\n            {\n                \"line\": \"#6 0.245 RmJCsmCaAojIQg0MtQzDmEQZgYESQSQZpY0kqUDgOEoQgoRCREyMJE0YJkojyCgg\",\n                \"line_num\": 17,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"RmJCsmCaAojIQg0MtQzDmEQZgYESQSQZpY0kqUDgOEoQgoRCREyMJE0YJkojyCgg\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 4.49369\n            },\n            {\n                \"line\": \"#6 0.245 EQ5cGA4hNI0TBoKbIkiQOCyMAjIhl1DgKAlbwnCYKAzKQECCGHDiBJBJNBEiE4Ia\",\n                \"line_num\": 18,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"EQ5cGA4hNI0TBoKbIkiQOCyMAjIhl1DgKAlbwnCYKAzKQECCGHDiBJBJNBEiE4Ia\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 4.85141\n            },\n            {\n                \"line\": \"#6 0.245 xo0CIoRcNiUapW1UmGHLREVihg0ZRiYUxwzEwEHToCQDMIiSAFGaQAhSNIpaIo3g\",\n                \"line_num\": 19,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"xo0CIoRcNiUapW1UmGHLREVihg0ZRiYUxwzEwEHToCQDMIiSAFGaQAhSNIpaIo3g\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 4.92157\n            },\n            {\n                \"line\": \"#6 0.245 kgCjgoDAEEXKOGYYmGhaNArJGEQiCASkliCaIoohtAlRQhJIBE6EICFREm4DAnEK\",\n                \"line_num\": 20,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"kgCjgoDAEEXKOGYYmGhaNArJGEQiCASkliCaIoohtAlRQhJIBE6EICFREm4DAnEK\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 4.71436\n            },\n            {\n                \"line\": \"#6 0.245 pihYGGLKmIxiRC4DOEwaEwICwQxbEgAiBwILEWKKCE1aiAzYOI0joyGCxoAEBG3h\",\n                \"line_num\": 21,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"pihYGGLKmIxiRC4DOEwaEwICwQxbEgAiBwILEWKKCE1aiAzYOI0joyGCxoAEBG3h\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 4.69102\n            },\n            {\n                \"line\": \"#6 0.245 towIwBDkRFJaKI4CQEEKQ3ASuEEKQ24JOI4DIQYckyjJQDGRQIQKISUMImyQoGkA\",\n                \"line_num\": 22,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"towIwBDkRFJaKI4CQEEKQ3ASuEEKQ24JOI4DIQYckyjJQDGRQIQKISUMImyQoGkA\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 4.55202\n            },\n            {\n                \"line\": \"#6 0.245 NjEgRFLgFIKRQHEEJpAcCAIIhISbxgwLQU3koAxBIgoTFomElASihhBhME4jhiQA\",\n                \"line_num\": 23,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"NjEgRFLgFIKRQHEEJpAcCAIIhISbxgwLQU3koAxBIgoTFomElASihhBhME4jhiQA\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 4.70776\n            },\n            {\n                \"line\": \"#6 0.245 BgCSAkUioBHhKE2IkGUCkhBDEALcQJEYowwbF2lKCIETEUqSBFEKQGnBtpCYQoBU\",\n                \"line_num\": 24,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"BgCSAkUioBHhKE2IkGUCkhBDEALcQJEYowwbF2lKCIETEUqSBFEKQGnBtpCYQoBU\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 4.68689\n            },\n            {\n                \"line\": \"#6 0.245 tHFbJHEaiYxKAmEaB21buAgKNiFBpkUbMjIJsYCEhEVBIBHZMiAaRg0hCVAjMxDE\",\n                \"line_num\": 25,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"tHFbJHEaiYxKAmEaB21buAgKNiFBpkUbMjIJsYCEhEVBIBHZMiAaRg0hCVAjMxDE\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 4.85337\n            },\n            {\n                \"line\": \"#6 0.245 mADZMHAIEw4QoFFgKFIgMikiMmUJgZGLwmEBsQUihmBbJhIEMGYSN4iSRkDbECba\",\n                \"line_num\": 26,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"mADZMHAIEw4QoFFgKFIgMikiMmUJgZGLwmEBsQUihmBbJhIEMGYSN4iSRkDbECba\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 4.79657\n            },\n            {\n                \"line\": \"#6 0.245 BmghyVBJiGTjwClJRJIMyWUAQgWAIAmDEHCKwoiBEEJKEBFiMiXcRIGZwCCLwA1U\",\n                \"line_num\": 27,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"BmghyVBJiGTjwClJRJIMyWUAQgWAIAmDEHCKwoiBEEJKEBFiMiXcRIGZwCCLwA1U\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 4.76945\n            },\n            {\n                \"line\": \"#6 0.245 EDACECUiEDLQCEyLImIghxAZSEgks4SUOAULowVbOCCTtETJRHJjhkFEAmoQIEIY\",\n                \"line_num\": 28,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"EDACECUiEDLQCEyLImIghxAZSEgks4SUOAULowVbOCCTtETJRHJjhkFEAmoQIEIY\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 4.70126\n            },\n            {\n                \"line\": \"#6 0.245 GQWUhkEcBioKqJDQhAkjJwYYkw3MoAwZCCEDRGphtnEDkAnSyGSRxkUBQkojJGSI\",\n                \"line_num\": 29,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"GQWUhkEcBioKqJDQhAkjJwYYkw3MoAwZCCEDRGphtnEDkAnSyGSRxkUBQkojJGSI\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 4.74525\n            },\n            {\n                \"line\": \"#6 0.245 sAkYGBDRMmQJIg0bhIhcuCXgiGABCI1RNG4bw4zUKImRMAxSAi0MskRCEG0aA2Qi\",\n                \"line_num\": 30,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"sAkYGBDRMmQJIg0bhIhcuCXgiGABCI1RNG4bw4zUKImRMAxSAi0MskRCEG0aA2Qi\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 4.86517\n            },\n            {\n                \"line\": \"#6 0.245 AoDYpAwUoGgSpYgCQUVbFgGahIkMRBDUBASCoARauIWZKEyYmFHIyEGhRFCYiAzc\",\n                \"line_num\": 31,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"AoDYpAwUoGgSpYgCQUVbFgGahIkMRBDUBASCoARauIWZKEyYmFHIyEGhRFCYiAzc\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 4.84924\n            },\n            {\n                \"line\": \"#6 0.245 EojbGBGTtIwiRWhUsBBABlLCxgkMNooBIzAkEnICGGqLpkjkNFAKmGghCUTgEIJU\",\n                \"line_num\": 32,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"EojbGBGTtIwiRWhUsBBABlLCxgkMNooBIzAkEnICGGqLpkjkNFAKmGghCUTgEIJU\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 4.78518\n            },\n            {\n                \"line\": \"#6 0.245 lEhEgoESMREbkEXYtGELMxASxyQLoJHEiHEImBAEyGHZkiWTJjKgokWhuIghlRAa\",\n                \"line_num\": 33,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"lEhEgoESMREbkEXYtGELMxASxyQLoJHEiHEImBAEyGHZkiWTJjKgokWhuIghlRAa\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 4.73346\n            },\n            {\n                \"line\": \"#6 0.245 xSwckCRCRHARNooERYIiBU1TCAYMBopcNAaIJhHRgA0jgVFiBoaTIjBYBgXkooxZ\",\n                \"line_num\": 34,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"xSwckCRCRHARNooERYIiBU1TCAYMBopcNAaIJhHRgA0jgVFiBoaTIjBYBgXkooxZ\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 4.69143\n            },\n            {\n                \"line\": \"#6 0.245 GJASFABhsEWQGIWkkIHbIAhCwAmUopFjEoTMwECREi3YSBIgKGWcNnABJCCjMo4U\",\n                \"line_num\": 35,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"GJASFABhsEWQGIWkkIHbIAhCwAmUopFjEoTMwECREi3YSBIgKGWcNnABJCCjMo4U\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 4.86517\n            },\n            {\n                \"line\": \"#6 0.245 FyHgloRKOGSUFC0UBmYBSW3SooTSslEjKAHISIbMpDAcJWWLIi2MoHEMB2yQkklI\",\n                \"line_num\": 36,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"FyHgloRKOGSUFC0UBmYBSW3SooTSslEjKAHISIbMpDAcJWWLIi2MoHEMB2yQkklI\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 4.94712\n            },\n            {\n                \"line\": \"#6 0.245 BChIpAeQQHOr3D0Iep/D+4IgaEAVpnwPXeexBdx0o3BUailbyZ/noQlEd13bgvWN\",\n                \"line_num\": 37,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"BChIpAeQQHOr3D0Iep/D+4IgaEAVpnwPXeexBdx0o3BUailbyZ/noQlEd13bgvWN\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.09727\n            },\n            {\n                \"line\": \"#6 0.245 NSFX9xz99vb3aSIaargvQ4Hq4bUvZ/y/qgXCAgs2PcNXqDAHd1EPWV5TIs4l3Qug\",\n                \"line_num\": 38,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"NSFX9xz99vb3aSIaargvQ4Hq4bUvZ/y/qgXCAgs2PcNXqDAHd1EPWV5TIs4l3Qug\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.08548\n            },\n            {\n                \"line\": \"#6 0.245 TTdPyoEV7/+hokQ6ucVaSk7qiV0r/7DI2Kth2TlKbmiXRl9Lx/EshuhoiqWCxCjh\",\n                \"line_num\": 39,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"TTdPyoEV7/+hokQ6ucVaSk7qiV0r/7DI2Kth2TlKbmiXRl9Lx/EshuhoiqWCxCjh\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.09158\n            },\n            {\n                \"line\": \"#6 0.245 na22XUltZ62l2/8f+Bi3vIrEz7jrNWRdeVbVykqeHxwsTsc9oWnFpY7F+GATH0RO\",\n                \"line_num\": 40,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"na22XUltZ62l2/8f+Bi3vIrEz7jrNWRdeVbVykqeHxwsTsc9oWnFpY7F+GATH0RO\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.46875\n            },\n            {\n                \"line\": \"#6 0.245 1rD2oX9QyI6wcv4bePHzjtJuTz3V0w/bh4n+xmleu4chQwL2aLwlLa62jcKXgun8\",\n                \"line_num\": 41,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"1rD2oX9QyI6wcv4bePHzjtJuTz3V0w/bh4n+xmleu4chQwL2aLwlLa62jcKXgun8\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.15977\n            },\n            {\n                \"line\": \"#6 0.245 tXVVGteOYcsQVmS/YOMLveYAT8GmwWOd+4h4dCjWZB/6xI6DUv9pCYGbzNdZ5qt/\",\n                \"line_num\": 42,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"tXVVGteOYcsQVmS/YOMLveYAT8GmwWOd+4h4dCjWZB/6xI6DUv9pCYGbzNdZ5qt/\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.17923\n            },\n            {\n                \"line\": \"#6 0.245 x3r5LF4b4teVUFwqvPcGn2+h/MLZ8VcilPb7bfR0pcHaWqynggr6EtnMACOsQrp6\",\n                \"line_num\": 43,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"x3r5LF4b4teVUFwqvPcGn2+h/MLZ8VcilPb7bfR0pcHaWqynggr6EtnMACOsQrp6\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.35907\n            },\n            {\n                \"line\": \"#6 0.245 20lFJR/EHrv7uuXCyEaUVzi3pzq/J1u9EKXsuqtNFZWI0RA7Pdk7Sk/EV9tzeOJu\",\n                \"line_num\": 44,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"20lFJR/EHrv7uuXCyEaUVzi3pzq/J1u9EKXsuqtNFZWI0RA7Pdk7Sk/EV9tzeOJu\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.11517\n            },\n            {\n                \"line\": \"#6 0.245 ES62pC7vlJ1Wo8vpXx1wzEL3pKdnKxNCWfKaTO25qoo4t0+8WkM2w1oKWEAKVFBb\",\n                \"line_num\": 45,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"ES62pC7vlJ1Wo8vpXx1wzEL3pKdnKxNCWfKaTO25qoo4t0+8WkM2w1oKWEAKVFBb\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.11517\n            },\n            {\n                \"line\": \"#6 0.245 5Zus63oUSjTaLGPXdoE/wk5P6mW3BmwmFfKeHZuUNnBwlhIcrlnyFc7UklmNsUm9\",\n                \"line_num\": 46,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"5Zus63oUSjTaLGPXdoE/wk5P6mW3BmwmFfKeHZuUNnBwlhIcrlnyFc7UklmNsUm9\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.10751\n            },\n            {\n                \"line\": \"#6 0.245 WPDIyiFjey7GcRbVAXnl5JftLLPun9/Sl6WPoP9bsDpdTkKZFD3Jy0MAnA6gwi6G\",\n                \"line_num\": 47,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"WPDIyiFjey7GcRbVAXnl5JftLLPun9/Sl6WPoP9bsDpdTkKZFD3Jy0MAnA6gwi6G\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.22227\n            },\n            {\n                \"line\": \"#6 0.245 A1Un/skxl2PDwdSYu/Yqk2F7BSz5x/D9QUTnkXm/W0uG3wmFVMI08OYwtCB1xXW8\",\n                \"line_num\": 48,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"A1Un/skxl2PDwdSYu/Yqk2F7BSz5x/D9QUTnkXm/W0uG3wmFVMI08OYwtCB1xXW8\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.14032\n            },\n            {\n                \"line\": \"#6 0.245 kQbalUGvAscvoaXkkD2JjjZrxAOnkZxJqwzP84Sa33HEYMVPEtvucp2gd6du2weG\",\n                \"line_num\": 49,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"kQbalUGvAscvoaXkkD2JjjZrxAOnkZxJqwzP84Sa33HEYMVPEtvucp2gd6du2weG\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.24586\n            },\n            {\n                \"line\": \"#6 0.245 v8X1Qy6SePZ/L2pIQHHG0t5aO5fBmUc1UJh9BmG15oE0rzqEiopaCDbFkEguFjhs\",\n                \"line_num\": 50,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"v8X1Qy6SePZ/L2pIQHHG0t5aO5fBmUc1UJh9BmG15oE0rzqEiopaCDbFkEguFjhs\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.40211\n            },\n            {\n                \"line\": \"#6 0.245 2BI6NiY798TaKwkaWFy8irSLb3CvU8IrAm3VM9Lcp1vhwsnyGvMq78fC+SjxKcWQ\",\n                \"line_num\": 51,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"2BI6NiY798TaKwkaWFy8irSLb3CvU8IrAm3VM9Lcp1vhwsnyGvMq78fC+SjxKcWQ\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.3007\n            },\n            {\n                \"line\": \"#6 0.245 QwCdrsgLZerfct0uWaaA/1yVRH0g8ceBIuoj2Kkv9E6xTKeAwsMi9vhwqgkjsSG/\",\n                \"line_num\": 52,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"QwCdrsgLZerfct0uWaaA/1yVRH0g8ceBIuoj2Kkv9E6xTKeAwsMi9vhwqgkjsSG/\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.32782\n            },\n            {\n                \"line\": \"#6 0.245 Ts54V2KurNiPKb5WSwteBOD7TvkdwMfmK7jYMWH1oc98V70YxPgnkURW2IXs8H23\",\n                \"line_num\": 53,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"Ts54V2KurNiPKb5WSwteBOD7TvkdwMfmK7jYMWH1oc98V70YxPgnkURW2IXs8H23\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.35907\n            },\n            {\n                \"line\": \"#6 0.245 5EQsx7aiwzXBB5F5xIy3yNJIpFUGQGU1oy2L8FQhuKdyMjXEAEiuJtzdyTtgnoJR\",\n                \"line_num\": 54,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"5EQsx7aiwzXBB5F5xIy3yNJIpFUGQGU1oy2L8FQhuKdyMjXEAEiuJtzdyTtgnoJR\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.07212\n            },\n            {\n                \"line\": \"#6 0.245 7N0evDEzqUuUVvtXb32GoTuLzlPM32+cBbDr80mIphfmyr/RQLlZIxgv6LsV4pgU\",\n                \"line_num\": 55,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"7N0evDEzqUuUVvtXb32GoTuLzlPM32+cBbDr80mIphfmyr/RQLlZIxgv6LsV4pgU\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.33961\n            },\n            {\n                \"line\": \"#6 0.245 VTS/P3VLXRX6oclTn7UZ1+5L4dosP2pjoAmSEeQe9DiDDKb9DRcYRP09ePylma2i\",\n                \"line_num\": 56,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"VTS/P3VLXRX6oclTn7UZ1+5L4dosP2pjoAmSEeQe9DiDDKb9DRcYRP09ePylma2i\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.14032\n            },\n            {\n                \"line\": \"#6 0.245 2BD0oJ81P4A/tl9ojqyz4dSJuIo2deDaQs8cme0lNxAR0uO8FbiHnnkXFalberVl\",\n                \"line_num\": 57,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"2BD0oJ81P4A/tl9ojqyz4dSJuIo2deDaQs8cme0lNxAR0uO8FbiHnnkXFalberVl\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.23407\n            },\n            {\n                \"line\": \"#6 0.245 V1ZSX4aPC9DBvrxYL1hh51umejg5GoIOWVLZtAVThRVyhUEg1krkM0zNGGjT0o4E\",\n                \"line_num\": 58,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"V1ZSX4aPC9DBvrxYL1hh51umejg5GoIOWVLZtAVThRVyhUEg1krkM0zNGGjT0o4E\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.1757\n            },\n            {\n                \"line\": \"#6 0.245 R42sWTjNMxSB99ZQbpuySMtisaB2WPcdTdIWwnBytzy/XGezCicBJHMMCA36m4K/\",\n                \"line_num\": 59,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"R42sWTjNMxSB99ZQbpuySMtisaB2WPcdTdIWwnBytzy/XGezCicBJHMMCA36m4K/\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.19516\n            },\n            {\n                \"line\": \"#6 0.245 rkFyjWHI73ahgE3nsfg3zQui9bZMCThlRV07cFbsh4Vrz8V84kWceTIBTB/NMGIH\",\n                \"line_num\": 60,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"rkFyjWHI73ahgE3nsfg3zQui9bZMCThlRV07cFbsh4Vrz8V84kWceTIBTB/NMGIH\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.15977\n            },\n            {\n                \"line\": \"#6 0.245 N7gW2wDhlzJFmM1DI6fc/Yv1/zFEqW+GwAEmlCdBYd0KK2Uw+DjvuTpoUAj0N5EA\",\n                \"line_num\": 61,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"N7gW2wDhlzJFmM1DI6fc/Yv1/zFEqW+GwAEmlCdBYd0KK2Uw+DjvuTpoUAj0N5EA\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.17157\n            },\n            {\n                \"line\": \"#6 0.245 eKwQvUVLxerWkelYq7XTtuj+cf/ni9cwUUCaO8CZ3qfO6qlESAASZ3Zs8dLj2ScI\",\n                \"line_num\": 62,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"eKwQvUVLxerWkelYq7XTtuj+cf/ni9cwUUCaO8CZ3qfO6qlESAASZ3Zs8dLj2ScI\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.24173\n            },\n            {\n                \"line\": \"#6 0.245 7F4zmeFxp+adjBRR2vj0iTdckA5tSmEOANrJ7Ncq0JGZBuwKyAkUneJ+VPxGavrX\",\n                \"line_num\": 63,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"7F4zmeFxp+adjBRR2vj0iTdckA5tSmEOANrJ7Ncq0JGZBuwKyAkUneJ+VPxGavrX\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.28891\n            },\n            {\n                \"line\": \"#6 0.245 WvV5rQ7BNgz7+ZAKGjvq78AyQZVS9MEpxe6qKy7OMclg75op8zCJ54IzpGkfcPWa\",\n                \"line_num\": 64,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"WvV5rQ7BNgz7+ZAKGjvq78AyQZVS9MEpxe6qKy7OMclg75op8zCJ54IzpGkfcPWa\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.15821\n            },\n            {\n                \"line\": \"#6 0.245 NhOa5n1kEdNm2a5u6tzdxJVvpFEQDkta6OpfSX76YeNLpy7bSdBdBWmNzWkuDMFK\",\n                \"line_num\": 65,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"NhOa5n1kEdNm2a5u6tzdxJVvpFEQDkta6OpfSX76YeNLpy7bSdBdBWmNzWkuDMFK\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.04657\n            },\n            {\n                \"line\": \"#6 0.245 z2ZRcjbQFJ657Y7MWy7/4kzBPBG/OcNAi/9h1y+Sm84LZhLkH59okLFuklK5F/e4\",\n                \"line_num\": 66,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"z2ZRcjbQFJ657Y7MWy7/4kzBPBG/OcNAi/9h1y+Sm84LZhLkH59okLFuklK5F/e4\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.15977\n            },\n            {\n                \"line\": \"#6 0.245 QmGx1sx+wlPtQ3q1f9tFYFMAwpIWsCGFd3DDKyA5QTBSc2wfcyBgIcZotBV0Ic2H\",\n                \"line_num\": 67,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"QmGx1sx+wlPtQ3q1f9tFYFMAwpIWsCGFd3DDKyA5QTBSc2wfcyBgIcZotBV0Ic2H\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.11673\n            },\n            {\n                \"line\": \"#6 0.245 /Xa/US2QGYlpDtm/RDaq/kqlbMPZhBLE+M2W/dGYSuyPoL0GPC0bML0LLlavP5xB\",\n                \"line_num\": 68,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"/Xa/US2QGYlpDtm/RDaq/kqlbMPZhBLE+M2W/dGYSuyPoL0GPC0bML0LLlavP5xB\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 4.92197\n            },\n            {\n                \"line\": \"#6 0.245 4EuYIB54jmYwLcO7ZK8wpQhR6kk/gAwLnIDApOH5iiv+1sb0IJpjZmFmZUdUllpb\",\n                \"line_num\": 69,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"4EuYIB54jmYwLcO7ZK8wpQhR6kk/gAwLnIDApOH5iiv+1sb0IJpjZmFmZUdUllpb\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.20282\n            },\n            {\n                \"line\": \"#6 0.245 PppwUoy0NzBPjq/PksCd6fVWkmDpIuI+SLJyNhRNKEOTMTrVYuPSUvnFf9NaHkUi\",\n                \"line_num\": 70,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"PppwUoy0NzBPjq/PksCd6fVWkmDpIuI+SLJyNhRNKEOTMTrVYuPSUvnFf9NaHkUi\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.30836\n            },\n            {\n                \"line\": \"#6 0.245 ifzK2eAEfx2UBE7o+YQR+QC6/pJQIMX7FXQjx78cVTKlybuJkpDggsUJ25SszaMk\",\n                \"line_num\": 71,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"ifzK2eAEfx2UBE7o+YQR+QC6/pJQIMX7FXQjx78cVTKlybuJkpDggsUJ25SszaMk\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.24586\n            },\n            {\n                \"line\": \"#6 0.245 KA0xTnsP5gx8lUGmyWMuJ5JgDWUP1jOHdadTmX/xtEy5Wqw/DQKn2bG2NnpQrbIJ\",\n                \"line_num\": 72,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"KA0xTnsP5gx8lUGmyWMuJ5JgDWUP1jOHdadTmX/xtEy5Wqw/DQKn2bG2NnpQrbIJ\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.19102\n            },\n            {\n                \"line\": \"#6 0.245 EcXsCgMeziOzNqqJk9QrnAAu/eB1XdnhbC3UJ/caEI7gofJxMYiO20/OHtnkLhgf\",\n                \"line_num\": 73,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"EcXsCgMeziOzNqqJk9QrnAAu/eB1XdnhbC3UJ/caEI7gofJxMYiO20/OHtnkLhgf\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.22227\n            },\n            {\n                \"line\": \"#6 0.245 82N3qrG5oZP8oQVmgO4Ww58rWn2U5f9F+tFjrSjj8OR1NkY39x/kgRXg538T0TEL\",\n                \"line_num\": 74,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"82N3qrG5oZP8oQVmgO4Ww58rWn2U5f9F+tFjrSjj8OR1NkY39x/kgRXg538T0TEL\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.08392\n            },\n            {\n                \"line\": \"#6 0.245 JmFGqBYBW5YkhS4E6cQ+s8Me76ZYMcIEyrb7vGpQ6sATjVuendOfq/nG/E1vVoQ8\",\n                \"line_num\": 75,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"JmFGqBYBW5YkhS4E6cQ+s8Me76ZYMcIEyrb7vGpQ6sATjVuendOfq/nG/E1vVoQ8\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.25352\n            },\n            {\n                \"line\": \"#6 0.245 xSd1FGfwoVOhRp3I2ygdcz4l1RQzqunVff1A8ejjoMJ4+N/JUaL3rDF6KDPLuG1n\",\n                \"line_num\": 76,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"xSd1FGfwoVOhRp3I2ygdcz4l1RQzqunVff1A8ejjoMJ4+N/JUaL3rDF6KDPLuG1n\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.33195\n            },\n            {\n                \"line\": \"#6 0.245 aHkGr75LFfgMPc1oAqtMk5qdEfNqYBsbaPhu7GV9ewft3R8E5VJdTVu6ksE7+1HZ\",\n                \"line_num\": 77,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"aHkGr75LFfgMPc1oAqtMk5qdEfNqYBsbaPhu7GV9ewft3R8E5VJdTVu6ksE7+1HZ\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.16743\n            },\n            {\n                \"line\": \"#6 0.245 XnH5jM4u1p9NF4iQmQhQI8fOX6wqBDWcekGs+baJcxA+5zkYgffkUX+MRjMAHUAW\",\n                \"line_num\": 78,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"XnH5jM4u1p9NF4iQmQhQI8fOX6wqBDWcekGs+baJcxA+5zkYgffkUX+MRjMAHUAW\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.26118\n            },\n            {\n                \"line\": \"#6 0.245 hL1S3jeUuoh8YWqWkyCS/NDmEV0oFNey0hU/36YktwDByEMa6zAxDnQoRpq6dikI\",\n                \"line_num\": 79,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"hL1S3jeUuoh8YWqWkyCS/NDmEV0oFNey0hU/36YktwDByEMa6zAxDnQoRpq6dikI\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.21048\n            },\n            {\n                \"line\": \"#6 0.245 S//brXmHlWb++g5HLAPTV94FLiWnEEW7Ozn0HD6R5psyW0Csx2vt95FF3cmFziHd\",\n                \"line_num\": 80,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"S//brXmHlWb++g5HLAPTV94FLiWnEEW7Ozn0HD6R5psyW0Csx2vt95FF3cmFziHd\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.1757\n            },\n            {\n                \"line\": \"#6 0.245 M7nqiDw5byw8wT/6cZmU5TJqSz3fKFOt13VXuG80yEtaDr68gDjxas2Tb/wTE0ZN\",\n                \"line_num\": 81,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"M7nqiDw5byw8wT/6cZmU5TJqSz3fKFOt13VXuG80yEtaDr68gDjxas2Tb/wTE0ZN\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.22641\n            },\n            {\n                \"line\": \"#6 0.245 Y+4MmRj78Ffh74q87fX6FMQO1/HEKh7ltXGGNF5WlzEG8vVKHqbn487lBELkl00n\",\n                \"line_num\": 82,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"Y+4MmRj78Ffh74q87fX6FMQO1/HEKh7ltXGGNF5WlzEG8vVKHqbn487lBELkl00n\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 4.99017\n            },\n            {\n                \"line\": \"#6 0.245 uP16MZvPDTHzhQ4l/fKuBW7MpuczsUpdHgSwLIeJS5354WhLYONRRz8yXqo/mfNd\",\n                \"line_num\": 83,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"uP16MZvPDTHzhQ4l/fKuBW7MpuczsUpdHgSwLIeJS5354WhLYONRRz8yXqo/mfNd\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.38266\n            },\n            {\n                \"line\": \"#6 0.245 stWBI1ChlRmYkLyTri6kvajsDMPuGtDp/30UEi0zjVhwvJ9IcxrxArDOvlomTPsi\",\n                \"line_num\": 84,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"stWBI1ChlRmYkLyTri6kvajsDMPuGtDp/30UEi0zjVhwvJ9IcxrxArDOvlomTPsi\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.28477\n            },\n            {\n                \"line\": \"#6 0.245 YBJrUWXblmmC9bR14vf3CWR+PK7q8BIjL1D6P//IAtU+ub3UvbCS8EbNyJAbVuns\",\n                \"line_num\": 85,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"YBJrUWXblmmC9bR14vf3CWR+PK7q8BIjL1D6P//IAtU+ub3UvbCS8EbNyJAbVuns\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.14032\n            },\n            {\n                \"line\": \"#6 0.245 H8uWrQFtodTx7wQi5zaP97sP33deMtlEP1j0EQdwbrK1y/u1Fjk5V9lZmlWyDjMr\",\n                \"line_num\": 86,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"H8uWrQFtodTx7wQi5zaP97sP33deMtlEP1j0EQdwbrK1y/u1Fjk5V9lZmlWyDjMr\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.10493\n            },\n            {\n                \"line\": \"#6 0.245 zIr286q6AWWttxwb3p5SY7A14GLh0rCsiCwP+almEouRr8UzdczrotBq4vh9NtWb\",\n                \"line_num\": 87,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"zIr286q6AWWttxwb3p5SY7A14GLh0rCsiCwP+almEouRr8UzdczrotBq4vh9NtWb\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.28891\n            },\n            {\n                \"line\": \"#6 0.245 Dmu72duyz/6gP6tuwdDV7SnOS6ep1m/CnkxfB0eggCvHrIqwletSbpUAl2ddk578\",\n                \"line_num\": 88,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"Dmu72duyz/6gP6tuwdDV7SnOS6ep1m/CnkxfB0eggCvHrIqwletSbpUAl2ddk578\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.08548\n            },\n            {\n                \"line\": \"#6 0.245 YdwaNjMhKHGNHJetGZqIn2sJVxcbN2rBIBzgRoHGe+NTq82HD/AKv7OKUxOVBZ/T\",\n                \"line_num\": 89,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"YdwaNjMhKHGNHJetGZqIn2sJVxcbN2rBIBzgRoHGe+NTq82HD/AKv7OKUxOVBZ/T\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.14032\n            },\n            {\n                \"line\": \"#6 0.245 j8lwHWTgMP25Qt/7e2L916+HUfLVKj9YpOeEb1P81rRC7l9zRimlv1RYy4MsGdLj\",\n                \"line_num\": 90,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"j8lwHWTgMP25Qt/7e2L916+HUfLVKj9YpOeEb1P81rRC7l9zRimlv1RYy4MsGdLj\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.25352\n            },\n            {\n                \"line\": \"#6 0.245 S3hXz3e4hRXAb23bT06aoU3RhubgZo7trwHy5mzbzAdOGPEXviXw9+ihjY4kWAJU\",\n                \"line_num\": 91,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"S3hXz3e4hRXAb23bT06aoU3RhubgZo7trwHy5mzbzAdOGPEXviXw9+ihjY4kWAJU\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.16391\n            },\n            {\n                \"line\": \"#6 0.245 ADio3z2NMbz5ZYexpy5XyPmgOv0UECTdIjV+MYMFncdpZaO9YP4BG3c8k8z2R5OB\",\n                \"line_num\": 92,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"ADio3z2NMbz5ZYexpy5XyPmgOv0UECTdIjV+MYMFncdpZaO9YP4BG3c8k8z2R5OB\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.31602\n            },\n            {\n                \"line\": \"#6 0.245 YjYDCT0R2kez6mfVL2kp1T5FGuZIIaSSYRz+zxzGTFWHFsJFPutSrGF3oILueAMO\",\n                \"line_num\": 93,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"YjYDCT0R2kez6mfVL2kp1T5FGuZIIaSSYRz+zxzGTFWHFsJFPutSrGF3oILueAMO\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.09158\n            },\n            {\n                \"line\": \"#6 0.245 55mb2P24b44wCoVGNfFVDQOFE2DOOHvkgyvarxraYLmXVHfsZUSFDKLoEajb4bbd\",\n                \"line_num\": 94,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"55mb2P24b44wCoVGNfFVDQOFE2DOOHvkgyvarxraYLmXVHfsZUSFDKLoEajb4bbd\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 4.96658\n            },\n            {\n                \"line\": \"#6 0.245 UcSqmGsFbKmJA7mxRw3uAzgFwN5uneHaAOVcloDrvmfyrEsbtCYe0QbHJanETdPA\",\n                \"line_num\": 95,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"UcSqmGsFbKmJA7mxRw3uAzgFwN5uneHaAOVcloDrvmfyrEsbtCYe0QbHJanETdPA\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.3007\n            },\n            {\n                \"line\": \"#6 0.245 9webIXysF5t9KQRKAH+tKRpTM2XpxkLo5cZVfbnGCIGztuYYtr36I5wFCQBYprMY\",\n                \"line_num\": 96,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"9webIXysF5t9KQRKAH+tKRpTM2XpxkLo5cZVfbnGCIGztuYYtr36I5wFCQBYprMY\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.10907\n            },\n            {\n                \"line\": \"#6 0.245 VCvAGX7LtBkfK+UKp+IN1MIwp3FqXCyY569gWA/lNXkqOxLR2Q2C1zs0G5y9uym4\",\n                \"line_num\": 97,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"VCvAGX7LtBkfK+UKp+IN1MIwp3FqXCyY569gWA/lNXkqOxLR2Q2C1zs0G5y9uym4\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.33961\n            },\n            {\n                \"line\": \"#6 0.245 9EB0jFhFeH9pr2MWlFh+09iy+I2Gx2vqGT5huaPCi3g1sGUEsgXO+0K0FnkltKWL\",\n                \"line_num\": 98,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"9EB0jFhFeH9pr2MWlFh+09iy+I2Gx2vqGT5huaPCi3g1sGUEsgXO+0K0FnkltKWL\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.15977\n            },\n            {\n                \"line\": \"#6 0.245 2/fkKb37wmkLxOm1AGfK8+jzJgROpQp5LweN6c2gBDnJfHIWhk5mE+YhvyxgU6ks\",\n                \"line_num\": 99,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"2/fkKb37wmkLxOm1AGfK8+jzJgROpQp5LweN6c2gBDnJfHIWhk5mE+YhvyxgU6ks\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.27711\n            },\n            {\n                \"line\": \"#6 0.245 RUGiT43/IngQBwjH2IzE1BvaFhaLVnF5dAkjSVJX0NyVLdBLdEyotg8GHO2G0Y/c\",\n                \"line_num\": 100,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"RUGiT43/IngQBwjH2IzE1BvaFhaLVnF5dAkjSVJX0NyVLdBLdEyotg8GHO2G0Y/c\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.25352\n            },\n            {\n                \"line\": \"#6 0.245 JHhz9tMGqN1/18UhsBdrfahJIqeNrIBuxbNk2sXi3/26XXDHe8HzYz9IGzwttclP\",\n                \"line_num\": 101,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"JHhz9tMGqN1/18UhsBdrfahJIqeNrIBuxbNk2sXi3/26XXDHe8HzYz9IGzwttclP\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.05423\n            },\n            {\n                \"line\": \"#6 0.245 l9bwNLKlK6G6ey6CuGc+pk+ab+FTKYzDOYzUNuk9KVjks9abhojhKp+umdcg1ads\",\n                \"line_num\": 102,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"l9bwNLKlK6G6ey6CuGc+pk+ab+FTKYzDOYzUNuk9KVjks9abhojhKp+umdcg1ads\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 4.90408\n            },\n            {\n                \"line\": \"#6 0.245 sFq7BZk0ud5rvSuHXFGaxdhZRkcTgWCfO3RnIb1nnU2s9baNjE6EiQlgXxtsDbco\",\n                \"line_num\": 103,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"sFq7BZk0ud5rvSuHXFGaxdhZRkcTgWCfO3RnIb1nnU2s9baNjE6EiQlgXxtsDbco\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.40211\n            },\n            {\n                \"line\": \"#6 0.245 0sfTmAos3DRhn17vYxvBuIHQdsk9Lg2nRwJhKBhnQccl8k3fYTW8WZbBu9Ism+nS\",\n                \"line_num\": 104,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"0sfTmAos3DRhn17vYxvBuIHQdsk9Lg2nRwJhKBhnQccl8k3fYTW8WZbBu9Ism+nS\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.13266\n            },\n            {\n                \"line\": \"#6 0.245 Bvz56M5Z+5wf6DGFitWOPDcrgXAy/H1G4byIXU06YwWEcGj/Dyte3EOWEeU+68kQ\",\n                \"line_num\": 105,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"Bvz56M5Z+5wf6DGFitWOPDcrgXAy/H1G4byIXU06YwWEcGj/Dyte3EOWEeU+68kQ\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.14798\n            },\n            {\n                \"line\": \"#6 0.245 aANEEoU1dXIzisq6pQ0J8AKS\",\n                \"line_num\": 106,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"aANEEoU1dXIzisq6pQ0J8AKS\",\n                \"value_start\": 9,\n                \"value_end\": 33,\n                \"entropy\": 4.4183\n            },\n            {\n                \"line\": \"#6 0.245 -----END PRIVATE KEY-----\",\n                \"line_num\": 107,\n                \"path\": \"./tests/samples/pem_key.p.docker.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"-----END PRIVATE KEY-----\",\n                \"value_start\": 9,\n                \"value_end\": 34,\n                \"entropy\": 3.04489\n            }\n        ]\n    },\n    {\n        \"rule\": \"PEM Private Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"{\\\"rsa512.log\\\": \\\"\\\\\\\\r\\\\\\\\n#5 [2/4] RUN openssl genrsa -out rsa512.pem 512 && cat rsa512.pem\\\\\\\\r\\\\\\\\n#5 0.228 -----BEGIN PRIVATE KEY-----\\\\\\\\r\\\\\\\\n#5 0.228 MIIBVQIBADANBgkqhkiG9w0BAQEFAASCAT8wggE7AgEAAkEAvKMMVSiEmVawE4EQ\\\\\\\\r\\\\\\\\n#5 0.228 GqXBumHAZco0bRhfhZjmeZ64SmmAM0NpM3j8hwhTyWHRXpW21gv8cumYJqb/ilf7\\\\\\\\r\\\\\\\\n#5 0.228 62oRDQIDAQABAkBYiY64SZQzBGUQQnt0hmgvOsI7BHUm31G2OtWyL7T/90UhnksH\\\\\\\\r\\\\\\\\n#5 0.228 w2YF31p/TJULL44SV3HpxiY+T1vOPl138ulhAiEA9LcC28UMotvF0z/CVofas5Fh\\\\\\\\r\\\\\\\\n#5 0.228 eKZSGLykNZ7FkKd0t+cCIQDFVgG6lreao/UzHcVk75fZG3lG3k0xvqdsZTIMAOjA\\\\\\\\r\\\\\\\\n#5 0.228 6wIgV033ehqJ0IxhvmUP2zkqoEeso5OK1IJwfyS+zUXA0V8CIQCvKySHvAgpRkd/\\\\\\\\r\\\\\\\\n#5 0.228 Y3r4mVICj8e859JASQwXRVECpL/3lwIhANcg6iGD9S4zdbvVxYjJogRVbi7U6YUU\\\\\\\\r\\\\\\\\n#5 0.228 ivYSmyJQhq+V\\\\\\\\r\\\\\\\\n#5 0.228 -----END PRIVATE KEY-----\\\\\\\\r\\\\\\\\n#5 DONE 0.3s\\\\\\\\r\\\\\\\\n\\\"}\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/pem_key.p.docker.log.json\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"-----BEGIN PRIVATE KEY-----\\\\\\\\r\\\\\\\\n#5 0.228 MIIBVQIBADANBgkqhkiG9w0BAQEFAASCAT8wggE7AgEAAkEAvKMMVSiEmVawE4EQ\\\\\\\\r\\\\\\\\n#5 0.228 GqXBumHAZco0bRhfhZjmeZ64SmmAM0NpM3j8hwhTyWHRXpW21gv8cumYJqb/ilf7\\\\\\\\r\\\\\\\\n#5 0.228 62oRDQIDAQABAkBYiY64SZQzBGUQQnt0hmgvOsI7BHUm31G2OtWyL7T/90UhnksH\\\\\\\\r\\\\\\\\n#5 0.228 w2YF31p/TJULL44SV3HpxiY+T1vOPl138ulhAiEA9LcC28UMotvF0z/CVofas5Fh\\\\\\\\r\\\\\\\\n#5 0.228 eKZSGLykNZ7FkKd0t+cCIQDFVgG6lreao/UzHcVk75fZG3lG3k0xvqdsZTIMAOjA\\\\\\\\r\\\\\\\\n#5 0.228 6wIgV033ehqJ0IxhvmUP2zkqoEeso5OK1IJwfyS+zUXA0V8CIQCvKySHvAgpRkd/\\\\\\\\r\\\\\\\\n#5 0.228 Y3r4mVICj8e859JASQwXRVECpL/3lwIhANcg6iGD9S4zdbvVxYjJogRVbi7U6YUU\\\\\\\\r\\\\\\\\n#5 0.228 ivYSmyJQhq+V\\\\\\\\r\\\\\\\\n#5 0.228 -----END PRIVATE KEY-----\",\n                \"value_start\": 102,\n                \"value_end\": 749,\n                \"entropy\": 5.8742\n            }\n        ]\n    },\n    {\n        \"rule\": \"PEM Private Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"-----BEGIN PRIVATE KEY-----\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/pem_key.p.ec\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"-----BEGIN PRIVATE KEY-----\",\n                \"value_start\": 0,\n                \"value_end\": 27,\n                \"entropy\": 3.20029\n            },\n            {\n                \"line\": \"MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgyK82YrlPyJb7FLsk\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/pem_key.p.ec\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgyK82YrlPyJb7FLsk\",\n                \"value_start\": 0,\n                \"value_end\": 64,\n                \"entropy\": 4.72268\n            },\n            {\n                \"line\": \"1hg6SN+UI2R/QIVPPomtVY0yeH6hRANCAAStXqONgR32XCE3nfIkmYjk28Kn0wsK\",\n                \"line_num\": 3,\n                \"path\": \"./tests/samples/pem_key.p.ec\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"1hg6SN+UI2R/QIVPPomtVY0yeH6hRANCAAStXqONgR32XCE3nfIkmYjk28Kn0wsK\",\n                \"value_start\": 0,\n                \"value_end\": 64,\n                \"entropy\": 5.12852\n            },\n            {\n                \"line\": \"+7OCsLnRoqJfWJAf8MV5nbMDiox7WFgRSOtt+l3u3zjpOznhmQyeN62Y\",\n                \"line_num\": 4,\n                \"path\": \"./tests/samples/pem_key.p.ec\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"+7OCsLnRoqJfWJAf8MV5nbMDiox7WFgRSOtt+l3u3zjpOznhmQyeN62Y\",\n                \"value_start\": 0,\n                \"value_end\": 56,\n                \"entropy\": 5.24468\n            },\n            {\n                \"line\": \"-----END PRIVATE KEY-----\",\n                \"line_num\": 5,\n                \"path\": \"./tests/samples/pem_key.p.ec\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"-----END PRIVATE KEY-----\",\n                \"value_start\": 0,\n                \"value_end\": 25,\n                \"entropy\": 3.04489\n            }\n        ]\n    },\n    {\n        \"rule\": \"PEM Private Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"const ecdsaPrivateKey = `-----BEGIN EC PRIVATE KEY-----\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/pem_key.p.go\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"-----BEGIN EC PRIVATE KEY-----\",\n                \"value_start\": 25,\n                \"value_end\": 55,\n                \"entropy\": 3.30775\n            },\n            {\n                \"line\": \"MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgv4Dj4ashv/uKUltV\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/pem_key.p.go\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgv4Dj4ashv/uKUltV\",\n                \"value_start\": 0,\n                \"value_end\": 64,\n                \"entropy\": 4.64072\n            },\n            {\n                \"line\": \"20VTUPnqXBPMDmPH43RG9WtK7cyhRANCAAQJameDIEe6M7PIpw6CPPAdHfN9+vxX\",\n                \"line_num\": 3,\n                \"path\": \"./tests/samples/pem_key.p.go\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"20VTUPnqXBPMDmPH43RG9WtK7cyhRANCAAQJameDIEe6M7PIpw6CPPAdHfN9+vxX\",\n                \"value_start\": 0,\n                \"value_end\": 64,\n                \"entropy\": 5.22641\n            },\n            {\n                \"line\": \"iptqkkBN/uRj9dkG5gDGhFzSqtSk8+d/b7VloKSdnH/nn4RxfMo6p1aC\",\n                \"line_num\": 4,\n                \"path\": \"./tests/samples/pem_key.p.go\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"iptqkkBN/uRj9dkG5gDGhFzSqtSk8+d/b7VloKSdnH/nn4RxfMo6p1aC\",\n                \"value_start\": 0,\n                \"value_end\": 56,\n                \"entropy\": 5.11058\n            },\n            {\n                \"line\": \"-----END EC PRIVATE KEY-----`\",\n                \"line_num\": 5,\n                \"path\": \"./tests/samples/pem_key.p.go\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"-----END EC PRIVATE KEY-----\",\n                \"value_start\": 0,\n                \"value_end\": 28,\n                \"entropy\": 3.16542\n            }\n        ]\n    },\n    {\n        \"rule\": \"PEM Private Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"    PRIVATE_KEY = \\\"-----BEGIN RSA PRIVATE KEY-----\\\\n\\\"\",\n                \"line_num\": 3,\n                \"path\": \"./tests/samples/pem_key.p.java\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"-----BEGIN RSA PRIVATE KEY-----\",\n                \"value_start\": 19,\n                \"value_end\": 50,\n                \"entropy\": 3.38229\n            },\n            {\n                \"line\": \"     +   \\\"MIIBVgIBADANBgkqhkiG9w0BAQEFAASCAUAwggE8AgEAAkEAplaRRGItayIi59+n\\\\n\\\"\",\n                \"line_num\": 4,\n                \"path\": \"./tests/samples/pem_key.p.java\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"MIIBVgIBADANBgkqhkiG9w0BAQEFAASCAUAwggE8AgEAAkEAplaRRGItayIi59+n\",\n                \"value_start\": 10,\n                \"value_end\": 74,\n                \"entropy\": 4.53081\n            },\n            {\n                \"line\": \"      +   \\\"FlVJfmQshKZo3MNry20h1xvoqks6Wndb0XLJ3s1A6Z2Qg+9xKHNT7QZTTGVatxrp\\\\n\\\"\",\n                \"line_num\": 5,\n                \"path\": \"./tests/samples/pem_key.p.java\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"FlVJfmQshKZo3MNry20h1xvoqks6Wndb0XLJ3s1A6Z2Qg+9xKHNT7QZTTGVatxrp\",\n                \"value_start\": 11,\n                \"value_end\": 75,\n                \"entropy\": 5.25352\n            },\n            {\n                \"line\": \"        +   \\\"CY1LcQIDAQABAkEAlXPKaercbBnryvLEqehPdGSFK1ppdZGQVOLlOOU2k2o5VpRP\\\\n\\\"\",\n                \"line_num\": 6,\n                \"path\": \"./tests/samples/pem_key.p.java\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"CY1LcQIDAQABAkEAlXPKaercbBnryvLEqehPdGSFK1ppdZGQVOLlOOU2k2o5VpRP\",\n                \"value_start\": 13,\n                \"value_end\": 77,\n                \"entropy\": 5.09727\n            },\n            {\n                \"line\": \"      +   \\\"AvHzS6VZsimd5XPxEIKPkJhWDLhRckpwOX6LkQIhAND0WUcohqwBHxvUvAexRxbI\\\\n\\\"\",\n                \"line_num\": 7,\n                \"path\": \"./tests/samples/pem_key.p.java\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"AvHzS6VZsimd5XPxEIKPkJhWDLhRckpwOX6LkQIhAND0WUcohqwBHxvUvAexRxbI\",\n                \"value_start\": 11,\n                \"value_end\": 75,\n                \"entropy\": 5.10907\n            },\n            {\n                \"line\": \"    +   \\\"FIizfZJfI9fC2dDepWvfAiEAy8npickbddF4NlWt+PVcPi9iSfe2h8LHZ/QLzNV5\\\\n\\\"\",\n                \"line_num\": 8,\n                \"path\": \"./tests/samples/pem_key.p.java\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"FIizfZJfI9fC2dDepWvfAiEAy8npickbddF4NlWt+PVcPi9iSfe2h8LHZ/QLzNV5\",\n                \"value_start\": 9,\n                \"value_end\": 73,\n                \"entropy\": 5.0629\n            },\n            {\n                \"line\": \"     +   \\\"Mq8CIQDMdXvyS+5S2hoVgnimUkoMOaUWCgOiOOP6mFfHsERPIwIhAMovKCnQwhLR\\\\n\\\"\",\n                \"line_num\": 9,\n                \"path\": \"./tests/samples/pem_key.p.java\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"Mq8CIQDMdXvyS+5S2hoVgnimUkoMOaUWCgOiOOP6mFfHsERPIwIhAMovKCnQwhLR\",\n                \"value_start\": 10,\n                \"value_end\": 74,\n                \"entropy\": 5.10907\n            },\n            {\n                \"line\": \"      +   \\\"YQAfX3yaCguUPWL/hjQJdodXZIGz5gv3AiBQ5WKTpyu8osL4CCi4aS6G/fSlCdu0\\\\n\\\"\",\n                \"line_num\": 10,\n                \"path\": \"./tests/samples/pem_key.p.java\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"YQAfX3yaCguUPWL/hjQJdodXZIGz5gv3AiBQ5WKTpyu8osL4CCi4aS6G/fSlCdu0\",\n                \"value_start\": 11,\n                \"value_end\": 75,\n                \"entropy\": 5.15211\n            },\n            {\n                \"line\": \"     +   \\\"GeGaqMojMT7//g==\\\\n\\\"\",\n                \"line_num\": 11,\n                \"path\": \"./tests/samples/pem_key.p.java\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"GeGaqMojMT7//g==\",\n                \"value_start\": 10,\n                \"value_end\": 26,\n                \"entropy\": 3.5\n            },\n            {\n                \"line\": \"      + \\\"-----END RSA PRIVATE KEY-----\\\\n\\\";\",\n                \"line_num\": 12,\n                \"path\": \"./tests/samples/pem_key.p.java\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"-----END RSA PRIVATE KEY-----\",\n                \"value_start\": 9,\n                \"value_end\": 38,\n                \"entropy\": 3.24663\n            }\n        ]\n    },\n    {\n        \"rule\": \"PEM Private Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \" = \\\"\\\\\\\"-----BEGIN PRIVATE KEY-----\\\\\\\\n\\\"\",\n                \"line_num\": 16,\n                \"path\": \"./tests/samples/pem_key.p.java\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"-----BEGIN PRIVATE KEY-----\",\n                \"value_start\": 6,\n                \"value_end\": 33,\n                \"entropy\": 3.20029\n            },\n            {\n                \"line\": \" +   \\\"MIIBVAIBADANBgkqhkiG9w0BAQEFAASCAT4wggE6AgEAAkEAxAIxg6QtxmnJ0Bsj\\\\\\\\n\\\"\",\n                \"line_num\": 17,\n                \"path\": \"./tests/samples/pem_key.p.java\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"MIIBVAIBADANBgkqhkiG9w0BAQEFAASCAT4wggE6AgEAAkEAxAIxg6QtxmnJ0Bsj\",\n                \"value_start\": 6,\n                \"value_end\": 70,\n                \"entropy\": 4.44143\n            },\n            {\n                \"line\": \" +   \\\"VRsEhjLB9lSY9CaFvvEbXK9eBezqR6x6epxm4w/bx1xAK1O9m4iyEN72+jhpZHZs\\\\\\\\n\\\"\",\n                \"line_num\": 18,\n                \"path\": \"./tests/samples/pem_key.p.java\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"VRsEhjLB9lSY9CaFvvEbXK9eBezqR6x6epxm4w/bx1xAK1O9m4iyEN72+jhpZHZs\",\n                \"value_start\": 6,\n                \"value_end\": 70,\n                \"entropy\": 5.16391\n            },\n            {\n                \"line\": \" +   \\\"6RZsxQIDAQABAkBbzksyxWtLS7Fi79MUwZrU4GFI50bc1E5AqN2QA/OeAg+tdgRC\\\\\\\\n\\\"\",\n                \"line_num\": 19,\n                \"path\": \"./tests/samples/pem_key.p.java\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"6RZsxQIDAQABAkBbzksyxWtLS7Fi79MUwZrU4GFI50bc1E5AqN2QA/OeAg+tdgRC\",\n                \"value_start\": 6,\n                \"value_end\": 70,\n                \"entropy\": 5.24586\n            },\n            {\n                \"line\": \" +   \\\"eTVV2eZEM750xZUCoqDwLsLeYrGFR7zy0VkBAiEA5ljPCFu3UIVOgZXhSr342mTX\\\\\\\\n\\\"\",\n                \"line_num\": 20,\n                \"path\": \"./tests/samples/pem_key.p.java\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"eTVV2eZEM750xZUCoqDwLsLeYrGFR7zy0VkBAiEA5ljPCFu3UIVOgZXhSr342mTX\",\n                \"value_start\": 6,\n                \"value_end\": 70,\n                \"entropy\": 5.28891\n            },\n            {\n                \"line\": \" +   \\\"vC9/t9XrGuHCQU8oOW0CIQDZ1mYBOniJmPD0h5j1wadmLkmmZRPUNyMTEHiBUEmB\\\\\\\\n\\\"\",\n                \"line_num\": 21,\n                \"path\": \"./tests/samples/pem_key.p.java\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"vC9/t9XrGuHCQU8oOW0CIQDZ1mYBOniJmPD0h5j1wadmLkmmZRPUNyMTEHiBUEmB\",\n                \"value_start\": 6,\n                \"value_end\": 70,\n                \"entropy\": 5.19102\n            },\n            {\n                \"line\": \" +   \\\"uQIgSpG1dB882PRO1eSPaoLVbN34eRNnZTv7QFiVak8V1oECIGk3tKdtPaGAnQoP\\\\\\\\n\\\"\",\n                \"line_num\": 22,\n                \"path\": \"./tests/samples/pem_key.p.java\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"uQIgSpG1dB882PRO1eSPaoLVbN34eRNnZTv7QFiVak8V1oECIGk3tKdtPaGAnQoP\",\n                \"value_start\": 6,\n                \"value_end\": 70,\n                \"entropy\": 5.04243\n            },\n            {\n                \"line\": \" +   \\\"oOM7eYbSXsKfWdeMFkX0E7CqPgcJAiEAlydP8ln92gy4LefZuIJn1/M5PEeRFKrq\\\\\\\\n\\\"\",\n                \"line_num\": 23,\n                \"path\": \"./tests/samples/pem_key.p.java\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"oOM7eYbSXsKfWdeMFkX0E7CqPgcJAiEAlydP8ln92gy4LefZuIJn1/M5PEeRFKrq\",\n                \"value_start\": 6,\n                \"value_end\": 70,\n                \"entropy\": 5.24586\n            },\n            {\n                \"line\": \" +   \\\"aAjRMKT7uCM=\\\\\\\\n\\\"\",\n                \"line_num\": 24,\n                \"path\": \"./tests/samples/pem_key.p.java\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"aAjRMKT7uCM=\",\n                \"value_start\": 6,\n                \"value_end\": 18,\n                \"entropy\": 3.4183\n            },\n            {\n                \"line\": \" +   \\\"-----END RSA PRIVATE KEY-----\\\\\\\"\\\";\",\n                \"line_num\": 25,\n                \"path\": \"./tests/samples/pem_key.p.java\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"-----END RSA PRIVATE KEY-----\",\n                \"value_start\": 6,\n                \"value_end\": 35,\n                \"entropy\": 3.24663\n            }\n        ]\n    },\n    {\n        \"rule\": \"PEM Private Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"2026-04-26 12:36:01 -----BEGIN PRIVATE KEY-----\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"-----BEGIN PRIVATE KEY-----\",\n                \"value_start\": 20,\n                \"value_end\": 47,\n                \"entropy\": 3.20029\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 MIIMvgIBADALBglghkgBZQMEBAMEggyqMIIMpgRATqJGETTwhb2gxXF41z3G5ztP\",\n                \"line_num\": 3,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"MIIMvgIBADALBglghkgBZQMEBAMEggyqMIIMpgRATqJGETTwhb2gxXF41z3G5ztP\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 4.67767\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 I+dcZ5zCOnpcALAIw+OAqVHjisQypIBH6K/pqnrVYzZkwV6M4bLhesOMuserAgSC\",\n                \"line_num\": 4,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"I+dcZ5zCOnpcALAIw+OAqVHjisQypIBH6K/pqnrVYzZkwV6M4bLhesOMuserAgSC\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.06602\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 DGAygxLkWHaG9AEmQJsg1MeFxsNyehNphDUdaKHxVmXPYUNVm3J4c5+xBZigd8pa\",\n                \"line_num\": 5,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"DGAygxLkWHaG9AEmQJsg1MeFxsNyehNphDUdaKHxVmXPYUNVm3J4c5+xBZigd8pa\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.17157\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 LEIX4H6JKVWAwKs5UkCLw3uB434w+6mWMJlUjDwWZSGgEiRjS21nx6eKyLqlLE16\",\n                \"line_num\": 6,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"LEIX4H6JKVWAwKs5UkCLw3uB434w+6mWMJlUjDwWZSGgEiRjS21nx6eKyLqlLE16\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.10907\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 XAZ5Rg2oJAL5CVj8uAe7pUdweySS4EBgdMPJ9o0cEZDP5aD9yTSIeXzi1bgGJQ/s\",\n                \"line_num\": 7,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"XAZ5Rg2oJAL5CVj8uAe7pUdweySS4EBgdMPJ9o0cEZDP5aD9yTSIeXzi1bgGJQ/s\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.27298\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 aJ5DxXUVXDWTZgA05CHuojS/R1WlO2o30rxV4azc+Yr7IcR89i4wNGHUNQFmhhBF\",\n                \"line_num\": 8,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"aJ5DxXUVXDWTZgA05CHuojS/R1WlO2o30rxV4azc+Yr7IcR89i4wNGHUNQFmhhBF\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.4375\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 OYyA41Ls/ESNS1UGWwfCuZ89CBzjjBQZhxp4ELW+ZLa+1w3iUhJZEYoc9GQm7E+v\",\n                \"line_num\": 9,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"OYyA41Ls/ESNS1UGWwfCuZ89CBzjjBQZhxp4ELW+ZLa+1w3iUhJZEYoc9GQm7E+v\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.12086\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 VIQvl4RxKF8WZAc4uTaisTwcNAhYK5m5gpX5ZHLgBndWRjE32kOvask2BLdgjJig\",\n                \"line_num\": 10,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"VIQvl4RxKF8WZAc4uTaisTwcNAhYK5m5gpX5ZHLgBndWRjE32kOvask2BLdgjJig\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.2382\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 Fs9mKlRU+ZqIQxukBDO6xkHjSr1JxIP2HJNyiiZxgCUKSi/I5h4UObW1yjNv0Ymw\",\n                \"line_num\": 11,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"Fs9mKlRU+ZqIQxukBDO6xkHjSr1JxIP2HJNyiiZxgCUKSi/I5h4UObW1yjNv0Ymw\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.27711\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 FE/csKq4gcWvPD/QuFeW4XFQcZaoqkQVILnjVG10NqOTlDJaywMhcgjQq2QQlVXH\",\n                \"line_num\": 12,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"FE/csKq4gcWvPD/QuFeW4XFQcZaoqkQVILnjVG10NqOTlDJaywMhcgjQq2QQlVXH\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.07782\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 zMBgJI3W9qLDYFY69rN/xnL68wg5B1xv62ChNo4eTLlppGmNlLfX6YleXLYK2pTj\",\n                \"line_num\": 13,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"zMBgJI3W9qLDYFY69rN/xnL68wg5B1xv62ChNo4eTLlppGmNlLfX6YleXLYK2pTj\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.09571\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 cmIbK3nvQ7BGLAXVMMYFOkkht0mHVC4sS3mwdUtS2l5KECOq1R+g4mrrAUyGpI1B\",\n                \"line_num\": 14,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"cmIbK3nvQ7BGLAXVMMYFOkkht0mHVC4sS3mwdUtS2l5KECOq1R+g4mrrAUyGpI1B\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.34375\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 68+Eg5DkM86BUYI9N86V4cUtNGDbsmaJgCurGJHHupeJQhWj+Q2CNlXmSaP+mCau\",\n                \"line_num\": 15,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"68+Eg5DkM86BUYI9N86V4cUtNGDbsmaJgCurGJHHupeJQhWj+Q2CNlXmSaP+mCau\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.14384\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 GUEMVn/PVmqhSJIj+yEsojeZykecYXo7LMxiJkuX8HZ9R3ynOHdedcfV4DdAJc1E\",\n                \"line_num\": 16,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"GUEMVn/PVmqhSJIj+yEsojeZykecYXo7LMxiJkuX8HZ9R3ynOHdedcfV4DdAJc1E\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.22993\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 t51bOzjJlLIlUEQicJcXMCrBJ8pL1bHJGkT7t7gxnC72Qz7D2Czh20oJIgFTs1yJ\",\n                \"line_num\": 17,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"t51bOzjJlLIlUEQicJcXMCrBJ8pL1bHJGkT7t7gxnC72Qz7D2Czh20oJIgFTs1yJ\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.05423\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 kQSTxDFcMsakyRRZAAcDyGMGUnrMxIVSyrQDhIQrORaeiTDHcaS6pDuz5kkJsT+Y\",\n                \"line_num\": 18,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"kQSTxDFcMsakyRRZAAcDyGMGUnrMxIVSyrQDhIQrORaeiTDHcaS6pDuz5kkJsT+Y\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 4.86869\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 ki/ZkkAldBpX4sDD1zvC6LyWU1IlZcx9F5V7I0P/BrpSwrvjNQEIeW4tNR1+fEYW\",\n                \"line_num\": 19,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"ki/ZkkAldBpX4sDD1zvC6LyWU1IlZcx9F5V7I0P/BrpSwrvjNQEIeW4tNR1+fEYW\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.35907\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 fE7gewlJZbTCVqTcQ7wQ+kA7JEQkU6I8YaIXuiwiG55EuSsO2MzpApgFtmAcWlT4\",\n                \"line_num\": 20,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"fE7gewlJZbTCVqTcQ7wQ+kA7JEQkU6I8YaIXuiwiG55EuSsO2MzpApgFtmAcWlT4\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.24173\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 ybWzhp7kqwRFolOi6hb9y8y4aDRkRltYcTPswcjh40k1spoCRlwCcgahgTnuWJ8O\",\n                \"line_num\": 21,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"ybWzhp7kqwRFolOi6hb9y8y4aDRkRltYcTPswcjh40k1spoCRlwCcgahgTnuWJ8O\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.00352\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 qq4uxkY8xkFvJ4VqZjcl7AbhdJg3R5gqlbhPZmEXBn3teYbihzMCBRI3RTI5/Hy2\",\n                \"line_num\": 22,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"qq4uxkY8xkFvJ4VqZjcl7AbhdJg3R5gqlbhPZmEXBn3teYbihzMCBRI3RTI5/Hy2\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.23407\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 Yh4VhW+MqaukgRTPk50aKFjEs0vj6D1RpLRUmq/EI2GKZbtZc4MDR8kZWXsP5yqO\",\n                \"line_num\": 23,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"Yh4VhW+MqaukgRTPk50aKFjEs0vj6D1RpLRUmq/EI2GKZbtZc4MDR8kZWXsP5yqO\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.24586\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 o2OcG66cSXR5KrzmNRNdci1GNafm5qHiqj5NsnDax1B8t1hkpV+VMkZKGxGXt2YP\",\n                \"line_num\": 24,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"o2OcG66cSXR5KrzmNRNdci1GNafm5qHiqj5NsnDax1B8t1hkpV+VMkZKGxGXt2YP\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.12086\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 gx1/q1EgS5w2ciAuC8u5gitd1ie43B5lsysO0MY31Qy1eGO1Sj0g4pxM2szbpwso\",\n                \"line_num\": 25,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"gx1/q1EgS5w2ciAuC8u5gitd1ie43B5lsysO0MY31Qy1eGO1Sj0g4pxM2szbpwso\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 4.95282\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 0RZL8aKk645hElitcXDx8wUVc0Zm/Av4FsSiZkhFeKaHSAXJtTtlAkLMMTZaNwBA\",\n                \"line_num\": 26,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"0RZL8aKk645hElitcXDx8wUVc0Zm/Av4FsSiZkhFeKaHSAXJtTtlAkLMMTZaNwBA\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.05836\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 hqmHqqtalptZmwGz2F0dmXF9cy+gOxzaBhQbVcH8SDdchpgTl14B93qh2iY2RjxY\",\n                \"line_num\": 27,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"hqmHqqtalptZmwGz2F0dmXF9cy+gOxzaBhQbVcH8SDdchpgTl14B93qh2iY2RjxY\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.12086\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 Eb3kpsPG0cdLTAAahEALuMu26YFpglJXAkwSwSLPYsGRPHjJFiXfWBR05x5y5wdB\",\n                \"line_num\": 28,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"Eb3kpsPG0cdLTAAahEALuMu26YFpglJXAkwSwSLPYsGRPHjJFiXfWBR05x5y5wdB\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.10907\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 1jhhqlV6ZHO/osEJKb6tSHH0mYf0uMNu2speu2DgsjCjHHJwtSJMayfO1WZcSF+G\",\n                \"line_num\": 29,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"1jhhqlV6ZHO/osEJKb6tSHH0mYf0uMNu2speu2DgsjCjHHJwtSJMayfO1WZcSF+G\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.13462\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 wFXOY77MgB3VwMRcCoTMNwoBswcJeZRyNL+cHLZZcK0kpEJbBY60W5pHUceKrDDJ\",\n                \"line_num\": 30,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"wFXOY77MgB3VwMRcCoTMNwoBswcJeZRyNL+cHLZZcK0kpEJbBY60W5pHUceKrDDJ\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.02142\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 sr63qzPaUVNj0Vu2zFG8sEEMES55/JIKCoj6O66j821/qJ97RLPP5pKUpp2gCS7F\",\n                \"line_num\": 31,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"sr63qzPaUVNj0Vu2zFG8sEEMES55/JIKCoj6O66j821/qJ97RLPP5pKUpp2gCS7F\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.02298\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 GyCzMBiTsF4zNCr+FA1rQUCZqa50S3Gu90KANsv7VX1krJXXaSXQFaiDAyB+zL0f\",\n                \"line_num\": 32,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"GyCzMBiTsF4zNCr+FA1rQUCZqa50S3Gu90KANsv7VX1krJXXaSXQFaiDAyB+zL0f\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.04243\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 SQR7WrimYwMQaGX8c75+8L7NK2zdxMQH0chtdqv79WmoOn+fWGupCq7NlA32s7rb\",\n                \"line_num\": 33,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"SQR7WrimYwMQaGX8c75+8L7NK2zdxMQH0chtdqv79WmoOn+fWGupCq7NlA32s7rb\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.26532\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 Cq4auSoIF5ovQqw2F2wgi2nBpHwfF5ka6qSaQA4wiACrxkC255lCaAzy9jky4Ldt\",\n                \"line_num\": 34,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"Cq4auSoIF5ovQqw2F2wgi2nBpHwfF5ka6qSaQA4wiACrxkC255lCaAzy9jky4Ldt\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 4.84727\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 1iSmA7q2JSu8HEN8NG9AQqP+l44HRXFzJsF3cXTaOzKZKYlhlx5btb8F+M9aCgXi\",\n                \"line_num\": 35,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"1iSmA7q2JSu8HEN8NG9AQqP+l44HRXFzJsF3cXTaOzKZKYlhlx5btb8F+M9aCgXi\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.26532\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 pICqo0FqkQ03ULwswnF8yXsjpYkx63lc0pLStKn7dxI+cSOYYCu0cbxcBoZyqmH1\",\n                \"line_num\": 36,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"pICqo0FqkQ03ULwswnF8yXsjpYkx63lc0pLStKn7dxI+cSOYYCu0cbxcBoZyqmH1\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.07782\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 Kqmr2XMicIWCxQoiW4YT5UYfNsfwmRUWkJwmCahUFSzo5swUpBbeCo6bsEdkyxMM\",\n                \"line_num\": 37,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"Kqmr2XMicIWCxQoiW4YT5UYfNsfwmRUWkJwmCahUFSzo5swUpBbeCo6bsEdkyxMM\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.13618\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 I5bNV1cjSII5liHOyxnvZ77+giZAKglsiI3ZmmVh+l8fvDBDaLVmmMRfcwRHOxu1\",\n                \"line_num\": 38,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"I5bNV1cjSII5liHOyxnvZ77+giZAKglsiI3ZmmVh+l8fvDBDaLVmmMRfcwRHOxu1\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.04657\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 UMRr047T8ggKgEnyhQLK/FJh+Yp8ubo6wsTUwyyVcRULUVWeJbka6EDkMbPucHHb\",\n                \"line_num\": 39,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"UMRr047T8ggKgEnyhQLK/FJh+Yp8ubo6wsTUwyyVcRULUVWeJbka6EDkMbPucHHb\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.10141\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 vDdO61eP2yB+uQlwbBr1UquiQD1XrBHXFVwDw6rJoJxTkGQggaofpsUPa3F561LV\",\n                \"line_num\": 40,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"vDdO61eP2yB+uQlwbBr1UquiQD1XrBHXFVwDw6rJoJxTkGQggaofpsUPa3F561LV\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.11673\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 aQAFxU9BAgmdYb4uJxtlt46DCbx2tFW2OnoqQrpFW7nWlwmLJ2dUhIRkySTyhJpq\",\n                \"line_num\": 41,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"aQAFxU9BAgmdYb4uJxtlt46DCbx2tFW2OnoqQrpFW7nWlwmLJ2dUhIRkySTyhJpq\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.14798\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 K0hnrLThhA1tu8q3dTXOCDs+8csKnI9vVSqAFm6ax3lI6ilBFVIgyZi7dBI1TCKp\",\n                \"line_num\": 42,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"K0hnrLThhA1tu8q3dTXOCDs+8csKnI9vVSqAFm6ax3lI6ilBFVIgyZi7dBI1TCKp\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.18336\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 rDbvCzcWY6dxEUzHqTELG5sd955LQgoei2/86QDquRIgB2PGqblBYylUOA9tBTAv\",\n                \"line_num\": 43,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"rDbvCzcWY6dxEUzHqTELG5sd955LQgoei2/86QDquRIgB2PGqblBYylUOA9tBTAv\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.21461\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 wSVKoZuonI4ijDZz5yec2C9DiCZva6MbxASOLBl05qfeeDbzkhOWsas2ZpMRmaS8\",\n                \"line_num\": 44,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"wSVKoZuonI4ijDZz5yec2C9DiCZva6MbxASOLBl05qfeeDbzkhOWsas2ZpMRmaS8\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.26532\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 dI0Tmp732GkddM2R879ULHp0x4CI4Vh42mN/m22OInwW4mlPaUAy4MQUOWvuWb6/\",\n                \"line_num\": 45,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"dI0Tmp732GkddM2R879ULHp0x4CI4Vh42mN/m22OInwW4mlPaUAy4MQUOWvuWb6/\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.02752\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 o2/HcXJCoj9JsULCKXchFrawJHTgCTpi9BicMpmnPHpnpxlYRw77p4qWcmGqs2Yi\",\n                \"line_num\": 46,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"o2/HcXJCoj9JsULCKXchFrawJHTgCTpi9BicMpmnPHpnpxlYRw77p4qWcmGqs2Yi\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.02142\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 gQLAAQhZxzpT8MPgsomgC2nySQthEHsvF4XVbL60ImBv9Qig2hd7Jh4cI0D/+TdC\",\n                \"line_num\": 47,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"gQLAAQhZxzpT8MPgsomgC2nySQthEHsvF4XVbL60ImBv9Qig2hd7Jh4cI0D/+TdC\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.25\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 tky6B1MyPAxYCTN2QXXCo6CbdzMoVBhXuAI7prv2DA5zUwNCpxBKs2BgSIZ9677J\",\n                \"line_num\": 48,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"tky6B1MyPAxYCTN2QXXCo6CbdzMoVBhXuAI7prv2DA5zUwNCpxBKs2BgSIZ9677J\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.12852\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 RlxpsqbbVLVJl6BdbJcMRjIWEW0flKwbSb/PdEuEGheu5UuRZ4/MxrzrciW35CxX\",\n                \"line_num\": 49,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"RlxpsqbbVLVJl6BdbJcMRjIWEW0flKwbSb/PdEuEGheu5UuRZ4/MxrzrciW35CxX\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.12283\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 +XYlHBLCOQ6MCCSYtAy9olSBxQ1iMkiP0V20Crzm6JapZWxTC1EEFgMXAJERMXin\",\n                \"line_num\": 50,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"+XYlHBLCOQ6MCCSYtAy9olSBxQ1iMkiP0V20Crzm6JapZWxTC1EEFgMXAJERMXin\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.12696\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 NiY0wK8f8JFABRBxMZeHyBtT6EobR2Q1Ozcjmhb98rK6wUVhorCGV0mbZ4jzVFtH\",\n                \"line_num\": 51,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"NiY0wK8f8JFABRBxMZeHyBtT6EobR2Q1Ozcjmhb98rK6wUVhorCGV0mbZ4jzVFtH\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.23407\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 YD9UoTAQrI22NGLy+BupkM7OmaQ82SWZlZ8eiSqv5z7aBI8AAWOORHCYW07i9kCy\",\n                \"line_num\": 52,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"YD9UoTAQrI22NGLy+BupkM7OmaQ82SWZlZ8eiSqv5z7aBI8AAWOORHCYW07i9kCy\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.17923\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 OJ4nB3/Ko4OTiUeGYamtlj9/k7alhM5BE2fkEoygYFvL1cfFXMHH+wOEonSMi5qo\",\n                \"line_num\": 53,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"OJ4nB3/Ko4OTiUeGYamtlj9/k7alhM5BE2fkEoygYFvL1cfFXMHH+wOEonSMi5qo\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.24586\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 smQrWalr8aPEPGkXWYDjMsBZ4rHQ00z+cE3YiXJXMj2Y8JMY9LJrR1asaEY3IoBx\",\n                \"line_num\": 54,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"smQrWalr8aPEPGkXWYDjMsBZ4rHQ00z+cE3YiXJXMj2Y8JMY9LJrR1asaEY3IoBx\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 4.94712\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 ose+UxmIsZr1OD/Jy1euBJo0IQX3gnrvdGl9u8zQeCes+g5xl68gAU8n1J/Z4DoB\",\n                \"line_num\": 55,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"ose+UxmIsZr1OD/Jy1euBJo0IQX3gnrvdGl9u8zQeCes+g5xl68gAU8n1J/Z4DoB\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.02298\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 Y0mUMEgOuMu6aAvmQc/lqqP7lwrCKCfVe6SS6w2w3I9GrL2/3GkQkXJSc4rmZb7u\",\n                \"line_num\": 56,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"Y0mUMEgOuMu6aAvmQc/lqqP7lwrCKCfVe6SS6w2w3I9GrL2/3GkQkXJSc4rmZb7u\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.17923\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 JoAFyHleVFAnDFXlhLKFl0h3x7TD26LK2LApnLI344MvE6ZG9RFA6w2Q6JtRIEWU\",\n                \"line_num\": 57,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"JoAFyHleVFAnDFXlhLKFl0h3x7TD26LK2LApnLI344MvE6ZG9RFA6w2Q6JtRIEWU\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 4.98251\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 lheqsm3z9sfcOiHW/GWw0nTkC8btOFZ0uBTThDnHg0BvuXzmBDcle1GpXJdyzLyl\",\n                \"line_num\": 58,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"lheqsm3z9sfcOiHW/GWw0nTkC8btOFZ0uBTThDnHg0BvuXzmBDcle1GpXJdyzLyl\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.19102\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 cW4qlLb15J1zMb/hVBNGagquATVVclvcVKYGYkNsxGpWBC8/8iJTEUKEMwqti7PR\",\n                \"line_num\": 59,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"cW4qlLb15J1zMb/hVBNGagquATVVclvcVKYGYkNsxGpWBC8/8iJTEUKEMwqti7PR\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.18336\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 yh+r058rdhlVML+0F5aDJwjslkCppGpJF5nGQn4pwBzViz752YFUgRRz2jrhFYHE\",\n                \"line_num\": 60,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"yh+r058rdhlVML+0F5aDJwjslkCppGpJF5nGQn4pwBzViz752YFUgRRz2jrhFYHE\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.02711\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 KaVCtcczpnZhtqNMY49aRMaTphHu4YpgglMjbDuZ5wiK27Fq5RM+lF6sIG6SGycb\",\n                \"line_num\": 61,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"KaVCtcczpnZhtqNMY49aRMaTphHu4YpgglMjbDuZ5wiK27Fq5RM+lF6sIG6SGycb\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.15211\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 4whptwXeepJbATEQ55FWWckLVJ5lVWuZ0pCOMguparXRwXECzGnIHLxehCexiZqA\",\n                \"line_num\": 62,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"4whptwXeepJbATEQ55FWWckLVJ5lVWuZ0pCOMguparXRwXECzGnIHLxehCexiZqA\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.09727\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 QLJZNAFOyB3IhHZo5TrJY5sNIMXU94yraZLmQQ3cRMntNiW8kp6Pqj3I40bqlL3F\",\n                \"line_num\": 63,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"QLJZNAFOyB3IhHZo5TrJY5sNIMXU94yraZLmQQ3cRMntNiW8kp6Pqj3I40bqlL3F\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.25352\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 ahwNl8qwsjl44hMmWMfQk1c5OpCtkGJcIpIF08ILxDknAyBTQ35BJXMJ9XtI0nt2\",\n                \"line_num\": 64,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"ahwNl8qwsjl44hMmWMfQk1c5OpCtkGJcIpIF08ILxDknAyBTQ35BJXMJ9XtI0nt2\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.17157\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 OiGGA6YUqbb68bmXbEhzKQhulHs8GWh/sgXiN3NoI5ns6nU0a3e6Oz2BkXY708iM\",\n                \"line_num\": 65,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"OiGGA6YUqbb68bmXbEhzKQhulHs8GWh/sgXiN3NoI5ns6nU0a3e6Oz2BkXY708iM\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.05423\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 oxrQxsZ4uoM/pjlHG5xeOM62B3tpeghU5iFfOgr+hH9mGcOx4cSoNjn3a5gvMJqc\",\n                \"line_num\": 66,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"oxrQxsZ4uoM/pjlHG5xeOM62B3tpeghU5iFfOgr+hH9mGcOx4cSoNjn3a5gvMJqc\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.14798\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 Ycc60cOGalwlpLruUy4rdDwhInvsGAmaapDq8IxRpS/AIpij4Y/SmMl9uisvqBr9\",\n                \"line_num\": 67,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"Ycc60cOGalwlpLruUy4rdDwhInvsGAmaapDq8IxRpS/AIpij4Y/SmMl9uisvqBr9\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.03477\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 ypg1olTOJ8rk08AXY0Kl2D9lS5GK11g2VWtCgKiMdS/RvAXJnJGkdStVTGYiCnHJ\",\n                \"line_num\": 68,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"ypg1olTOJ8rk08AXY0Kl2D9lS5GK11g2VWtCgKiMdS/RvAXJnJGkdStVTGYiCnHJ\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 4.99173\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 OjgyHTrR2a+N2ZiYTldYtmF6H9pm/lfv6FNtw2cNQzqGoSSsrAHEugO0d94keir2\",\n                \"line_num\": 69,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"OjgyHTrR2a+N2ZiYTldYtmF6H9pm/lfv6FNtw2cNQzqGoSSsrAHEugO0d94keir2\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.24586\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 62w9ymkZWDurfZDVT8OIVWXhgKlR44rEMqSAR+iv6ap61WM2ZMFejOGy4XrDjLrH\",\n                \"line_num\": 70,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"62w9ymkZWDurfZDVT8OIVWXhgKlR44rEMqSAR+iv6ap61WM2ZMFejOGy4XrDjLrH\",\n                \"value_start\": 20,\n                \"value_end\": 84,\n                \"entropy\": 5.21048\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 qwI=\",\n                \"line_num\": 71,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"qwI=\",\n                \"value_start\": 20,\n                \"value_end\": 24,\n                \"entropy\": 2.0\n            },\n            {\n                \"line\": \"2026-04-26 12:36:01 -----END PRIVATE KEY-----\",\n                \"line_num\": 72,\n                \"path\": \"./tests/samples/pem_key.p.log\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"-----END PRIVATE KEY-----\",\n                \"value_start\": 20,\n                \"value_end\": 45,\n                \"entropy\": 3.04489\n            }\n        ]\n    },\n    {\n        \"rule\": \"PEM Private Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"{\\\"ML-KEM-1024.log\\\":\\\"\\\\r\\\\n\\\\r\\\\n#7 [4/4] RUN openssl genpkey -algorithm ML-KEM-1024 -out mlkem-privatekey.pem && cat mlkem-privatekey.pem\\\\r\\\\n2026-04-26 12:36:01 -----BEGIN PRIVATE KEY-----\\\\r\\\\n2026-04-26 12:36:01 MIIMvgIBADALBglghkgBZQMEBAMEggyqMIIMpgRATqJGETTwhb2gxXF41z3G5ztP\\\\r\\\\n2026-04-26 12:36:01 I+dcZ5zCOnpcALAIw+OAqVHjisQypIBH6K/pqnrVYzZkwV6M4bLhesOMuserAgSC\\\\r\\\\n2026-04-26 12:36:01 DGAygxLkWHaG9AEmQJsg1MeFxsNyehNphDUdaKHxVmXPYUNVm3J4c5+xBZigd8pa\\\\r\\\\n2026-04-26 12:36:01 LEIX4H6JKVWAwKs5UkCLw3uB434w+6mWMJlUjDwWZSGgEiRjS21nx6eKyLqlLE16\\\\r\\\\n2026-04-26 12:36:01 XAZ5Rg2oJAL5CVj8uAe7pUdweySS4EBgdMPJ9o0cEZDP5aD9yTSIeXzi1bgGJQ/s\\\\r\\\\n2026-04-26 12:36:01 aJ5DxXUVXDWTZgA05CHuojS/R1WlO2o30rxV4azc+Yr7IcR89i4wNGHUNQFmhhBF\\\\r\\\\n2026-04-26 12:36:01 OYyA41Ls/ESNS1UGWwfCuZ89CBzjjBQZhxp4ELW+ZLa+1w3iUhJZEYoc9GQm7E+v\\\\r\\\\n2026-04-26 12:36:01 VIQvl4RxKF8WZAc4uTaisTwcNAhYK5m5gpX5ZHLgBndWRjE32kOvask2BLdgjJig\\\\r\\\\n2026-04-26 12:36:01 Fs9mKlRU+ZqIQxukBDO6xkHjSr1JxIP2HJNyiiZxgCUKSi/I5h4UObW1yjNv0Ymw\\\\r\\\\n2026-04-26 12:36:01 FE/csKq4gcWvPD/QuFeW4XFQcZaoqkQVILnjVG10NqOTlDJaywMhcgjQq2QQlVXH\\\\r\\\\n2026-04-26 12:36:01 zMBgJI3W9qLDYFY69rN/xnL68wg5B1xv62ChNo4eTLlppGmNlLfX6YleXLYK2pTj\\\\r\\\\n2026-04-26 12:36:01 cmIbK3nvQ7BGLAXVMMYFOkkht0mHVC4sS3mwdUtS2l5KECOq1R+g4mrrAUyGpI1B\\\\r\\\\n2026-04-26 12:36:01 68+Eg5DkM86BUYI9N86V4cUtNGDbsmaJgCurGJHHupeJQhWj+Q2CNlXmSaP+mCau\\\\r\\\\n2026-04-26 12:36:01 GUEMVn/PVmqhSJIj+yEsojeZykecYXo7LMxiJkuX8HZ9R3ynOHdedcfV4DdAJc1E\\\\r\\\\n2026-04-26 12:36:01 t51bOzjJlLIlUEQicJcXMCrBJ8pL1bHJGkT7t7gxnC72Qz7D2Czh20oJIgFTs1yJ\\\\r\\\\n2026-04-26 12:36:01 kQSTxDFcMsakyRRZAAcDyGMGUnrMxIVSyrQDhIQrORaeiTDHcaS6pDuz5kkJsT+Y\\\\r\\\\n2026-04-26 12:36:01 ki/ZkkAldBpX4sDD1zvC6LyWU1IlZcx9F5V7I0P/BrpSwrvjNQEIeW4tNR1+fEYW\\\\r\\\\n2026-04-26 12:36:01 fE7gewlJZbTCVqTcQ7wQ+kA7JEQkU6I8YaIXuiwiG55EuSsO2MzpApgFtmAcWlT4\\\\r\\\\n2026-04-26 12:36:01 ybWzhp7kqwRFolOi6hb9y8y4aDRkRltYcTPswcjh40k1spoCRlwCcgahgTnuWJ8O\\\\r\\\\n2026-04-26 12:36:01 qq4uxkY8xkFvJ4VqZjcl7AbhdJg3R5gqlbhPZmEXBn3teYbihzMCBRI3RTI5/Hy2\\\\r\\\\n2026-04-26 12:36:01 Yh4VhW+MqaukgRTPk50aKFjEs0vj6D1RpLRUmq/EI2GKZbtZc4MDR8kZWXsP5yqO\\\\r\\\\n2026-04-26 12:36:01 o2OcG66cSXR5KrzmNRNdci1GNafm5qHiqj5NsnDax1B8t1hkpV+VMkZKGxGXt2YP\\\\r\\\\n2026-04-26 12:36:01 gx1/q1EgS5w2ciAuC8u5gitd1ie43B5lsysO0MY31Qy1eGO1Sj0g4pxM2szbpwso\\\\r\\\\n2026-04-26 12:36:01 0RZL8aKk645hElitcXDx8wUVc0Zm/Av4FsSiZkhFeKaHSAXJtTtlAkLMMTZaNwBA\\\\r\\\\n2026-04-26 12:36:01 hqmHqqtalptZmwGz2F0dmXF9cy+gOxzaBhQbVcH8SDdchpgTl14B93qh2iY2RjxY\\\\r\\\\n2026-04-26 12:36:01 Eb3kpsPG0cdLTAAahEALuMu26YFpglJXAkwSwSLPYsGRPHjJFiXfWBR05x5y5wdB\\\\r\\\\n2026-04-26 12:36:01 1jhhqlV6ZHO/osEJKb6tSHH0mYf0uMNu2speu2DgsjCjHHJwtSJMayfO1WZcSF+G\\\\r\\\\n2026-04-26 12:36:01 wFXOY77MgB3VwMRcCoTMNwoBswcJeZRyNL+cHLZZcK0kpEJbBY60W5pHUceKrDDJ\\\\r\\\\n2026-04-26 12:36:01 sr63qzPaUVNj0Vu2zFG8sEEMES55/JIKCoj6O66j821/qJ97RLPP5pKUpp2gCS7F\\\\r\\\\n2026-04-26 12:36:01 GyCzMBiTsF4zNCr+FA1rQUCZqa50S3Gu90KANsv7VX1krJXXaSXQFaiDAyB+zL0f\\\\r\\\\n2026-04-26 12:36:01 SQR7WrimYwMQaGX8c75+8L7NK2zdxMQH0chtdqv79WmoOn+fWGupCq7NlA32s7rb\\\\r\\\\n2026-04-26 12:36:01 Cq4auSoIF5ovQqw2F2wgi2nBpHwfF5ka6qSaQA4wiACrxkC255lCaAzy9jky4Ldt\\\\r\\\\n2026-04-26 12:36:01 1iSmA7q2JSu8HEN8NG9AQqP+l44HRXFzJsF3cXTaOzKZKYlhlx5btb8F+M9aCgXi\\\\r\\\\n2026-04-26 12:36:01 pICqo0FqkQ03ULwswnF8yXsjpYkx63lc0pLStKn7dxI+cSOYYCu0cbxcBoZyqmH1\\\\r\\\\n2026-04-26 12:36:01 Kqmr2XMicIWCxQoiW4YT5UYfNsfwmRUWkJwmCahUFSzo5swUpBbeCo6bsEdkyxMM\\\\r\\\\n2026-04-26 12:36:01 I5bNV1cjSII5liHOyxnvZ77+giZAKglsiI3ZmmVh+l8fvDBDaLVmmMRfcwRHOxu1\\\\r\\\\n2026-04-26 12:36:01 UMRr047T8ggKgEnyhQLK/FJh+Yp8ubo6wsTUwyyVcRULUVWeJbka6EDkMbPucHHb\\\\r\\\\n2026-04-26 12:36:01 vDdO61eP2yB+uQlwbBr1UquiQD1XrBHXFVwDw6rJoJxTkGQggaofpsUPa3F561LV\\\\r\\\\n2026-04-26 12:36:01 aQAFxU9BAgmdYb4uJxtlt46DCbx2tFW2OnoqQrpFW7nWlwmLJ2dUhIRkySTyhJpq\\\\r\\\\n2026-04-26 12:36:01 K0hnrLThhA1tu8q3dTXOCDs+8csKnI9vVSqAFm6ax3lI6ilBFVIgyZi7dBI1TCKp\\\\r\\\\n2026-04-26 12:36:01 rDbvCzcWY6dxEUzHqTELG5sd955LQgoei2/86QDquRIgB2PGqblBYylUOA9tBTAv\\\\r\\\\n2026-04-26 12:36:01 wSVKoZuonI4ijDZz5yec2C9DiCZva6MbxASOLBl05qfeeDbzkhOWsas2ZpMRmaS8\\\\r\\\\n2026-04-26 12:36:01 dI0Tmp732GkddM2R879ULHp0x4CI4Vh42mN/m22OInwW4mlPaUAy4MQUOWvuWb6/\\\\r\\\\n2026-04-26 12:36:01 o2/HcXJCoj9JsULCKXchFrawJHTgCTpi9BicMpmnPHpnpxlYRw77p4qWcmGqs2Yi\\\\r\\\\n2026-04-26 12:36:01 gQLAAQhZxzpT8MPgsomgC2nySQthEHsvF4XVbL60ImBv9Qig2hd7Jh4cI0D/+TdC\\\\r\\\\n2026-04-26 12:36:01 tky6B1MyPAxYCTN2QXXCo6CbdzMoVBhXuAI7prv2DA5zUwNCpxBKs2BgSIZ9677J\\\\r\\\\n2026-04-26 12:36:01 RlxpsqbbVLVJl6BdbJcMRjIWEW0flKwbSb/PdEuEGheu5UuRZ4/MxrzrciW35CxX\\\\r\\\\n2026-04-26 12:36:01 +XYlHBLCOQ6MCCSYtAy9olSBxQ1iMkiP0V20Crzm6JapZWxTC1EEFgMXAJERMXin\\\\r\\\\n2026-04-26 12:36:01 NiY0wK8f8JFABRBxMZeHyBtT6EobR2Q1Ozcjmhb98rK6wUVhorCGV0mbZ4jzVFtH\\\\r\\\\n2026-04-26 12:36:01 YD9UoTAQrI22NGLy+BupkM7OmaQ82SWZlZ8eiSqv5z7aBI8AAWOORHCYW07i9kCy\\\\r\\\\n2026-04-26 12:36:01 OJ4nB3/Ko4OTiUeGYamtlj9/k7alhM5BE2fkEoygYFvL1cfFXMHH+wOEonSMi5qo\\\\r\\\\n2026-04-26 12:36:01 smQrWalr8aPEPGkXWYDjMsBZ4rHQ00z+cE3YiXJXMj2Y8JMY9LJrR1asaEY3IoBx\\\\r\\\\n2026-04-26 12:36:01 ose+UxmIsZr1OD/Jy1euBJo0IQX3gnrvdGl9u8zQeCes+g5xl68gAU8n1J/Z4DoB\\\\r\\\\n2026-04-26 12:36:01 Y0mUMEgOuMu6aAvmQc/lqqP7lwrCKCfVe6SS6w2w3I9GrL2/3GkQkXJSc4rmZb7u\\\\r\\\\n2026-04-26 12:36:01 JoAFyHleVFAnDFXlhLKFl0h3x7TD26LK2LApnLI344MvE6ZG9RFA6w2Q6JtRIEWU\\\\r\\\\n2026-04-26 12:36:01 lheqsm3z9sfcOiHW/GWw0nTkC8btOFZ0uBTThDnHg0BvuXzmBDcle1GpXJdyzLyl\\\\r\\\\n2026-04-26 12:36:01 cW4qlLb15J1zMb/hVBNGagquATVVclvcVKYGYkNsxGpWBC8/8iJTEUKEMwqti7PR\\\\r\\\\n2026-04-26 12:36:01 yh+r058rdhlVML+0F5aDJwjslkCppGpJF5nGQn4pwBzViz752YFUgRRz2jrhFYHE\\\\r\\\\n2026-04-26 12:36:01 KaVCtcczpnZhtqNMY49aRMaTphHu4YpgglMjbDuZ5wiK27Fq5RM+lF6sIG6SGycb\\\\r\\\\n2026-04-26 12:36:01 4whptwXeepJbATEQ55FWWckLVJ5lVWuZ0pCOMguparXRwXECzGnIHLxehCexiZqA\\\\r\\\\n2026-04-26 12:36:01 QLJZNAFOyB3IhHZo5TrJY5sNIMXU94yraZLmQQ3cRMntNiW8kp6Pqj3I40bqlL3F\\\\r\\\\n2026-04-26 12:36:01 ahwNl8qwsjl44hMmWMfQk1c5OpCtkGJcIpIF08ILxDknAyBTQ35BJXMJ9XtI0nt2\\\\r\\\\n2026-04-26 12:36:01 OiGGA6YUqbb68bmXbEhzKQhulHs8GWh/sgXiN3NoI5ns6nU0a3e6Oz2BkXY708iM\\\\r\\\\n2026-04-26 12:36:01 oxrQxsZ4uoM/pjlHG5xeOM62B3tpeghU5iFfOgr+hH9mGcOx4cSoNjn3a5gvMJqc\\\\r\\\\n2026-04-26 12:36:01 Ycc60cOGalwlpLruUy4rdDwhInvsGAmaapDq8IxRpS/AIpij4Y/SmMl9uisvqBr9\\\\r\\\\n2026-04-26 12:36:01 ypg1olTOJ8rk08AXY0Kl2D9lS5GK11g2VWtCgKiMdS/RvAXJnJGkdStVTGYiCnHJ\\\\r\\\\n2026-04-26 12:36:01 OjgyHTrR2a+N2ZiYTldYtmF6H9pm/lfv6FNtw2cNQzqGoSSsrAHEugO0d94keir2\\\\r\\\\n2026-04-26 12:36:01 62w9ymkZWDurfZDVT8OIVWXhgKlR44rEMqSAR+iv6ap61WM2ZMFejOGy4XrDjLrH\\\\r\\\\n2026-04-26 12:36:01 qwI=\\\\r\\\\n2026-04-26 12:36:01 -----END PRIVATE KEY-----\\\\r\\\\n#7 DONE 0.3s\\\\r\\\\n\\\\r\\\\n#8 exporting to image\\\\r\\\\n#8 exporting layers 0.1s done\\\\r\\\\n#8 writing image sha256:3ed48eb4eb0c17e6baaf691a361afd8c75572517e5b729849da4e5344bf7f244 done\\\\r\\\\n#8 DONE 0.2s\\\"}\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/pem_key.p.log.json\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"-----BEGIN PRIVATE KEY-----\\\\r\\\\n2026-04-26 12:36:01 MIIMvgIBADALBglghkgBZQMEBAMEggyqMIIMpgRATqJGETTwhb2gxXF41z3G5ztP\\\\r\\\\n2026-04-26 12:36:01 I+dcZ5zCOnpcALAIw+OAqVHjisQypIBH6K/pqnrVYzZkwV6M4bLhesOMuserAgSC\\\\r\\\\n2026-04-26 12:36:01 DGAygxLkWHaG9AEmQJsg1MeFxsNyehNphDUdaKHxVmXPYUNVm3J4c5+xBZigd8pa\\\\r\\\\n2026-04-26 12:36:01 LEIX4H6JKVWAwKs5UkCLw3uB434w+6mWMJlUjDwWZSGgEiRjS21nx6eKyLqlLE16\\\\r\\\\n2026-04-26 12:36:01 XAZ5Rg2oJAL5CVj8uAe7pUdweySS4EBgdMPJ9o0cEZDP5aD9yTSIeXzi1bgGJQ/s\\\\r\\\\n2026-04-26 12:36:01 aJ5DxXUVXDWTZgA05CHuojS/R1WlO2o30rxV4azc+Yr7IcR89i4wNGHUNQFmhhBF\\\\r\\\\n2026-04-26 12:36:01 OYyA41Ls/ESNS1UGWwfCuZ89CBzjjBQZhxp4ELW+ZLa+1w3iUhJZEYoc9GQm7E+v\\\\r\\\\n2026-04-26 12:36:01 VIQvl4RxKF8WZAc4uTaisTwcNAhYK5m5gpX5ZHLgBndWRjE32kOvask2BLdgjJig\\\\r\\\\n2026-04-26 12:36:01 Fs9mKlRU+ZqIQxukBDO6xkHjSr1JxIP2HJNyiiZxgCUKSi/I5h4UObW1yjNv0Ymw\\\\r\\\\n2026-04-26 12:36:01 FE/csKq4gcWvPD/QuFeW4XFQcZaoqkQVILnjVG10NqOTlDJaywMhcgjQq2QQlVXH\\\\r\\\\n2026-04-26 12:36:01 zMBgJI3W9qLDYFY69rN/xnL68wg5B1xv62ChNo4eTLlppGmNlLfX6YleXLYK2pTj\\\\r\\\\n2026-04-26 12:36:01 cmIbK3nvQ7BGLAXVMMYFOkkht0mHVC4sS3mwdUtS2l5KECOq1R+g4mrrAUyGpI1B\\\\r\\\\n2026-04-26 12:36:01 68+Eg5DkM86BUYI9N86V4cUtNGDbsmaJgCurGJHHupeJQhWj+Q2CNlXmSaP+mCau\\\\r\\\\n2026-04-26 12:36:01 GUEMVn/PVmqhSJIj+yEsojeZykecYXo7LMxiJkuX8HZ9R3ynOHdedcfV4DdAJc1E\\\\r\\\\n2026-04-26 12:36:01 t51bOzjJlLIlUEQicJcXMCrBJ8pL1bHJGkT7t7gxnC72Qz7D2Czh20oJIgFTs1yJ\\\\r\\\\n2026-04-26 12:36:01 kQSTxDFcMsakyRRZAAcDyGMGUnrMxIVSyrQDhIQrORaeiTDHcaS6pDuz5kkJsT+Y\\\\r\\\\n2026-04-26 12:36:01 ki/ZkkAldBpX4sDD1zvC6LyWU1IlZcx9F5V7I0P/BrpSwrvjNQEIeW4tNR1+fEYW\\\\r\\\\n2026-04-26 12:36:01 fE7gewlJZbTCVqTcQ7wQ+kA7JEQkU6I8YaIXuiwiG55EuSsO2MzpApgFtmAcWlT4\\\\r\\\\n2026-04-26 12:36:01 ybWzhp7kqwRFolOi6hb9y8y4aDRkRltYcTPswcjh40k1spoCRlwCcgahgTnuWJ8O\\\\r\\\\n2026-04-26 12:36:01 qq4uxkY8xkFvJ4VqZjcl7AbhdJg3R5gqlbhPZmEXBn3teYbihzMCBRI3RTI5/Hy2\\\\r\\\\n2026-04-26 12:36:01 Yh4VhW+MqaukgRTPk50aKFjEs0vj6D1RpLRUmq/EI2GKZbtZc4MDR8kZWXsP5yqO\\\\r\\\\n2026-04-26 12:36:01 o2OcG66cSXR5KrzmNRNdci1GNafm5qHiqj5NsnDax1B8t1hkpV+VMkZKGxGXt2YP\\\\r\\\\n2026-04-26 12:36:01 gx1/q1EgS5w2ciAuC8u5gitd1ie43B5lsysO0MY31Qy1eGO1Sj0g4pxM2szbpwso\\\\r\\\\n2026-04-26 12:36:01 0RZL8aKk645hElitcXDx8wUVc0Zm/Av4FsSiZkhFeKaHSAXJtTtlAkLMMTZaNwBA\\\\r\\\\n2026-04-26 12:36:01 hqmHqqtalptZmwGz2F0dmXF9cy+gOxzaBhQbVcH8SDdchpgTl14B93qh2iY2RjxY\\\\r\\\\n2026-04-26 12:36:01 Eb3kpsPG0cdLTAAahEALuMu26YFpglJXAkwSwSLPYsGRPHjJFiXfWBR05x5y5wdB\\\\r\\\\n2026-04-26 12:36:01 1jhhqlV6ZHO/osEJKb6tSHH0mYf0uMNu2speu2DgsjCjHHJwtSJMayfO1WZcSF+G\\\\r\\\\n2026-04-26 12:36:01 wFXOY77MgB3VwMRcCoTMNwoBswcJeZRyNL+cHLZZcK0kpEJbBY60W5pHUceKrDDJ\\\\r\\\\n2026-04-26 12:36:01 sr63qzPaUVNj0Vu2zFG8sEEMES55/JIKCoj6O66j821/qJ97RLPP5pKUpp2gCS7F\\\\r\\\\n2026-04-26 12:36:01 GyCzMBiTsF4zNCr+FA1rQUCZqa50S3Gu90KANsv7VX1krJXXaSXQFaiDAyB+zL0f\\\\r\\\\n2026-04-26 12:36:01 SQR7WrimYwMQaGX8c75+8L7NK2zdxMQH0chtdqv79WmoOn+fWGupCq7NlA32s7rb\\\\r\\\\n2026-04-26 12:36:01 Cq4auSoIF5ovQqw2F2wgi2nBpHwfF5ka6qSaQA4wiACrxkC255lCaAzy9jky4Ldt\\\\r\\\\n2026-04-26 12:36:01 1iSmA7q2JSu8HEN8NG9AQqP+l44HRXFzJsF3cXTaOzKZKYlhlx5btb8F+M9aCgXi\\\\r\\\\n2026-04-26 12:36:01 pICqo0FqkQ03ULwswnF8yXsjpYkx63lc0pLStKn7dxI+cSOYYCu0cbxcBoZyqmH1\\\\r\\\\n2026-04-26 12:36:01 Kqmr2XMicIWCxQoiW4YT5UYfNsfwmRUWkJwmCahUFSzo5swUpBbeCo6bsEdkyxMM\\\\r\\\\n2026-04-26 12:36:01 I5bNV1cjSII5liHOyxnvZ77+giZAKglsiI3ZmmVh+l8fvDBDaLVmmMRfcwRHOxu1\\\\r\\\\n2026-04-26 12:36:01 UMRr047T8ggKgEnyhQLK/FJh+Yp8ubo6wsTUwyyVcRULUVWeJbka6EDkMbPucHHb\\\\r\\\\n2026-04-26 12:36:01 vDdO61eP2yB+uQlwbBr1UquiQD1XrBHXFVwDw6rJoJxTkGQggaofpsUPa3F561LV\\\\r\\\\n2026-04-26 12:36:01 aQAFxU9BAgmdYb4uJxtlt46DCbx2tFW2OnoqQrpFW7nWlwmLJ2dUhIRkySTyhJpq\\\\r\\\\n2026-04-26 12:36:01 K0hnrLThhA1tu8q3dTXOCDs+8csKnI9vVSqAFm6ax3lI6ilBFVIgyZi7dBI1TCKp\\\\r\\\\n2026-04-26 12:36:01 rDbvCzcWY6dxEUzHqTELG5sd955LQgoei2/86QDquRIgB2PGqblBYylUOA9tBTAv\\\\r\\\\n2026-04-26 12:36:01 wSVKoZuonI4ijDZz5yec2C9DiCZva6MbxASOLBl05qfeeDbzkhOWsas2ZpMRmaS8\\\\r\\\\n2026-04-26 12:36:01 dI0Tmp732GkddM2R879ULHp0x4CI4Vh42mN/m22OInwW4mlPaUAy4MQUOWvuWb6/\\\\r\\\\n2026-04-26 12:36:01 o2/HcXJCoj9JsULCKXchFrawJHTgCTpi9BicMpmnPHpnpxlYRw77p4qWcmGqs2Yi\\\\r\\\\n2026-04-26 12:36:01 gQLAAQhZxzpT8MPgsomgC2nySQthEHsvF4XVbL60ImBv9Qig2hd7Jh4cI0D/+TdC\\\\r\\\\n2026-04-26 12:36:01 tky6B1MyPAxYCTN2QXXCo6CbdzMoVBhXuAI7prv2DA5zUwNCpxBKs2BgSIZ9677J\\\\r\\\\n2026-04-26 12:36:01 RlxpsqbbVLVJl6BdbJcMRjIWEW0flKwbSb/PdEuEGheu5UuRZ4/MxrzrciW35CxX\\\\r\\\\n2026-04-26 12:36:01 +XYlHBLCOQ6MCCSYtAy9olSBxQ1iMkiP0V20Crzm6JapZWxTC1EEFgMXAJERMXin\\\\r\\\\n2026-04-26 12:36:01 NiY0wK8f8JFABRBxMZeHyBtT6EobR2Q1Ozcjmhb98rK6wUVhorCGV0mbZ4jzVFtH\\\\r\\\\n2026-04-26 12:36:01 YD9UoTAQrI22NGLy+BupkM7OmaQ82SWZlZ8eiSqv5z7aBI8AAWOORHCYW07i9kCy\\\\r\\\\n2026-04-26 12:36:01 OJ4nB3/Ko4OTiUeGYamtlj9/k7alhM5BE2fkEoygYFvL1cfFXMHH+wOEonSMi5qo\\\\r\\\\n2026-04-26 12:36:01 smQrWalr8aPEPGkXWYDjMsBZ4rHQ00z+cE3YiXJXMj2Y8JMY9LJrR1asaEY3IoBx\\\\r\\\\n2026-04-26 12:36:01 ose+UxmIsZr1OD/Jy1euBJo0IQX3gnrvdGl9u8zQeCes+g5xl68gAU8n1J/Z4DoB\\\\r\\\\n2026-04-26 12:36:01 Y0mUMEgOuMu6aAvmQc/lqqP7lwrCKCfVe6SS6w2w3I9GrL2/3GkQkXJSc4rmZb7u\\\\r\\\\n2026-04-26 12:36:01 JoAFyHleVFAnDFXlhLKFl0h3x7TD26LK2LApnLI344MvE6ZG9RFA6w2Q6JtRIEWU\\\\r\\\\n2026-04-26 12:36:01 lheqsm3z9sfcOiHW/GWw0nTkC8btOFZ0uBTThDnHg0BvuXzmBDcle1GpXJdyzLyl\\\\r\\\\n2026-04-26 12:36:01 cW4qlLb15J1zMb/hVBNGagquATVVclvcVKYGYkNsxGpWBC8/8iJTEUKEMwqti7PR\\\\r\\\\n2026-04-26 12:36:01 yh+r058rdhlVML+0F5aDJwjslkCppGpJF5nGQn4pwBzViz752YFUgRRz2jrhFYHE\\\\r\\\\n2026-04-26 12:36:01 KaVCtcczpnZhtqNMY49aRMaTphHu4YpgglMjbDuZ5wiK27Fq5RM+lF6sIG6SGycb\\\\r\\\\n2026-04-26 12:36:01 4whptwXeepJbATEQ55FWWckLVJ5lVWuZ0pCOMguparXRwXECzGnIHLxehCexiZqA\\\\r\\\\n2026-04-26 12:36:01 QLJZNAFOyB3IhHZo5TrJY5sNIMXU94yraZLmQQ3cRMntNiW8kp6Pqj3I40bqlL3F\\\\r\\\\n2026-04-26 12:36:01 ahwNl8qwsjl44hMmWMfQk1c5OpCtkGJcIpIF08ILxDknAyBTQ35BJXMJ9XtI0nt2\\\\r\\\\n2026-04-26 12:36:01 OiGGA6YUqbb68bmXbEhzKQhulHs8GWh/sgXiN3NoI5ns6nU0a3e6Oz2BkXY708iM\\\\r\\\\n2026-04-26 12:36:01 oxrQxsZ4uoM/pjlHG5xeOM62B3tpeghU5iFfOgr+hH9mGcOx4cSoNjn3a5gvMJqc\\\\r\\\\n2026-04-26 12:36:01 Ycc60cOGalwlpLruUy4rdDwhInvsGAmaapDq8IxRpS/AIpij4Y/SmMl9uisvqBr9\\\\r\\\\n2026-04-26 12:36:01 ypg1olTOJ8rk08AXY0Kl2D9lS5GK11g2VWtCgKiMdS/RvAXJnJGkdStVTGYiCnHJ\\\\r\\\\n2026-04-26 12:36:01 OjgyHTrR2a+N2ZiYTldYtmF6H9pm/lfv6FNtw2cNQzqGoSSsrAHEugO0d94keir2\\\\r\\\\n2026-04-26 12:36:01 62w9ymkZWDurfZDVT8OIVWXhgKlR44rEMqSAR+iv6ap61WM2ZMFejOGy4XrDjLrH\\\\r\\\\n2026-04-26 12:36:01 qwI=\\\\r\\\\n2026-04-26 12:36:01 -----END PRIVATE KEY-----\",\n                \"value_start\": 157,\n                \"value_end\": 6245,\n                \"entropy\": 5.8771\n            }\n        ]\n    },\n    {\n        \"rule\": \"PEM Private Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"-----BEGIN PRIVATE KEY-----\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/pem_key.p.rsa\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"-----BEGIN PRIVATE KEY-----\",\n                \"value_start\": 0,\n                \"value_end\": 27,\n                \"entropy\": 3.20029\n            },\n            {\n                \"line\": \"MIIBVQIBADANBgkqhkiG9w0BAQEFAASCAT8wggE7AgEAAkEA12FhURMjPmqRNZZl\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/pem_key.p.rsa\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"MIIBVQIBADANBgkqhkiG9w0BAQEFAASCAT8wggE7AgEAAkEA12FhURMjPmqRNZZl\",\n                \"value_start\": 0,\n                \"value_end\": 64,\n                \"entropy\": 4.67611\n            },\n            {\n                \"line\": \"teTEEoNqzPBXPBgBSqihi1qWbk3NthnycOSinUz7prfasLMlEDqcS68FFh1t5rrX\",\n                \"line_num\": 3,\n                \"path\": \"./tests/samples/pem_key.p.rsa\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"teTEEoNqzPBXPBgBSqihi1qWbk3NthnycOSinUz7prfasLMlEDqcS68FFh1t5rrX\",\n                \"value_start\": 0,\n                \"value_end\": 64,\n                \"entropy\": 5.10493\n            },\n            {\n                \"line\": \"WknouwIDAQABAkAySCW0C8e6lp536Diukk3EFLImTiXPfbsvdtbf9bIQ5eNrfOhV\",\n                \"line_num\": 4,\n                \"path\": \"./tests/samples/pem_key.p.rsa\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"WknouwIDAQABAkAySCW0C8e6lp536Diukk3EFLImTiXPfbsvdtbf9bIQ5eNrfOhV\",\n                \"value_start\": 0,\n                \"value_end\": 64,\n                \"entropy\": 5.21461\n            },\n            {\n                \"line\": \"z4MuDWaaLPkL49si36Li4nLu8op3i9QVIlThAiEA74ZnMHks7VhxqpneOxWC896e\",\n                \"line_num\": 5,\n                \"path\": \"./tests/samples/pem_key.p.rsa\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"z4MuDWaaLPkL49si36Li4nLu8op3i9QVIlThAiEA74ZnMHks7VhxqpneOxWC896e\",\n                \"value_start\": 0,\n                \"value_end\": 64,\n                \"entropy\": 4.97641\n            },\n            {\n                \"line\": \"gS3TOtNx8sYYYlfeyh8CIQDmMdWhVAOWhdWMwdSvDVo9Qxk7ZpZJzVH5c+vzSWOF\",\n                \"line_num\": 6,\n                \"path\": \"./tests/samples/pem_key.p.rsa\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"gS3TOtNx8sYYYlfeyh8CIQDmMdWhVAOWhdWMwdSvDVo9Qxk7ZpZJzVH5c+vzSWOF\",\n                \"value_start\": 0,\n                \"value_end\": 64,\n                \"entropy\": 5.17923\n            },\n            {\n                \"line\": \"5QIhAJsOHZSyjNPkskhnLQaAiXJHRcKIILpvEM/BTx2ylmWvAiAkN3z79+LkoMPb\",\n                \"line_num\": 7,\n                \"path\": \"./tests/samples/pem_key.p.rsa\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"5QIhAJsOHZSyjNPkskhnLQaAiXJHRcKIILpvEM/BTx2ylmWvAiAkN3z79+LkoMPb\",\n                \"value_start\": 0,\n                \"value_end\": 64,\n                \"entropy\": 5.25766\n            },\n            {\n                \"line\": \"dHeI3xnuf4sNvHMyw1n9XE6oJUjCPQIhAL7L9UoJKVXkKu+RtislM1+rx9j5qy01\",\n                \"line_num\": 8,\n                \"path\": \"./tests/samples/pem_key.p.rsa\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"dHeI3xnuf4sNvHMyw1n9XE6oJUjCPQIhAL7L9UoJKVXkKu+RtislM1+rx9j5qy01\",\n                \"value_start\": 0,\n                \"value_end\": 64,\n                \"entropy\": 5.35141\n            },\n            {\n                \"line\": \"24n7nBfD3ZXv\",\n                \"line_num\": 9,\n                \"path\": \"./tests/samples/pem_key.p.rsa\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"24n7nBfD3ZXv\",\n                \"value_start\": 0,\n                \"value_end\": 12,\n                \"entropy\": 3.4183\n            },\n            {\n                \"line\": \"-----END PRIVATE KEY-----\",\n                \"line_num\": 10,\n                \"path\": \"./tests/samples/pem_key.p.rsa\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"-----END PRIVATE KEY-----\",\n                \"value_start\": 0,\n                \"value_end\": 25,\n                \"entropy\": 3.04489\n            }\n        ]\n    },\n    {\n        \"rule\": \"Perplexity API Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"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\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/perplexity\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"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\",\n                \"value_start\": 0,\n                \"value_end\": 53,\n                \"entropy\": 5.08142\n            }\n        ]\n    },\n    {\n        \"rule\": \"Picatic API Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"sk_live_gireogicracklegireogicrackle1231\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/picatic_key\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"sk_live_gireogicracklegireogicrackle1231\",\n                \"value_start\": 0,\n                \"value_end\": 40,\n                \"entropy\": 3.7037\n            }\n        ]\n    },\n    {\n        \"rule\": \"Stripe Credentials\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"sk_live_gireogicracklegireogicrackle1231\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/picatic_key\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"sk_live_gireogicracklegireogicrackle1231\",\n                \"value_start\": 0,\n                \"value_end\": 40,\n                \"entropy\": 3.7037\n            }\n        ]\n    },\n    {\n        \"rule\": \"PostHog Credentials\",\n        \"severity\": \"medium\",\n        \"confidence\": \"weak\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"phc_cJMqv5nG7Qtd0sfIwasTG87lgnDfJVbrcOOAZMOf\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/posthog\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"phc_cJMqv5nG7Qtd0sfIwasTG87lgnDfJVbrcOOAZMOf\",\n                \"value_start\": 0,\n                \"value_end\": 44,\n                \"entropy\": 4.86251\n            }\n        ]\n    },\n    {\n        \"rule\": \"PostHog Credentials\",\n        \"severity\": \"medium\",\n        \"confidence\": \"weak\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"phs_dNrZRd5etgv1B1gRTkfUrTJnf0EaZ5r6hUouJgXtWwFTrq\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/posthog\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"phs_dNrZRd5etgv1B1gRTkfUrTJnf0EaZ5r6hUouJgXtWwFTrq\",\n                \"value_start\": 0,\n                \"value_end\": 50,\n                \"entropy\": 4.89366\n            }\n        ]\n    },\n    {\n        \"rule\": \"PostHog Credentials\",\n        \"severity\": \"medium\",\n        \"confidence\": \"weak\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"phr_dNrZRd5etgv1B1gRTKedUjAkFCcvNdBLoQz4W8GCYEVUySGUt\",\n                \"line_num\": 3,\n                \"path\": \"./tests/samples/posthog\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"phr_dNrZRd5etgv1B1gRTKedUjAkFCcvNdBLoQz4W8GCYEVUySGUt\",\n                \"value_start\": 0,\n                \"value_end\": 53,\n                \"entropy\": 5.07217\n            }\n        ]\n    },\n    {\n        \"rule\": \"PostHog Credentials\",\n        \"severity\": \"medium\",\n        \"confidence\": \"weak\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"pha_BkeaIpOESh8OGcD1bhPGh6kH9UjVGp6nnaC6vF4E7q9TcJr7GapdQMVDX\",\n                \"line_num\": 4,\n                \"path\": \"./tests/samples/posthog\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"pha_BkeaIpOESh8OGcD1bhPGh6kH9UjVGp6nnaC6vF4E7q9TcJr7GapdQMVDX\",\n                \"value_start\": 0,\n                \"value_end\": 61,\n                \"entropy\": 5.03312\n            }\n        ]\n    },\n    {\n        \"rule\": \"PostHog Credentials\",\n        \"severity\": \"medium\",\n        \"confidence\": \"weak\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"phx_5nYpKltuz4gvt7LessoO3swaOH41RJh6pzT1x1NoeTrKbTuAaxtVMA7JmMxp\",\n                \"line_num\": 5,\n                \"path\": \"./tests/samples/posthog\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"phx_5nYpKltuz4gvt7LessoO3swaOH41RJh6pzT1x1NoeTrKbTuAaxtVMA7JmMxp\",\n                \"value_start\": 0,\n                \"value_end\": 64,\n                \"entropy\": 5.04657\n            }\n        ]\n    },\n    {\n        \"rule\": \"Postman Credentials\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"PMAK-be68a955d73619000f121d77-1d6ce2aa99d4b222bcc9fc01f345cf3168\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/postman\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"PMAK-be68a955d73619000f121d77-1d6ce2aa99d4b222bcc9fc01f345cf3168\",\n                \"value_start\": 0,\n                \"value_end\": 64,\n                \"entropy\": 4.21698\n            }\n        ]\n    },\n    {\n        \"rule\": \"Postman Credentials\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"PMAT-9GP54SGZ7TS928P0BW1K3AN0WX\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/postman\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"PMAT-9GP54SGZ7TS928P0BW1K3AN0WX\",\n                \"value_start\": 0,\n                \"value_end\": 31,\n                \"entropy\": 4.3492\n            }\n        ]\n    },\n    {\n        \"rule\": \"UUID\",\n        \"severity\": \"info\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"   Print, crumple, throw away. line # 10 a0572bc9-7a3e-beef-cafe-9129474bcd81\",\n                \"line_num\": 10,\n                \"path\": \"./tests/samples/pretty.html\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"a0572bc9-7a3e-beef-cafe-9129474bcd81\",\n                \"value_start\": 41,\n                \"value_end\": 77,\n                \"entropy\": 3.84286\n            }\n        ]\n    },\n    {\n        \"rule\": \"Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"        <a href=\\\"http://localhost:8888/v1/api/get?token=zUkITxodk63bDVUMwIymb3zKTxICz85zC00cv0Gel1nE8O\\\">\",\n                \"line_num\": 79,\n                \"path\": \"./tests/samples/pretty.html\",\n                \"info\": \"\",\n                \"variable\": \"token\",\n                \"variable_start\": 50,\n                \"variable_end\": 55,\n                \"value\": \"zUkITxodk63bDVUMwIymb3zKTxICz85zC00cv0Gel1nE8O\",\n                \"value_start\": 56,\n                \"value_end\": 102,\n                \"entropy\": 4.79509\n            }\n        ]\n    },\n    {\n        \"rule\": \"Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"         http://localhost:8888/v1/api/get?token=zUkITxodk63bDVUMwIymb3zKTxICz85zC00cv0Gel1nE8O\",\n                \"line_num\": 80,\n                \"path\": \"./tests/samples/pretty.html\",\n                \"info\": \"\",\n                \"variable\": \"token\",\n                \"variable_start\": 42,\n                \"variable_end\": 47,\n                \"value\": \"zUkITxodk63bDVUMwIymb3zKTxICz85zC00cv0Gel1nE8O\",\n                \"value_start\": 48,\n                \"value_end\": 94,\n                \"entropy\": 4.79509\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.998,\n        \"line_data_list\": [\n            {\n                \"line\": \"       147# password: Jd3OnNy^564eD5_sd\",\n                \"line_num\": 147,\n                \"path\": \"./tests/samples/pretty.html\",\n                \"info\": \"\",\n                \"variable\": \"password\",\n                \"variable_start\": 12,\n                \"variable_end\": 20,\n                \"value\": \"Jd3OnNy^564eD5_sd\",\n                \"value_start\": 22,\n                \"value_end\": 39,\n                \"entropy\": 3.85217\n            }\n        ]\n    },\n    {\n        \"rule\": \"UUID\",\n        \"severity\": \"info\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"        151# a0ce4d19-7a3e-beef-cafe-9129474bcd81\",\n                \"line_num\": 151,\n                \"path\": \"./tests/samples/pretty.html\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"a0ce4d19-7a3e-beef-cafe-9129474bcd81\",\n                \"value_start\": 13,\n                \"value_end\": 49,\n                \"entropy\": 3.74259\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.929,\n        \"line_data_list\": [\n            {\n                \"line\": \"pwd = \\\"cackle!\\\"\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/pwd.gradle\",\n                \"info\": \"\",\n                \"variable\": \"pwd\",\n                \"variable_start\": 0,\n                \"variable_end\": 3,\n                \"value\": \"cackle!\",\n                \"value_start\": 7,\n                \"value_end\": 14,\n                \"entropy\": 2.52164\n            }\n        ]\n    },\n    {\n        \"rule\": \"PyPi API Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"pypi-AgEIcHlvdS5bcmcCJGDmMTllXWJjLTRhODAtNDBhYi01Y2Y4LThjNjcxZTg3MsRjOAACKlszLCJlPDYzYmUxOC0wNjQ3LTQ4AzQtODFhYy1jZGRlNTk2MGYxNDYiXQAABiDDbVAEnaUMn4zZHlFr5NWy7JEYfvoay--cVmKO5lr3Xp\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/pypi_token\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"pypi-AgEIcHlvdS5bcmcCJGDmMTllXWJjLTRhODAtNDBhYi01Y2Y4LThjNjcxZTg3MsRjOAACKlszLCJlPDYzYmUxOC0wNjQ3LTQ4AzQtODFhYy1jZGRlNTk2MGYxNDYiXQAABiDDbVAEnaUMn4zZHlFr5NWy7JEYfvoay--cVmKO5lr3Xp\",\n                \"value_start\": 0,\n                \"value_end\": 179,\n                \"entropy\": 5.5923\n            }\n        ]\n    },\n    {\n        \"rule\": \"RubyGems API Key\",\n        \"severity\": \"medium\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"rubygems_2676e0138d75572e758e2b2252713061b8f26caf7f21630d\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/rubygems\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"rubygems_2676e0138d75572e758e2b2252713061b8f26caf7f21630d\",\n                \"value_start\": 0,\n                \"value_end\": 57,\n                \"entropy\": 4.06282\n            }\n        ]\n    },\n    {\n        \"rule\": \"Salesforce Credentials\",\n        \"severity\": \"medium\",\n        \"confidence\": \"weak\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"t_org_if 00DFT5H59PHLAN0IA 00DG9UE38D6ELk5l 00DyXD47kKDny11j 00Dh68fkeHGbDk92k\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/salesfoce\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"00DFT5H59PHLAN0IA\",\n                \"value_start\": 9,\n                \"value_end\": 26,\n                \"entropy\": 3.45482\n            }\n        ]\n    },\n    {\n        \"rule\": \"Salesforce Credentials\",\n        \"severity\": \"medium\",\n        \"confidence\": \"weak\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"t_org_if 00DFT5H59PHLAN0IA 00DG9UE38D6ELk5l 00DyXD47kKDny11j 00Dh68fkeHGbDk92k\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/salesfoce\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"00DG9UE38D6ELk5l\",\n                \"value_start\": 27,\n                \"value_end\": 43,\n                \"entropy\": 3.625\n            }\n        ]\n    },\n    {\n        \"rule\": \"Salesforce Credentials\",\n        \"severity\": \"medium\",\n        \"confidence\": \"weak\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"t_org_if 00DFT5H59PHLAN0IA 00DG9UE38D6ELk5l 00DyXD47kKDny11j 00Dh68fkeHGbDk92k\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/salesfoce\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"00Dh68fkeHGbDk92k\",\n                \"value_start\": 61,\n                \"value_end\": 78,\n                \"entropy\": 3.57247\n            }\n        ]\n    },\n    {\n        \"rule\": \"Salesforce Credentials\",\n        \"severity\": \"medium\",\n        \"confidence\": \"weak\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"t_org_if 00DFT5H59PHLAN0IA 00DG9UE38D6ELk5l 00DyXD47kKDny11j 00Dh68fkeHGbDk92k\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/salesfoce\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"00DyXD47kKDny11j\",\n                \"value_start\": 44,\n                \"value_end\": 60,\n                \"entropy\": 3.32782\n            }\n        ]\n    },\n    {\n        \"rule\": \"Salesforce Credentials\",\n        \"severity\": \"medium\",\n        \"confidence\": \"weak\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"t_token 00DUI000005AecQ!AR8Amtqc2drcmpoZ3dlanJoMzQ5ODc1OTg0Mzc5NzQ1OCsrKysKLS0tLQp.cm9jLVR5cGU6IDQsRU5DUllwwMzQ1NzY3MzQ1\",\n                \"line_num\": 3,\n                \"path\": \"./tests/samples/salesfoce\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"00DUI000005AecQ!AR8Amtqc2drcmpoZ3dlanJoMzQ5ODc1OTg0Mzc5NzQ1OCsrKysKLS0tLQp.cm9jLVR5cGU6IDQsRU5DUllwwMzQ1NzY3MzQ1\",\n                \"value_start\": 8,\n                \"value_end\": 120,\n                \"entropy\": 5.19811\n            }\n        ]\n    },\n    {\n        \"rule\": \"Salesforce Credentials\",\n        \"severity\": \"medium\",\n        \"confidence\": \"weak\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"t_client_id: 3MVGb3j9DpwrLFc90tWIy.nh7B89YzeymdX9VETUUokMus8xztUgf_5PksXuZmgYoNmvYcsk_qPpk1Y.zttO1\",\n                \"line_num\": 4,\n                \"path\": \"./tests/samples/salesfoce\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"3MVGb3j9DpwrLFc90tWIy.nh7B89YzeymdX9VETUUokMus8xztUgf_5PksXuZmgYoNmvYcsk_qPpk1Y.zttO1\",\n                \"value_start\": 13,\n                \"value_end\": 98,\n                \"entropy\": 5.45622\n            }\n        ]\n    },\n    {\n        \"rule\": \"Salt\",\n        \"severity\": \"low\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.999,\n        \"line_data_list\": [\n            {\n                \"line\": \"salt1 = b\\\"\\\\x23!\\\\xae2389x&543@\\\"\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/salt.py\",\n                \"info\": \"\",\n                \"variable\": \"salt1\",\n                \"variable_start\": 0,\n                \"variable_end\": 5,\n                \"value\": \"\\\\x23!\\\\xae2389x&543@\",\n                \"value_start\": 10,\n                \"value_end\": 29,\n                \"entropy\": 3.53689\n            }\n        ]\n    },\n    {\n        \"rule\": \"Salt\",\n        \"severity\": \"low\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.949,\n        \"line_data_list\": [\n            {\n                \"line\": \"salt3 = u\\\"\\\\u0020827634876\\\"\",\n                \"line_num\": 3,\n                \"path\": \"./tests/samples/salt.py\",\n                \"info\": \"\",\n                \"variable\": \"salt3\",\n                \"variable_start\": 0,\n                \"variable_end\": 5,\n                \"value\": \"\\\\u0020827634876\",\n                \"value_start\": 10,\n                \"value_end\": 25,\n                \"entropy\": 3.05656\n            }\n        ]\n    },\n    {\n        \"rule\": \"Salt\",\n        \"severity\": \"low\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.993,\n        \"line_data_list\": [\n            {\n                \"line\": \"salt4 = {\\\"salt5\\\": \\\"my124%#$@s\\\\x04clt\\\\0\\\"}\",\n                \"line_num\": 4,\n                \"path\": \"./tests/samples/salt.py\",\n                \"info\": \"\",\n                \"variable\": \"salt5\",\n                \"variable_start\": 10,\n                \"variable_end\": 15,\n                \"value\": \"my124%#$@s\\\\x04clt\\\\0\",\n                \"value_start\": 19,\n                \"value_end\": 38,\n                \"entropy\": 3.93214\n            }\n        ]\n    },\n    {\n        \"rule\": \"Salt\",\n        \"severity\": \"low\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"json_escaped = \\\"{\\\\\\\\\\\\\\\"salt8\\\\\\\\\\\\\\\":\\\\\\\\\\\\\\\"4b9a6d8b638eb0c6\\\\\\\\\\\\\\\"}\\\"\",\n                \"line_num\": 5,\n                \"path\": \"./tests/samples/salt.py\",\n                \"info\": \"\",\n                \"variable\": \"salt8\",\n                \"variable_start\": 21,\n                \"variable_end\": 26,\n                \"value\": \"4b9a6d8b638eb0c6\",\n                \"value_start\": 35,\n                \"value_end\": 51,\n                \"entropy\": 3.28064\n            }\n        ]\n    },\n    {\n        \"rule\": \"Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.812,\n        \"line_data_list\": [\n            {\n                \"line\": \"#define AESKEY {0x35, 0x34, 0x65, 0x9b, 0x1c, 0x2e, 023, 010, 041, 033, 043, 000, \\\\\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/sample.h\",\n                \"info\": \"\",\n                \"variable\": \"AESKEY\",\n                \"variable_start\": 8,\n                \"variable_end\": 14,\n                \"value\": \"0x35, 0x34, 0x65, 0x9b, 0x1c, 0x2e, 023, 010, 041, 033, 043, 000, \\\\\",\n                \"value_start\": 16,\n                \"value_end\": 83,\n                \"entropy\": 3.24263\n            }\n        ]\n    },\n    {\n        \"rule\": \"Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.997,\n        \"line_data_list\": [\n            {\n                \"line\": \"<a href=\\\"http://example.com?token=&quot;g1re0g1T0keN3zWx&quot;\\\">TokenRequest</a>\",\n                \"line_num\": 9,\n                \"path\": \"./tests/samples/sample.html\",\n                \"info\": \"\",\n                \"variable\": \"token\",\n                \"variable_start\": 28,\n                \"variable_end\": 33,\n                \"value\": \"g1re0g1T0keN3zWx\",\n                \"value_start\": 40,\n                \"value_end\": 56,\n                \"entropy\": 3.5\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.999,\n        \"line_data_list\": [\n            {\n                \"line\": \"    placeholder=\\\"Your password: &quot;g1re0g1Pa5$w0Rd&quot;\\\"\",\n                \"line_num\": 16,\n                \"path\": \"./tests/samples/sample.html\",\n                \"info\": \"\",\n                \"variable\": \"Your password\",\n                \"variable_start\": 17,\n                \"variable_end\": 30,\n                \"value\": \"g1re0g1Pa5$w0Rd\",\n                \"value_start\": 38,\n                \"value_end\": 53,\n                \"entropy\": 3.50689\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.993,\n        \"line_data_list\": [\n            {\n                \"line\": \" <button onclick=\\\"alert(&quot;password:g1re0g2Pa5$w0Rd&quot;)\\\">ShowPass</button>\",\n                \"line_num\": 21,\n                \"path\": \"./tests/samples/sample.html\",\n                \"info\": \"\",\n                \"variable\": \"password\",\n                \"variable_start\": 30,\n                \"variable_end\": 38,\n                \"value\": \"g1re0g2Pa5$w0Rd\",\n                \"value_start\": 39,\n                \"value_end\": 54,\n                \"entropy\": 3.64022\n            }\n        ]\n    },\n    {\n        \"rule\": \"UUID\",\n        \"severity\": \"info\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"81f50f8d-4c1a-de4d-8e3f-c1bc8b429a36}{\\\\loch\",\n                \"line_num\": 25,\n                \"path\": \"./tests/samples/sample.rtf\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"81f50f8d-4c1a-de4d-8e3f-c1bc8b429a36\",\n                \"value_start\": 0,\n                \"value_end\": 36,\n                \"entropy\": 3.84286\n            }\n        ]\n    },\n    {\n        \"rule\": \"Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"%define token 4b9a6d8b4bc56fbfa1c638eb0c6cab3746bf32ac7bfa89a6d8b638eb0c619ff2\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/sample.spec\",\n                \"info\": \"\",\n                \"variable\": \"token\",\n                \"variable_start\": 8,\n                \"variable_end\": 13,\n                \"value\": \"4b9a6d8b4bc56fbfa1c638eb0c6cab3746bf32ac7bfa89a6d8b638eb0c619ff2\",\n                \"value_start\": 14,\n                \"value_end\": 78,\n                \"entropy\": 3.73644\n            }\n        ]\n    },\n    {\n        \"rule\": \"AWS Client ID\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"    <Image>AKIAGIREOGIAWSKEY321==</Image>\",\n                \"line_num\": 3,\n                \"path\": \"./tests/samples/sample.tm7\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"AKIAGIREOGIAWSKEY321\",\n                \"value_start\": 11,\n                \"value_end\": 31,\n                \"entropy\": 3.54644\n            }\n        ]\n    },\n    {\n        \"rule\": \"UUID\",\n        \"severity\": \"info\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"    <Key>17205d79-dead-beef-a311-26312ad6ea36</Key>\",\n                \"line_num\": 4,\n                \"path\": \"./tests/samples/sample.tm7\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"17205d79-dead-beef-a311-26312ad6ea36\",\n                \"value_start\": 9,\n                \"value_end\": 45,\n                \"entropy\": 3.60702\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.999,\n        \"line_data_list\": [\n            {\n                \"line\": \"    <Value>May password:6Ew1ThY0u</Value>\",\n                \"line_num\": 5,\n                \"path\": \"./tests/samples/sample.tm7\",\n                \"info\": \"\",\n                \"variable\": \"password\",\n                \"variable_start\": 15,\n                \"variable_end\": 23,\n                \"value\": \"6Ew1ThY0u\",\n                \"value_start\": 24,\n                \"value_end\": 33,\n                \"entropy\": 3.16993\n            }\n        ]\n    },\n    {\n        \"rule\": \"Nonce\",\n        \"severity\": \"low\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.998,\n        \"line_data_list\": [\n            {\n                \"line\": \"    __NONCE: AQ+n0Tth3F1Lt3ReDe+BrQwTzNcs7y+OFND0M/+ipSM+5xE91lsQWW0j1dxGh4PEJtVN0U1oVAL+ZVEIw0IpBDaQQYqkxkkp/+Aj1lp3UgUtGUyX+/CxXFnoK04XZzdpWxcwYeBUikykI5YUUQVldaoTql4BugUy733PXFK91q4UpPK0Dne5yCRKvpqSLWVgigXbUogfRugfYgTgkiGEPsv3izNgRWycIDUInfvpzVvODk1gz6/1nW7xISgLCdcewkRgO6l0WGuOn2dWcndURMOooj4ljD9Aw7g4eIu5hf/B5sCOYh7fB33QxOlAmiMZoliEo6WWGP7P8hneYli7YnRfvvqx7Yh30E3qokRKQXsT+OuSZgK1kKK5yzroO\",\n                \"line_num\": 13,\n                \"path\": \"./tests/samples/sealed_secrets.yaml\",\n                \"info\": \"\",\n                \"variable\": \"__NONCE\",\n                \"variable_start\": 4,\n                \"variable_end\": 11,\n                \"value\": \"AQ+n0Tth3F1Lt3ReDe+BrQwTzNcs7y+OFND0M/+ipSM+5xE91lsQWW0j1dxGh4PEJtVN0U1oVAL+ZVEIw0IpBDaQQYqkxkkp/+Aj1lp3UgUtGUyX+/CxXFnoK04XZzdpWxcwYeBUikykI5YUUQVldaoTql4BugUy733PXFK91q4UpPK0Dne5yCRKvpqSLWVgigXbUogfRugfYgTgkiGEPsv3izNgRWycIDUInfvpzVvODk1gz6/1nW7xISgLCdcewkRgO6l0WGuOn2dWcndURMOooj4ljD9Aw7g4eIu5hf/B5sCOYh7fB33QxOlAmiMZoliEo6WWGP7P8hneYli7YnRfvvqx7Yh30E3qokRKQXsT+OuSZgK1kKK5yzroO\",\n                \"value_start\": 13,\n                \"value_end\": 394,\n                \"entropy\": 5.81513\n            }\n        ]\n    },\n    {\n        \"rule\": \"Secret\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.999,\n        \"line_data_list\": [\n            {\n                \"line\": \"        Secret: []byte{333, 9, 100, 114, 245, 164, 134, 217,225,26,0,       172, 39, 248,  203, 201},\",\n                \"line_num\": 3,\n                \"path\": \"./tests/samples/secret.go\",\n                \"info\": \"\",\n                \"variable\": \"Secret\",\n                \"variable_start\": 8,\n                \"variable_end\": 14,\n                \"value\": \"333, 9, 100, 114, 245, 164, 134, 217,225,26,0,       172, 39, 248,  203, 201\",\n                \"value_start\": 23,\n                \"value_end\": 99,\n                \"entropy\": 3.10882\n            }\n        ]\n    },\n    {\n        \"rule\": \"PEM Private Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"var SECRET = `-----BEGIN OPENSSH PRIVATE KEY-----\",\n                \"line_num\": 7,\n                \"path\": \"./tests/samples/secret.go\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"-----BEGIN OPENSSH PRIVATE KEY-----\",\n                \"value_start\": 14,\n                \"value_end\": 49,\n                \"entropy\": 3.58716\n            },\n            {\n                \"line\": \"b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAAAMwAAAAtzc2gtZWQyNTUx\",\n                \"line_num\": 8,\n                \"path\": \"./tests/samples/secret.go\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAAAMwAAAAtzc2gtZWQyNTUx\",\n                \"value_start\": 0,\n                \"value_end\": 76,\n                \"entropy\": 4.18903\n            },\n            {\n                \"line\": \"OQAAABWHkoN5N0V0OCSXOHWSOHAxRYMJSGc4clgVA0gJgFlIBAAAAJimRM7VpkTO1QAAAAtzc2gt\",\n                \"line_num\": 9,\n                \"path\": \"./tests/samples/secret.go\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"OQAAABWHkoN5N0V0OCSXOHWSOHAxRYMJSGc4clgVA0gJgFlIBAAAAJimRM7VpkTO1QAAAAtzc2gt\",\n                \"value_start\": 0,\n                \"value_end\": 76,\n                \"entropy\": 4.74471\n            },\n            {\n                \"line\": \"ZWQyNTUxOQAAACBqIPMG94HL7zedFzsvi45mHS8ZuyLQXqvHpHobcdNCJAAAAFRoZXJlXzE1LU4w\",\n                \"line_num\": 10,\n                \"path\": \"./tests/samples/secret.go\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"ZWQyNTUxOQAAACBqIPMG94HL7zedFzsvi45mHS8ZuyLQXqvHpHobcdNCJAAAAFRoZXJlXzE1LU4w\",\n                \"value_start\": 0,\n                \"value_end\": 76,\n                \"entropy\": 5.24555\n            },\n            {\n                \"line\": \"dF9UaGVLZXlZb3VBcmVMb29raW5nRm9S8wb3Mj0tZT1hc3A7ZHprejsuZm5tbmRmbmVuZm5pAAAA\",\n                \"line_num\": 11,\n                \"path\": \"./tests/samples/secret.go\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"dF9UaGVLZXlZb3VBcmVMb29raW5nRm9S8wb3Mj0tZT1hc3A7ZHprejsuZm5tbmRmbmVuZm5pAAAA\",\n                \"value_start\": 0,\n                \"value_end\": 76,\n                \"entropy\": 4.94996\n            },\n            {\n                \"line\": \"EXRpemVuQGNyZWRzd2VlcGVyAQIDBA==\",\n                \"line_num\": 12,\n                \"path\": \"./tests/samples/secret.go\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"EXRpemVuQGNyZWRzd2VlcGVyAQIDBA==\",\n                \"value_start\": 0,\n                \"value_end\": 32,\n                \"entropy\": 4.47641\n            },\n            {\n                \"line\": \"-----END OPENSSH PRIVATE KEY-----\",\n                \"line_num\": 13,\n                \"path\": \"./tests/samples/secret.go\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"-----END OPENSSH PRIVATE KEY-----\",\n                \"value_start\": 0,\n                \"value_end\": 33,\n                \"entropy\": 3.46942\n            }\n        ]\n    },\n    {\n        \"rule\": \"Secret\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"var secret_looks_like_linux_path_1=\\\"/VnpmUGWxhQW9KQAwrL2ZYdDJPNG1PQjYxMXNPaF\\\"\",\n                \"line_num\": 17,\n                \"path\": \"./tests/samples/secret.go\",\n                \"info\": \"\",\n                \"variable\": \"secret_looks_like_linux_path_1\",\n                \"variable_start\": 4,\n                \"variable_end\": 34,\n                \"value\": \"/VnpmUGWxhQW9KQAwrL2ZYdDJPNG1PQjYxMXNPaF\",\n                \"value_start\": 36,\n                \"value_end\": 76,\n                \"entropy\": 4.83418\n            }\n        ]\n    },\n    {\n        \"rule\": \"Secret\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"var secret_looks_like_linux_path_2=\\\"VnpmUGWxhQW/9KQAwrL2ZYd/DJPNG1PQjYxMXNPF\\\"\",\n                \"line_num\": 18,\n                \"path\": \"./tests/samples/secret.go\",\n                \"info\": \"\",\n                \"variable\": \"secret_looks_like_linux_path_2\",\n                \"variable_start\": 4,\n                \"variable_end\": 34,\n                \"value\": \"VnpmUGWxhQW/9KQAwrL2ZYd/DJPNG1PQjYxMXNPF\",\n                \"value_start\": 36,\n                \"value_end\": 76,\n                \"entropy\": 4.78418\n            }\n        ]\n    },\n    {\n        \"rule\": \"Secret\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"var secret_looks_like_linux_path_3=\\\"VnpmUGWxhQW/9KQAwrL2ZYdDJPNG1PQjYxMXNPF=\\\"\",\n                \"line_num\": 19,\n                \"path\": \"./tests/samples/secret.go\",\n                \"info\": \"\",\n                \"variable\": \"secret_looks_like_linux_path_3\",\n                \"variable_start\": 4,\n                \"variable_end\": 34,\n                \"value\": \"VnpmUGWxhQW/9KQAwrL2ZYdDJPNG1PQjYxMXNPF=\",\n                \"value_start\": 36,\n                \"value_end\": 76,\n                \"entropy\": 4.83418\n            }\n        ]\n    },\n    {\n        \"rule\": \"Secret\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"var secret_looks_like_linux_path__=\\\"VnpmUGWxhQW/9KQAwrL2ZYd/DJPNG1PQjEXAMbLE\\\"\",\n                \"line_num\": 20,\n                \"path\": \"./tests/samples/secret.go\",\n                \"info\": \"\",\n                \"variable\": \"secret_looks_like_linux_path__\",\n                \"variable_start\": 4,\n                \"variable_end\": 34,\n                \"value\": \"VnpmUGWxhQW/9KQAwrL2ZYd/DJPNG1PQjEXAMbLE\",\n                \"value_start\": 36,\n                \"value_end\": 76,\n                \"entropy\": 4.85306\n            }\n        ]\n    },\n    {\n        \"rule\": \"Secret\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"LEGACY_GITHUB_SECRET = \\\"fa87409ad3a4589fd279c501b3d2e174855ee9f4\\\"\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/secret.groovy\",\n                \"info\": \"\",\n                \"variable\": \"LEGACY_GITHUB_SECRET\",\n                \"variable_start\": 0,\n                \"variable_end\": 20,\n                \"value\": \"fa87409ad3a4589fd279c501b3d2e174855ee9f4\",\n                \"value_start\": 24,\n                \"value_end\": 64,\n                \"entropy\": 3.80869\n            }\n        ]\n    },\n    {\n        \"rule\": \"SendGrid API Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"SG.gireogigireogigi.gireogigireogigi\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/sendgrid_api_key\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"SG.gireogigireogigi.gireogigireogigi\",\n                \"value_start\": 0,\n                \"value_end\": 36,\n                \"entropy\": 2.60219\n            }\n        ]\n    },\n    {\n        \"rule\": \"Sentry Organization Auth Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"sntrys_eyJpYXQiOjE3NDEyNjQzNTYuMDAwMCwidXJsIjoiaHR0cHM6Ly9zZW50cnkuaW8iLCJyZWdpb25fdXJsIjoiaHR0cHM6Ly91YS5zZW50cnkuaW8iLCJvcmciOiIifQ==v8D-whr2cUQK91Civi4yNoLRjC3MDZH5I2aMcs_j5GDv\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/sentry\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"sntrys_eyJpYXQiOjE3NDEyNjQzNTYuMDAwMCwidXJsIjoiaHR0cHM6Ly9zZW50cnkuaW8iLCJyZWdpb25fdXJsIjoiaHR0cHM6Ly91YS5zZW50cnkuaW8iLCJvcmciOiIifQ==v8D-whr2cUQK91Civi4yNoLRjC3MDZH5I2aMcs_j5GDv\",\n                \"value_start\": 0,\n                \"value_end\": 179,\n                \"entropy\": 5.53873\n            }\n        ]\n    },\n    {\n        \"rule\": \"Sentry User Auth Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"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\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/sentry\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"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\",\n                \"value_start\": 0,\n                \"value_end\": 71,\n                \"entropy\": 4.14384\n            }\n        ]\n    },\n    {\n        \"rule\": \"Shopify Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"    \\\"shopyfy_k\\\": \\\"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\\\",\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/shopify_token\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"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\",\n                \"value_start\": 18,\n                \"value_end\": 56,\n                \"entropy\": 3.80396\n            }\n        ]\n    },\n    {\n        \"rule\": \"Slack Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"xapp-1-A0F6JEP4877-3425459257038-ff6379c940d5ed64f2cf3c820578dcebe5e83dccc0ebd89574184af9b9d2c1be\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/slack_token.hs\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"xapp-1-A0F6JEP4877-3425459257038-ff6379c940d5ed64f2cf3c820578dcebe5e83dccc0ebd89574184af9b9d2c1be\",\n                \"value_start\": 0,\n                \"value_end\": 97,\n                \"entropy\": 4.32216\n            }\n        ]\n    },\n    {\n        \"rule\": \"Slack Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"xoxb-391809548274-4236212766789-i8EoyACELx2FYnSOkRPEpePN\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/slack_token.hs\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"xoxb-391809548274-4236212766789-i8EoyACELx2FYnSOkRPEpePN\",\n                \"value_start\": 0,\n                \"value_end\": 56,\n                \"entropy\": 4.71996\n            }\n        ]\n    },\n    {\n        \"rule\": \"Slack Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"xoxp-1-Mi0yLTM5MTgwOTU0ODI3NC0xMDUzMjc0NTg2MzIxLTQyMzYyMTI3NjY3ODktMzQyNTQ1OTI1NzAzOC1mZjYzNzljOTQwZDVlZDY0ZjJjZjNjODIwNTc4ZGNlYmU1ZTgzZGNjYzBlYmQ4OTU3NDE4NGFmOWI5ZDJjMWJl\",\n                \"line_num\": 3,\n                \"path\": \"./tests/samples/slack_token.hs\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"xoxp-1-Mi0yLTM5MTgwOTU0ODI3NC0xMDUzMjc0NTg2MzIxLTQyMzYyMTI3NjY3ODktMzQyNTQ1OTI1NzAzOC1mZjYzNzljOTQwZDVlZDY0ZjJjZjNjODIwNTc4ZGNlYmU1ZTgzZGNjYzBlYmQ4OTU3NDE4NGFmOWI5ZDJjMWJl\",\n                \"value_start\": 0,\n                \"value_end\": 171,\n                \"entropy\": 4.93756\n            }\n        ]\n    },\n    {\n        \"rule\": \"Slack Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"xoxe-1-My0xLTM5MTgwOTU0ODI3NC00MjM2MjEyNzY2Nzg5LTM0MjU0NTkyNTcwMzgtZmY2Mzc5Yzk0MGQ1ZWQ2NGYyY2YzYzgyMDU3OGRjZWJlNWU4M2RjY2MwZWJkODk1NzQxODRhZjliOWQyYzFiZQ\",\n                \"line_num\": 4,\n                \"path\": \"./tests/samples/slack_token.hs\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"xoxe-1-My0xLTM5MTgwOTU0ODI3NC00MjM2MjEyNzY2Nzg5LTM0MjU0NTkyNTcwMzgtZmY2Mzc5Yzk0MGQ1ZWQ2NGYyY2YzYzgyMDU3OGRjZWJlNWU4M2RjY2MwZWJkODk1NzQxODRhZjliOWQyYzFiZQ\",\n                \"value_start\": 0,\n                \"value_end\": 153,\n                \"entropy\": 4.95538\n            }\n        ]\n    },\n    {\n        \"rule\": \"Slack Webhook\",\n        \"severity\": \"medium\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"    \\\"hook\\\": \\\"https://hooks.slack.com/services/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\\\",\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/slack_webhook.template\",\n                \"info\": \"\",\n                \"variable\": \"hooks.slack.com/services\",\n                \"variable_start\": 21,\n                \"variable_end\": 45,\n                \"value\": \"/T1029384756/B102984756/sjsbfzowhhqbsgftrvajxzpg\",\n                \"value_start\": 45,\n                \"value_end\": 93,\n                \"entropy\": 4.76184\n            }\n        ]\n    },\n    {\n        \"rule\": \"SonarQube Credentials\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"'sonar.login': 'squ_944fb17dc1ca18eb2750b6238e5c5ad27b68aaab',\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/sonarqube\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"squ_944fb17dc1ca18eb2750b6238e5c5ad27b68aaab\",\n                \"value_start\": 16,\n                \"value_end\": 60,\n                \"entropy\": 4.10151\n            }\n        ]\n    },\n    {\n        \"rule\": \"SonarQube Credentials\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"-Dsonar.login=squ_5f6278f46c0697b8ce6a07cfaabf363b5a97a984\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/sonarqube\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"squ_5f6278f46c0697b8ce6a07cfaabf363b5a97a984\",\n                \"value_start\": 14,\n                \"value_end\": 58,\n                \"entropy\": 3.954\n            }\n        ]\n    },\n    {\n        \"rule\": \"SQL Password\",\n        \"severity\": \"medium\",\n        \"confidence\": \"weak\",\n        \"ml_probability\": 0.918,\n        \"line_data_list\": [\n            {\n                \"line\": \"ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'SqLpa5sW0rD';\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/sql_password\",\n                \"info\": \"\",\n                \"variable\": \"ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY\",\n                \"variable_start\": 0,\n                \"variable_end\": 70,\n                \"value\": \"SqLpa5sW0rD\",\n                \"value_start\": 72,\n                \"value_end\": 83,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"SQL Password\",\n        \"severity\": \"medium\",\n        \"confidence\": \"weak\",\n        \"ml_probability\": 0.917,\n        \"line_data_list\": [\n            {\n                \"line\": \"'create user name identified by 'SqLpa5sW0rD' --\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/sql_password\",\n                \"info\": \"\",\n                \"variable\": \"create user name identified by\",\n                \"variable_start\": 1,\n                \"variable_end\": 31,\n                \"value\": \"SqLpa5sW0rD\",\n                \"value_start\": 33,\n                \"value_end\": 44,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"SQL Password\",\n        \"severity\": \"medium\",\n        \"confidence\": \"weak\",\n        \"ml_probability\": 0.996,\n        \"line_data_list\": [\n            {\n                \"line\": \"exec(\\\"CREATE USER ExposedTest ACCOUNT UNLOCK IDENTIFIED BY SqLpa5sW0rD\\\");\",\n                \"line_num\": 3,\n                \"path\": \"./tests/samples/sql_password\",\n                \"info\": \"\",\n                \"variable\": \"CREATE USER ExposedTest ACCOUNT UNLOCK IDENTIFIED BY\",\n                \"variable_start\": 6,\n                \"variable_end\": 58,\n                \"value\": \"SqLpa5sW0rD\",\n                \"value_start\": 59,\n                \"value_end\": 70,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"SQL Password\",\n        \"severity\": \"medium\",\n        \"confidence\": \"weak\",\n        \"ml_probability\": 0.964,\n        \"line_data_list\": [\n            {\n                \"line\": \"\\uff1a`CREATE USER 'haproxy'@'%' IDENTIFIED BY 'SqLpa5sW0rD';`\",\n                \"line_num\": 4,\n                \"path\": \"./tests/samples/sql_password\",\n                \"info\": \"\",\n                \"variable\": \"CREATE USER 'haproxy'@'%' IDENTIFIED BY\",\n                \"variable_start\": 2,\n                \"variable_end\": 41,\n                \"value\": \"SqLpa5sW0rD\",\n                \"value_start\": 43,\n                \"value_end\": 54,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"SQL Password\",\n        \"severity\": \"medium\",\n        \"confidence\": \"weak\",\n        \"ml_probability\": 0.996,\n        \"line_data_list\": [\n            {\n                \"line\": \"exec(\\\"CREATE USER ExposedTest ACCOUNT UNLOCK IDENTIFIED BY SqLpa5sW0rD\\\");\",\n                \"line_num\": 5,\n                \"path\": \"./tests/samples/sql_password\",\n                \"info\": \"\",\n                \"variable\": \"CREATE USER ExposedTest ACCOUNT UNLOCK IDENTIFIED BY\",\n                \"variable_start\": 6,\n                \"variable_end\": 58,\n                \"value\": \"SqLpa5sW0rD\",\n                \"value_start\": 59,\n                \"value_end\": 70,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"SQL Password\",\n        \"severity\": \"medium\",\n        \"confidence\": \"weak\",\n        \"ml_probability\": 0.914,\n        \"line_data_list\": [\n            {\n                \"line\": \"CREATE USER foo WITH ENCRYPTED PASSWORD 'SqLpa5sW0rD' CREATEDB;\",\n                \"line_num\": 8,\n                \"path\": \"./tests/samples/sql_password\",\n                \"info\": \"\",\n                \"variable\": \"CREATE USER foo WITH ENCRYPTED PASSWORD\",\n                \"variable_start\": 0,\n                \"variable_end\": 39,\n                \"value\": \"SqLpa5sW0rD\",\n                \"value_start\": 41,\n                \"value_end\": 52,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.999,\n        \"line_data_list\": [\n            {\n                \"line\": \"ALTER LOGIN username WITH PASSWORD = 'SqLpa5sW0rD';\",\n                \"line_num\": 9,\n                \"path\": \"./tests/samples/sql_password\",\n                \"info\": \"\",\n                \"variable\": \"PASSWORD\",\n                \"variable_start\": 26,\n                \"variable_end\": 34,\n                \"value\": \"SqLpa5sW0rD\",\n                \"value_start\": 38,\n                \"value_end\": 49,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"SQL Password\",\n        \"severity\": \"medium\",\n        \"confidence\": \"weak\",\n        \"ml_probability\": 0.999,\n        \"line_data_list\": [\n            {\n                \"line\": \"ALTER LOGIN username WITH PASSWORD = 'SqLpa5sW0rD';\",\n                \"line_num\": 9,\n                \"path\": \"./tests/samples/sql_password\",\n                \"info\": \"\",\n                \"variable\": \"ALTER LOGIN username WITH PASSWORD =\",\n                \"variable_start\": 0,\n                \"variable_end\": 36,\n                \"value\": \"SqLpa5sW0rD\",\n                \"value_start\": 38,\n                \"value_end\": 49,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"SQL Password\",\n        \"severity\": \"medium\",\n        \"confidence\": \"weak\",\n        \"ml_probability\": 0.992,\n        \"line_data_list\": [\n            {\n                \"line\": \"ALTER ROLE postgres PASSWORD 'SqLpa5sW0rD'; SELECT pg_reload_conf()\\\"\",\n                \"line_num\": 10,\n                \"path\": \"./tests/samples/sql_password\",\n                \"info\": \"\",\n                \"variable\": \"ALTER ROLE postgres PASSWORD\",\n                \"variable_start\": 0,\n                \"variable_end\": 28,\n                \"value\": \"SqLpa5sW0rD\",\n                \"value_start\": 30,\n                \"value_end\": 41,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"SQL Password\",\n        \"severity\": \"medium\",\n        \"confidence\": \"weak\",\n        \"ml_probability\": 0.998,\n        \"line_data_list\": [\n            {\n                \"line\": \"ALTER USER username WITH PASSWORD 'SqLpa5sW0rD';\",\n                \"line_num\": 11,\n                \"path\": \"./tests/samples/sql_password\",\n                \"info\": \"\",\n                \"variable\": \"ALTER USER username WITH PASSWORD\",\n                \"variable_start\": 0,\n                \"variable_end\": 33,\n                \"value\": \"SqLpa5sW0rD\",\n                \"value_start\": 35,\n                \"value_end\": 46,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"CREATE LOGIN username WITH PASSWORD = 'SqLpa5sW0rD';\",\n                \"line_num\": 12,\n                \"path\": \"./tests/samples/sql_password\",\n                \"info\": \"\",\n                \"variable\": \"PASSWORD\",\n                \"variable_start\": 27,\n                \"variable_end\": 35,\n                \"value\": \"SqLpa5sW0rD\",\n                \"value_start\": 39,\n                \"value_end\": 50,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"SQL Password\",\n        \"severity\": \"medium\",\n        \"confidence\": \"weak\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"CREATE LOGIN username WITH PASSWORD = 'SqLpa5sW0rD';\",\n                \"line_num\": 12,\n                \"path\": \"./tests/samples/sql_password\",\n                \"info\": \"\",\n                \"variable\": \"CREATE LOGIN username WITH PASSWORD =\",\n                \"variable_start\": 0,\n                \"variable_end\": 37,\n                \"value\": \"SqLpa5sW0rD\",\n                \"value_start\": 39,\n                \"value_end\": 50,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"SQL Password\",\n        \"severity\": \"medium\",\n        \"confidence\": \"weak\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"CREATE USER chuck WITH PASSWORD 'SqLpa5sW0rD' SUPERUSER;\",\n                \"line_num\": 13,\n                \"path\": \"./tests/samples/sql_password\",\n                \"info\": \"\",\n                \"variable\": \"CREATE USER chuck WITH PASSWORD\",\n                \"variable_start\": 0,\n                \"variable_end\": 31,\n                \"value\": \"SqLpa5sW0rD\",\n                \"value_start\": 33,\n                \"value_end\": 44,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"SQL Password\",\n        \"severity\": \"medium\",\n        \"confidence\": \"weak\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"CREATE USER IF NOT EXISTS sandy WITH PASSWORD 'SqLpa5sW0rD' NOSUPERUSER;\",\n                \"line_num\": 14,\n                \"path\": \"./tests/samples/sql_password\",\n                \"info\": \"\",\n                \"variable\": \"CREATE USER IF NOT EXISTS sandy WITH PASSWORD\",\n                \"variable_start\": 0,\n                \"variable_end\": 45,\n                \"value\": \"SqLpa5sW0rD\",\n                \"value_start\": 47,\n                \"value_end\": 58,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"SQL Password\",\n        \"severity\": \"medium\",\n        \"confidence\": \"weak\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"CREATE USER myuser WITH PASSWORD 'SqLpa5sW0rD';\",\n                \"line_num\": 15,\n                \"path\": \"./tests/samples/sql_password\",\n                \"info\": \"\",\n                \"variable\": \"CREATE USER myuser WITH PASSWORD\",\n                \"variable_start\": 0,\n                \"variable_end\": 32,\n                \"value\": \"SqLpa5sW0rD\",\n                \"value_start\": 34,\n                \"value_end\": 45,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"SQL Password\",\n        \"severity\": \"medium\",\n        \"confidence\": \"weak\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"CREATE USER username WITH PASSWORD 'SqLpa5sW0rD';\",\n                \"line_num\": 16,\n                \"path\": \"./tests/samples/sql_password\",\n                \"info\": \"\",\n                \"variable\": \"CREATE USER username WITH PASSWORD\",\n                \"variable_start\": 0,\n                \"variable_end\": 34,\n                \"value\": \"SqLpa5sW0rD\",\n                \"value_start\": 36,\n                \"value_end\": 47,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"SQL Password\",\n        \"severity\": \"medium\",\n        \"confidence\": \"weak\",\n        \"ml_probability\": 0.964,\n        \"line_data_list\": [\n            {\n                \"line\": \"ALTER USER 'username'@'localhost' IDENTIFIED BY 'SqLpa5sW0rD';\",\n                \"line_num\": 17,\n                \"path\": \"./tests/samples/sql_password\",\n                \"info\": \"\",\n                \"variable\": \"ALTER USER 'username'@'localhost' IDENTIFIED BY\",\n                \"variable_start\": 0,\n                \"variable_end\": 47,\n                \"value\": \"SqLpa5sW0rD\",\n                \"value_start\": 49,\n                \"value_end\": 60,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"SQL Password\",\n        \"severity\": \"medium\",\n        \"confidence\": \"weak\",\n        \"ml_probability\": 0.899,\n        \"line_data_list\": [\n            {\n                \"line\": \"ALTER USER username IDENTIFIED BY SqLpa5sW0rD;\",\n                \"line_num\": 19,\n                \"path\": \"./tests/samples/sql_password\",\n                \"info\": \"\",\n                \"variable\": \"ALTER USER username IDENTIFIED BY\",\n                \"variable_start\": 0,\n                \"variable_end\": 33,\n                \"value\": \"SqLpa5sW0rD\",\n                \"value_start\": 34,\n                \"value_end\": 45,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"SQL Password\",\n        \"severity\": \"medium\",\n        \"confidence\": \"weak\",\n        \"ml_probability\": 0.991,\n        \"line_data_list\": [\n            {\n                \"line\": \"CREATE USER username IDENTIFIED BY SqLpa5sW0rD;\",\n                \"line_num\": 20,\n                \"path\": \"./tests/samples/sql_password\",\n                \"info\": \"\",\n                \"variable\": \"CREATE USER username IDENTIFIED BY\",\n                \"variable_start\": 0,\n                \"variable_end\": 34,\n                \"value\": \"SqLpa5sW0rD\",\n                \"value_start\": 35,\n                \"value_end\": 46,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"SQL Password\",\n        \"severity\": \"medium\",\n        \"confidence\": \"weak\",\n        \"ml_probability\": 0.997,\n        \"line_data_list\": [\n            {\n                \"line\": \"CREATE USER 'username'@'localhost' IDENTIFIED BY 'SqLpa5sW0rD';\",\n                \"line_num\": 21,\n                \"path\": \"./tests/samples/sql_password\",\n                \"info\": \"\",\n                \"variable\": \"CREATE USER 'username'@'localhost' IDENTIFIED BY\",\n                \"variable_start\": 0,\n                \"variable_end\": 48,\n                \"value\": \"SqLpa5sW0rD\",\n                \"value_start\": 50,\n                \"value_end\": 61,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"SQL Password\",\n        \"severity\": \"medium\",\n        \"confidence\": \"weak\",\n        \"ml_probability\": 0.998,\n        \"line_data_list\": [\n            {\n                \"line\": \"mysql -u root -pdbadmin -e \\\"CREATE USER 'cactiuser'@'localhost' IDENTIFIED BY 'SqLpa5sW0rD';\\\"\\u2013          \",\n                \"line_num\": 22,\n                \"path\": \"./tests/samples/sql_password\",\n                \"info\": \"\",\n                \"variable\": \"CREATE USER 'cactiuser'@'localhost' IDENTIFIED BY\",\n                \"variable_start\": 28,\n                \"variable_end\": 77,\n                \"value\": \"SqLpa5sW0rD\",\n                \"value_start\": 79,\n                \"value_end\": 90,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"SQL Password\",\n        \"severity\": \"medium\",\n        \"confidence\": \"weak\",\n        \"ml_probability\": 0.999,\n        \"line_data_list\": [\n            {\n                \"line\": \"-c \\\"CREATE ROLE scram_test login password 'SqLpa5sW0rD'\\\"\",\n                \"line_num\": 23,\n                \"path\": \"./tests/samples/sql_password\",\n                \"info\": \"\",\n                \"variable\": \"CREATE ROLE scram_test login password\",\n                \"variable_start\": 4,\n                \"variable_end\": 41,\n                \"value\": \"SqLpa5sW0rD\",\n                \"value_start\": 43,\n                \"value_end\": 54,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"SQL Password\",\n        \"severity\": \"medium\",\n        \"confidence\": \"weak\",\n        \"ml_probability\": 0.995,\n        \"line_data_list\": [\n            {\n                \"line\": \"CREATE ROLE app_admin WITH LOGIN PASSWORD SqLpa5sW0rD;\",\n                \"line_num\": 24,\n                \"path\": \"./tests/samples/sql_password\",\n                \"info\": \"\",\n                \"variable\": \"CREATE ROLE app_admin WITH LOGIN PASSWORD\",\n                \"variable_start\": 0,\n                \"variable_end\": 41,\n                \"value\": \"SqLpa5sW0rD\",\n                \"value_start\": 42,\n                \"value_end\": 53,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"SQL Password\",\n        \"severity\": \"medium\",\n        \"confidence\": \"weak\",\n        \"ml_probability\": 0.999,\n        \"line_data_list\": [\n            {\n                \"line\": \"CREATE ROLE flask_admin_geo LOGIN PASSWORD 'SqLpa5sW0rD';\",\n                \"line_num\": 25,\n                \"path\": \"./tests/samples/sql_password\",\n                \"info\": \"\",\n                \"variable\": \"CREATE ROLE flask_admin_geo LOGIN PASSWORD\",\n                \"variable_start\": 0,\n                \"variable_end\": 42,\n                \"value\": \"SqLpa5sW0rD\",\n                \"value_start\": 44,\n                \"value_end\": 55,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"SQL Password\",\n        \"severity\": \"medium\",\n        \"confidence\": \"weak\",\n        \"ml_probability\": 0.702,\n        \"line_data_list\": [\n            {\n                \"line\": \"create role forum_example_graph_demo login password 'SqLpa5sW0rD';\",\n                \"line_num\": 26,\n                \"path\": \"./tests/samples/sql_password\",\n                \"info\": \"\",\n                \"variable\": \"create role forum_example_graph_demo login password\",\n                \"variable_start\": 0,\n                \"variable_end\": 51,\n                \"value\": \"SqLpa5sW0rD\",\n                \"value_start\": 53,\n                \"value_end\": 64,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"SQL Password\",\n        \"severity\": \"medium\",\n        \"confidence\": \"weak\",\n        \"ml_probability\": 0.722,\n        \"line_data_list\": [\n            {\n                \"line\": \"create role forum_example_graph login password 'SqLpa5sW0rD';\",\n                \"line_num\": 27,\n                \"path\": \"./tests/samples/sql_password\",\n                \"info\": \"\",\n                \"variable\": \"create role forum_example_graph login password\",\n                \"variable_start\": 0,\n                \"variable_end\": 46,\n                \"value\": \"SqLpa5sW0rD\",\n                \"value_start\": 48,\n                \"value_end\": 59,\n                \"entropy\": 3.45943\n            }\n        ]\n    },\n    {\n        \"rule\": \"SQL Password\",\n        \"severity\": \"medium\",\n        \"confidence\": \"weak\",\n        \"ml_probability\": 0.996,\n        \"line_data_list\": [\n            {\n                \"line\": \"ALTER USER 'test'@'1.1.1.1' IDENTIFIED WITH 'mysql_native_password' AS '*92FD05ADCA2EC9D1E10C096DEB1618BC2470E409' REQUIRE NONE PASSWORD EXPIRE DEFAULT ACCOUNT UNLOCK; -- old MySQL hash scheme with sha1\",\n                \"line_num\": 31,\n                \"path\": \"./tests/samples/sql_password\",\n                \"info\": \"\",\n                \"variable\": \"ALTER USER 'test'@'1.1.1.1' IDENTIFIED WITH 'mysql_native_password' AS\",\n                \"variable_start\": 0,\n                \"variable_end\": 70,\n                \"value\": \"*92FD05ADCA2EC9D1E10C096DEB1618BC2470E409\",\n                \"value_start\": 72,\n                \"value_end\": 113,\n                \"entropy\": 3.78769\n            }\n        ]\n    },\n    {\n        \"rule\": \"SQL Password\",\n        \"severity\": \"medium\",\n        \"confidence\": \"weak\",\n        \"ml_probability\": 0.849,\n        \"line_data_list\": [\n            {\n                \"line\": \"sh -c 'echo CREATE USER typeorm_mg IDENTIFIED BY SqLpa5sW0rD\\\\; >>tmp.sql;'\",\n                \"line_num\": 32,\n                \"path\": \"./tests/samples/sql_password\",\n                \"info\": \"\",\n                \"variable\": \"CREATE USER typeorm_mg IDENTIFIED BY\",\n                \"variable_start\": 12,\n                \"variable_end\": 48,\n                \"value\": \"SqLpa5sW0rD\\\\;\",\n                \"value_start\": 49,\n                \"value_end\": 62,\n                \"entropy\": 3.70044\n            }\n        ]\n    },\n    {\n        \"rule\": \"Square Access Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"    \\\"SQT\\\": \\\"EAAAEEPtuW9FnP_CuCV-3DFPB54M7YWBUVEFOWKPRVMWEJYMODIDAEX4FASS64NF\\\",\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/square_access_token\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"EAAAEEPtuW9FnP_CuCV-3DFPB54M7YWBUVEFOWKPRVMWEJYMODIDAEX4FASS64NF\",\n                \"value_start\": 12,\n                \"value_end\": 76,\n                \"entropy\": 4.66018\n            }\n        ]\n    },\n    {\n        \"rule\": \"Square Credentials\",\n        \"severity\": \"medium\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"sq0atp-GIREOGICR0CKLE12W45A78\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/square_client_id\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"sq0atp-GIREOGICR0CKLE12W45A78\",\n                \"value_start\": 0,\n                \"value_end\": 29,\n                \"entropy\": 4.44419\n            }\n        ]\n    },\n    {\n        \"rule\": \"Square Credentials\",\n        \"severity\": \"medium\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"20241204_112356 Colored line: \\\"\\u001b[94msq0csp-ST2dsfwyVI7Ydj343EY72hb48ehKQINMST2ds_fwyVI\\u001b[0m\\\";\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/square_oauth_secret\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"sq0csp-ST2dsfwyVI7Ydj343EY72hb48ehKQINMST2ds_fwyVI\",\n                \"value_start\": 36,\n                \"value_end\": 86,\n                \"entropy\": 4.75856\n            }\n        ]\n    },\n    {\n        \"rule\": \"Stripe Credentials\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"pk_test_Tph4NiI7TYooMQaujxvdEDq5\",\n                \"line_num\": 3,\n                \"path\": \"./tests/samples/stripe_credentials\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"pk_test_Tph4NiI7TYooMQaujxvdEDq5\",\n                \"value_start\": 0,\n                \"value_end\": 32,\n                \"entropy\": 4.6875\n            }\n        ]\n    },\n    {\n        \"rule\": \"Stripe Credentials\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"rk_live_TsS4QI2dNfwyVM7YdjI78ehK\",\n                \"line_num\": 4,\n                \"path\": \"./tests/samples/stripe_credentials\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"rk_live_TsS4QI2dNfwyVM7YdjI78ehK\",\n                \"value_start\": 0,\n                \"value_end\": 32,\n                \"entropy\": 4.6875\n            }\n        ]\n    },\n    {\n        \"rule\": \"Stripe Credentials\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"sk_test_T1z4jtdp7dcC39HqLyjWareD\",\n                \"line_num\": 5,\n                \"path\": \"./tests/samples/stripe_credentials\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"sk_test_T1z4jtdp7dcC39HqLyjWareD\",\n                \"value_start\": 0,\n                \"value_end\": 32,\n                \"entropy\": 4.53891\n            }\n        ]\n    },\n    {\n        \"rule\": \"Stripe Credentials\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"pk_live_KQI2pIpqzh1Nv2ZXfJBqUJItqoO5WdI6zUkITxodxICz85zC00cv0Gk63bDVUMwIymb3zKTeiqfU588jyYJdNYekpiI56wY0IIx\",\n                \"line_num\": 6,\n                \"path\": \"./tests/samples/stripe_credentials\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"pk_live_KQI2pIpqzh1Nv2ZXfJBqUJItqoO5WdI6zUkITxodxICz85zC00cv0Gk63bDVUMwIymb3zKTeiqfU588jyYJdNYekpiI56wY0IIx\",\n                \"value_start\": 0,\n                \"value_end\": 107,\n                \"entropy\": 5.24966\n            }\n        ]\n    },\n    {\n        \"rule\": \"Stripe Credentials\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"sk_test_KQI2pIpqzh1Nv2ZXfyfDQUTUQ63Cw359VjKMwtfJ000DsiXxtcVuxT40W8QRSYWZLQZxszLqOMkbYwYWDV1xKCmRKWR3kgSpi9h\",\n                \"line_num\": 7,\n                \"path\": \"./tests/samples/stripe_credentials\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"sk_test_KQI2pIpqzh1Nv2ZXfyfDQUTUQ63Cw359VjKMwtfJ000DsiXxtcVuxT40W8QRSYWZLQZxszLqOMkbYwYWDV1xKCmRKWR3kgSpi9h\",\n                \"value_start\": 0,\n                \"value_end\": 107,\n                \"entropy\": 5.44092\n            }\n        ]\n    },\n    {\n        \"rule\": \"Stripe Credentials\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"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\",\n                \"line_num\": 8,\n                \"path\": \"./tests/samples/stripe_credentials\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"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\",\n                \"value_start\": 0,\n                \"value_end\": 107,\n                \"entropy\": 5.50064\n            }\n        ]\n    },\n    {\n        \"rule\": \"Stripe Credentials\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"whsec_IsQVcHgjVWTBwlClIsICTD0mpDr4gJ4m\",\n                \"line_num\": 9,\n                \"path\": \"./tests/samples/stripe_credentials\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"whsec_IsQVcHgjVWTBwlClIsICTD0mpDr4gJ4m\",\n                \"value_start\": 0,\n                \"value_end\": 38,\n                \"entropy\": 4.47135\n            }\n        ]\n    },\n    {\n        \"rule\": \"Stripe Credentials\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"whsec_Q4KGL7AstjhYfzCtzK2RTB2EmncHgjVW\",\n                \"line_num\": 10,\n                \"path\": \"./tests/samples/stripe_credentials\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"whsec_Q4KGL7AstjhYfzCtzK2RTB2EmncHgjVW\",\n                \"value_start\": 0,\n                \"value_end\": 38,\n                \"entropy\": 4.82687\n            }\n        ]\n    },\n    {\n        \"rule\": \"Telegram Bot API Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"508627689:AAEuLPKs-EhrjrYGnz60bnYNZqakf6HJxc0\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/telegram_api_key\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"508627689:AAEuLPKs-EhrjrYGnz60bnYNZqakf6HJxc0\",\n                \"value_start\": 0,\n                \"value_end\": 45,\n                \"entropy\": 4.94174\n            }\n        ]\n    },\n    {\n        \"rule\": \"Grafana Provisioned API Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"token in text: eyJrIjoiMDAwMDAwNDAwMDAwODAwNDAwMDAwMDAwNDAwMDAwMDAwMDAwMDAyMSIsIm4iOiJ4eHh4IiwiaWQiOjQzMDh9Cg\",\n                \"line_num\": 18,\n                \"path\": \"./tests/samples/test2.eml\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"eyJrIjoiMDAwMDAwNDAwMDAwODAwNDAwMDAwMDAwNDAwMDAwMDAwMDAwMDAyMSIsIm4iOiJ4eHh4IiwiaWQiOjQzMDh9Cg\",\n                \"value_start\": 15,\n                \"value_end\": 109,\n                \"entropy\": 4.02967\n            }\n        ]\n    },\n    {\n        \"rule\": \"Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"token in text: eyJrIjoiMDAwMDAwNDAwMDAwODAwNDAwMDAwMDAwNDAwMDAwMDAwMDAwMDAyMSIsIm4iOiJ4eHh4IiwiaWQiOjQzMDh9Cg\",\n                \"line_num\": 18,\n                \"path\": \"./tests/samples/test2.eml\",\n                \"info\": \"\",\n                \"variable\": \"token in text\",\n                \"variable_start\": 0,\n                \"variable_end\": 13,\n                \"value\": \"eyJrIjoiMDAwMDAwNDAwMDAwODAwNDAwMDAwMDAwNDAwMDAwMDAwMDAwMDAyMSIsIm4iOiJ4eHh4IiwiaWQiOjQzMDh9Cg\",\n                \"value_start\": 15,\n                \"value_end\": 109,\n                \"entropy\": 4.02967\n            }\n        ]\n    },\n    {\n        \"rule\": \"Together AI API Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"tgp_v1_45j-rhExaIPrLzTp--mCXcQwaWyNYUK86IG0_XWnNqc\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/together\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"tgp_v1_45j-rhExaIPrLzTp--mCXcQwaWyNYUK86IG0_XWnNqc\",\n                \"value_start\": 0,\n                \"value_end\": 50,\n                \"entropy\": 5.13366\n            }\n        ]\n    },\n    {\n        \"rule\": \"Together AI API Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"tgp_v1_LRvIfXDN2VjuqCi5zcGzrM3oIwIOhhIZd9H8JmE2CpR\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/together\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"tgp_v1_LRvIfXDN2VjuqCi5zcGzrM3oIwIOhhIZd9H8JmE2CpR\",\n                \"value_start\": 0,\n                \"value_end\": 50,\n                \"entropy\": 5.16386\n            }\n        ]\n    },\n    {\n        \"rule\": \"Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"gi_reo_gi_token = \\\"G1Re06G1BdgNseiJDN21Z094M\\\"\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/token.toml\",\n                \"info\": \"\",\n                \"variable\": \"gi_reo_gi_token\",\n                \"variable_start\": 0,\n                \"variable_end\": 15,\n                \"value\": \"G1Re06G1BdgNseiJDN21Z094M\",\n                \"value_start\": 19,\n                \"value_end\": 44,\n                \"entropy\": 4.13366\n            }\n        ]\n    },\n    {\n        \"rule\": \"Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"Token-> DemoToken: Nxs094M3ed2s1Re0F4M3ed2GZ8M= <- for User : demo\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/token.toml\",\n                \"info\": \"\",\n                \"variable\": \"DemoToken\",\n                \"variable_start\": 8,\n                \"variable_end\": 17,\n                \"value\": \"Nxs094M3ed2s1Re0F4M3ed2GZ8M=\",\n                \"value_start\": 19,\n                \"value_end\": 47,\n                \"entropy\": 4.03915\n            }\n        ]\n    },\n    {\n        \"rule\": \"Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"tp_token_value=\\\"b035d48j9X2dfjF0hb9sd8Guf5hWu2ia\\\"\",\n                \"line_num\": 4,\n                \"path\": \"./tests/samples/token.toml\",\n                \"info\": \"\",\n                \"variable\": \"tp_token_value\",\n                \"variable_start\": 0,\n                \"variable_end\": 14,\n                \"value\": \"b035d48j9X2dfjF0hb9sd8Guf5hWu2ia\",\n                \"value_start\": 16,\n                \"value_end\": 48,\n                \"entropy\": 4.22641\n            }\n        ]\n    },\n    {\n        \"rule\": \"Tavily API Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"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  # TP\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/tvly\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"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\",\n                \"value_start\": 0,\n                \"value_end\": 37,\n                \"entropy\": 4.84432\n            }\n        ]\n    },\n    {\n        \"rule\": \"Twilio Credentials\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"SK4D2F64E2A108CD72F648B1984C3B5A13\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/twilio_credentials_p\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"SK4D2F64E2A108CD72F648B1984C3B5A13\",\n                \"value_start\": 0,\n                \"value_end\": 34,\n                \"entropy\": 4.02086\n            }\n        ]\n    },\n    {\n        \"rule\": \"Twilio Credentials\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"AC4d2f64e2a108cd72f648b1984c3b5a13\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/twilio_credentials_p\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"AC4d2f64e2a108cd72f648b1984c3b5a13\",\n                \"value_start\": 0,\n                \"value_end\": 34,\n                \"entropy\": 4.02086\n            }\n        ]\n    },\n    {\n        \"rule\": \"URL Credentials\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"const connection_url = require('dbconnection://ad%6Din:5WdF4f2jE76a@db-host-local');\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/url_cred.js\",\n                \"info\": \"\",\n                \"variable\": \"dbconnection://\",\n                \"variable_start\": 32,\n                \"variable_end\": 47,\n                \"value\": \"5WdF4f2jE76a\",\n                \"value_start\": 55,\n                \"value_end\": 67,\n                \"entropy\": 3.58496\n            }\n        ]\n    },\n    {\n        \"rule\": \"Credential\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"url = \\\"https://secure.com/83675/39084?Credential=546DFS64N90P3AW7DX%2Fkeep%26cut\\\";\",\n                \"line_num\": 3,\n                \"path\": \"./tests/samples/url_cred.js\",\n                \"info\": \"\",\n                \"variable\": \"Credential\",\n                \"variable_start\": 38,\n                \"variable_end\": 48,\n                \"value\": \"546DFS64N90P3AW7DX%2Fkeep%26cut\",\n                \"value_start\": 49,\n                \"value_end\": 80,\n                \"entropy\": 4.41372\n            }\n        ]\n    },\n    {\n        \"rule\": \"Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"39084?Credential=546DFS64N90P3AW7DX&key=3487263-2384579834-234732875-345&hasToBefound=2\",\n                \"line_num\": 10,\n                \"path\": \"./tests/samples/url_cred.js\",\n                \"info\": \"\",\n                \"variable\": \"key\",\n                \"variable_start\": 36,\n                \"variable_end\": 39,\n                \"value\": \"3487263-2384579834-234732875-345\",\n                \"value_start\": 40,\n                \"value_end\": 72,\n                \"entropy\": 2.97591\n            }\n        ]\n    },\n    {\n        \"rule\": \"Credential\",\n        \"severity\": \"medium\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"39084?Credential=546DFS64N90P3AW7DX&key=3487263-2384579834-234732875-345&hasToBefound=2\",\n                \"line_num\": 10,\n                \"path\": \"./tests/samples/url_cred.js\",\n                \"info\": \"\",\n                \"variable\": \"Credential\",\n                \"variable_start\": 6,\n                \"variable_end\": 16,\n                \"value\": \"546DFS64N90P3AW7DX\",\n                \"value_start\": 17,\n                \"value_end\": 35,\n                \"entropy\": 3.83659\n            }\n        ]\n    },\n    {\n        \"rule\": \"URL Credentials\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"email_as_login = \\\"smtps://example@gmail.com:FnD83JZs@smtp.gmail.com:465\\\";\",\n                \"line_num\": 13,\n                \"path\": \"./tests/samples/url_cred.js\",\n                \"info\": \"\",\n                \"variable\": \"smtps://\",\n                \"variable_start\": 18,\n                \"variable_end\": 26,\n                \"value\": \"FnD83JZs\",\n                \"value_start\": 44,\n                \"value_end\": 52,\n                \"entropy\": 3.0\n            }\n        ]\n    },\n    {\n        \"rule\": \"Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"url3d = \\\"https://localhost.com/013948?26timestamp%3D1395782596%26token%3Dh1d3Me4ch534d801sl3jdk%26version%3D3.14%26si\\\";\",\n                \"line_num\": 19,\n                \"path\": \"./tests/samples/url_cred.js\",\n                \"info\": \"\",\n                \"variable\": \"token\",\n                \"variable_start\": 65,\n                \"variable_end\": 70,\n                \"value\": \"h1d3Me4ch534d801sl3jdk\",\n                \"value_start\": 73,\n                \"value_end\": 95,\n                \"entropy\": 3.75444\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"if (password !== \\\"PaS5w0rD2#\\\"){\",\n                \"line_num\": 21,\n                \"path\": \"./tests/samples/url_cred.js\",\n                \"info\": \"\",\n                \"variable\": \"password\",\n                \"variable_start\": 4,\n                \"variable_end\": 12,\n                \"value\": \"PaS5w0rD2#\",\n                \"value_start\": 18,\n                \"value_end\": 28,\n                \"entropy\": 3.32193\n            }\n        ]\n    },\n    {\n        \"rule\": \"URL Credentials\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.933,\n        \"line_data_list\": [\n            {\n                \"line\": \"{\\\"line\\\": \\\"url: mongodb://jrfdeg42:p4Dsr8b@127.0.0.1:32768/architecture\\\"}\",\n                \"line_num\": 25,\n                \"path\": \"./tests/samples/url_cred.js\",\n                \"info\": \"\",\n                \"variable\": \"mongodb://\",\n                \"variable_start\": 15,\n                \"variable_end\": 25,\n                \"value\": \"p4Dsr8b\",\n                \"value_start\": 34,\n                \"value_end\": 41,\n                \"entropy\": 2.80735\n            }\n        ]\n    },\n    {\n        \"rule\": \"UUID\",\n        \"severity\": \"info\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"bace4d19-fa7e-beef-cafe-9129474bcd81 # tp\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/uuid\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"bace4d19-fa7e-beef-cafe-9129474bcd81\",\n                \"value_start\": 0,\n                \"value_end\": 36,\n                \"entropy\": 3.58954\n            }\n        ]\n    },\n    {\n        \"rule\": \"Vercel Token\",\n        \"severity\": \"medium\",\n        \"confidence\": \"weak\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"vcp_5G8LQP7fmw80eG7W8y0sWO1QFPuhsYUuLEqyd1ialdvz9r6pL4vzxkC3\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/vercel\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"vcp_5G8LQP7fmw80eG7W8y0sWO1QFPuhsYUuLEqyd1ialdvz9r6pL4vzxkC3\",\n                \"value_start\": 0,\n                \"value_end\": 60,\n                \"entropy\": 5.23581\n            }\n        ]\n    },\n    {\n        \"rule\": \"Tencent WeChat API App ID\",\n        \"severity\": \"medium\",\n        \"confidence\": \"weak\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"wxe191bc54fc7d529a\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/wechat_p\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"wxe191bc54fc7d529a\",\n                \"value_start\": 0,\n                \"value_end\": 18,\n                \"entropy\": 3.72548\n            }\n        ]\n    },\n    {\n        \"rule\": \"Tencent WeChat API App ID\",\n        \"severity\": \"medium\",\n        \"confidence\": \"weak\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"wx2274a335e18222d6\",\n                \"line_num\": 2,\n                \"path\": \"./tests/samples/wechat_p\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"wx2274a335e18222d6\",\n                \"value_start\": 0,\n                \"value_end\": 18,\n                \"entropy\": 3.41383\n            }\n        ]\n    },\n    {\n        \"rule\": \"Tencent WeChat API App ID\",\n        \"severity\": \"medium\",\n        \"confidence\": \"weak\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"wx4d82d07e3eb5ba84\",\n                \"line_num\": 3,\n                \"path\": \"./tests/samples/wechat_p\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"wx4d82d07e3eb5ba84\",\n                \"value_start\": 0,\n                \"value_end\": 18,\n                \"entropy\": 3.61437\n            }\n        ]\n    },\n    {\n        \"rule\": \"X AI API Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"xai-wjluCw1zixzDiYOxeeGtIwuHjIyax8SukK2lFWtBRn1yfEPMQzv63sMCd1nzqylpuDXQjEGd19OJi3cL\",\n                \"line_num\": 1,\n                \"path\": \"./tests/samples/xai\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"xai-wjluCw1zixzDiYOxeeGtIwuHjIyax8SukK2lFWtBRn1yfEPMQzv63sMCd1nzqylpuDXQjEGd19OJi3cL\",\n                \"value_start\": 0,\n                \"value_end\": 84,\n                \"entropy\": 5.35637\n            }\n        ]\n    },\n    {\n        \"rule\": \"BASE64 Private Key\",\n        \"severity\": \"high\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"data : MIIBOgIBAAJBAJtFfagSXdo0JmX6EdwWGvFMaXeOFY5xOTs3PWsnhRFakQFbAuI/\\n        DaJSTVnp3ObjJPZhJs/P/XPWIKRNIglRqkkCAwEAAQJAbErPFMWah3EPxtfeVO1l\\n        5R0yAZwrFKmLDO29/FoXyL2XbxthJlJmdMQgIYayZYn4W2PSq6C56AI201SlW7Ts\\n        AQIhAMwBYS+NST98g0nytTRD1Y94n+yrhTlyWNR/uC4tT8SpAiEAwthlcs9UDPh5\\n        BnaO8Y7A+im+Aw5ANIhJwSVBxB3QnKECIQCJm9ihic1B7MxmojgGxEcXGwfNTjl0\\n        caRn2qszQs9O2QIgdaBFvkXDrADkry4rpVBU17ETcKzNvej4/Y0MYuTM54ECIGtT\\n        EBUWuiacAxz/WKHb9WVp0F/zkRwucJ0Hr2W4P9cP\",\n                \"line_num\": 3,\n                \"path\": \"./tests/samples/xml_data.xml\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"MIIBOgIBAAJBAJtFfagSXdo0JmX6EdwWGvFMaXeOFY5xOTs3PWsnhRFakQFbAuI/\\n        DaJSTVnp3ObjJPZhJs/P/XPWIKRNIglRqkkCAwEAAQJAbErPFMWah3EPxtfeVO1l\\n        5R0yAZwrFKmLDO29/FoXyL2XbxthJlJmdMQgIYayZYn4W2PSq6C56AI201SlW7Ts\\n        AQIhAMwBYS+NST98g0nytTRD1Y94n+yrhTlyWNR/uC4tT8SpAiEAwthlcs9UDPh5\\n        BnaO8Y7A+im+Aw5ANIhJwSVBxB3QnKECIQCJm9ihic1B7MxmojgGxEcXGwfNTjl0\\n        caRn2qszQs9O2QIgdaBFvkXDrADkry4rpVBU17ETcKzNvej4/Y0MYuTM54ECIGtT\\n        EBUWuiacAxz/WKHb9WVp0F/zkRwucJ0Hr2W4P9cP\",\n                \"value_start\": 7,\n                \"value_end\": 485,\n                \"entropy\": 5.75738\n            }\n        ]\n    },\n    {\n        \"rule\": \"Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.993,\n        \"line_data_list\": [\n            {\n                \"line\": \"token : \\\"IBOgIBAAJBAJtFfagSXdo0JmX6EdwWGvFMaXeOFY5xOTs3PWsn\\n        hRFakQFbAuI769fdsbkjerfkjrekjnkerjnfkrejnfrejn==\\\"\",\n                \"line_num\": 12,\n                \"path\": \"./tests/samples/xml_data.xml\",\n                \"info\": \"\",\n                \"variable\": \"token\",\n                \"variable_start\": 0,\n                \"variable_end\": 5,\n                \"value\": \"IBOgIBAAJBAJtFfagSXdo0JmX6EdwWGvFMaXeOFY5xOTs3PWsn\\n        hRFakQFbAuI769fdsbkjerfkjrekjnkerjnfkrejnfrejn==\",\n                \"value_start\": 9,\n                \"value_end\": 116,\n                \"entropy\": 5.12458\n            }\n        ]\n    },\n    {\n        \"rule\": \"Token\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 1.0,\n        \"line_data_list\": [\n            {\n                \"line\": \"token : IBOgIBAAJBAJtFfagSXdo0JmX6EdwWGvFMaXeOFY5xOTs3PWsn\\n        hRFakQFbAuI769fdsbkjerfkjrekjnkerjnfkrejnfrejn==\",\n                \"line_num\": 16,\n                \"path\": \"./tests/samples/xml_data.xml\",\n                \"info\": \"\",\n                \"variable\": \"token\",\n                \"variable_start\": 0,\n                \"variable_end\": 5,\n                \"value\": \"IBOgIBAAJBAJtFfagSXdo0JmX6EdwWGvFMaXeOFY5xOTs3PWsn\",\n                \"value_start\": 8,\n                \"value_end\": 58,\n                \"entropy\": 4.83327\n            }\n        ]\n    },\n    {\n        \"rule\": \"Password\",\n        \"severity\": \"high\",\n        \"confidence\": \"moderate\",\n        \"ml_probability\": 0.857,\n        \"line_data_list\": [\n            {\n                \"line\": \"password : cackle!\",\n                \"line_num\": 5,\n                \"path\": \"./tests/samples/xml_password.xml\",\n                \"info\": \"\",\n                \"variable\": \"password\",\n                \"variable_start\": 0,\n                \"variable_end\": 8,\n                \"value\": \"cackle!\",\n                \"value_start\": 11,\n                \"value_end\": 18,\n                \"entropy\": 2.52164\n            }\n        ]\n    },\n    {\n        \"rule\": \"UUID\",\n        \"severity\": \"info\",\n        \"confidence\": \"strong\",\n        \"ml_probability\": null,\n        \"line_data_list\": [\n            {\n                \"line\": \"password : Password for authorization\\n        BAIT: bace4d59-fa7e-beef-cafe-9129474bcd81\",\n                \"line_num\": 11,\n                \"path\": \"./tests/samples/xml_password.xml\",\n                \"info\": \"\",\n                \"variable\": null,\n                \"variable_start\": -2,\n                \"variable_end\": -2,\n                \"value\": \"bace4d59-fa7e-beef-cafe-9129474bcd81\",\n                \"value_start\": 52,\n                \"value_end\": 88,\n                \"entropy\": 3.66606\n            }\n        ]\n    }\n]"
  },
  {
    "path": "tests/deep_scanner/__init__.py",
    "content": ""
  },
  {
    "path": "tests/deep_scanner/test_abstract_scanner.py",
    "content": "import random\nimport unittest\n\nfrom credsweeper.deep_scanner.abstract_scanner import AbstractScanner\nfrom tests import AZ_STRING, AZ_DATA\n\n\nclass TestAbstractScanner(unittest.TestCase):\n\n    def test_structure_processing_n(self):\n        self.assertListEqual([], list(AbstractScanner.structure_processing(structure=None)))\n        self.assertListEqual([], list(AbstractScanner.structure_processing(structure=42)))\n        self.assertListEqual([], list(AbstractScanner.structure_processing(structure=3.14)))\n        self.assertListEqual([], list(AbstractScanner.structure_processing(structure=AZ_STRING)))\n        self.assertListEqual([], list(AbstractScanner.structure_processing(structure=AZ_DATA)))\n        self.assertListEqual([], list(AbstractScanner.structure_processing(structure=())))\n        self.assertListEqual([], list(AbstractScanner.structure_processing(structure=[])))\n        self.assertListEqual([], list(AbstractScanner.structure_processing(structure={})))\n        self.assertListEqual([], list(AbstractScanner.structure_processing(structure={0: [], 1: (), 2: {}})))\n        self.assertListEqual([], list(AbstractScanner.structure_processing(structure={\"key\": None})))\n        self.assertListEqual([], list(AbstractScanner.structure_processing(structure={\"key\": 0})))\n        self.assertListEqual([], list(AbstractScanner.structure_processing(structure={\"key\": False})))\n\n    def test_structure_processing_p(self):\n        self.assertListEqual([(0, 1), (1, 2), (2, 3)], list(AbstractScanner.structure_processing(structure=(1, 2, 3))))\n        self.assertListEqual([(0, 1), (1, 2), (2, 3)], list(AbstractScanner.structure_processing(structure=[1, 2, 3])))\n        self.assertListEqual([(0, 1), (1, 2), (2, 3)],\n                             list(AbstractScanner.structure_processing(structure={\n                                 0: 1,\n                                 1: 2,\n                                 2: 3\n                             })))\n        self.assertListEqual([(42, 3.14)], list(AbstractScanner.structure_processing(structure={42: 3.14})))\n        self.assertListEqual([(\"key\", AZ_STRING), (\"VALUE\", AZ_DATA), (AZ_STRING, AZ_DATA)],\n                             list(AbstractScanner.structure_processing(structure={\n                                 \"key\": AZ_STRING,\n                                 \"VALUE\": AZ_DATA\n                             })))\n\n    def test_key_value_combination_n(self):\n        # bytes in key do not produce augmented pair\n        self.assertListEqual([],\n                             list(AbstractScanner.key_value_combination(structure={\n                                 \"key\": AZ_STRING,\n                                 b\"VALUE\": AZ_DATA\n                             })))\n        # and wrong symbols do not produce the pair\n        self.assertListEqual([],\n                             list(AbstractScanner.key_value_combination(structure={\n                                 \"KEY\": AZ_STRING,\n                                 \"VaLuE\": AZ_DATA\n                             })))\n        # bytes which cannot be decoded do not produce the augmentation\n        self.assertListEqual([],\n                             list(\n                                 AbstractScanner.key_value_combination(structure={\n                                     \"Key\": random.randbytes(16),\n                                     \"VALUE\": AZ_DATA\n                                 })))\n\n    def test_key_value_combination_p(self):\n        self.assertListEqual([(AZ_STRING, AZ_DATA)],\n                             list(AbstractScanner.key_value_combination(structure={\n                                 \"Key\": AZ_STRING,\n                                 \"VALUE\": AZ_DATA\n                             })))\n        # bytes in key value may produce the augmentation\n        self.assertListEqual([(AZ_STRING, AZ_DATA)],\n                             list(AbstractScanner.key_value_combination(structure={\n                                 \"Key\": AZ_DATA,\n                                 \"VALUE\": AZ_DATA\n                             })))\n"
  },
  {
    "path": "tests/deep_scanner/test_bzip2_scanner.py",
    "content": "import unittest\n\nfrom credsweeper.deep_scanner.bzip2_scanner import Bzip2Scanner\n\n\nclass TestBzip2Scanner(unittest.TestCase):\n\n    def test_match_p(self):\n        # Valid bzip2 signature with correct version and block size\n        self.assertTrue(Bzip2Scanner.match(b\"\\x42\\x5A\\x68\\x31\\x31\\x41\\x59\\x26\\x53\\x59\"))\n        self.assertTrue(Bzip2Scanner.match(b\"\\x42\\x5A\\x68\\x39\\x31\\x41\\x59\\x26\\x53\\x59\"))\n\n    def test_match_n(self):\n        # Wrong data type\n        with self.assertRaises(AttributeError):\n            Bzip2Scanner.match(None)\n        with self.assertRaises(AttributeError):\n            Bzip2Scanner.match(1)\n        # Too short\n        self.assertFalse(Bzip2Scanner.match(b\"\"))\n        self.assertFalse(Bzip2Scanner.match(b\"\\x42\\x5A\\x68\"))\n        # Wrong signature\n        self.assertFalse(Bzip2Scanner.match(b\"\\x42\\x5A\\x69\"))\n        # Wrong version\n        self.assertFalse(Bzip2Scanner.match(b\"\\x42\\x5A\\x68\\x30\\x31\\x41\\x59\\x26\\x53\\x59\"))\n        # Wrong block size\n        self.assertFalse(Bzip2Scanner.match(b\"\\x42\\x5A\\x68\\x31\\x30\\x41\\x59\\x26\\x53\\x59\"))\n"
  },
  {
    "path": "tests/deep_scanner/test_crx_scanner.py",
    "content": "import unittest\n\nfrom credsweeper.deep_scanner.crx_scanner import CrxScanner\nfrom tests import AZ_DATA\n\n\nclass TestCrxScanner(unittest.TestCase):\n\n    def test_match_p(self):\n        self.assertTrue(CrxScanner.match(b'Cr24\\x02\\x00\\x00\\x00' + b'\\0' * 32))\n        self.assertTrue(CrxScanner.match(b'Cr24\\x03\\x00\\x00\\x00' + b'\\0' * 32))\n\n    def test_match_n(self):\n        # wrong data type\n        with self.assertRaises(AttributeError):\n            self.assertFalse(CrxScanner.match(None))\n        with self.assertRaises(AttributeError):\n            self.assertFalse(CrxScanner.match(1))\n        # few bytes than required\n        self.assertFalse(CrxScanner.match(b'Cr24\\x02\\x00\\x00\\x00' + b'\\0' * 16))\n        self.assertFalse(CrxScanner.match(AZ_DATA))\n\n    def test_zip_extract_p(self):\n        self.assertEqual(b'', CrxScanner.zip_extract(b'\\0' * 16))\n        self.assertEqual(AZ_DATA, CrxScanner.zip_extract(b'\\0' * 16 + AZ_DATA))\n\n    def test_zip_extract_n(self):\n        # wrong data type\n        with self.assertRaises(TypeError):\n            self.assertFalse(CrxScanner.zip_extract(None))\n"
  },
  {
    "path": "tests/deep_scanner/test_csv_scanner.py",
    "content": "import random\nimport unittest\nfrom _csv import Error\n\nfrom credsweeper.deep_scanner.csv_scanner import CsvScanner\nfrom tests import AZ_STRING, SAMPLES_PATH, AZ_DATA\n\n\nclass TestCsvScanner(unittest.TestCase):\n\n    def setUp(self):\n        self.maxDiff = None\n\n    def test_match_n(self):\n        # even random data may look like a CSV\n        random_data = random.randbytes(random.randint(4, 16))\n        self.assertFalse(CsvScanner.match(random_data), random_data)\n        self.assertFalse(CsvScanner.match(b''))\n        self.assertFalse(CsvScanner.match(b'||||'))\n        self.assertFalse(CsvScanner.match(AZ_DATA))\n        self.assertFalse(CsvScanner.match(AZ_DATA + b'\\r\\n'))\n\n    def test_match_p(self):\n        self.assertTrue(CsvScanner.match(b'a|b\\r1|2'))\n        self.assertTrue(CsvScanner.match(b'a|b\\n1|2'))\n        self.assertTrue(CsvScanner.match(b'a|b\\r\\n1|2'))\n\n    def test_get_structure_n(self):\n        with self.assertRaises(ValueError):\n            CsvScanner.get_structure('First line,\"and escaped,coma\"\\nSecond,line,with more comas\\n')\n        with self.assertRaises(ValueError):\n            CsvScanner.get_structure(\"First,line\\nSecond,line,with,more,comas\")\n        with self.assertRaises(Error):\n            CsvScanner.get_structure(f\"{AZ_STRING[:19]}\\n{AZ_STRING[20:]}\\n\")\n        with self.assertRaises(Error):\n            CsvScanner.get_structure(\"'user and password'\\nadmin&tizen\\n\")\n        with self.assertRaises(ValueError):\n            CsvScanner.get_structure('')\n        with self.assertRaises(Error):\n            CsvScanner.get_structure(\"user&password\\nadmin&tizen\\n\")\n        with self.assertRaises(Error):\n            CsvScanner.get_structure('\"user and password\"\\nadmin&tizen\\n')\n        with self.assertRaises(ValueError):\n            CsvScanner.get_structure(\"user,password\\tadmin,tizen\\t\")\n\n    def test_get_structure_from_sample_n(self):\n        with self.assertRaises(ValueError):\n            with open(SAMPLES_PATH / \"aws_client_id\") as f:\n                CsvScanner.get_structure(f.read())\n\n    def test_get_structure_p(self):\n        structure = CsvScanner.get_structure(\"user,password\\nadmin,tizen\\nempty,\\n\")\n        self.assertIsInstance(structure, list)\n        self.assertEqual(2, len(structure))\n        self.assertDictEqual({'password': 'tizen', 'user': 'admin'}, structure[0])\n        self.assertDictEqual({'password': '', 'user': 'empty'}, structure[1])\n        #CsvScanner.get_structure(\"Feuer und Wasser\\ncommt nicht zusammen\\n\")\n"
  },
  {
    "path": "tests/deep_scanner/test_deb_scanner.py",
    "content": "import unittest\n\nfrom credsweeper.deep_scanner.deb_scanner import DebScanner\n\n\nclass TestDebScanner(unittest.TestCase):\n\n    def test_match_p(self):\n        # Valid deb archive signature\n        self.assertTrue(DebScanner.match(b\"!<arch>\\n\"))\n        self.assertTrue(DebScanner.match(b\"!<arch>\\nmore data here\"))\n\n    def test_match_n(self):\n        # Wrong data type\n        with self.assertRaises(AttributeError):\n            DebScanner.match(None)\n        with self.assertRaises(AttributeError):\n            DebScanner.match(1)\n        # Too short\n        self.assertFalse(DebScanner.match(b\"\"))\n        self.assertFalse(DebScanner.match(b\"!<arch>\"))\n        # Wrong signature\n        self.assertFalse(DebScanner.match(b\"<arch>\\n\"))\n        self.assertFalse(DebScanner.match(b\"!<arch>\"))\n        self.assertFalse(DebScanner.match(b\"!<arch>\\r\"))\n"
  },
  {
    "path": "tests/deep_scanner/test_deep_scanner.py",
    "content": "import unittest\n\nfrom hypothesis import given, strategies\n\nfrom credsweeper.deep_scanner.deep_scanner import DeepScanner\nfrom credsweeper.file_handler.descriptor import Descriptor\nfrom tests import AZ_DATA, AZ_STRING\n\n\nclass TestDeepScanner(unittest.TestCase):\n\n    def test_get_deep_scanners_n(self):\n        self.assertEqual(([], []), DeepScanner.get_deep_scanners(None, Descriptor('', '', ''), 0))\n        self.assertEqual(([], []), DeepScanner.get_deep_scanners(b'', Descriptor('', '', ''), 0))\n        self.assertEqual(([], []), DeepScanner.get_deep_scanners(b'0xFF', Descriptor('', '', ''), 0))\n\n    @given(strategies.binary())\n    def test_get_deep_scanners_n(self, data):\n        # no exception should be raised\n        x, y = DeepScanner.get_deep_scanners(data, Descriptor('', '', ''), 0)\n        # no fallback scanners for depth=0\n        self.assertListEqual([], y)\n\n    def test_is_media_n(self):\n        with self.assertRaises(TypeError):\n            self.assertFalse(DeepScanner.is_media(None))\n        with self.assertRaises(IndexError):\n            self.assertFalse(DeepScanner.is_media(b''))\n        self.assertFalse(DeepScanner.is_media(AZ_STRING))\n        self.assertFalse(DeepScanner.is_media(AZ_DATA))\n        self.assertFalse(DeepScanner.is_media(b\"\\0\\0\\0\\0\"))\n        self.assertFalse(DeepScanner.is_media(b\"III. Password is Gehe1mnis!\"))\n        self.assertFalse(DeepScanner.is_media(b\"\\xFF\\xFEu\\x00t\\x00f\\x001\\x006\\x00\"))\n        self.assertFalse(DeepScanner.is_media(b\"GIF89a format cannot store data inside\\n\\tHowever a picture can\\r\\n\"))\n        self.assertFalse(DeepScanner.is_media(b\"BMP is a picture\"))\n\n    def test_is_media_p(self):\n        self.assertTrue(DeepScanner.is_media(b\"\\x89PNG\\x0D\\x0A\\x1A\\x0A...can store text chunks\"))\n        self.assertTrue(DeepScanner.is_media(b\"\\xFF\\xD8\\xFF\\xE1+\\x84Exif\\0\\0*\\0\"))\n        self.assertTrue(DeepScanner.is_media(b\"GIF89a null terminated string\\0\"))\n        self.assertTrue(DeepScanner.is_media(b\"BMP!\\0\\0\\0\\0\"))\n"
  },
  {
    "path": "tests/deep_scanner/test_eml_scanner.py",
    "content": "import unittest\n\nfrom credsweeper.deep_scanner.eml_scanner import EmlScanner\n\n\nclass TestEmlScanner(unittest.TestCase):\n\n    def test_match_p(self):\n        # Valid EML format with all required headers\n        eml_data = b\"Date: Mon, 1 Jan 2024 12:00:00 +0000\\nFrom: sender@example.com\\nTo: recipient@example.com\\nSubject: Test Email\\n\\nEmail body\"\n        self.assertTrue(EmlScanner.match(eml_data))\n\n        # EML format with headers at the beginning\n        eml_data2 = b\"Date: Mon, 1 Jan 2024 12:00:00 +0000\\nFrom: sender@example.com\\nTo: recipient@example.com\\nSubject: Test Email\"\n        self.assertTrue(EmlScanner.match(eml_data2))\n\n    def test_match_n(self):\n        # Wrong data type\n        with self.assertRaises(TypeError):\n            EmlScanner.match(None)\n        with self.assertRaises(TypeError):\n            EmlScanner.match(1)\n        # Missing required headers\n        self.assertFalse(\n            EmlScanner.match(b\"Date: Mon, 1 Jan 2024 12:00:00 +0000\\nFrom: sender@example.com\\nSubject: Test Email\"))\n        self.assertFalse(EmlScanner.match(b\"From: sender@example.com\\nTo: recipient@example.com\\nSubject: Test Email\"))\n        self.assertFalse(\n            EmlScanner.match(b\"Date: Mon, 1 Jan 2024 12:00:00 +0000\\nTo: recipient@example.com\\nSubject: Test Email\"))\n        self.assertFalse(\n            EmlScanner.match(\n                b\"Date: Mon, 1 Jan 2024 12:00:00 +0000\\nFrom: sender@example.com\\nTo: recipient@example.com\"))\n        # Wrong format\n        self.assertFalse(EmlScanner.match(b\"This is not an email\"))\n        self.assertFalse(EmlScanner.match(b\"Date: Mon, 1 Jan 2024 12:00:00 +0000\\nFrom: sender@example.com\"))\n"
  },
  {
    "path": "tests/deep_scanner/test_encoder_scanner.py",
    "content": "import string\nimport unittest\n\nfrom credsweeper.common.constants import MAX_LINE_LENGTH\nfrom credsweeper.deep_scanner.encoder_scanner import EncoderScanner\nfrom tests import AZ_DATA\n\n\nclass TestEncoderScanner(unittest.TestCase):\n\n    def test_match_n(self):\n        with self.assertRaises(TypeError):\n            EncoderScanner.match(None)\n        self.assertFalse(EncoderScanner.match(b\"\"))\n        self.assertFalse(EncoderScanner.match(AZ_DATA))\n        self.assertFalse(EncoderScanner.match(b\"ba4e4d89-dead-beef-c0fe-913bc57ff132\"))\n        self.assertFalse(EncoderScanner.match(b\"/Some/Path.extension\"))\n        self.assertFalse(EncoderScanner.match(b\"1-various+SYMBOLS\"))\n        self.assertFalse(EncoderScanner.match(string.digits.encode()))\n        self.assertFalse(EncoderScanner.match(string.ascii_letters.encode()))\n        self.assertFalse(EncoderScanner.match(string.ascii_lowercase.encode()))\n        self.assertFalse(EncoderScanner.match(string.ascii_uppercase.encode()))\n        self.assertFalse(EncoderScanner.match(string.printable.encode()))\n        self.assertFalse(EncoderScanner.match(b'A' * MAX_LINE_LENGTH + b\"E2e4\"))\n        self.assertFalse(EncoderScanner.match(b'a' * MAX_LINE_LENGTH + b\"E2e4\"))\n        self.assertFalse(EncoderScanner.match(b'0' * MAX_LINE_LENGTH + b\"E2e4\"))\n        self.assertFalse(EncoderScanner.match(b\"TooSh0rt\"))\n\n    def test_match_p(self):\n        self.assertTrue(\n            EncoderScanner.match(\n                b'\\xFF\\xFE\\x00X\\x00G\\x005\\x00n\\x00a\\x00X\\x00R\\x00f\\x00d\\x00G\\x009\\x00r\\x00Z\\x00W\\x004\\x00g\\x00P'\n                b'\\x00S\\x00A\\x00i\\x00Z\\x002\\x00l\\x00y\\x00Z\\x00W\\x009\\x00n\\x00a\\x00W\\x00N\\x00y\\x00Y\\x00W\\x00N'\n                b'\\x00r\\x00b\\x00G\\x00V\\x00j\\x00c\\x00m\\x00\\r\\x00\\n\\x00F\\x00j\\x00a\\x002\\x00x\\x00l\\x00M\\x00T\\x00I'\n                b'\\x00z\\x00M\\x00T\\x00U\\x002\\x00N\\x00z\\x00E\\x005\\x00M\\x00D\\x00E\\x00x\\x00M\\x00z\\x00Q\\x00x\\x00M\\x00z'\n                b'\\x00k\\x004\\x00M\\x00S\\x00J\\x00c\\x00b\\x00l\\x00x\\x00u\\x00C\\x00g\\x00=\\x00=\\x00\\r\\x00\\n\\x00\\r\\x00\\n'))\n        self.assertTrue(EncoderScanner.match(b\"E2e4\\n\\tnext line\"))\n        self.assertTrue(EncoderScanner.match(b\"E2e4a1++//==\"))\n"
  },
  {
    "path": "tests/deep_scanner/test_gzip_scanner.py",
    "content": "import unittest\n\nfrom credsweeper.deep_scanner.gzip_scanner import GzipScanner\n\n\nclass TestGzipScanner(unittest.TestCase):\n\n    def test_match_p(self):\n        self.assertTrue(GzipScanner.match(b'\\x1f\\x8b\\x08'))\n        self.assertTrue(GzipScanner.match(b'\\x1f\\x8b\\x08xxx'))\n\n    def test_match_n(self):\n        with self.assertRaises(AttributeError):\n            self.assertFalse(GzipScanner.match(None))\n        self.assertFalse(GzipScanner.match(b'\\x1f'))\n        self.assertFalse(GzipScanner.match(b'\\x1f\\x8bxxx'))\n        self.assertFalse(GzipScanner.match(b'\\x1f\\x8b\\x02'))\n"
  },
  {
    "path": "tests/deep_scanner/test_html_scanner.py",
    "content": "import unittest\n\nfrom credsweeper.deep_scanner.html_scanner import HtmlScanner\n\n\nclass TestHtmlScanner(unittest.TestCase):\n\n    def test_match_n(self):\n        self.assertFalse(HtmlScanner.match(b\"</html><html>\"))\n        with self.assertRaises(AttributeError):\n            HtmlScanner.match(None)\n\n    def test_match_p(self):\n        self.assertTrue(HtmlScanner.match(b\"<mxfile atr=0><table></table></mxfile>\"))\n"
  },
  {
    "path": "tests/deep_scanner/test_jclass_scanner.py",
    "content": "import base64\nimport io\nimport struct\nimport unittest\n\nfrom credsweeper.deep_scanner.jclass_scanner import JclassScanner\nfrom tests import AZ_DATA\n\nSAMPLE_B64 = \"\"\"\nyv66vgAAAEEAaQoAAgADBwAEDAAFAAYBABBqYXZhL2xhbmcvT2JqZWN0AQAGPGluaXQ+AQADKClWEgAAAAgMAAkACgEAA3J1bgEAFigpTGphdmEvbGFuZy9S\ndW5uYWJsZTsLAAwADQcADgwACQAGAQASamF2YS9sYW5nL1J1bm5hYmxlCQAQABEHABIMABMAFAEAEGphdmEvbGFuZy9TeXN0ZW0BAANvdXQBABVMamF2YS9p\nby9QcmludFN0cmVhbTsHABYBAAZTYW1wbGUKABgAGQcAGgwAGwAcAQATamF2YS9pby9QcmludFN0cmVhbQEAB3ByaW50bG4BAAQoWilWCgAYAB4MABsAHwEA\nBChDKVYIACEBACRiYWNlNGQxOS1iZWVmLWNhZmUtY29vMS05MTI5NDc0YmNkODEKABgAIwwAGwAkAQAVKExqYXZhL2xhbmcvU3RyaW5nOylWBQAAAAB3NhXZ\nCgAYACgMABsAKQEABChKKVYGQBdu4XWCSM4KABgALQwAGwAuAQAEKEQpVgoAFQADCgAVAA0IAAkBAAxKQVZBX0JPT0xFQU4BAAFaAQANQ29uc3RhbnRWYWx1\nZQMAAAABAQAJSkFWQV9DSEFSAQABQwMAAABYAQAJSkFWQV9CWVRFAQABQgMAAAB7AQAKSkFXQV9TSE9SVAEAAVMDAAABXgEACEpBVkFfSU5UAQABSQMAAIAA\nAQAJSkFWQV9MT05HAQABSgUAAAAAdzWUAAEACkpBVkFfRkxPQVQBAAFGBEBI9cMBAAtKQVZBX0RPVUJMRQEAAUQGQAW/CosEkZsBAAtKQVZBX1NUUklORwEA\nEkxqYXZhL2xhbmcvU3RyaW5nOwEABENvZGUBAA9MaW5lTnVtYmVyVGFibGUBAANsb2cBAARtYWluAQAWKFtMamF2YS9sYW5nL1N0cmluZzspVgEADGxhbWJk\nYSRydW4kMAEAClNvdXJjZUZpbGUBAAtTYW1wbGUuamF2YQEAEEJvb3RzdHJhcE1ldGhvZHMQAAYPBgBaCgAVAFsMAFQABg8GAF0KAF4AXwcAYAwAYQBiAQAi\namF2YS9sYW5nL2ludm9rZS9MYW1iZGFNZXRhZmFjdG9yeQEAC21ldGFmYWN0b3J5AQDMKExqYXZhL2xhbmcvaW52b2tlL01ldGhvZEhhbmRsZXMkTG9va3Vw\nO0xqYXZhL2xhbmcvU3RyaW5nO0xqYXZhL2xhbmcvaW52b2tlL01ldGhvZFR5cGU7TGphdmEvbGFuZy9pbnZva2UvTWV0aG9kVHlwZTtMamF2YS9sYW5nL2lu\ndm9rZS9NZXRob2RIYW5kbGU7TGphdmEvbGFuZy9pbnZva2UvTWV0aG9kVHlwZTspTGphdmEvbGFuZy9pbnZva2UvQ2FsbFNpdGU7AQAMSW5uZXJDbGFzc2Vz\nBwBlAQAlamF2YS9sYW5nL2ludm9rZS9NZXRob2RIYW5kbGVzJExvb2t1cAcAZwEAHmphdmEvbGFuZy9pbnZva2UvTWV0aG9kSGFuZGxlcwEABkxvb2t1cAAh\nABUAAgABAAwACQAaADIAMwABADQAAAACADUAGgA2ADcAAQA0AAAAAgA4ABoAOQA6AAEANAAAAAIAOwAaADwAPQABADQAAAACAD4AGgA/AEAAAQA0AAAAAgBB\nABoAQgBDAAEANAAAAAIARAAaAEYARwABADQAAAACAEgAGgBJAEoAAQA0AAAAAgBLABoATQBOAAEANAAAAAIAIAAFAAEABQAGAAEATwAAAB0AAQABAAAABSq3\nAAGxAAAAAQBQAAAABgABAAAABAABAAkABgABAE8AAAAtAAEAAgAAAA26AAcAAEwruQALAQCxAAAAAQBQAAAADgADAAAAEgAGABMADAAUAAEAUQAGAAEATwAA\nAFYAAwABAAAAKrIADwS2ABeyAA8QWLYAHbIADxIgtgAisgAPFAAltgAnsgAPFAAqtgAssQAAAAEAUAAAABoABgAAABcABwAYAA8AGQAXABoAIAAbACkAHAAJ\nAFIAUwABAE8AAAAnAAIAAQAAAAu7ABVZtwAvtgAwsQAAAAEAUAAAAAoAAgAAAB8ACgAgEAoAVAAGAAEATwAAACEAAgAAAAAACbIADxIxtgAisQAAAAEAUAAA\nAAYAAQAAABIAAwBVAAAAAgBWAFcAAAAMAAEAXAADAFgAWQBYAGMAAAAKAAEAZABmAGgAGQ==\n\"\"\"\n\n\nclass TestJclassScanner(unittest.TestCase):\n\n    def setUp(self):\n        self.maxDiff = None\n\n    def test_get_utf8_constants_n(self):\n        with self.assertRaises(AttributeError):\n            JclassScanner.get_utf8_constants(None)\n        with self.assertRaises(struct.error):\n            JclassScanner.get_utf8_constants(io.BytesIO(b''))\n        self.assertListEqual([], JclassScanner.get_utf8_constants(io.BytesIO(AZ_DATA)))\n\n    def test_get_utf8_constants_p(self):\n        data = base64.b64decode(SAMPLE_B64)\n        self.assertListEqual([\n            'java/lang/Object', '<init>', '()V', 'run', '()Ljava/lang/Runnable;', 'java/lang/Runnable',\n            'java/lang/System', 'out', 'Ljava/io/PrintStream;', 'Sample', 'java/io/PrintStream', 'println', '(Z)V',\n            '(C)V', 'bace4d19-beef-cafe-coo1-9129474bcd81', '(Ljava/lang/String;)V', '(J)V', '(D)V', 'JAVA_BOOLEAN',\n            'Z', 'ConstantValue', 'JAVA_CHAR', 'C', 'JAVA_BYTE', 'B', 'JAWA_SHORT', 'S', 'JAVA_INT', 'I', 'JAVA_LONG',\n            'J', 'JAVA_FLOAT', 'F', 'JAVA_DOUBLE', 'D', 'JAVA_STRING', 'Ljava/lang/String;', 'Code', 'LineNumberTable',\n            'log', 'main', '([Ljava/lang/String;)V', 'lambda$run$0', 'SourceFile', 'Sample.java', 'BootstrapMethods',\n            'java/lang/invoke/LambdaMetafactory', 'metafactory',\n            ('(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;'\n             'Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;'\n             ')Ljava/lang/invoke/CallSite;'), 'InnerClasses', 'java/lang/invoke/MethodHandles$Lookup',\n            'java/lang/invoke/MethodHandles', 'Lookup'\n        ], JclassScanner.get_utf8_constants(io.BytesIO(data[8:])))\n\n    def test_match_p(self):\n        # Valid Java class file signature (0xCAFEBABE)\n        self.assertTrue(JclassScanner.match(b\"\\xCA\\xFE\\xBA\\xBE\"))\n        self.assertTrue(JclassScanner.match(b\"\\xCA\\xFE\\xBA\\xBE\\x00\\x00\"))\n\n    def test_match_n(self):\n        # Wrong data type\n        with self.assertRaises(AttributeError):\n            JclassScanner.match(None)\n        with self.assertRaises(AttributeError):\n            JclassScanner.match(1)\n        # Too short\n        self.assertFalse(JclassScanner.match(b\"\"))\n        self.assertFalse(JclassScanner.match(b\"\\xCA\\xFE\\xBA\"))\n        # Wrong signature\n        self.assertFalse(JclassScanner.match(b\"\\xCA\\xFE\\xBA\\xBF\"))\n        self.assertFalse(JclassScanner.match(b\"\\xBE\\xBA\\xFE\\xCA\"))\n"
  },
  {
    "path": "tests/deep_scanner/test_jks_scanner.py",
    "content": "import unittest\n\nfrom credsweeper.deep_scanner.jks_scanner import JksScanner\n\n\nclass TestJksScanner(unittest.TestCase):\n\n    def test_match_p(self):\n        # Valid Java KeyStore signature\n        self.assertTrue(JksScanner.match(b\"\\xFE\\xED\\xFE\\xED\"))\n        self.assertTrue(JksScanner.match(b\"\\xFE\\xED\\xFE\\xED\\x00\\x00\"))\n\n    def test_match_n(self):\n        # Wrong data type\n        with self.assertRaises(AttributeError):\n            JksScanner.match(None)\n        with self.assertRaises(AttributeError):\n            JksScanner.match(1)\n        # Too short\n        self.assertFalse(JksScanner.match(b\"\"))\n        self.assertFalse(JksScanner.match(b\"\\xFE\\xED\\xFE\"))\n        # Wrong signature\n        self.assertFalse(JksScanner.match(b\"\\xFE\\xED\\xFE\\xEF\"))\n        self.assertFalse(JksScanner.match(b\"\\xED\\xFE\\xED\\xFE\"))\n"
  },
  {
    "path": "tests/deep_scanner/test_lzma_scanner.py",
    "content": "import unittest\n\nfrom credsweeper.deep_scanner.lzma_scanner import LzmaScanner\n\n\nclass TestLzmaScanner(unittest.TestCase):\n\n    def test_match_p(self):\n        # Valid LZMA signature (XZ format)\n        self.assertTrue(LzmaScanner.match(b\"\\xFD7zXZ\\x00\"))\n        # Valid LZMA signature (legacy format)\n        self.assertTrue(LzmaScanner.match(b\"\\x5D\\x00\\x00\"))\n        self.assertTrue(LzmaScanner.match(b\"\\xFD7zXZ\\x00\\x00\\x00\\x00\\x00\"))\n\n    def test_match_n(self):\n        # Wrong data type\n        with self.assertRaises(AttributeError):\n            LzmaScanner.match(None)\n        with self.assertRaises(AttributeError):\n            LzmaScanner.match(1)\n        # Too short\n        self.assertFalse(LzmaScanner.match(b\"\"))\n        self.assertFalse(LzmaScanner.match(b\"\\x5D\\x00\"))\n        # Wrong signature\n        self.assertFalse(LzmaScanner.match(b\"\\xFD7zXY\\x00\"))\n        self.assertFalse(LzmaScanner.match(b\"\\x5D\\x00\\x01\"))\n        self.assertFalse(LzmaScanner.match(b\"\\xFE7zXZ\\x00\"))\n"
  },
  {
    "path": "tests/deep_scanner/test_mxfile_scanner.py",
    "content": "import unittest\n\nfrom credsweeper.deep_scanner.mxfile_scanner import MxfileScanner\n\n\nclass TestMxfileScanner(unittest.TestCase):\n\n    def test_match_n(self):\n        self.assertFalse(MxfileScanner.match(b\"<mxfile>\"))\n        self.assertFalse(MxfileScanner.match(b\"</mxfile><mxfile>\"))\n        with self.assertRaises(AttributeError):\n            MxfileScanner.match(None)\n        with self.assertRaises(AttributeError):\n            MxfileScanner.match(1)\n\n    def test_match_p(self):\n        self.assertTrue(MxfileScanner.match(b\"<mxfile atr=0><table></table></mxfile>\"))\n"
  },
  {
    "path": "tests/deep_scanner/test_pdf_scanner.py",
    "content": "import unittest\n\nfrom credsweeper.deep_scanner.pdf_scanner import PdfScanner\n\n\nclass TestPdfScanner(unittest.TestCase):\n\n    def test_match_p(self):\n        self.assertTrue(PdfScanner.match(b'\\x25\\x50\\x44\\x46\\x2D'))\n        self.assertTrue(PdfScanner.match(b'%PDF-!'))\n\n    def test_match_n(self):\n        with self.assertRaises(AttributeError):\n            self.assertFalse(PdfScanner.match(None))\n        self.assertFalse(PdfScanner.match(b''))\n        self.assertFalse(PdfScanner.match(b'%PDF+'))\n"
  },
  {
    "path": "tests/deep_scanner/test_png_scanner.py",
    "content": "import base64\nimport unittest\n\nfrom credsweeper.deep_scanner.png_scanner import PngScanner\n\nsample_png_b64 = \"\"\"\niVBORw0KGgoAAAANSUhEUgAAAAgAAAAICAAAAADhZOFXAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAdnJLH8AAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUw\nAADqYAAAOpgAABdwnLpRPAAAACx0RVh0Q29tbWVudABlN2RiYTljMS1kZWFkLWJlZWYtY2FmZS02MTM5NDc0YmNmODKLJWKsAAAAEElEQVQI12P8zwABTAwU\nMQBJQQEPsgmdYgAAAABJRU5ErkJggg==\n\"\"\"\n\n\nclass TestPngScanner(unittest.TestCase):\n\n    def setUp(self):\n        self.maxDiff = None\n\n    def test_match_n(self):\n        with self.assertRaises(AttributeError):\n            PngScanner.match(None)\n        self.assertFalse(PngScanner.match(b''))\n\n    def test_match_p(self):\n        self.assertTrue(PngScanner.match(b'\\x89PNG\\r\\n\\x1a\\n'))\n        self.assertTrue(PngScanner.match(base64.b64decode(sample_png_b64)))\n\n    def test_yield_png_chunks_p(self):\n        self.assertListEqual([(114, 'PNG_TEXT:Comment', b'e7dba9c1-dead-beef-cafe-6139474bcf82')],\n                             list(PngScanner.yield_png_chunks(base64.b64decode(sample_png_b64))))\n"
  },
  {
    "path": "tests/deep_scanner/test_rtf_scanner.py",
    "content": "import unittest\n\nfrom credsweeper.deep_scanner.rtf_scanner import RtfScanner\n\nSIMPLE_SAMPLE = rb\"\"\"{\\rtf1\\ansi\\deff3\\adeflang1025\n{\\dbch\n\\u48708\\'3f\\u48128\\'3f\\u48264\\'3f\\u54840\\'3f}{\\loch\n:pR5!Db@}\n\\par }\"\"\"\n\n\nclass TestRtfScanner(unittest.TestCase):\n\n    def setUp(self):\n        self.maxDiff = None\n\n    def test_get_lines_n(self):\n        self.assertListEqual([''], RtfScanner.get_lines(r\"{\\rtf1}\"))\n\n    def test_get_lines_p(self):\n        self.assertListEqual(['비밀번호:pR5!Db@', ''], RtfScanner.get_lines(SIMPLE_SAMPLE.decode()))\n"
  },
  {
    "path": "tests/deep_scanner/test_sqlite3_scanner.py",
    "content": "import unittest\n\nfrom credsweeper.deep_scanner.sqlite3_scanner import Sqlite3Scanner\nfrom tests import SAMPLE_SQLITE\n\n\nclass TestSqlite3Scanner(unittest.TestCase):\n\n    def setUp(self):\n        self.maxDiff = None\n\n    def test_walk_n(self):\n        with self.assertRaises(TypeError):\n            list(Sqlite3Scanner.walk_sqlite(None))\n\n    def test_walk_p(self):\n        self.assertListEqual([('KEYS', {\n            'ID': -1,\n            'KEY': None\n        }),\n                              ('KEYS', {\n                                  'ID': 1,\n                                  'KEY': b'0\\x82\\x01=\\x02\\x01\\x00\\x02A\\x00\\xaf\\xa2\\x08\\xbf\\\\U\\xc2\\xb8`\\xa1'\n                                  b'z~(\\xe5\\x03\\x84\\xbas\\x10\\xf8;]\\xa1\\xb6\\xbd\\xf1\\xda8\\x1d>'\n                                  b'\\xf8\\x9c\\xd6\\x9e\\x9b\\xdf\\x8a.\\x01\\xa25s\\xae\\xb9\\t\\x8d\\xc1\\xc4\\x03O'\n                                  b'{\\xe4))\\xd5\\xb2\\xa9\\xfe\\xcc\\x18\\xaf\\xca\\x87g\\x02\\x03'\n                                  b'\\x01\\x00\\x01\\x02A\\x00\\x90P\\xc9uLN\\xdf\\xe8\\x96\\xe68\\xfb\\xcfh'\n                                  b'\\x96\\xe2\\x8a> \\x94\\x88[`\\x95\\x030\\xe6\\xc9\\xb3&Z+Q\\x14\\x80Y\\xb6L'\n                                  b\"O\\xff%-\\x93\\xca\\xf2\\xb0\\x0f\\xcc\\x9aQJ\\x03,'\\x86\\xca\\xab\\x87\"\n                                  b'\\xf9JY\\xc2\\xcfq\\x02!\\x00\\xd8\\xcd\\x0f\\xdft-0-\\xa9\\xed/_\\xa0\\xbf\\x96'\n                                  b'\\xdd\\xe9=\\x06\\xcb\\x8au\\x7fR\\xfb\\xf7M9\\xfb\\xae\\xe8Y\\x02!\\x00\\xcfcsB'\n                                  b'\\x9fc\\xba\\xf53\\xdd\\x95a\\x81\\xf7\\xab\\xd36\\xd6\\x94\\xbcS\\xe7gR'\n                                  b'\\x00\\\\\\xf0\\x01e\\x9e\\xf5\\xbf\\x02!\\x00\\xcd\\xf3W]\\xcd\\xaeS\\xb3=Vm\\x07i'\n                                  b'\\xdc7\\x04M\\xdaDG=\\x1b\\xcb=X\\xd0\\x9f\\xd32-\\x00\\xd9\\x02!\\x00\\xa9P'\n                                  b'W,\\x806\\x8a\\xcf_}\\xbbTu(@\\x16\\xdb\\x81\\x8a\\xc2\\xcayt\\xc7\\xe4\\xd5'\n                                  b'\\xfbx\\x18\\x80\\x13\\xbf\\x02!\\x00\\xcc\\x88\\xf9P\\xdc\\xdf\\x85ni\\x80\\x9c'\n                                  b'\\x0c\\x1f=F\\xfeq\\xfa\\x11\\xad%1)~\\xaeJ\\xadR\\x8aQ\\xd0\\x89'\n                              }),\n                              ('USERS', {\n                                  'ID': 1,\n                                  'PASSWORD': 'Dt1Js8m#1s',\n                                  'TOKEN': 'xoxa-FLYLIKEAGIREOGI-b1da04e31f',\n                                  'USER': '1d3e45d1-dead-beef-c0de-294622932701'\n                              }),\n                              ('USERS', {\n                                  'ID': 2,\n                                  'PASSWORD': 'password',\n                                  'TOKEN': '1d3e45d1deadbeefc0de29beda932701',\n                                  'USER': 'user'\n                              })], list(Sqlite3Scanner.walk_sqlite(SAMPLE_SQLITE.read_bytes())))\n"
  },
  {
    "path": "tests/deep_scanner/test_strings_scanner.py",
    "content": "import unittest\n\nfrom hypothesis import given, strategies\n\nfrom credsweeper.deep_scanner.strings_scanner import StringsScanner\n\n\nclass TestStringsScanner(unittest.TestCase):\n\n    def setUp(self):\n        self.maxDiff = None\n\n    @given(strategies.binary())\n    def test_get_lines_hypothesis_n(self, data):\n        self.assertIsNotNone(StringsScanner.get_enumerated_lines(data))\n\n    def test_get_lines_n(self):\n        self.assertListEqual([], StringsScanner.get_enumerated_lines(b''))\n        self.assertListEqual([], StringsScanner.get_enumerated_lines(b'\\x00\\xBE'))\n        self.assertListEqual([], StringsScanner.get_enumerated_lines(b'\\x9F\\xBEP\\xE3\\xb4W\\xA5:\\xF1R\\x9C00\\xcf\\x84t!'))\n        self.assertListEqual([], StringsScanner.get_enumerated_lines(b'\\x00\\x01\\x02PW:R00t\\x0D\\x00'))\n\n    def test_get_lines_p(self):\n        self.assertListEqual([(3, \"PW:R00t!\")], StringsScanner.get_enumerated_lines(b'\\x00\\x01\\x02PW:R00t!\\x0D\\x00'))\n        self.assertListEqual([(0, \"PW:R00t!\")], StringsScanner.get_enumerated_lines(b'PW:R00t!\\x0D\\x00'))\n        self.assertListEqual([(4, \"PW:R00t!\")], StringsScanner.get_enumerated_lines(b'\\x00\\x01\\x02\\x03PW:R00t!'))\n        self.assertListEqual(\n            [(9, 'Salt:CwXD\\t3dsd'), (24, 'Token:SOMETEST')],\n            StringsScanner.get_enumerated_lines(b'\\x9F\\xBEP\\xE3\\xb4W\\xA5:\\xFFSalt:CwXD\\x093dsd\\nToken:SOMETEST\\0'))\n"
  },
  {
    "path": "tests/deep_scanner/test_struct_scanner.py",
    "content": "import unittest\n\nfrom credsweeper.app import APP_PATH\nfrom credsweeper.common.constants import MAX_LINE_LENGTH, Severity\nfrom credsweeper.config.config import Config\nfrom credsweeper.deep_scanner.deep_scanner import DeepScanner\nfrom credsweeper.file_handler.struct_content_provider import StructContentProvider\nfrom credsweeper.scanner.scanner import Scanner\nfrom credsweeper.utils.util import Util\n\n\nclass TestStructScanner(unittest.TestCase):\n\n    def setUp(self):\n        self.maxDiff = None\n        # default config\n        config = Util.json_load(APP_PATH / \"secret\" / \"config.json\")\n        config[\"pedantic\"] = False\n        config[\"depth\"] = 0\n        config[\"doc\"] = False\n        config[\"use_filters\"] = True\n        config[\"find_by_ext\"] = False\n        config[\"size_limit\"] = None\n        config[\"severity\"] = Severity.LOW\n        self.config = Config(config)\n        self.scanner = DeepScanner(config=self.config, scanner=Scanner(self.config, None))\n\n    def test_scan_n(self):\n        provider = StructContentProvider(None)\n        self.assertListEqual([], self.scanner.structure_scan(provider, 3, MAX_LINE_LENGTH))\n\n    def test_scan_p(self):\n        sample = {\n            'API': '\\t\\t\\t   !!!   \\r\\n',  # strip does small value\n            'aUtH': b'\\t\\t\\t   !!!   \\r\\n',  # bytes are not stripped,\n            'dummy': None,\n            'self': self,\n            'Certificate': 3.14,\n            'cReDeNtIaL': 42,\n            'PASSWORD': 'Dt1Js8m#1s',\n            'Nonce': b'9jY*g76f65D4d5rdy',\n            'Key': 'MII5cCI6NiIsInRIkpXV',\n            'salt': b\"\\t'\\xDE\\xAD\\xBE\\xEF,1\\012\\0\",\n            'key': 'Token',\n            'value': '\\t-dead-beef-c0de-\\n',\n        }\n        provider = StructContentProvider(sample)\n        self.assertListEqual(\n            [('Auth', 'aUtH', '\\\\t\\\\t\\\\t   !!!   \\\\r\\\\n', \"aUtH = b'\\\\t\\\\t\\\\t   !!!   \\\\r\\\\n'\"),\n             ('Key', 'Key', 'MII5cCI6NiIsInRIkpXV', \"Key = 'MII5cCI6NiIsInRIkpXV'\"),\n             ('Nonce', 'Nonce', \"9jY*g76f65D4d5rdy\", \"Nonce = b'9jY*g76f65D4d5rdy'\"),\n             ('Password', 'PASSWORD', 'Dt1Js8m#1s', \"PASSWORD = 'Dt1Js8m#1s'\"),\n             ('Salt', 'salt', \"\\\\t\\'\\\\xde\\\\xad\\\\xbe\\\\xef,1\\\\n\\\\x00\", 'salt = b\"\\\\t\\'\\\\xde\\\\xad\\\\xbe\\\\xef,1\\\\n\\\\x00\"'),\n             ('Token', 'Token', '-dead-beef-c0de-', \"Token = '-dead-beef-c0de-'\")],\n            sorted([(x.rule_name, x.line_data_list[0].variable, x.line_data_list[0].value, x.line_data_list[0].line)\n                    for x in self.scanner.structure_scan(provider, 3, MAX_LINE_LENGTH)]))\n"
  },
  {
    "path": "tests/deep_scanner/test_tar_scanner.py",
    "content": "import base64\nimport unittest\nimport zlib\n\nfrom credsweeper.deep_scanner.tar_scanner import TarScanner\n\n\nclass TestTarScanner(unittest.TestCase):\n\n    def test_match_p(self):\n        # there is 10240 bytes of simple tar file\n        tar_zlib_base64 = (b\"eJztzzEOwjAQBMCreYWfYIfEfk9eEMmY/2NRUoAoIoQ002xxW+yNvcfZ8lTr+szpNac1ylaWVuqWW41c8tKukfLpy6\"\n                           b\"b7bew9pejHMd71Pt3/1Hz+8usNAAAAAAAAAAAAfO8BVeUSWg==\")\n        # there is a tar file with single file and without compression\n        data = zlib.decompress(base64.b64decode(tar_zlib_base64))\n        self.assertTrue(TarScanner.match(data))\n\n    def test_match_n(self):\n        # Wrong data type\n        with self.assertRaises(TypeError):\n            TarScanner.match(None)\n        with self.assertRaises(TypeError):\n            TarScanner.match(1)\n        # Too short\n        self.assertFalse(TarScanner.match(b\"\"))\n        self.assertFalse(TarScanner.match(b\"\\x00\" * 100))\n        # Wrong magic\n        tar_data = b\"\\x00\" * 512\n        tar_data = tar_data[:257] + b\"wrong!\" + tar_data[263:]\n        self.assertFalse(TarScanner.match(tar_data))\n"
  },
  {
    "path": "tests/deep_scanner/test_tmx_scanner.py",
    "content": "import unittest\n\nfrom credsweeper.deep_scanner.tmx_scanner import TmxScanner\n\n\nclass TestTmxScanner(unittest.TestCase):\n\n    def test_match_p(self):\n        # Valid TMX format with ThreatModel tags\n        tmx_data = b\"<ThreatModel>Some content</ThreatModel>\"\n        self.assertTrue(TmxScanner.match(tmx_data))\n\n        # Valid TMX format with KnowledgeBase tags\n        tmx_data2 = b\"<KnowledgeBase>Some content</KnowledgeBase>\"\n        self.assertTrue(TmxScanner.match(tmx_data2))\n\n        # TMX format with additional content\n        tmx_data3 = b\"Some prefix <ThreatModel>content</ThreatModel> some suffix\"\n        self.assertTrue(TmxScanner.match(tmx_data3))\n\n    def test_match_n(self):\n        # Wrong data type\n        with self.assertRaises(AttributeError):\n            TmxScanner.match(None)\n        with self.assertRaises(AttributeError):\n            TmxScanner.match(1)\n        # Missing or incomplete tags\n        self.assertFalse(TmxScanner.match(b\"<ThreatModel>\"))\n        self.assertFalse(TmxScanner.match(b\"</ThreatModel>\"))\n        self.assertFalse(TmxScanner.match(b\"<KnowledgeBase>\"))\n        self.assertFalse(TmxScanner.match(b\"</KnowledgeBase>\"))\n        # Wrong order\n        self.assertFalse(TmxScanner.match(b\"</ThreatModel><ThreatModel>\"))\n        self.assertFalse(TmxScanner.match(b\"</KnowledgeBase><KnowledgeBase>\"))\n        # Different tags\n        self.assertFalse(TmxScanner.match(b\"<OtherTag>content</OtherTag>\"))\n        self.assertFalse(TmxScanner.match(b\"<xml>content</xml>\"))\n"
  },
  {
    "path": "tests/deep_scanner/test_xml_scanner.py",
    "content": "import unittest\n\nfrom credsweeper.common.constants import MAX_LINE_LENGTH\nfrom credsweeper.deep_scanner.xml_scanner import XmlScanner\n\n\nclass TestXmlScanner(unittest.TestCase):\n\n    def test_match_n(self):\n        with self.assertRaises(TypeError):\n            XmlScanner.match(None)\n        self.assertFalse(XmlScanner.match(b''))\n        self.assertFalse(XmlScanner.match(b\"!<>\"))\n        self.assertFalse(XmlScanner.match(b\"</onlyClosingTagIsFail>\"))\n        self.assertFalse(XmlScanner.match(b\"</p><p>\"))\n        self.assertFalse(XmlScanner.match(b\"<br />\"))\n        self.assertFalse(\n            XmlScanner.match(bytearray(b'\\n' * MAX_LINE_LENGTH) + bytearray(b\"    <xml>far far away</xml>\")))\n        self.assertFalse(XmlScanner.match(b\"<html> unmatched tags </xml>\"))\n        self.assertFalse(XmlScanner.match(b\"<?xml version='1.0' encoding='utf-8'?>\"))\n\n    def test_match_p(self):\n        self.assertTrue(XmlScanner.match(b\"<?xml version='1.0' encoding='utf-8'?><xml> matched tags </xml>\"))\n        self.assertTrue(XmlScanner.match(b\"<mxfile atr=0><table></table></mxfile>\"))\n        self.assertTrue(\n            XmlScanner.match(\n                bytearray(b'\\n<xml> far far away ') + bytearray(b'\\n' * MAX_LINE_LENGTH) +\n                bytearray(b' long long ago </xml>')))\n"
  },
  {
    "path": "tests/deep_scanner/test_zip_scanner.py",
    "content": "import unittest\n\nfrom credsweeper.deep_scanner.zip_scanner import ZipScanner\nfrom tests import AZ_DATA\n\n\nclass TestZipScanner(unittest.TestCase):\n\n    def test_match_p(self):\n        self.assertTrue(ZipScanner.match(b'PK\\003\\004'))\n        # empty archive - no files\n        self.assertTrue(ZipScanner.match(b'PK\\x05\\x06\\x00\\x00'))\n        # not supported spanned archive (multi volume)\n        self.assertFalse(ZipScanner.match(b'PK\\x07\\x08'))\n\n    def test_match_n(self):\n        # wrong data type\n        with self.assertRaises(AttributeError):\n            self.assertFalse(ZipScanner.match(None))\n        with self.assertRaises(AttributeError):\n            self.assertFalse(ZipScanner.match(1))\n        # few bytes than required\n        self.assertFalse(ZipScanner.match(b''))\n        self.assertFalse(ZipScanner.match(b'P'))\n        self.assertFalse(ZipScanner.match(b'PK'))\n        self.assertFalse(ZipScanner.match(b'PK\\003'))\n        # wrong signature\n        self.assertFalse(ZipScanner.match(b'PK\\003\\003'))\n        # plain text data\n        self.assertFalse(ZipScanner.match(AZ_DATA))\n"
  },
  {
    "path": "tests/deep_scanner/test_zlib_scanner.py",
    "content": "import contextlib\nimport itertools\nimport random\nimport sys\nimport unittest\nimport zlib\n\nimport pytest\nfrom hypothesis import given, strategies\n\nfrom credsweeper.common.constants import MAX_LINE_LENGTH, CHUNK_SIZE, CHUNK_STEP_SIZE\nfrom credsweeper.deep_scanner.zlib_scanner import ZlibScanner\nfrom tests import AZ_DATA\n\nZLIB_DATA = zlib.compress(AZ_DATA)\n\n\nclass TestZlibScanner(unittest.TestCase):\n\n    def setUp(self):\n        self.maxDiff = None\n\n    @given(strategies.binary())\n    def test_match_hypothesis_n(self, data):\n        # too hard to find random data which looks like zlib compressed data\n        self.assertFalse(ZlibScanner.match(data))\n\n    def test_match_p(self):\n        self.assertTrue(ZlibScanner.match(b'(S)Ljava/lang/Short;'))\n        self.assertTrue(ZlibScanner.match(ZLIB_DATA))\n        self.assertTrue(ZlibScanner.match(b\"XG5FAKE\"))\n\n    @given(strategies.binary())\n    def test_decompress_hypothesis_n(self, data):\n        # any data are over negative test limit\n        with self.assertRaises(ValueError):\n            ZlibScanner.decompress(-1, data)\n\n    def test_decompress_static_n(self):\n        with self.assertRaises(zlib.error):\n            ZlibScanner.decompress(limit=MAX_LINE_LENGTH, data=AZ_DATA)\n        with self.assertRaises(ValueError):\n            ZlibScanner.decompress(limit=MAX_LINE_LENGTH, data=ZLIB_DATA + AZ_DATA)\n        with self.assertRaises(ValueError):\n            ZlibScanner.decompress(limit=10, data=b\"XG5FAKE\")\n        with self.assertRaises(ValueError):\n            ZlibScanner.decompress(limit=MAX_LINE_LENGTH, data=ZLIB_DATA[:-1])\n        with self.assertRaises(ValueError):\n            ZlibScanner.decompress(limit=1, data=ZLIB_DATA)\n\n    def test_decompress_static_p(self):\n        self.assertEqual(AZ_DATA, ZlibScanner.decompress(limit=MAX_LINE_LENGTH, data=ZLIB_DATA))\n\n    # todo: fix when python 3.10 support ends\n    @pytest.mark.skipif(10 == sys.version_info.minor, reason=\"zlib.compress was changed in 3.11\")\n    def test_decompress_n(self):\n        self.assertTrue(CHUNK_STEP_SIZE < CHUNK_SIZE < MAX_LINE_LENGTH)\n        total_counter = check_counter = 0\n        for level, wbits in itertools.product(list(range(10)), list(range(8, 32))):\n            total_counter += 1\n            data = random.randbytes(random.randint(CHUNK_SIZE, MAX_LINE_LENGTH))\n            try:\n                # check combinations which are valid\n                zlib_data = zlib.compress(data, level=level, wbits=wbits)\n            except zlib.error:\n                continue\n            with self.assertRaises((ValueError, zlib.error)):\n                check_counter += 1\n                ZlibScanner.decompress(CHUNK_STEP_SIZE, zlib_data)\n        self.assertTrue(100 < check_counter < total_counter)\n\n    # todo: fix when python 3.10 support ends\n    @pytest.mark.skipif(10 == sys.version_info.minor, reason=\"zlib.compress was changed in 3.11\")\n    def test_decompress_p(self):\n        total_counter = check_counter = 0\n        for level, wbits in itertools.product(list(range(10)), list(range(8, 32))):\n            total_counter += 1\n            data = random.randbytes(random.randint(0, MAX_LINE_LENGTH))\n            with contextlib.suppress(zlib.error):\n                # check combinations which are valid\n                zlib_data = zlib.compress(data, level=level, wbits=wbits)\n                self.assertEqual(data, ZlibScanner.decompress(MAX_LINE_LENGTH, zlib_data), str((level, wbits)))\n                self.assertTrue(ZlibScanner.match(zlib_data))\n                check_counter += 1\n        self.assertTrue(10 < check_counter < total_counter)\n"
  },
  {
    "path": "tests/file_handler/__init__.py",
    "content": ""
  },
  {
    "path": "tests/file_handler/test_byte_content_provider.py",
    "content": "import os\nfrom typing import List\n\nimport pytest\n\nfrom credsweeper.file_handler.analysis_target import AnalysisTarget\nfrom credsweeper.file_handler.byte_content_provider import ByteContentProvider\nfrom credsweeper.utils.util import Util\nfrom tests import SAMPLES_FILES_COUNT, SAMPLES_PATH, AZ_DATA\nfrom tests.filters.conftest import DUMMY_DESCRIPTOR\n\n\nclass TestByteContentProvider:\n\n    @pytest.mark.parametrize(\"lines_as_bytes,lines\",\n                             [(b\"line one\\npassword='in_line_2'\", [\"line one\", \"password='in_line_2'\"])])\n    def test_get_analysis_target_p(self, lines_as_bytes: bytes, lines: List[str]) -> None:\n        \"\"\"Evaluate that lines data correctly extracted from file\"\"\"\n        content_provider = ByteContentProvider(lines_as_bytes)\n        analysis_targets = [x for x in content_provider.yield_analysis_target(0)]\n\n        expected_target = AnalysisTarget(0, lines, [x for x in range(len(lines))], DUMMY_DESCRIPTOR)\n\n        assert len(analysis_targets) == 2\n\n        target = analysis_targets[0]\n        assert target.line == expected_target.line\n\n    def test_byte_content_provider_p(self) -> None:\n        files_counter = 0\n        for dir_path, _, filenames in os.walk(SAMPLES_PATH):\n            filenames.sort()\n            for filename in filenames:\n                files_counter += 1\n                file_path = os.path.join(dir_path, filename)\n                util_text = Util.read_file(file_path)\n                with open(file_path, 'rb') as f:\n                    bin_data = f.read()\n                provider = ByteContentProvider(bin_data)\n                assert util_text == provider.lines\n        assert files_counter == SAMPLES_FILES_COUNT\n\n    def test_free_n(self) -> None:\n        # free without cached properties invocation\n        provider1 = ByteContentProvider(AZ_DATA)\n        provider1.free()\n        assert provider1.data is None\n        assert len(provider1.lines) == 0\n        provider1.free()\n        # free after the invocation\n        provider2 = ByteContentProvider(AZ_DATA)\n        assert AZ_DATA == provider2.data\n        assert len(provider2.lines) == 1\n        provider2.free()\n        assert provider2.data is None\n        assert len(provider2.lines) == 0\n        provider2.free()\n        provider2.free()\n        assert provider2.data is None\n        assert len(provider2.lines) == 0\n"
  },
  {
    "path": "tests/file_handler/test_data_content_provider.py",
    "content": "import json\nimport os\nimport tempfile\nimport unittest\nimport zipfile\nfrom typing import List\nfrom unittest.mock import patch\n\nfrom credsweeper.app import CredSweeper\nfrom credsweeper.credentials.candidate import Candidate\nfrom credsweeper.file_handler.data_content_provider import DataContentProvider\nfrom credsweeper.file_handler.files_provider import FilesProvider\nfrom tests import SAMPLES_FILES_COUNT, SAMPLES_PATH, AZ_DATA, SAMPLE_ZIP\nfrom tests.file_handler.zip_bomb_1 import zb1\nfrom tests.file_handler.zip_bomb_2 import zb2\n\n\nclass DataContentProviderTest(unittest.TestCase):\n    WRONG_ZIP_FILE = b\"PK\\003\\004_WRONG_ZIP_FILE\"\n\n    def test_wrong_xml_n(self) -> None:\n        content_provider1 = DataContentProvider(data=b\"\")\n        with patch('logging.Logger.debug') as mocked_logger:\n            self.assertFalse(content_provider1.represent_as_xml())\n            mocked_logger.assert_not_called()\n        content_provider2 = DataContentProvider(data=AZ_DATA)\n        with patch('logging.Logger.debug') as mocked_logger:\n            self.assertFalse(content_provider2.represent_as_xml())\n            mocked_logger.assert_called_with(\"Weak data to parse as XML\")\n        content_provider3 = DataContentProvider(data=b\"</wrong XML text>\")\n        with patch('logging.Logger.debug') as mocked_logger:\n            self.assertFalse(content_provider3.represent_as_xml())\n            mocked_logger.assert_called()\n\n    def test_scan_wrong_provider_n(self) -> None:\n        content_provider = DataContentProvider(b\"dummy\", \"dummy\")\n        cs = CredSweeper(json_filename=\"dummy\")\n        with self.assertRaises(NotImplementedError):\n            cs.file_scan(content_provider)\n\n    def test_scan_bottom_reach_n(self) -> None:\n        content_provider = DataContentProvider(self.WRONG_ZIP_FILE, \"dummy\")\n        cs = CredSweeper(json_filename=\"dummy\")\n        self.assertEqual(0, len(cs.deep_scanner.recursive_scan(content_provider, 0, 1 << 16)))\n\n    def test_scan_wrong_zip_data_n(self) -> None:\n        content_provider = DataContentProvider(self.WRONG_ZIP_FILE, \"dummy\")\n        cs = CredSweeper(json_filename=\"dummy\")\n        self.assertEqual(0, len(cs.deep_scanner.recursive_scan(content_provider, 1, 1 << 16)))\n\n    def test_scan_empty_zip_n(self) -> None:\n        content_provider = DataContentProvider(\n            b'PK\\x05\\x06\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00', \"dummy\")\n        cs = CredSweeper(json_filename=\"dummy\")\n        self.assertEqual(0, len(cs.deep_scanner.recursive_scan(content_provider, 1, 1 << 16)))\n\n    def test_scan_zipfile_n(self) -> None:\n        with tempfile.TemporaryDirectory() as tmp_dir:\n            report_path = os.path.join(tmp_dir, \"report.json\")\n            file_path = os.path.join(tmp_dir, \"test_n.zip\")\n            self.assertFalse(os.path.exists(file_path))\n            open(file_path, \"wb\").write(self.WRONG_ZIP_FILE)\n\n            content_provider = FilesProvider([tmp_dir])\n            cs = CredSweeper(json_filename=report_path, depth=1)\n\n            file_extractors = content_provider.get_scannable_files(cs.config)\n            self.assertEqual(1, len(file_extractors))\n            scan_results = cs.file_scan(file_extractors[0])\n            self.assertEqual(0, len(scan_results))\n            self.assertFalse(os.path.isfile(report_path))\n\n    def test_scan_zipfile_p(self) -> None:\n        # create new zip archive with all samples\n        with tempfile.TemporaryDirectory() as tmp_dir:\n            report_path_1 = os.path.join(tmp_dir, \"report_1.json\")\n            report_path_2 = os.path.join(tmp_dir, \"report_2.json\")\n\n            cs = CredSweeper(json_filename=report_path_1, find_by_ext=True, depth=7)\n\n            # calculate samples\n            content_provider = FilesProvider([SAMPLES_PATH])\n            file_extractors = content_provider.get_scannable_files(cs.config)\n            self.assertLess(1, len(file_extractors))\n            samples_scan_results: List[Candidate] = []\n            for file_extractor in file_extractors:\n                samples_scan_results.extend(cs.file_scan(file_extractor))\n            len_samples_scan_results = len(samples_scan_results)\n            self.assertLess(1, len_samples_scan_results)\n            cs.credential_manager.set_credentials(samples_scan_results)\n            cs.post_processing()\n            cs.export_results()\n\n            self.assertTrue(os.path.isfile(report_path_1))\n            with open(report_path_1) as f:\n                report = json.load(f)\n            len_samples_report = len(report)\n            self.assertTrue(1 < len_samples_report < len_samples_scan_results)\n\n            # change the report file name\n            cs.json_filename = report_path_2\n\n            # clean credentials to test zip\n            cs.credential_manager.candidates.clear()\n            self.assertEqual(0, cs.credential_manager.len_credentials())\n\n            # use the same approach but with single zip file which is made from the samples\n            zip_file_path = os.path.join(tmp_dir, \"test_p.zip\")\n            self.assertFalse(os.path.exists(zip_file_path))\n            samples_file_count = 0\n            with zipfile.ZipFile(zip_file_path, \"a\", zipfile.ZIP_DEFLATED, compresslevel=9) as zip_file:\n                for dirpath, dirnames, filenames in os.walk(SAMPLES_PATH):\n                    for filename in filenames:\n                        filename_in_zip = f\"{samples_file_count}/{filename}\" if samples_file_count else filename\n                        with zip_file.open(filename_in_zip, \"w\") as output_file:\n                            with open(os.path.join(dirpath, filename), \"rb\") as input_file:\n                                output_file.write(input_file.read())\n                                samples_file_count += 1\n            self.assertEqual(SAMPLES_FILES_COUNT, samples_file_count)\n            content_provider = FilesProvider([zip_file_path])\n            file_extractors = content_provider.get_scannable_files(cs.config)\n            self.assertEqual(1, len(file_extractors))\n            # single extractor\n            zip_scan_results = cs.file_scan(file_extractors[0])\n            # zip scan is used deep scan for source files too\n            # so there might be a delta, because samples have tricky cases\n            self.assertAlmostEqual(len_samples_scan_results, len(zip_scan_results), delta=3)\n\n            cs.credential_manager.set_credentials(zip_scan_results)\n            cs.post_processing()\n            cs.export_results()\n\n            self.assertTrue(os.path.isfile(report_path_1))\n            with open(report_path_1) as f:\n                report = json.load(f)\n            len_samples_report = len(report)\n            self.assertTrue(1 < len_samples_report < len_samples_scan_results)\n\n    def test_scan_zipfile_size_limit_n(self) -> None:\n        cs = CredSweeper()\n        content_provider = DataContentProvider(open(SAMPLE_ZIP, \"rb\").read(), SAMPLE_ZIP)\n        self.assertEqual(0, len(cs.deep_scanner.recursive_scan(content_provider, 3, 4)))\n\n    def test_scan_zipfile_size_limit_p(self) -> None:\n        cs = CredSweeper()\n        content_provider = DataContentProvider(open(SAMPLE_ZIP, \"rb\").read(), SAMPLE_ZIP)\n        self.assertEqual(1, len(cs.deep_scanner.recursive_scan(content_provider, 3, 1024)))\n\n    def test_scan_zipfile_bomb_1_n(self) -> None:\n        # create with depth to remove *.zip extension\n        cs = CredSweeper(depth=2)\n        content_provider = DataContentProvider(zb1, \"zip_bomb_1\")\n        res_1 = cs.deep_scanner.recursive_scan(content_provider, 2, 1 << 30)\n        self.assertEqual(0, len(res_1))\n\n    def test_scan_zipfile_bomb_2_n(self) -> None:\n        # create with depth to remove *.zip extension\n        cs = CredSweeper(depth=4)\n        content_provider = DataContentProvider(zb2, \"zip_bomb_2\")\n        res_2 = cs.deep_scanner.recursive_scan(content_provider, 16, 1 << 16)\n        self.assertEqual(0, len(res_2))\n\n    def test_free_n(self) -> None:\n        provider = DataContentProvider(AZ_DATA)\n        self.assertEqual(AZ_DATA, provider.data)\n        provider.free()\n        self.assertIsNone(provider.data)\n        provider.free()\n        provider.free()\n"
  },
  {
    "path": "tests/file_handler/test_diff_content_provider.py",
    "content": "import unittest\n\nfrom credsweeper.common.constants import DiffRowType\nfrom credsweeper.file_handler.analysis_target import AnalysisTarget\nfrom credsweeper.file_handler.descriptor import Descriptor\nfrom credsweeper.file_handler.diff_content_provider import DiffContentProvider, DiffDict, DiffRowData\n\n\nclass TestDiffContentProvider(unittest.TestCase):\n\n    def test_get_analysis_target_p(self) -> None:\n        \"\"\"Evaluate that added diff lines data correctly added to change_numbers\"\"\"\n        file_path = \"dumy.file\"\n        diff = [\n            DiffDict({\n                \"old\": None,\n                \"new\": 2,\n                \"line\": \"new line\",\n                \"hunk\": 1\n            }),\n            DiffDict({\n                \"old\": 2,\n                \"new\": None,\n                \"line\": \"moved line\",\n                \"hunk\": 1\n            })\n        ]\n        content_provider = DiffContentProvider(file_path, DiffRowType.ADDED, diff)\n\n        analysis_targets = [x for x in content_provider.yield_analysis_target(0)]\n\n        all_lines = [\"\", \"new line\", \"moved line\"]\n        expected_target = AnalysisTarget(1, all_lines, [x for x in range(len(all_lines))],\n                                         Descriptor(file_path, \".file\", DiffRowType.ADDED.value))\n\n        self.assertEqual(1, len(analysis_targets))\n\n        target = analysis_targets[0]\n        self.assertEqual(expected_target.line, target.line)\n\n    def test_get_analysis_target_n(self) -> None:\n        \"\"\"Evaluate that deleted diff lines data correctly filtered for added change type\"\"\"\n        file_path = \"dumy.file\"\n        diff = [\n            DiffDict({\n                \"old\": 2,\n                \"new\": None,\n                \"line\": \"new line\",\n                \"hunk\": 1\n            }),\n            DiffDict({\n                \"old\": 3,\n                \"new\": None,\n                \"line\": \"moved line\",\n                \"hunk\": 1\n            })\n        ]\n        content_provider = DiffContentProvider(file_path, DiffRowType.ADDED, diff)\n\n        analysis_targets = [x for x in content_provider.yield_analysis_target(0)]\n\n        self.assertEqual(0, len(analysis_targets))\n\n    def test_parse_lines_data_p(self) -> None:\n        \"\"\"Evaluate that added diff lines data correctly added to change_numbers\"\"\"\n        lines_data = [DiffRowData(DiffRowType.ADDED, 2, \"new line\")]\n\n        change_numbs, _all_lines = DiffContentProvider.parse_lines_data(DiffRowType.ADDED, lines_data)\n\n        expected_numbs = [2]\n\n        self.assertListEqual(expected_numbs, change_numbs)\n\n    def test_parse_lines_data_n(self) -> None:\n        \"\"\"Evaluate that deleted diff lines data correctly filtered for added change type\"\"\"\n        lines_data = [DiffRowData(DiffRowType.DELETED, 2, \"old line\")]\n\n        change_numbs, _all_lines = DiffContentProvider.parse_lines_data(DiffRowType.ADDED, lines_data)\n\n        expected_numbs = []\n\n        self.assertListEqual(expected_numbs, change_numbs)\n\n    def test_free_n(self) -> None:\n        diff = [\n            DiffDict({\n                \"old\": 2,\n                \"new\": None,\n                \"line\": \"new line\",\n                \"hunk\": 1\n            }),\n            DiffDict({\n                \"old\": 3,\n                \"new\": None,\n                \"line\": \"moved line\",\n                \"hunk\": 1\n            })\n        ]\n        provider = DiffContentProvider(\"file_path\", DiffRowType.ADDED, diff)\n        self.assertEqual(2, len(provider.diff))\n        provider.free()\n        self.assertEqual(0, len(provider.diff))\n        provider.free()\n        provider.free()\n\n    def test_data_n(self) -> None:\n        with self.assertRaises(NotImplementedError):\n            _ = DiffContentProvider(\"file_path\", DiffRowType.ADDED, []).data\n"
  },
  {
    "path": "tests/file_handler/test_file_path_extractor.py",
    "content": "import os.path\nimport re\nimport tempfile\nimport unittest\nfrom typing import List\nfrom unittest import mock\n\nimport git\nfrom humanfriendly import parse_size\n\nfrom credsweeper.config.config import Config\nfrom credsweeper.file_handler.file_path_extractor import FilePathExtractor\nfrom tests import AZ_STRING\n\n\nclass TestFilePathExtractor(unittest.TestCase):\n\n    def setUp(self):\n        config_dict = {\n            \"size_limit\": None,\n            \"find_by_ext\": False,\n            \"find_by_ext_list\": [],\n            \"doc\": False,\n            \"pedantic\": False,\n            \"depth\": 0,\n            \"exclude\": {\n                \"path\": [],\n                \"pattern\": [],\n                \"containers\": [],\n                \"documents\": [],\n                \"extension\": []\n            },\n            \"source_ext\": [],\n            \"source_quote_ext\": [],\n            \"bruteforce_list\": [],\n            \"check_for_literals\": [],\n            \"use_filters\": False,\n            \"line_data_output\": [],\n            \"candidate_output\": [],\n            \"max_password_value_length\": 0,\n            \"max_url_cred_value_length\": 0,\n        }\n        self.config = Config(config_dict)\n\n        # excluded always not_allowed_path_pattern\n        self.paths_not = [\"dummy.css\", \"tmp/dummy.css\", \"c:\\\\temp\\\\dummy.css\"]\n        # pattern\n        self.paths_reg = [\"tmp/Magic/dummy.Number\", \"/tmp/log/MagicNumber.txt\"]\n        # \"/.git/\"\n        self.paths_git = [\"C:\\\\.git\\\\dummy\", \"./.git/dummy.sample\", \"~/.git\\\\dummy.txt\"]\n        # not excluded\n        self.paths_src = [\"dummy.py\", \"/tmp/dummy.py\", \"tmp/dummy.py\", \"C:\\\\dummy.py\", \"temp\\\\dummy.py\"]\n        # not excluded when --depth are set\n        self.paths_pak = [\"dummy.gz\", \"/tmp/dummy.gz\", \"tmp/dummy.gz\", \"C:\\\\dummy.gz\", \"temp\\\\dummy.gz\"]\n        # not excluded when --doc or --depth are set\n        self.paths_doc = [\"dummy.pdf\", \"/tmp/dummy.pdf\", \"tmp/dummy.pdf\", \"C:\\\\dummy.pdf\", \"temp\\\\dummy.pdf\"]\n        # extension to be excluded always\n        self.paths_ext = [\"dummy.so\", \"dummy.so\", \"/tmp/dummy.so\", \"tmp/dummy.so\", \"C:\\\\dummy.so\", \"temp\\\\dummy.so\"]\n\n    def tearDown(self):\n        del self.config\n\n    def test_apply_gitignore_p(self) -> None:\n        \"\"\"Evaluate that code files would be included after filtering with .gitignore\"\"\"\n        files = [\"file.py\", \"src/file.py\", \"src/dir/file.py\"]\n        filtered_files = FilePathExtractor.apply_gitignore(files)\n        self.assertSetEqual(set(files), set(filtered_files))\n\n    def test_apply_gitignore_n(self) -> None:\n        \"\"\"Evaluate that .gitignore correctly filters out files from project\"\"\"\n        with tempfile.TemporaryDirectory() as tmp_dir:\n            git.Repo.init(tmp_dir)\n            with open(os.path.join(tmp_dir, \".gitignore\"), \"w\") as f:\n                f.write(\".*\\n*.txt\\n*.log\\n*.so\")\n            files = [\n                os.path.join(tmp_dir, \".idea\"),\n                os.path.join(tmp_dir, \".idea\", \"file1.txt\"),\n                os.path.join(tmp_dir, \".idea\", \"dir\", \"file1.txt\"),\n                os.path.join(tmp_dir, \".cache\"),\n                os.path.join(tmp_dir, \"system.log\"),\n                os.path.join(tmp_dir, \"src\", \"dir\", \"file.so\"),\n                os.path.join(tmp_dir, \"src\", \"dir\", \"file.cpp\")\n            ]\n            filtered_files = FilePathExtractor.apply_gitignore(files)\n\n        self.assertEqual(1, len(filtered_files))\n        expected_path = os.path.join(tmp_dir, \"src\", \"dir\", \"file.cpp\")\n        self.assertEqual(expected_path, filtered_files[0])\n\n    def assert_true_check_exclude_file(self, paths: List[str]):\n        for i in paths:\n            self.assertTrue(FilePathExtractor.check_exclude_file(self.config, i), i)\n\n    def assert_false_check_exclude_file(self, paths: List[str]):\n        for i in paths:\n            self.assertFalse(FilePathExtractor.check_exclude_file(self.config, i), i)\n\n    def test_check_exclude_file_p(self) -> None:\n        # matched only not_allowed_path_pattern\n        self.config.exclude_containers = [\".gz\"]\n        self.config.exclude_documents = [\".pdf\"]\n        self.config.exclude_extensions = [\".so\"]\n        self.config.exclude_paths = [\"/.git/\"]\n        self.config.exclude_patterns = [re.compile(r\".*magic.*number.*\")]\n        self.config.depth = 1\n        self.config.doc = False\n        self.assert_true_check_exclude_file(self.paths_not)\n        self.assert_true_check_exclude_file(self.paths_reg)\n        self.assert_true_check_exclude_file(self.paths_git)\n        self.assert_false_check_exclude_file(self.paths_src)\n        self.assert_false_check_exclude_file(self.paths_pak)\n        self.assert_false_check_exclude_file(self.paths_doc)\n        self.assert_true_check_exclude_file(self.paths_ext)\n\n        # pdf should be not filtered\n        self.config.depth = 0\n        self.config.doc = True\n        self.assert_true_check_exclude_file(self.paths_not)\n        self.assert_true_check_exclude_file(self.paths_reg)\n        self.assert_true_check_exclude_file(self.paths_git)\n        self.assert_false_check_exclude_file(self.paths_src)\n        self.assert_true_check_exclude_file(self.paths_pak)\n        self.assert_false_check_exclude_file(self.paths_doc)\n        self.assert_true_check_exclude_file(self.paths_ext)\n\n    def test_check_exclude_file_n(self) -> None:\n        # none of extension are in config, only not_allowed_path_pattern matches\n        self.assert_true_check_exclude_file(self.paths_not)\n        self.assert_false_check_exclude_file(self.paths_reg)\n        self.assert_false_check_exclude_file(self.paths_git)\n        self.assert_false_check_exclude_file(self.paths_src)\n        self.assert_false_check_exclude_file(self.paths_pak)\n        self.assert_false_check_exclude_file(self.paths_doc)\n        self.assert_false_check_exclude_file(self.paths_ext)\n\n        # matched only exclude_extensions\n        self.config.exclude_containers = [\".gz\"]\n        self.config.exclude_documents = [\".pdf\"]\n        self.config.exclude_extensions = [\".so\"]\n        self.assert_true_check_exclude_file(self.paths_not)\n        self.assert_false_check_exclude_file(self.paths_reg)\n        self.assert_false_check_exclude_file(self.paths_git)\n        self.assert_false_check_exclude_file(self.paths_src)\n        self.assert_true_check_exclude_file(self.paths_pak)\n        self.assert_true_check_exclude_file(self.paths_doc)\n        self.assert_true_check_exclude_file(self.paths_ext)\n\n    def test_find_by_ext_file_p(self) -> None:\n        self.config.find_by_ext = True\n        self.config.find_by_ext_list = [\".p12\", \".jpg\"]\n        self.assertTrue(FilePathExtractor.is_find_by_ext_file(self.config, \".p12\"))\n        self.assertTrue(FilePathExtractor.is_find_by_ext_file(self.config, \".jpg\"))\n        self.assertFalse(FilePathExtractor.is_find_by_ext_file(self.config, \".bmp\"))\n\n    def test_find_by_ext_file_n(self) -> None:\n        self.config.find_by_ext = False\n        self.config.find_by_ext_list = [\".p12\", \".bmp\"]\n        self.assertFalse(FilePathExtractor.is_find_by_ext_file(self.config, \".p12\"))\n        self.assertFalse(FilePathExtractor.is_find_by_ext_file(self.config, \".bmp\"))\n        self.assertFalse(FilePathExtractor.is_find_by_ext_file(self.config, \".jpg\"))\n\n    @mock.patch(\"os.path.getsize\")\n    def test_check_file_size_p(self, mock_getsize) -> None:\n        mock_getsize.return_value = parse_size(\"11MiB\")\n        self.config.size_limit = parse_size(\"10MiB\")\n        self.assertTrue(FilePathExtractor.check_file_size(self.config, \"\"))\n\n    @mock.patch(\"os.path.getsize\")\n    def test_check_file_size_n(self, mock_getsize) -> None:\n        mock_getsize.return_value = parse_size(\"11MiB\")\n        self.config.size_limit = None\n        self.assertFalse(FilePathExtractor.check_file_size(self.config, \"\"))\n        self.config.size_limit = parse_size(\"11MiB\")\n        self.assertFalse(FilePathExtractor.check_file_size(self.config, \"\"))\n\n    def test_skip_symlink_n(self) -> None:\n        with tempfile.TemporaryDirectory() as tmp_dir:\n            sub_dir = os.path.join(tmp_dir, \"sub_dir\")\n            os.mkdir(sub_dir)\n            target_path = os.path.join(sub_dir, \"target\")\n            with open(target_path, \"w\") as f:\n                f.write(AZ_STRING)\n            s_link_path = os.path.join(tmp_dir, \"s_link\")\n            os.symlink(target_path, s_link_path)\n            s_dir_path = os.path.join(tmp_dir, \"s_dir_link\")\n            os.symlink(sub_dir, s_dir_path)\n\n            dirs_walked = set()\n            files_walked = set()\n            for root, dirs, files in os.walk(tmp_dir):\n                files_walked.update(files)\n                dirs_walked.update(dirs)\n            self.assertEqual({\"sub_dir\", \"s_dir_link\"}, dirs_walked)\n            self.assertEqual({\"target\", \"s_link\"}, files_walked)\n\n            paths = FilePathExtractor.get_file_paths(self.config, tmp_dir)\n            self.assertEqual(1, len(paths))\n            self.assertEqual(target_path, paths[0])\n"
  },
  {
    "path": "tests/file_handler/test_files_provider.py",
    "content": "import io\nimport os\nimport tempfile\nimport unittest\nfrom pathlib import Path\nfrom unittest.mock import MagicMock, patch\n\nfrom credsweeper.common.constants import UTF_8, UTF_16_LE\nfrom credsweeper.file_handler.files_provider import FilesProvider\nfrom tests import AZ_DATA, AZ_STRING\n\n\nclass TestFilesProvider(unittest.TestCase):\n\n    def test_get_scannable_files_io_p(self) -> None:\n        with tempfile.TemporaryDirectory() as tmp_dir:\n            sample_path = os.path.join(tmp_dir, \"sample\")\n            with open(sample_path, \"wb\") as f:\n                az_data_utf16 = AZ_STRING.encode(UTF_16_LE)\n                self.assertNotEqual(az_data_utf16, AZ_DATA)\n                f.write(az_data_utf16)\n            io_data = io.BytesIO(AZ_DATA)\n\n            config = MagicMock()\n            config.not_allowed_path_pattern.match.return_value = False\n            config.exclude_patterns.return_value = []\n            config.exclude_paths.return_value = []\n            config.exclude_extensions.return_value = []\n            config.depth.return_value = True\n\n            file_providers_str = FilesProvider([str(sample_path)])\n            file_text_providers_str = file_providers_str.get_scannable_files(config)\n            self.assertEqual(1, len(file_text_providers_str))\n            file_text_targets_str = [x for x in file_text_providers_str[0].yield_analysis_target(0)]\n            self.assertEqual(1, len(file_text_targets_str))\n            self.assertEqual(AZ_STRING, file_text_targets_str[0].line)\n\n            file_providers_pathlib = FilesProvider([Path(sample_path)])\n            file_text_providers_pathlib = file_providers_pathlib.get_scannable_files(config)\n            self.assertEqual(1, len(file_text_providers_pathlib))\n            file_text_targets_pathlib = [x for x in file_text_providers_pathlib[0].yield_analysis_target(0)]\n            self.assertEqual(1, len(file_text_targets_pathlib))\n            self.assertEqual(AZ_STRING, file_text_targets_pathlib[0].line)\n\n            with patch(\"builtins.open\") as open_mock_str:\n                text_provider_str_io = FilesProvider([(str(sample_path), io_data)])\n                io_text_providers_str_io = text_provider_str_io.get_scannable_files(config)\n                self.assertEqual(1, len(io_text_providers_str_io))\n                io_text_targets_str_io = [x for x in io_text_providers_str_io[0].yield_analysis_target(0)]\n                self.assertEqual(1, len(io_text_targets_str_io))\n                self.assertEqual(AZ_STRING, io_text_targets_str_io[0].line)\n                open_mock_str.assert_not_called()\n\n            # return the cursor to begin\n            io_data.seek(0, io.SEEK_SET)\n\n            with patch(\"builtins.open\") as open_mock_io:\n                text_provider_pathlib_io = FilesProvider([(Path(sample_path), io_data)])\n                io_text_providers_pathlib_io = text_provider_pathlib_io.get_scannable_files(config)\n                self.assertEqual(1, len(io_text_providers_pathlib_io))\n                io_text_targets_pathlib_io = [x for x in io_text_providers_pathlib_io[0].yield_analysis_target(0)]\n                self.assertEqual(1, len(io_text_targets_pathlib_io))\n                self.assertEqual(AZ_STRING, io_text_targets_pathlib_io[0].line)\n                open_mock_io.assert_not_called()\n\n            # return the cursor again\n            io_data.seek(0, io.SEEK_SET)\n\n            with patch(\"builtins.open\") as open_mock_io:\n                text_provider_io = FilesProvider([io_data])\n                io_text_providers_io = text_provider_io.get_scannable_files(config)\n                self.assertEqual(1, len(io_text_providers_io))\n                io_text_targets_io = [x for x in io_text_providers_io[0].yield_analysis_target(0)]\n                self.assertEqual(1, len(io_text_targets_io))\n                self.assertEqual(AZ_STRING, io_text_targets_io[0].line)\n                open_mock_io.assert_not_called()\n\n    def test_get_scannable_files_io_n(self) -> None:\n        io_data = io.BytesIO(AZ_DATA)\n        config = MagicMock()\n        provider = FilesProvider([io_data])\n        self.assertEqual(1, len(provider.get_scannable_files(config)))\n        config.assert_not_called()\n"
  },
  {
    "path": "tests/file_handler/test_patches_provider.py",
    "content": "import io\nimport os\nimport tempfile\nfrom unittest.mock import patch\n\nfrom credsweeper.common.constants import DiffRowType, UTF_8\nfrom credsweeper.config.config import Config\nfrom credsweeper.file_handler.patches_provider import PatchesProvider\nfrom credsweeper.utils.util import Util\nfrom tests import SAMPLES_PATH\n\n\nclass TestPatchesProvider:\n\n    def test_load_patch_data_p(self, config: Config) -> None:\n        \"\"\"Evaluate base load diff file\"\"\"\n        patch_file = SAMPLES_PATH / \"password.patch\"\n        patch_provider = PatchesProvider([patch_file], DiffRowType.ADDED)\n\n        raw_patches = patch_provider.load_patch_data(config)\n\n        expected = [[\n            'diff --git a/.changes/1.16.98.json b/.changes/1.16.98.json',  #\n            'new file mode 100644',  #\n            'index 00000000..7ebf3947',  #\n            '--- /dev/null',  #\n            '+++ b/.changes/1.16.98.json',  #\n            '@@ -0,0 +1,4 @@',  #\n            '+{',  #\n            '+  \"category\": \"``cloudformation``\",',  #\n            '+  \"password\": \"dkajco1\"',  #\n            '+}',  #\n            '',  #\n            ''  #\n        ]]\n\n        assert raw_patches == expected\n\n    def test_load_patch_data_io_p(self, config: Config) -> None:\n        \"\"\"Evaluate base load diff file with io.BytesIO\"\"\"\n        patch_file = SAMPLES_PATH / \"password.patch\"\n        data = Util.read_data(str(patch_file))\n        io_data = io.BytesIO(data)\n        patch_provider = PatchesProvider([io_data], DiffRowType.ADDED)\n\n        raw_patches = patch_provider.load_patch_data(config)\n\n        expected = [[\n            'diff --git a/.changes/1.16.98.json b/.changes/1.16.98.json',  #\n            'new file mode 100644',  #\n            'index 00000000..7ebf3947',  #\n            '--- /dev/null',  #\n            '+++ b/.changes/1.16.98.json',  #\n            '@@ -0,0 +1,4 @@',  #\n            '+{',  #\n            '+  \"category\": \"``cloudformation``\",',  #\n            '+  \"password\": \"dkajco1\"',  #\n            '+}',  #\n            '',  #\n            ''  #\n        ]]\n        assert raw_patches == expected\n\n    def test_load_patch_data_utf16_p(self, config: Config) -> None:\n        \"\"\"Evaluate load diff file with UTF-16 encoding\"\"\"\n        patch_file = SAMPLES_PATH / \"password_utf16.patch\"\n        patch_provider = PatchesProvider([str(patch_file)], DiffRowType.ADDED)\n        raw_patches = patch_provider.load_patch_data(config)\n        expected = [[\n            'diff --git a/.changes/1.16.98.json b/.changes/1.16.98.json',  #\n            'new file mode 100644',  #\n            'index 00000000..7ebf3947',  #\n            '--- /dev/null',  #\n            '+++ b/.changes/1.16.98.json',  #\n            '@@ -0,0 +1,4 @@',  #\n            '+{',  #\n            '+  \"info\": \"난 차를 마십니다\"',  #\n            '+  \"category\": \"``cloudformation``\",',  #\n            '+  \"password\": \"dkajco1\"',  #\n            '+}',  #\n            '',  #\n            ''  #\n        ]]\n        assert raw_patches == expected\n\n    def test_load_patch_data_western_n(self, config: Config) -> None:\n        \"\"\"Evaluate load diff file with Western encoding\"\"\"\n        patch_file = SAMPLES_PATH / \"password_western.patch\"\n        patch_provider = PatchesProvider([patch_file], DiffRowType.ADDED)\n\n        with patch('logging.Logger.debug') as mocked_logger:\n            raw_patches = patch_provider.load_patch_data(config)\n            mocked_logger.assert_called_with(\"UnicodeError: Can't decode content as %s.\", UTF_8)\n\n        expected = [[\n            'diff --git a/.changes/1.16.98.json b/.changes/1.16.98.json',  #\n            'new file mode 100644',  #\n            'index 00000000..7ebf3947',  #\n            '--- /dev/null',  #\n            '+++ b/.changes/1.16.98.json',  #\n            '@@ -0,0 +1,4 @@',  #\n            '+{',  #\n            '+  \"category\": \"``cloudformation``\",',  #\n            '+  \"password\": \"dkajcö1\"',  #\n            '+}',  #\n            '',  #\n            ''  #\n        ]]\n        assert raw_patches == expected\n\n    def test_load_patch_data_n(self, config: Config) -> None:\n        \"\"\"Evaluate warning occurrence while load diff file with ISO-IR-111 encoding\"\"\"\n        patch_file = SAMPLES_PATH / \"iso_ir_111.patch\"\n        patch_provider = PatchesProvider([str(patch_file)], DiffRowType.ADDED)\n\n        with patch('logging.Logger.debug') as mocked_logger:\n            raw_patches = patch_provider.load_patch_data(config)\n            mocked_logger.assert_called_with(\"UnicodeError: Can't decode content as %s.\", UTF_8)\n\n        expected = [[\n            'ëÉÒÉÌÌÉÃÁ',  #\n            'diff --git a/.changes/1.16.98.json b/.changes/1.16.98.json',  #\n            'new file mode 100644',  #\n            'index 00000000..7ebf3947',  #\n            '--- /dev/null',  #\n            '+++ b/.changes/1.16.98.json',  #\n            '@@ -0,0 +1,4 @@',  #\n            '+{',  #\n            '+  \"category\": \"``cloudformation``\",',  #\n            '+  \"password\": \"dkajco1\"',  #\n            '+}',  #\n            '',  #\n            ''  #\n        ]]\n        assert raw_patches == expected\n\n    def test_oversize_n(self, config: Config) -> None:\n        \"\"\"Evaluate warning occurrence while load oversize diff file\"\"\"\n        # use UTF-16 encoding to prevent any Windows style transformation\n        patch_file = SAMPLES_PATH / \"password_utf16.patch\"\n        patch_provider = PatchesProvider([str(patch_file)], DiffRowType.ADDED)\n\n        config.size_limit = 0\n        with patch('logging.Logger.warning') as mocked_logger:\n            raw_patches = patch_provider.load_patch_data(config)\n            mocked_logger.assert_called_with(\"Size (%s) of the file '%s' is over limit (%s)\", 512, str(patch_file), 0)\n\n        assert isinstance(raw_patches, list)\n        assert len(raw_patches) == 0\n\n    def test_memory_error_n(self, config: Config) -> None:\n        with tempfile.TemporaryDirectory() as tmp_dir:\n            patch_file = os.path.join(tmp_dir, \"test.patch\")\n            assert not os.path.exists(patch_file)\n            with open(patch_file, \"w\") as f:\n                f.write(\"\"\"diff --git a/creds.py\n@@ -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000002985304056119834851 +1,4 @@\n+{\n+  \"wrong diff\",\n+  \"sword\": \"FISH\"\n+  t............................................. li.k re...o0i:api........///:..N&.@........00000000..7ebf3947\n--- /dev/null\n+++ b/.changes.........json\n@@ -0,0 +1,4 @@\n+{\n+  correct\n+  lines\n\n\"\"\")\n            patch_provider = PatchesProvider([str(patch_file)], DiffRowType.ADDED)\n            with patch('logging.Logger.error') as mocked_logger:\n                test_files = patch_provider.get_scannable_files(config)\n                assert len(test_files) == 1\n                targets = [x for x in test_files[0].yield_analysis_target(0)]\n                assert len(targets) == 7\n                mocked_logger.assert_not_called()\n\n    def test_overflow_error_n(self, config: Config) -> None:\n        with tempfile.TemporaryDirectory() as tmp_dir:\n            patch_file = os.path.join(tmp_dir, \"test.patch\")\n            assert not os.path.exists(patch_file)\n            with open(patch_file, \"w\") as f:\n                f.write(\"\"\"OverflowError\ndiff --git a/.changes/1.16.98.json b/.changes/1.16.98.json\nnew file mode 100644\nindex 00000000..7ebf3947\n--- /dev/null\n+++ b/.changes/1.16.98.json\n@@ -0,0 +12345678901234567890,12345678901234567894 @@\n+{\n+  \"category\": \"``cloudformation``\",\n+  \"password\": \"dkajco1\"\n+}\n\n\n\"\"\")\n            patch_provider = PatchesProvider([str(patch_file)], DiffRowType.ADDED)\n            with patch('logging.Logger.error') as mocked_logger:\n                test_files = patch_provider.get_scannable_files(config)\n                assert len(test_files) == 1\n                targets = [x for x in test_files[0].yield_analysis_target(0)]\n                assert len(targets) == 4\n                mocked_logger.assert_not_called()\n"
  },
  {
    "path": "tests/file_handler/test_string_content_provider.py",
    "content": "import unittest\n\nfrom credsweeper.file_handler.analysis_target import AnalysisTarget\nfrom credsweeper.file_handler.string_content_provider import StringContentProvider\nfrom tests import AZ_STRING\nfrom tests.filters.conftest import DUMMY_DESCRIPTOR\n\n\nclass TestStringContentProvider(unittest.TestCase):\n\n    def test_get_analysis_target_p(self) -> None:\n        \"\"\"Evaluate that lines data correctly extracted from file\"\"\"\n        lines = [\"line one\", \"password='in_line_2'\"]\n        content_provider = StringContentProvider(lines)\n        analysis_targets = [x for x in content_provider.yield_analysis_target(0)]\n\n        self.assertEqual(len(lines), len(analysis_targets))\n\n        expected_target = AnalysisTarget(0, lines, [1, 2], DUMMY_DESCRIPTOR)\n        self.assertEqual(expected_target.line, analysis_targets[0].line)\n        # check second target and line numeration\n        expected_target = AnalysisTarget(1, lines, [1, 2], DUMMY_DESCRIPTOR)\n        self.assertEqual(expected_target.line, analysis_targets[1].line)\n\n        # specific line numeration\n        content_provider = StringContentProvider(lines, [42, -1])\n        analysis_targets = [x for x in content_provider.yield_analysis_target(0)]\n        self.assertEqual(42, analysis_targets[0].line_num)\n        self.assertEqual(-1, analysis_targets[1].line_num)\n\n    def test_get_analysis_target_n(self) -> None:\n        \"\"\"Negative cases check\"\"\"\n        # empty list\n        content_provider = StringContentProvider([])\n        analysis_targets = [x for x in content_provider.yield_analysis_target(0)]\n        self.assertEqual(0, len(analysis_targets))\n\n        # mismatched amount of lists\n        content_provider = StringContentProvider([\"a\", \"b\", \"c\"], [2, 3])\n        analysis_targets = [x for x in content_provider.yield_analysis_target(0)]\n        self.assertEqual(3, len(analysis_targets))\n        self.assertEqual(1, analysis_targets[0].line_num)\n        self.assertEqual(2, analysis_targets[1].line_num)\n        self.assertEqual(3, analysis_targets[2].line_num)\n\n        content_provider = StringContentProvider([\"a\", \"b\", \"c\"], [5, 3, 4, 5])\n        analysis_targets = [x for x in content_provider.yield_analysis_target(0)]\n        self.assertEqual(3, len(analysis_targets))\n        self.assertEqual(1, analysis_targets[0].line_num)\n        self.assertEqual(2, analysis_targets[1].line_num)\n        self.assertEqual(3, analysis_targets[2].line_num)\n\n    def test_free_n(self) -> None:\n        provider = StringContentProvider([AZ_STRING])\n        provider.free()\n        self.assertListEqual([], provider.lines)\n        provider.free()\n        provider.free()\n\n    def test_data_n(self) -> None:\n        with self.assertRaises(NotImplementedError):\n            _ = StringContentProvider([AZ_STRING]).data\n"
  },
  {
    "path": "tests/file_handler/test_struct_content_provider.py",
    "content": "import unittest\n\nfrom credsweeper.file_handler.struct_content_provider import StructContentProvider\n\n\nclass TestStructContentProvider(unittest.TestCase):\n\n    def test_free_n(self) -> None:\n        provider = StructContentProvider({})\n        provider.free()\n        self.assertIsNone(provider.struct)\n        provider.free()\n        provider.free()\n\n    def test_data_n(self) -> None:\n        with self.assertRaises(NotImplementedError):\n            _ = StructContentProvider({}).data\n"
  },
  {
    "path": "tests/file_handler/test_text_content_provider.py",
    "content": "import os\nimport tempfile\nimport unittest\n\nfrom credsweeper.file_handler.analysis_target import AnalysisTarget\nfrom credsweeper.file_handler.descriptor import Descriptor\nfrom credsweeper.file_handler.text_content_provider import TextContentProvider\nfrom tests import SAMPLES_PATH\n\n\nclass TestTextContentProvider(unittest.TestCase):\n\n    def test_get_analysis_target_p(self) -> None:\n        \"\"\"Evaluate that lines data correctly extracted from file\"\"\"\n        target_path = SAMPLES_PATH / \"password.gradle\"\n        content_provider = TextContentProvider(target_path)\n\n        analysis_targets = [x for x in content_provider.yield_analysis_target(0)]\n\n        all_lines = ['password = \"cackle!\"', '']\n        expected_target = AnalysisTarget(0, all_lines, [x for x in range(len(all_lines))],\n                                         Descriptor(str(target_path), target_path.suffix, \"\"))\n\n        self.assertEqual(6, len(analysis_targets))\n\n        target = analysis_targets[0]\n        self.assertEqual(expected_target.line, target.line)\n\n        target_path = SAMPLES_PATH / \"xml_password.xml\"\n        content_provider = TextContentProvider(target_path)\n\n        analysis_targets = [x for x in content_provider.yield_analysis_target(0)]\n\n        all_lines = [\n            \"Countries : \",\n            \"Country : \",\n            \"City : Seoul\",\n            \"password : cackle!\",\n            \"Country : \",\n            \"City : Kyiv\",\n            \"password : peace_for_ukraine\",\n            \"password : Password for authorization\\n        BAIT: bace4d59-fa7e-beef-cafe-9129474bcd81\",\n        ]\n        expected_target = AnalysisTarget(3, all_lines, [x for x in range(len(all_lines))],\n                                         Descriptor(str(target_path), \".xml\", \"\"))\n\n        self.assertEqual(8, len(analysis_targets))\n\n        target = analysis_targets[3]\n        self.assertEqual(expected_target.line, target.line)\n\n    def test_get_analysis_target_n(self) -> None:\n        with tempfile.TemporaryDirectory() as tmp_dir:\n            target_path = os.path.join(tmp_dir, \"test_get_analysis_target_n.xml\")\n\n            with open(target_path, \"w\") as f:\n                f.write(\"<password>crackle!</worng_grammar>\")\n\n            content_provider = TextContentProvider(target_path)\n\n            analysis_targets = [x for x in content_provider.yield_analysis_target(0)]\n\n            all_lines = [\"<password>crackle!</worng_grammar>\"]\n            expected_target = AnalysisTarget(0, all_lines, [x for x in range(len(all_lines))],\n                                             Descriptor(target_path, \".xml\", \"\"))\n\n            self.assertEqual(1, len(analysis_targets))\n\n            target = analysis_targets[0]\n            self.assertEqual(expected_target.line, target.line)\n\n    def test_free_n(self) -> None:\n        provider = TextContentProvider(\"dummy\")\n        provider.free()\n        self.assertListEqual([], provider.lines)\n        provider.free()\n        provider.free()\n"
  },
  {
    "path": "tests/file_handler/zip_bomb_1.py",
    "content": "zb1 = b'PK\\x03\\x04\\x14\\x00\\x02\\x00\\x08\\x00\\x1b\\xad|(\\x93u\\xdc\\xc8\\xf9\\t\\x00\\x00V\\x88\\x00\\x00\\t\\x00\\x00\\x00lib ' \\\n      b'3.zip\\xed\\xddWPS\\xdb\\x1a\\x07\\xf0H\\x118t\\x95C\\x00\\xb1Q\"H\\x95\\x1a\\xc4\\xa0\\xdc#\\xbd\\tH\\x95b(' \\\n      b'Q\\x8a\\xe8\\r-\\x14+G\\xe9\\x10\\x01)F\\x94\\x8e(QDz\\xb3%\\xa0 \\x08\\xa2 ' \\\n      b'RT\\x04\\xa4\\xb7C\\t\\x88\\x1c\\xbd\\x8e\\xf7\\xc6\\x87373y\\xfd\\xf6~X{\\xcd\\xda\\xff\\xf9^\\x7f\\xb3\\xf7*\\x16\\xc6\\xacl[\\x10,' \\\n      b'\\x08ND\\xdb\\x9d\\xb0\\xddT\\xd7\\xf1\\r\\x92\\x9c\\x08\\xc4F<\\x02\\xf1\\x1b\\x02\\x81\\xc0\\xfa\\xf9y\\xefPQ\\x089qj\\xb2\\xcf[' \\\n      b'\\xd3zu\\x1b\\xc7\\x8c\\x14%j+\\x97\\x90D\\xaa\\xb4\\x04:9\\xd4=\\xb7\\xe3O\\xc1@\\xa4\\xe0\\xae\\n\\x11\\x93)\\xa1\\xac\\xba\\xed' \\\n      b'\\x96\\x81\\xe4Fy\\xd3\\x08I\\xc7M\\xff\\xe6\\xefK.q\\xa2J%y?\\xae\\xf4I\\x15\\xac\\xba4Jj%\\x9cnun\\xc3g\\xe2\\x9co\\xd0\\x8a\\x17' \\\n      b'\\xb0\\xfb\\x1bF\\xd6\\xd7\\xc9\\x0bs\\xa5\\x99\\x01\\xb4\\xb5\\x17\\\\\\xb5\\xd7(' \\\n      b'\\x89\\xa6M.\\x89\\xdd\\x17\\x12\\xd7\\x90Oz:\\xf40l\\x86\\\\\\x87\\x04v\\xb2\\x1d$\\x19\\x9aa6\\x90\\xcf\\xdc\\x17\\x95}\\xe4' \\\n      b'~#}\\x83y\\\\\\xee\\x8e[\\xb6\\xf8\\xfd\\x81\\x8a&\\xf9\")&\\xd9\\xbe\\xc2\\xad\\x96Ra\\x05\\xb8\\x0bu\\x1f\\xf79Jd\\xe7\\x16\\x1a' \\\n      b'\\x04Kxh\\x1cNO[{0t\\xcb\\x8b\\x1cU\\xdb\\x94w[' \\\n      b'\\x10]\\xbfh\\xa4\\x97#\\xd3hgZ\\x93\\x13T\\xa0E\\xc8\\xbb\\\\\\x14\\xaah\\x8a\\x9a\\xaa\\xc6,' \\\n      b'\\xb6\\x86N\\xd4\\xd7\\\\\\xec\\xb7\\xd5\\xde\\xef\\x9bB\\x9e?\\xa0\\x7f\\xfd\\xebB\\r\\xcf\\x99\\xedd\\xb3\\xecXsL~.\\xcd,' \\\n      b'(\\x95\\xb5\\x9c\\xd3;\\xd9c[\\xb8\\xad\\xca]\\x9f\\x86\\xee\\xe9\\x0f:KG\\x1c\\xadX\\x91\\xfcZ8r\\xc5\\xca&\\xf3\\x10\\x13\\x87[' \\\n      b'\\xb1\\xca!\\xb6\\x1e\\n\\x16\\x9e\\x1a{\\xde\\x18kW=5\\xb86\\xe9\\xaa\\xf4q\\x96O\\x8c\\xf5\\xd3\\xb5\\x82\\xd4\\xc0\\xd4\\x1a\\x0b' \\\n      b'\\xaf\\x89/\\x89\\xc2\\xd5AM\\x9b\\xfb\\x1f\\xf9\\n\\x0ft\\x14\\xb0\\xb4\\xf1\\xbd,kF\\x9a\\x97\\xe1t\\xecr7R\\x85\\r\\x0b)\\xe1{' \\\n      b'\\xf9\\x9a\\xbd\\xaeo\\x9eS\\xb0\\xf5\\xe8q\\xf4\\x1fw\\x19B\\xc5~\\xde\\xb2\\xc2\\x96L\\xb2\\xa9)\\xb87&\\x17\\xe8\\x85\\xcd\\xc29' \\\n      b'\\xa0\\x8aK\\xd1\\xaer\\xfb\\xd1\\xca\\xc1\\xb4\\xfb.\\x1f\\xfb\\x89\\xe7\\xc3\\x83\\xf6\\x98\\xa9(x\\x1d\\xcf\\xbf4,' \\\n      b'\\x9d\\xa1\\x10\\xb9\\xb5\\\\m\\xe7\\xf5\\xe6\\xfa0k\\xa2\\x83\\x92\\xda\\xe2W\\xe7\\xd1Uwc\\xab?W\\xa4\\xbdK\\xe4m&3\\xd8YJ\\x9c' \\\n      b'\\x1dep\\xb9\\x17\\xf66\\xbd\\xb3_\\x9b\\x1d\\xa7MQndO\\xf0\\xd5m\\xb1\\xeaq\\xd1\\xdf\\xdd\\x90v\\xa8j\\xa6J\\xd1\\x8f\\xbax7k0~5' \\\n      b'\\x1e\\x93\\x1b~:\\xf6\\xcb\\x97\\xfc\\xf6+}\\x7f\\xa5\\xa1\\xd0\\xa3\\xd8M}<.\\xc7%\\x17\\x8c:\\x94dvk\\xce\\x18{' \\\n      b'K5\\x9c\\xe8+Ogu\\x8bM\\t\\x89k\\xa0\\xf9\\xbdO\\xc1\\x8b\\xa9\\xdfi\\xe3\\x92\\xa3V-\\x9a\\xd5K\\xf4\\x1d\\r\\x93\\x1c\\xb6\\xd5' \\\n      b'\\xd0Q\\xc58\\xd3\\xdc\\x8b\\x0cxP\\xaac\\x96\\x96\\xc7G\\xdb\\xed\\xfc\\xafS\\xad\\x89\\x8f\\x15_wFy\\x06\\xf7\\xfaZ&-4_\\x97(' \\\n      b'\\x0f\\xc9\\xd3\\xba\\xc5\\xafo\\xc8\\x83\\x9b4\\xbe\\x8aS\\xac\\xcf<Q\\xbb@t90\\xa0\\x8b\\xab\\x9eH,' \\\n      b'\\n^A\\x90qs\\xbav\\xb9~\\xd7\\xaa\\xcd^4F\\x7f\\xce\\xa1\\xf9\\xa7>x\\xc9\\xb3b\\xfe\\xf6\\xed\\xc5Y\\x94\\xee\\x96\\xa9\\xc2\\x85' \\\n      b'\\xbb\\xc5H?\\xaa\\xc9\\xd5\\x97\\xb63|j\\xe2\\xa9\\xb8\\xd2\\x8b\\\\\\x998[' \\\n      b'q}v\\xb2d\\x89\\x9dsh\\xad>\\xafl/vk\\xf3\\n\\xeb\\xcc\\xa3]\\x8a\\xf8\\xb0 ' \\\n      b'\\x92A\\xeat\\x81>\\x17\\'o\\x8c\\xb5r\\x03\\xe9\\xd9R\\x9fP@\\xc4\\x159{' \\\n      b'!\\xd4H$\\xfe\\x84\\x0bw\\x85\\x98=9\\xdb\\xa4\\xedYoh\\x95\\x05\\xb2\\xfc\\xd3\\xe3\\xa6$\\x8ac\\xd0\\xbd\\x1e\\xf9>\\x99n\\xeaE' \\\n      b'\\x8e\\x14\\xa3\\x93\\xbe\\x15xr>A\\xe4\\xb6\\x1a\\xba\\xb7\\xbf\\xa7\\xcbm\\x80\\xb6c*a\\x7f\\xfb;\\x1bgTD\\x0c\\xf6\\xd9\\x97\\x96' \\\n      b'*n\\xe2|w\\xdd\\xb57\\xbb\\x1aB%\\xdd\\x9dc\\xf0\\xaa\\x1ej\\xc9\\xcb\\xfb\\xf6\\x99W\\xc6\\x91D\\xd7\\x9e}\\xaa\\xe0\\xb7W\\xd7' \\\n      b'\\x8f{\\x15_6\\xf4<\\xa5\\xab\\xdb\\xaf]\\xcbr\\xc7\\x88\\x03\\xa9\\xe7\\xa6\\xa5\\xcd\\x81\\xc6\\xda\\'\\x0f\\x8c\\x1dKO]\\xcax\\xbc3' \\\n      b'\\xbao\\xb2\\xd2\\xbc\\xf3\\x18v\\xfd\\xbd\\x93\\xd8\\xad\\x161\\xde\\xfcp\\xc15qB\\xe6\\xe9,U\\x93,' \\\n      b'\\xe5\\xbccE\\x85\\x01\\x89\\xcf\\n\\xdd\\xba\\xcf\\x1a:\\xfaXS\\xe5s?\\xd3\\\\9\\xd9\\xbb\\xe2\\xef\\xea\\xe8\\xe4e\\\\J\\xc1s\\xc7' \\\n      b'/\\x97\\x9dL\\xcdG\\x13\\xdaQ6\\xad:#\\x94n\\xaf%j\\x01u\\xeb\\x99\\xd5\\x9d\\xaf\\xf6>/}X\\xc1Ril\\xd31D$\\x94\\xccEa\\x1a\\x91u' \\\n      b'\\xe3G\\x84r\\xc3\\xea*i(\\x8ai\\xe7\\x91Wnyc\\xd5\\xb2\\xbe\\xda\\xc8\\x1b\\xf5\\xb8zI\\x87\\xd7\\xd1Y\\xf6w\\x88\\x92\\xe9.\\x15' \\\n      b'\\x16\\xea\\x9egx\\twz3N\\x1b\\x0c\\x1c\\xf1]v\\xf3P\\rh\\t\\xacZ%y\\xc9\\x1dT\\x92Y\\xf3\\x14\\xd6\\xd3\\x14\\xdd\\xe7\\xfa\\xf9\\xbd' \\\n      b'\\x0b\\xb5Z\\xcev\\xbd\\x10]\\x91\\x94\"\\x97i\\xb7\\xa7/\\xbd\\xbf\\xbdF\\x13\\x15\\x97g\\xdey\\x99b$\\x1b\\xd7\\x1d\\xde\\xac\\x86e' \\\n      b'\\xdb8k\\x94\\xbc\\xe9y\\xa8\\xb2\\xd3\\x8d\\xf4\\x81`\\xab\\x9cg]e\\xe5\\x1e\\x18w6\\xbeOu2!\\x1d\\xfeG\\x87\\xf9)\\xb7\\xf5\\x9d5' \\\n      b'\\x17\\xa6\\xd4\\xf7\\xd4\\x16\\x15,S\\xf6I?Q\\x9f&\\xe6\\x8d\\xeb\\x8e\\x84\\xc4\\x07\\x126\\xd7\\xf4\\x96V\\xe8\\xfbt\\r\\x8a\\xaf' \\\n      b'\\xfd\\xab\\xc4\\x99\\xbff(3\"\\xd8R\\xe7\\xf7\\x86m\\xf5N\\xe2A\\xa6\\x04\\xd3{\\xba\\xd9]\\xe5\\x97\\x16\\'\\x8b\\xd7\\x13{' \\\n      b'\\xc2\\x82\\xdf\\xe3T\\xc4\\x92n^\\x96\\xcf\\xde\\xde\\x84*:a\\xd4\\xbc\\xdd@\\xd4\\x05e\\xc5\\xb6\\x16Y\\xa5,' \\\n      b'\"\\xf1\\xe0\\xe0\\xd9\\xe81\\x89G\\x88\\xdai\\xab\\x0b\\x91Xn\\xd3\\xe0\\x91\\xe5\\r\\xf7}\\x9c\\xec\\\\\\x1d\\xec{' \\\n      b'u\\xadc\\xde\\x07\\\\9\\xf5\\x987e\\xa0l\\x1a\\x95\\x11\\xd2\\xed_\\x97QRb\\x9e\\x8e\\x7f ' \\\n      b'\\xca\\xe5\\x84\\x1bI}p\\xc8\\xdf*\\xeaMg\\xe3G\\xae7\\x1an-$\\x8e\\x856\\xfe\\xa3\\xc6u\\r%\\xbb\\xae\\xd8{' \\\n      b'\\xa8\\xf4\\r\\xe5\\x99\\x897\\xbe\\xa6\\xd6\\xcaq5iD\\xbf1\\xccS\\xbb\\x11\\xee\\xd6{' \\\n      b'\\xed\\xe6\\xa9\\xa9\\x9b\\x8es\\x96\\xb16)\\xe4\\xec\\xf2\\xb0\\xee\\xa8\\x9a\\xf8\\x85\\xbcC,' \\\n      b'SD\\x9b\\xc5\\x8f\\xd65\\x033\\xec\\x81,e\\xdcI\\x92\\xed\\xaf)e\\x0e\\xc5\\x91\\x02o^d\\x94^:<\\xa9\\x99\\xb0\\x8c\\xeb\\x88}>\\xc1' \\\n      b'\\x1e#pP*\\xfa\\xdd\\x87\\x1c\\xaa\\x18\\xd1MH\\xf0\\xf0\\x8bYv\\xf1\\xe2\\xc9\\xca\\xa7\\r\\x05\\xde\\xde\\x9c1\\xadmzz\\xfcZ\\xd6' \\\n      b'\\x82\\xb9%2\\xbc<\"b\\xcd>\\xc2^dL\\xa8\\x9fF(\\xbf\\x8d\\xc4\\xd7YZ\\x8c\\xde\\xf8\\xb1\\xe2\\xec\\xbd\\x8dRjr[' \\\n      b'\\xd9\\x076\\xbb\\xbd\\xfd\\xcd\\xd7\\x9b\\x93\\x8b\\xf8%]1i\\xa4\\xf1\\x18\\n\\x83O\\xaf\\xe0m?\\x10\\xc1\\xf35\\xc0\\x82O=\\xad' \\\n      b'\\'\\xa2\\x88`\\xa1\\xe6\\x85\\xd9H\\xc3O\\xb6\\xcc\\x8f\\xccsg\\x8d!;\\x178,' \\\n      b'\\x06=\\x0b\\xe7\\x13n\\x0e\\x0f\\x1e^\\xe8=\\xeb\\xc9-\\xd2K<\\x89_\\x9f>\\xbd\\xb8\\xe4\\xd2\\xad ' \\\n      b'\\x7fr\\xbbs\\xf4\\xc9\\x972F\\r\\xd1O\\'N%\\x12y\\xaau\\x95\\xa4\\x03DTB1E\\xe2K\\x92\\xcd\\xed\\xb44\\xc1\\xa7B\\x17c\\xe3H\\xac' \\\n      b'\\xa2\\xa5\\x97GLI~e\\x84\\xa1\\xf6\\xccqY\\xdc\\xe8_\\xd4\\x1a\\\\\\xd8>r\\xff\\x0e\\xe36\\xb4\\xd8\\xe1\\xcfg\\xb4\\xdc\\xfe\\xaa=W7' \\\n      b'._7B\\xf9X\\xdd\\xbc\\xf7\\xe0\\xf4]\\x9f.J4\\x9b\\xd3(\\x1a\\x9dU\\x91\\x92^\\xfe\\xca\\x1f+\\xf0dbv\\xa9U\\xd4$:(' \\\n      b'A\\xa9i\\x8e\\x8c\\x91\\xf7\\xf1\\x97\\xbe\\xe3x2\\xee\\x85V\\xe5S3;dQ\\xf5#\\xefV\"\\xa1\\xc8u[' \\\n      b'\\x1a\\xc7\\xf0y\\xc2\\xb7\\xa6Qj\\xf8\\xd6\\x7f\\x1e~\\xf4S\\xd3\\n\\xf8\\x86\\xff\\xdb?\\x8a\\xed\\xdf\\xa9\\xc4\\xdf\\xc2:\\xffP' \\\n      b'\\xfb[3\\xb8i^\\xf5\\x91\\xf6\\xcf~\\x82q\\xcb+\\x96\\x1f\\x03\\xdf\\xfb\\n\\xca\\xe6b?_d\\x9d\\xaf|Z\\xfb\\xe4\\x97\\x1a\\xa3\\xe7' \\\n      b'\\xe8k\\x8c\\xb0\\xfdRC\\xea\\x97\\x1a\\xa4_j\\xe07\\xd0\\xd7h\\x13\\xa2\\xaf\\xa1\\xad\\xf1\\xbf\\xe0\\xaa\\x8eR\\x02.\\t9\\xd7' \\\n      b'\\xf0zuI:&y\\xfd\\xc2\\xcd\\xaeW\\x83\\xda\\xd5\\x0f/;\\\\\\x8d\\x9c\\xff\\x1c!\\xe0\\x15\\xc0\\xd1\\x9a\\xb3\\x86-\\x94~K\\xd2\\x7f' \\\n      b'\\xa7T\\xe8\\x9cC\\xd2\\x1f_\\xcav(?\\xbd\\xad\\xd8\\xfa\\x8f\\x80\\xfa\\x0f\\xda\\x0e\\xa78_\\x1f87\\x7f<_}L\\xc7\\xa45\\xc7p\\xa5p' \\\n      b'\\xc0^3\\xa1\\x1f\\x13\\xb5\"\\x9b6\\x7f<\\x92klP\\xb65\\x07\\xf3{' \\\n      b'aP\\'I\\xdf\\xc9\\xe7p\\xc2\\n:!3Hw\\xbf\\xf2\\x07m/]\\xdd\\xbe\\xe0\\x8c\\xcd\\xe53k\\xc8\\xde\\xafmu\\x91\\xc2\\x07yj\\xcf\\xb6' \\\n      b'\\xacsX\\xfc\\x7fK(\\x83%\\xc0\\x12`\\t\\xb0\\x04X\\x02,\\x01\\x96\\x00K0a\\x89\\xbd`\\t\\xb0\\x04X\\x02,' \\\n      b'\\x01\\x96\\x00K\\x80%\\xc0\\x12LXB\\t,\\x01\\x96\\x00K\\x80%\\xc0\\x12`\\t\\xb0\\x04X\\x82\\tK\\xa8\\x82%\\xc0\\x12`\\t\\xb0\\x04X' \\\n      b'\\x02,\\x01\\x96\\x00K0a\\t5\\xb0\\x04X\\x02,\\x01\\x96\\x00K\\x80%\\xc0\\x12`\\t&,' \\\n      b'\\xa1\\x0e\\x96\\x00K\\x80%\\xc0\\x12`\\t\\xb0\\x04X\\x02,\\xc1\\x84%4\\xc0\\x12`\\t\\xb0\\x04X\\x02,' \\\n      b'\\x01\\x96\\x00K\\x80%\\x98\\xb0\\x84&X\\x02,' \\\n      b'\\x01\\x96\\x00K\\x80%\\xc0\\x12`\\t\\xb0\\x04\\x13\\x96@\\x83%\\xc0\\x12`\\t\\xb0\\x04X\\x02,' \\\n      b'\\x01\\x96\\x00K0a\\x89c`\\t\\xb0\\x04X\\x02,' \\\n      b'\\x01\\x96\\x00K\\x80%\\xc0\\x12LX\\x02\\x0b\\x96\\x00K\\x80%\\xc0\\x12`\\t\\xb0\\x04X\\x02,' \\\n      b'\\xc1\\x84%\\xdc\\xc0\\x12`\\t\\xb0\\x04X\\x02,\\x01\\x96\\x00K\\x80%\\x98\\xb0\\x84;X\\x02,' \\\n      b'\\x01\\x96\\x00K\\x80%\\xc0\\x12`\\t\\xb0\\x04\\x13\\x96\\xf0\\x00K\\x80%\\xc0\\x12`\\t\\xb0\\x04X\\x02,' \\\n      b'\\x01\\x96`\\xc2\\x12\\x9e`\\t\\xb0\\x04X\\x02,\\x01\\x96\\x00K\\x80%\\xc0\\x12\\xffl\\x89\\r,' \\\n      b'[\\x10\\xff\\xac\\x89\\x1f\\xd7\\x0eD\\xf9y\\xc4O[' \\\n      b'\\xa8|\\xb7\\x05\\xe39\\x13N\\xfa\\xb3\\xcb\\x19\\xcf\\xa5\\t\\xd0\\x9fS\\xcax\\xee\\x13\\x92\\xfeL2\\xc6sJ;\\xe9\\xcf\\x1fa<\\x17&C' \\\n      b'\\xbf\\xd78\\xe3\\xb9&e\\xfa}E\\x19\\xcfm\\xd1\\xa2\\xdfC\\x8c\\xf1\\x9c\\xab.\\xfd~!\\x8c\\xe7\\xee\\x18\\xd1\\xaf\\rf<\\xb7lI\\xbf' \\\n      b'\\x0e\\x88\\xf1\\xdc\\x1f\\x8e\\xf4s~\\x19\\xcf%\\xba\\xd1\\xcf\\xefa<\\xd7\\xebM\\xff/\\x8f\\xf1\\xdcn\\x7f\\xfa\\xefv\\x8c\\xe7\\xfc' \\\n      b'\\xc3\\xe8\\x8dna\\xcc\\xbe\\xf1\\xfb\\x88\\xc0\\xb7\\xfb\\x1c+\\x02\\xf10\\xe2\\xfb\\xcb\\x7f\\x03PK\\x03\\x04\\x14\\x00\\x02\\x00' \\\n      b'\\x08\\x00\\x1b\\xad|(\\x93u\\xdc\\xc8\\xf9\\t\\x00\\x00V\\x88\\x00\\x00\\t\\x00\\x00\\x00lib ' \\\n      b'1.zip\\xed\\xddWPS\\xdb\\x1a\\x07\\xf0H\\x118t\\x95C\\x00\\xb1Q\"H\\x95\\x1a\\xc4\\xa0\\xdc#\\xbd\\tH\\x95b(' \\\n      b'Q\\x8a\\xe8\\r-\\x14+G\\xe9\\x10\\x01)F\\x94\\x8e(QDz\\xb3%\\xa0 \\x08\\xa2 ' \\\n      b'RT\\x04\\xa4\\xb7C\\t\\x88\\x1c\\xbd\\x8e\\xf7\\xc6\\x87373y\\xfd\\xf6~X{\\xcd\\xda\\xff\\xf9^\\x7f\\xb3\\xf7*\\x16\\xc6\\xacl[\\x10,' \\\n      b'\\x08ND\\xdb\\x9d\\xb0\\xddT\\xd7\\xf1\\r\\x92\\x9c\\x08\\xc4F<\\x02\\xf1\\x1b\\x02\\x81\\xc0\\xfa\\xf9y\\xefPQ\\x089qj\\xb2\\xcf[' \\\n      b'\\xd3zu\\x1b\\xc7\\x8c\\x14%j+\\x97\\x90D\\xaa\\xb4\\x04:9\\xd4=\\xb7\\xe3O\\xc1@\\xa4\\xe0\\xae\\n\\x11\\x93)\\xa1\\xac\\xba\\xed' \\\n      b'\\x96\\x81\\xe4Fy\\xd3\\x08I\\xc7M\\xff\\xe6\\xefK.q\\xa2J%y?\\xae\\xf4I\\x15\\xac\\xba4Jj%\\x9cnun\\xc3g\\xe2\\x9co\\xd0\\x8a\\x17' \\\n      b'\\xb0\\xfb\\x1bF\\xd6\\xd7\\xc9\\x0bs\\xa5\\x99\\x01\\xb4\\xb5\\x17\\\\\\xb5\\xd7(' \\\n      b'\\x89\\xa6M.\\x89\\xdd\\x17\\x12\\xd7\\x90Oz:\\xf40l\\x86\\\\\\x87\\x04v\\xb2\\x1d$\\x19\\x9aa6\\x90\\xcf\\xdc\\x17\\x95}\\xe4' \\\n      b'~#}\\x83y\\\\\\xee\\x8e[\\xb6\\xf8\\xfd\\x81\\x8a&\\xf9\")&\\xd9\\xbe\\xc2\\xad\\x96Ra\\x05\\xb8\\x0bu\\x1f\\xf79Jd\\xe7\\x16\\x1a' \\\n      b'\\x04Kxh\\x1cNO[{0t\\xcb\\x8b\\x1cU\\xdb\\x94w[' \\\n      b'\\x10]\\xbfh\\xa4\\x97#\\xd3hgZ\\x93\\x13T\\xa0E\\xc8\\xbb\\\\\\x14\\xaah\\x8a\\x9a\\xaa\\xc6,' \\\n      b'\\xb6\\x86N\\xd4\\xd7\\\\\\xec\\xb7\\xd5\\xde\\xef\\x9bB\\x9e?\\xa0\\x7f\\xfd\\xebB\\r\\xcf\\x99\\xedd\\xb3\\xecXsL~.\\xcd,' \\\n      b'(\\x95\\xb5\\x9c\\xd3;\\xd9c[\\xb8\\xad\\xca]\\x9f\\x86\\xee\\xe9\\x0f:KG\\x1c\\xadX\\x91\\xfcZ8r\\xc5\\xca&\\xf3\\x10\\x13\\x87[' \\\n      b'\\xb1\\xca!\\xb6\\x1e\\n\\x16\\x9e\\x1a{\\xde\\x18kW=5\\xb86\\xe9\\xaa\\xf4q\\x96O\\x8c\\xf5\\xd3\\xb5\\x82\\xd4\\xc0\\xd4\\x1a\\x0b' \\\n      b'\\xaf\\x89/\\x89\\xc2\\xd5AM\\x9b\\xfb\\x1f\\xf9\\n\\x0ft\\x14\\xb0\\xb4\\xf1\\xbd,kF\\x9a\\x97\\xe1t\\xecr7R\\x85\\r\\x0b)\\xe1{' \\\n      b'\\xf9\\x9a\\xbd\\xaeo\\x9eS\\xb0\\xf5\\xe8q\\xf4\\x1fw\\x19B\\xc5~\\xde\\xb2\\xc2\\x96L\\xb2\\xa9)\\xb87&\\x17\\xe8\\x85\\xcd\\xc29' \\\n      b'\\xa0\\x8aK\\xd1\\xaer\\xfb\\xd1\\xca\\xc1\\xb4\\xfb.\\x1f\\xfb\\x89\\xe7\\xc3\\x83\\xf6\\x98\\xa9(x\\x1d\\xcf\\xbf4,' \\\n      b'\\x9d\\xa1\\x10\\xb9\\xb5\\\\m\\xe7\\xf5\\xe6\\xfa0k\\xa2\\x83\\x92\\xda\\xe2W\\xe7\\xd1Uwc\\xab?W\\xa4\\xbdK\\xe4m&3\\xd8YJ\\x9c' \\\n      b'\\x1dep\\xb9\\x17\\xf66\\xbd\\xb3_\\x9b\\x1d\\xa7MQndO\\xf0\\xd5m\\xb1\\xeaq\\xd1\\xdf\\xdd\\x90v\\xa8j\\xa6J\\xd1\\x8f\\xbax7k0~5' \\\n      b'\\x1e\\x93\\x1b~:\\xf6\\xcb\\x97\\xfc\\xf6+}\\x7f\\xa5\\xa1\\xd0\\xa3\\xd8M}<.\\xc7%\\x17\\x8c:\\x94dvk\\xce\\x18{' \\\n      b'K5\\x9c\\xe8+Ogu\\x8bM\\t\\x89k\\xa0\\xf9\\xbdO\\xc1\\x8b\\xa9\\xdfi\\xe3\\x92\\xa3V-\\x9a\\xd5K\\xf4\\x1d\\r\\x93\\x1c\\xb6\\xd5' \\\n      b'\\xd0Q\\xc58\\xd3\\xdc\\x8b\\x0cxP\\xaac\\x96\\x96\\xc7G\\xdb\\xed\\xfc\\xafS\\xad\\x89\\x8f\\x15_wFy\\x06\\xf7\\xfaZ&-4_\\x97(' \\\n      b'\\x0f\\xc9\\xd3\\xba\\xc5\\xafo\\xc8\\x83\\x9b4\\xbe\\x8aS\\xac\\xcf<Q\\xbb@t90\\xa0\\x8b\\xab\\x9eH,' \\\n      b'\\n^A\\x90qs\\xbav\\xb9~\\xd7\\xaa\\xcd^4F\\x7f\\xce\\xa1\\xf9\\xa7>x\\xc9\\xb3b\\xfe\\xf6\\xed\\xc5Y\\x94\\xee\\x96\\xa9\\xc2\\x85' \\\n      b'\\xbb\\xc5H?\\xaa\\xc9\\xd5\\x97\\xb63|j\\xe2\\xa9\\xb8\\xd2\\x8b\\\\\\x998[' \\\n      b'q}v\\xb2d\\x89\\x9dsh\\xad>\\xafl/vk\\xf3\\n\\xeb\\xcc\\xa3]\\x8a\\xf8\\xb0 ' \\\n      b'\\x92A\\xeat\\x81>\\x17\\'o\\x8c\\xb5r\\x03\\xe9\\xd9R\\x9fP@\\xc4\\x159{' \\\n      b'!\\xd4H$\\xfe\\x84\\x0bw\\x85\\x98=9\\xdb\\xa4\\xedYoh\\x95\\x05\\xb2\\xfc\\xd3\\xe3\\xa6$\\x8ac\\xd0\\xbd\\x1e\\xf9>\\x99n\\xeaE' \\\n      b'\\x8e\\x14\\xa3\\x93\\xbe\\x15xr>A\\xe4\\xb6\\x1a\\xba\\xb7\\xbf\\xa7\\xcbm\\x80\\xb6c*a\\x7f\\xfb;\\x1bgTD\\x0c\\xf6\\xd9\\x97\\x96' \\\n      b'*n\\xe2|w\\xdd\\xb57\\xbb\\x1aB%\\xdd\\x9dc\\xf0\\xaa\\x1ej\\xc9\\xcb\\xfb\\xf6\\x99W\\xc6\\x91D\\xd7\\x9e}\\xaa\\xe0\\xb7W\\xd7' \\\n      b'\\x8f{\\x15_6\\xf4<\\xa5\\xab\\xdb\\xaf]\\xcbr\\xc7\\x88\\x03\\xa9\\xe7\\xa6\\xa5\\xcd\\x81\\xc6\\xda\\'\\x0f\\x8c\\x1dKO]\\xcax\\xbc3' \\\n      b'\\xbao\\xb2\\xd2\\xbc\\xf3\\x18v\\xfd\\xbd\\x93\\xd8\\xad\\x161\\xde\\xfcp\\xc15qB\\xe6\\xe9,U\\x93,' \\\n      b'\\xe5\\xbccE\\x85\\x01\\x89\\xcf\\n\\xdd\\xba\\xcf\\x1a:\\xfaXS\\xe5s?\\xd3\\\\9\\xd9\\xbb\\xe2\\xef\\xea\\xe8\\xe4e\\\\J\\xc1s\\xc7' \\\n      b'/\\x97\\x9dL\\xcdG\\x13\\xdaQ6\\xad:#\\x94n\\xaf%j\\x01u\\xeb\\x99\\xd5\\x9d\\xaf\\xf6>/}X\\xc1Ril\\xd31D$\\x94\\xccEa\\x1a\\x91u' \\\n      b'\\xe3G\\x84r\\xc3\\xea*i(\\x8ai\\xe7\\x91Wnyc\\xd5\\xb2\\xbe\\xda\\xc8\\x1b\\xf5\\xb8zI\\x87\\xd7\\xd1Y\\xf6w\\x88\\x92\\xe9.\\x15' \\\n      b'\\x16\\xea\\x9egx\\twz3N\\x1b\\x0c\\x1c\\xf1]v\\xf3P\\rh\\t\\xacZ%y\\xc9\\x1dT\\x92Y\\xf3\\x14\\xd6\\xd3\\x14\\xdd\\xe7\\xfa\\xf9\\xbd' \\\n      b'\\x0b\\xb5Z\\xcev\\xbd\\x10]\\x91\\x94\"\\x97i\\xb7\\xa7/\\xbd\\xbf\\xbdF\\x13\\x15\\x97g\\xdey\\x99b$\\x1b\\xd7\\x1d\\xde\\xac\\x86e' \\\n      b'\\xdb8k\\x94\\xbc\\xe9y\\xa8\\xb2\\xd3\\x8d\\xf4\\x81`\\xab\\x9cg]e\\xe5\\x1e\\x18w6\\xbeOu2!\\x1d\\xfeG\\x87\\xf9)\\xb7\\xf5\\x9d5' \\\n      b'\\x17\\xa6\\xd4\\xf7\\xd4\\x16\\x15,S\\xf6I?Q\\x9f&\\xe6\\x8d\\xeb\\x8e\\x84\\xc4\\x07\\x126\\xd7\\xf4\\x96V\\xe8\\xfbt\\r\\x8a\\xaf' \\\n      b'\\xfd\\xab\\xc4\\x99\\xbff(3\"\\xd8R\\xe7\\xf7\\x86m\\xf5N\\xe2A\\xa6\\x04\\xd3{\\xba\\xd9]\\xe5\\x97\\x16\\'\\x8b\\xd7\\x13{' \\\n      b'\\xc2\\x82\\xdf\\xe3T\\xc4\\x92n^\\x96\\xcf\\xde\\xde\\x84*:a\\xd4\\xbc\\xdd@\\xd4\\x05e\\xc5\\xb6\\x16Y\\xa5,' \\\n      b'\"\\xf1\\xe0\\xe0\\xd9\\xe81\\x89G\\x88\\xdai\\xab\\x0b\\x91Xn\\xd3\\xe0\\x91\\xe5\\r\\xf7}\\x9c\\xec\\\\\\x1d\\xec{' \\\n      b'u\\xadc\\xde\\x07\\\\9\\xf5\\x987e\\xa0l\\x1a\\x95\\x11\\xd2\\xed_\\x97QRb\\x9e\\x8e\\x7f ' \\\n      b'\\xca\\xe5\\x84\\x1bI}p\\xc8\\xdf*\\xeaMg\\xe3G\\xae7\\x1an-$\\x8e\\x856\\xfe\\xa3\\xc6u\\r%\\xbb\\xae\\xd8{' \\\n      b'\\xa8\\xf4\\r\\xe5\\x99\\x897\\xbe\\xa6\\xd6\\xcaq5iD\\xbf1\\xccS\\xbb\\x11\\xee\\xd6{' \\\n      b'\\xed\\xe6\\xa9\\xa9\\x9b\\x8es\\x96\\xb16)\\xe4\\xec\\xf2\\xb0\\xee\\xa8\\x9a\\xf8\\x85\\xbcC,' \\\n      b'SD\\x9b\\xc5\\x8f\\xd65\\x033\\xec\\x81,e\\xdcI\\x92\\xed\\xaf)e\\x0e\\xc5\\x91\\x02o^d\\x94^:<\\xa9\\x99\\xb0\\x8c\\xeb\\x88}>\\xc1' \\\n      b'\\x1e#pP*\\xfa\\xdd\\x87\\x1c\\xaa\\x18\\xd1MH\\xf0\\xf0\\x8bYv\\xf1\\xe2\\xc9\\xca\\xa7\\r\\x05\\xde\\xde\\x9c1\\xadmzz\\xfcZ\\xd6' \\\n      b'\\x82\\xb9%2\\xbc<\"b\\xcd>\\xc2^dL\\xa8\\x9fF(\\xbf\\x8d\\xc4\\xd7YZ\\x8c\\xde\\xf8\\xb1\\xe2\\xec\\xbd\\x8dRjr[' \\\n      b'\\xd9\\x076\\xbb\\xbd\\xfd\\xcd\\xd7\\x9b\\x93\\x8b\\xf8%]1i\\xa4\\xf1\\x18\\n\\x83O\\xaf\\xe0m?\\x10\\xc1\\xf35\\xc0\\x82O=\\xad' \\\n      b'\\'\\xa2\\x88`\\xa1\\xe6\\x85\\xd9H\\xc3O\\xb6\\xcc\\x8f\\xccsg\\x8d!;\\x178,' \\\n      b'\\x06=\\x0b\\xe7\\x13n\\x0e\\x0f\\x1e^\\xe8=\\xeb\\xc9-\\xd2K<\\x89_\\x9f>\\xbd\\xb8\\xe4\\xd2\\xad ' \\\n      b'\\x7fr\\xbbs\\xf4\\xc9\\x972F\\r\\xd1O\\'N%\\x12y\\xaau\\x95\\xa4\\x03DTB1E\\xe2K\\x92\\xcd\\xed\\xb44\\xc1\\xa7B\\x17c\\xe3H\\xac' \\\n      b'\\xa2\\xa5\\x97GLI~e\\x84\\xa1\\xf6\\xccqY\\xdc\\xe8_\\xd4\\x1a\\\\\\xd8>r\\xff\\x0e\\xe36\\xb4\\xd8\\xe1\\xcfg\\xb4\\xdc\\xfe\\xaa=W7' \\\n      b'._7B\\xf9X\\xdd\\xbc\\xf7\\xe0\\xf4]\\x9f.J4\\x9b\\xd3(\\x1a\\x9dU\\x91\\x92^\\xfe\\xca\\x1f+\\xf0dbv\\xa9U\\xd4$:(' \\\n      b'A\\xa9i\\x8e\\x8c\\x91\\xf7\\xf1\\x97\\xbe\\xe3x2\\xee\\x85V\\xe5S3;dQ\\xf5#\\xefV\"\\xa1\\xc8u[' \\\n      b'\\x1a\\xc7\\xf0y\\xc2\\xb7\\xa6Qj\\xf8\\xd6\\x7f\\x1e~\\xf4S\\xd3\\n\\xf8\\x86\\xff\\xdb?\\x8a\\xed\\xdf\\xa9\\xc4\\xdf\\xc2:\\xffP' \\\n      b'\\xfb[3\\xb8i^\\xf5\\x91\\xf6\\xcf~\\x82q\\xcb+\\x96\\x1f\\x03\\xdf\\xfb\\n\\xca\\xe6b?_d\\x9d\\xaf|Z\\xfb\\xe4\\x97\\x1a\\xa3\\xe7' \\\n      b'\\xe8k\\x8c\\xb0\\xfdRC\\xea\\x97\\x1a\\xa4_j\\xe07\\xd0\\xd7h\\x13\\xa2\\xaf\\xa1\\xad\\xf1\\xbf\\xe0\\xaa\\x8eR\\x02.\\t9\\xd7' \\\n      b'\\xf0zuI:&y\\xfd\\xc2\\xcd\\xaeW\\x83\\xda\\xd5\\x0f/;\\\\\\x8d\\x9c\\xff\\x1c!\\xe0\\x15\\xc0\\xd1\\x9a\\xb3\\x86-\\x94~K\\xd2\\x7f' \\\n      b'\\xa7T\\xe8\\x9cC\\xd2\\x1f_\\xcav(?\\xbd\\xad\\xd8\\xfa\\x8f\\x80\\xfa\\x0f\\xda\\x0e\\xa78_\\x1f87\\x7f<_}L\\xc7\\xa45\\xc7p\\xa5p' \\\n      b'\\xc0^3\\xa1\\x1f\\x13\\xb5\"\\x9b6\\x7f<\\x92klP\\xb65\\x07\\xf3{' \\\n      b'aP\\'I\\xdf\\xc9\\xe7p\\xc2\\n:!3Hw\\xbf\\xf2\\x07m/]\\xdd\\xbe\\xe0\\x8c\\xcd\\xe53k\\xc8\\xde\\xafmu\\x91\\xc2\\x07yj\\xcf\\xb6' \\\n      b'\\xacsX\\xfc\\x7fK(\\x83%\\xc0\\x12`\\t\\xb0\\x04X\\x02,\\x01\\x96\\x00K0a\\x89\\xbd`\\t\\xb0\\x04X\\x02,' \\\n      b'\\x01\\x96\\x00K\\x80%\\xc0\\x12LXB\\t,\\x01\\x96\\x00K\\x80%\\xc0\\x12`\\t\\xb0\\x04X\\x82\\tK\\xa8\\x82%\\xc0\\x12`\\t\\xb0\\x04X' \\\n      b'\\x02,\\x01\\x96\\x00K0a\\t5\\xb0\\x04X\\x02,\\x01\\x96\\x00K\\x80%\\xc0\\x12`\\t&,' \\\n      b'\\xa1\\x0e\\x96\\x00K\\x80%\\xc0\\x12`\\t\\xb0\\x04X\\x02,\\xc1\\x84%4\\xc0\\x12`\\t\\xb0\\x04X\\x02,' \\\n      b'\\x01\\x96\\x00K\\x80%\\x98\\xb0\\x84&X\\x02,' \\\n      b'\\x01\\x96\\x00K\\x80%\\xc0\\x12`\\t\\xb0\\x04\\x13\\x96@\\x83%\\xc0\\x12`\\t\\xb0\\x04X\\x02,' \\\n      b'\\x01\\x96\\x00K0a\\x89c`\\t\\xb0\\x04X\\x02,' \\\n      b'\\x01\\x96\\x00K\\x80%\\xc0\\x12LX\\x02\\x0b\\x96\\x00K\\x80%\\xc0\\x12`\\t\\xb0\\x04X\\x02,' \\\n      b'\\xc1\\x84%\\xdc\\xc0\\x12`\\t\\xb0\\x04X\\x02,\\x01\\x96\\x00K\\x80%\\x98\\xb0\\x84;X\\x02,' \\\n      b'\\x01\\x96\\x00K\\x80%\\xc0\\x12`\\t\\xb0\\x04\\x13\\x96\\xf0\\x00K\\x80%\\xc0\\x12`\\t\\xb0\\x04X\\x02,' \\\n      b'\\x01\\x96`\\xc2\\x12\\x9e`\\t\\xb0\\x04X\\x02,\\x01\\x96\\x00K\\x80%\\xc0\\x12\\xffl\\x89\\r,' \\\n      b'[\\x10\\xff\\xac\\x89\\x1f\\xd7\\x0eD\\xf9y\\xc4O[' \\\n      b'\\xa8|\\xb7\\x05\\xe39\\x13N\\xfa\\xb3\\xcb\\x19\\xcf\\xa5\\t\\xd0\\x9fS\\xcax\\xee\\x13\\x92\\xfeL2\\xc6sJ;\\xe9\\xcf\\x1fa<\\x17&C' \\\n      b'\\xbf\\xd78\\xe3\\xb9&e\\xfa}E\\x19\\xcfm\\xd1\\xa2\\xdfC\\x8c\\xf1\\x9c\\xab.\\xfd~!\\x8c\\xe7\\xee\\x18\\xd1\\xaf\\rf<\\xb7lI\\xbf' \\\n      b'\\x0e\\x88\\xf1\\xdc\\x1f\\x8e\\xf4s~\\x19\\xcf%\\xba\\xd1\\xcf\\xefa<\\xd7\\xebM\\xff/\\x8f\\xf1\\xdcn\\x7f\\xfa\\xefv\\x8c\\xe7\\xfc' \\\n      b'\\xc3\\xe8\\x8dna\\xcc\\xbe\\xf1\\xfb\\x88\\xc0\\xb7\\xfb\\x1c+\\x02\\xf10\\xe2\\xfb\\xcb\\x7f\\x03PK\\x03\\x04\\x14\\x00\\x02\\x00' \\\n      b'\\x08\\x00\\x1b\\xad|(\\x93u\\xdc\\xc8\\xf9\\t\\x00\\x00V\\x88\\x00\\x00\\t\\x00\\x00\\x00lib ' \\\n      b'2.zip\\xed\\xddWPS\\xdb\\x1a\\x07\\xf0H\\x118t\\x95C\\x00\\xb1Q\"H\\x95\\x1a\\xc4\\xa0\\xdc#\\xbd\\tH\\x95b(' \\\n      b'Q\\x8a\\xe8\\r-\\x14+G\\xe9\\x10\\x01)F\\x94\\x8e(QDz\\xb3%\\xa0 \\x08\\xa2 ' \\\n      b'RT\\x04\\xa4\\xb7C\\t\\x88\\x1c\\xbd\\x8e\\xf7\\xc6\\x87373y\\xfd\\xf6~X{\\xcd\\xda\\xff\\xf9^\\x7f\\xb3\\xf7*\\x16\\xc6\\xacl[\\x10,' \\\n      b'\\x08ND\\xdb\\x9d\\xb0\\xddT\\xd7\\xf1\\r\\x92\\x9c\\x08\\xc4F<\\x02\\xf1\\x1b\\x02\\x81\\xc0\\xfa\\xf9y\\xefPQ\\x089qj\\xb2\\xcf[' \\\n      b'\\xd3zu\\x1b\\xc7\\x8c\\x14%j+\\x97\\x90D\\xaa\\xb4\\x04:9\\xd4=\\xb7\\xe3O\\xc1@\\xa4\\xe0\\xae\\n\\x11\\x93)\\xa1\\xac\\xba\\xed' \\\n      b'\\x96\\x81\\xe4Fy\\xd3\\x08I\\xc7M\\xff\\xe6\\xefK.q\\xa2J%y?\\xae\\xf4I\\x15\\xac\\xba4Jj%\\x9cnun\\xc3g\\xe2\\x9co\\xd0\\x8a\\x17' \\\n      b'\\xb0\\xfb\\x1bF\\xd6\\xd7\\xc9\\x0bs\\xa5\\x99\\x01\\xb4\\xb5\\x17\\\\\\xb5\\xd7(' \\\n      b'\\x89\\xa6M.\\x89\\xdd\\x17\\x12\\xd7\\x90Oz:\\xf40l\\x86\\\\\\x87\\x04v\\xb2\\x1d$\\x19\\x9aa6\\x90\\xcf\\xdc\\x17\\x95}\\xe4' \\\n      b'~#}\\x83y\\\\\\xee\\x8e[\\xb6\\xf8\\xfd\\x81\\x8a&\\xf9\")&\\xd9\\xbe\\xc2\\xad\\x96Ra\\x05\\xb8\\x0bu\\x1f\\xf79Jd\\xe7\\x16\\x1a' \\\n      b'\\x04Kxh\\x1cNO[{0t\\xcb\\x8b\\x1cU\\xdb\\x94w[' \\\n      b'\\x10]\\xbfh\\xa4\\x97#\\xd3hgZ\\x93\\x13T\\xa0E\\xc8\\xbb\\\\\\x14\\xaah\\x8a\\x9a\\xaa\\xc6,' \\\n      b'\\xb6\\x86N\\xd4\\xd7\\\\\\xec\\xb7\\xd5\\xde\\xef\\x9bB\\x9e?\\xa0\\x7f\\xfd\\xebB\\r\\xcf\\x99\\xedd\\xb3\\xecXsL~.\\xcd,' \\\n      b'(\\x95\\xb5\\x9c\\xd3;\\xd9c[\\xb8\\xad\\xca]\\x9f\\x86\\xee\\xe9\\x0f:KG\\x1c\\xadX\\x91\\xfcZ8r\\xc5\\xca&\\xf3\\x10\\x13\\x87[' \\\n      b'\\xb1\\xca!\\xb6\\x1e\\n\\x16\\x9e\\x1a{\\xde\\x18kW=5\\xb86\\xe9\\xaa\\xf4q\\x96O\\x8c\\xf5\\xd3\\xb5\\x82\\xd4\\xc0\\xd4\\x1a\\x0b' \\\n      b'\\xaf\\x89/\\x89\\xc2\\xd5AM\\x9b\\xfb\\x1f\\xf9\\n\\x0ft\\x14\\xb0\\xb4\\xf1\\xbd,kF\\x9a\\x97\\xe1t\\xecr7R\\x85\\r\\x0b)\\xe1{' \\\n      b'\\xf9\\x9a\\xbd\\xaeo\\x9eS\\xb0\\xf5\\xe8q\\xf4\\x1fw\\x19B\\xc5~\\xde\\xb2\\xc2\\x96L\\xb2\\xa9)\\xb87&\\x17\\xe8\\x85\\xcd\\xc29' \\\n      b'\\xa0\\x8aK\\xd1\\xaer\\xfb\\xd1\\xca\\xc1\\xb4\\xfb.\\x1f\\xfb\\x89\\xe7\\xc3\\x83\\xf6\\x98\\xa9(x\\x1d\\xcf\\xbf4,' \\\n      b'\\x9d\\xa1\\x10\\xb9\\xb5\\\\m\\xe7\\xf5\\xe6\\xfa0k\\xa2\\x83\\x92\\xda\\xe2W\\xe7\\xd1Uwc\\xab?W\\xa4\\xbdK\\xe4m&3\\xd8YJ\\x9c' \\\n      b'\\x1dep\\xb9\\x17\\xf66\\xbd\\xb3_\\x9b\\x1d\\xa7MQndO\\xf0\\xd5m\\xb1\\xeaq\\xd1\\xdf\\xdd\\x90v\\xa8j\\xa6J\\xd1\\x8f\\xbax7k0~5' \\\n      b'\\x1e\\x93\\x1b~:\\xf6\\xcb\\x97\\xfc\\xf6+}\\x7f\\xa5\\xa1\\xd0\\xa3\\xd8M}<.\\xc7%\\x17\\x8c:\\x94dvk\\xce\\x18{' \\\n      b'K5\\x9c\\xe8+Ogu\\x8bM\\t\\x89k\\xa0\\xf9\\xbdO\\xc1\\x8b\\xa9\\xdfi\\xe3\\x92\\xa3V-\\x9a\\xd5K\\xf4\\x1d\\r\\x93\\x1c\\xb6\\xd5' \\\n      b'\\xd0Q\\xc58\\xd3\\xdc\\x8b\\x0cxP\\xaac\\x96\\x96\\xc7G\\xdb\\xed\\xfc\\xafS\\xad\\x89\\x8f\\x15_wFy\\x06\\xf7\\xfaZ&-4_\\x97(' \\\n      b'\\x0f\\xc9\\xd3\\xba\\xc5\\xafo\\xc8\\x83\\x9b4\\xbe\\x8aS\\xac\\xcf<Q\\xbb@t90\\xa0\\x8b\\xab\\x9eH,' \\\n      b'\\n^A\\x90qs\\xbav\\xb9~\\xd7\\xaa\\xcd^4F\\x7f\\xce\\xa1\\xf9\\xa7>x\\xc9\\xb3b\\xfe\\xf6\\xed\\xc5Y\\x94\\xee\\x96\\xa9\\xc2\\x85' \\\n      b'\\xbb\\xc5H?\\xaa\\xc9\\xd5\\x97\\xb63|j\\xe2\\xa9\\xb8\\xd2\\x8b\\\\\\x998[' \\\n      b'q}v\\xb2d\\x89\\x9dsh\\xad>\\xafl/vk\\xf3\\n\\xeb\\xcc\\xa3]\\x8a\\xf8\\xb0 ' \\\n      b'\\x92A\\xeat\\x81>\\x17\\'o\\x8c\\xb5r\\x03\\xe9\\xd9R\\x9fP@\\xc4\\x159{' \\\n      b'!\\xd4H$\\xfe\\x84\\x0bw\\x85\\x98=9\\xdb\\xa4\\xedYoh\\x95\\x05\\xb2\\xfc\\xd3\\xe3\\xa6$\\x8ac\\xd0\\xbd\\x1e\\xf9>\\x99n\\xeaE' \\\n      b'\\x8e\\x14\\xa3\\x93\\xbe\\x15xr>A\\xe4\\xb6\\x1a\\xba\\xb7\\xbf\\xa7\\xcbm\\x80\\xb6c*a\\x7f\\xfb;\\x1bgTD\\x0c\\xf6\\xd9\\x97\\x96' \\\n      b'*n\\xe2|w\\xdd\\xb57\\xbb\\x1aB%\\xdd\\x9dc\\xf0\\xaa\\x1ej\\xc9\\xcb\\xfb\\xf6\\x99W\\xc6\\x91D\\xd7\\x9e}\\xaa\\xe0\\xb7W\\xd7' \\\n      b'\\x8f{\\x15_6\\xf4<\\xa5\\xab\\xdb\\xaf]\\xcbr\\xc7\\x88\\x03\\xa9\\xe7\\xa6\\xa5\\xcd\\x81\\xc6\\xda\\'\\x0f\\x8c\\x1dKO]\\xcax\\xbc3' \\\n      b'\\xbao\\xb2\\xd2\\xbc\\xf3\\x18v\\xfd\\xbd\\x93\\xd8\\xad\\x161\\xde\\xfcp\\xc15qB\\xe6\\xe9,U\\x93,' \\\n      b'\\xe5\\xbccE\\x85\\x01\\x89\\xcf\\n\\xdd\\xba\\xcf\\x1a:\\xfaXS\\xe5s?\\xd3\\\\9\\xd9\\xbb\\xe2\\xef\\xea\\xe8\\xe4e\\\\J\\xc1s\\xc7' \\\n      b'/\\x97\\x9dL\\xcdG\\x13\\xdaQ6\\xad:#\\x94n\\xaf%j\\x01u\\xeb\\x99\\xd5\\x9d\\xaf\\xf6>/}X\\xc1Ril\\xd31D$\\x94\\xccEa\\x1a\\x91u' \\\n      b'\\xe3G\\x84r\\xc3\\xea*i(\\x8ai\\xe7\\x91Wnyc\\xd5\\xb2\\xbe\\xda\\xc8\\x1b\\xf5\\xb8zI\\x87\\xd7\\xd1Y\\xf6w\\x88\\x92\\xe9.\\x15' \\\n      b'\\x16\\xea\\x9egx\\twz3N\\x1b\\x0c\\x1c\\xf1]v\\xf3P\\rh\\t\\xacZ%y\\xc9\\x1dT\\x92Y\\xf3\\x14\\xd6\\xd3\\x14\\xdd\\xe7\\xfa\\xf9\\xbd' \\\n      b'\\x0b\\xb5Z\\xcev\\xbd\\x10]\\x91\\x94\"\\x97i\\xb7\\xa7/\\xbd\\xbf\\xbdF\\x13\\x15\\x97g\\xdey\\x99b$\\x1b\\xd7\\x1d\\xde\\xac\\x86e' \\\n      b'\\xdb8k\\x94\\xbc\\xe9y\\xa8\\xb2\\xd3\\x8d\\xf4\\x81`\\xab\\x9cg]e\\xe5\\x1e\\x18w6\\xbeOu2!\\x1d\\xfeG\\x87\\xf9)\\xb7\\xf5\\x9d5' \\\n      b'\\x17\\xa6\\xd4\\xf7\\xd4\\x16\\x15,S\\xf6I?Q\\x9f&\\xe6\\x8d\\xeb\\x8e\\x84\\xc4\\x07\\x126\\xd7\\xf4\\x96V\\xe8\\xfbt\\r\\x8a\\xaf' \\\n      b'\\xfd\\xab\\xc4\\x99\\xbff(3\"\\xd8R\\xe7\\xf7\\x86m\\xf5N\\xe2A\\xa6\\x04\\xd3{\\xba\\xd9]\\xe5\\x97\\x16\\'\\x8b\\xd7\\x13{' \\\n      b'\\xc2\\x82\\xdf\\xe3T\\xc4\\x92n^\\x96\\xcf\\xde\\xde\\x84*:a\\xd4\\xbc\\xdd@\\xd4\\x05e\\xc5\\xb6\\x16Y\\xa5,' \\\n      b'\"\\xf1\\xe0\\xe0\\xd9\\xe81\\x89G\\x88\\xdai\\xab\\x0b\\x91Xn\\xd3\\xe0\\x91\\xe5\\r\\xf7}\\x9c\\xec\\\\\\x1d\\xec{' \\\n      b'u\\xadc\\xde\\x07\\\\9\\xf5\\x987e\\xa0l\\x1a\\x95\\x11\\xd2\\xed_\\x97QRb\\x9e\\x8e\\x7f ' \\\n      b'\\xca\\xe5\\x84\\x1bI}p\\xc8\\xdf*\\xeaMg\\xe3G\\xae7\\x1an-$\\x8e\\x856\\xfe\\xa3\\xc6u\\r%\\xbb\\xae\\xd8{' \\\n      b'\\xa8\\xf4\\r\\xe5\\x99\\x897\\xbe\\xa6\\xd6\\xcaq5iD\\xbf1\\xccS\\xbb\\x11\\xee\\xd6{' \\\n      b'\\xed\\xe6\\xa9\\xa9\\x9b\\x8es\\x96\\xb16)\\xe4\\xec\\xf2\\xb0\\xee\\xa8\\x9a\\xf8\\x85\\xbcC,' \\\n      b'SD\\x9b\\xc5\\x8f\\xd65\\x033\\xec\\x81,e\\xdcI\\x92\\xed\\xaf)e\\x0e\\xc5\\x91\\x02o^d\\x94^:<\\xa9\\x99\\xb0\\x8c\\xeb\\x88}>\\xc1' \\\n      b'\\x1e#pP*\\xfa\\xdd\\x87\\x1c\\xaa\\x18\\xd1MH\\xf0\\xf0\\x8bYv\\xf1\\xe2\\xc9\\xca\\xa7\\r\\x05\\xde\\xde\\x9c1\\xadmzz\\xfcZ\\xd6' \\\n      b'\\x82\\xb9%2\\xbc<\"b\\xcd>\\xc2^dL\\xa8\\x9fF(\\xbf\\x8d\\xc4\\xd7YZ\\x8c\\xde\\xf8\\xb1\\xe2\\xec\\xbd\\x8dRjr[' \\\n      b'\\xd9\\x076\\xbb\\xbd\\xfd\\xcd\\xd7\\x9b\\x93\\x8b\\xf8%]1i\\xa4\\xf1\\x18\\n\\x83O\\xaf\\xe0m?\\x10\\xc1\\xf35\\xc0\\x82O=\\xad' \\\n      b'\\'\\xa2\\x88`\\xa1\\xe6\\x85\\xd9H\\xc3O\\xb6\\xcc\\x8f\\xccsg\\x8d!;\\x178,' \\\n      b'\\x06=\\x0b\\xe7\\x13n\\x0e\\x0f\\x1e^\\xe8=\\xeb\\xc9-\\xd2K<\\x89_\\x9f>\\xbd\\xb8\\xe4\\xd2\\xad ' \\\n      b'\\x7fr\\xbbs\\xf4\\xc9\\x972F\\r\\xd1O\\'N%\\x12y\\xaau\\x95\\xa4\\x03DTB1E\\xe2K\\x92\\xcd\\xed\\xb44\\xc1\\xa7B\\x17c\\xe3H\\xac' \\\n      b'\\xa2\\xa5\\x97GLI~e\\x84\\xa1\\xf6\\xccqY\\xdc\\xe8_\\xd4\\x1a\\\\\\xd8>r\\xff\\x0e\\xe36\\xb4\\xd8\\xe1\\xcfg\\xb4\\xdc\\xfe\\xaa=W7' \\\n      b'._7B\\xf9X\\xdd\\xbc\\xf7\\xe0\\xf4]\\x9f.J4\\x9b\\xd3(\\x1a\\x9dU\\x91\\x92^\\xfe\\xca\\x1f+\\xf0dbv\\xa9U\\xd4$:(' \\\n      b'A\\xa9i\\x8e\\x8c\\x91\\xf7\\xf1\\x97\\xbe\\xe3x2\\xee\\x85V\\xe5S3;dQ\\xf5#\\xefV\"\\xa1\\xc8u[' \\\n      b'\\x1a\\xc7\\xf0y\\xc2\\xb7\\xa6Qj\\xf8\\xd6\\x7f\\x1e~\\xf4S\\xd3\\n\\xf8\\x86\\xff\\xdb?\\x8a\\xed\\xdf\\xa9\\xc4\\xdf\\xc2:\\xffP' \\\n      b'\\xfb[3\\xb8i^\\xf5\\x91\\xf6\\xcf~\\x82q\\xcb+\\x96\\x1f\\x03\\xdf\\xfb\\n\\xca\\xe6b?_d\\x9d\\xaf|Z\\xfb\\xe4\\x97\\x1a\\xa3\\xe7' \\\n      b'\\xe8k\\x8c\\xb0\\xfdRC\\xea\\x97\\x1a\\xa4_j\\xe07\\xd0\\xd7h\\x13\\xa2\\xaf\\xa1\\xad\\xf1\\xbf\\xe0\\xaa\\x8eR\\x02.\\t9\\xd7' \\\n      b'\\xf0zuI:&y\\xfd\\xc2\\xcd\\xaeW\\x83\\xda\\xd5\\x0f/;\\\\\\x8d\\x9c\\xff\\x1c!\\xe0\\x15\\xc0\\xd1\\x9a\\xb3\\x86-\\x94~K\\xd2\\x7f' \\\n      b'\\xa7T\\xe8\\x9cC\\xd2\\x1f_\\xcav(?\\xbd\\xad\\xd8\\xfa\\x8f\\x80\\xfa\\x0f\\xda\\x0e\\xa78_\\x1f87\\x7f<_}L\\xc7\\xa45\\xc7p\\xa5p' \\\n      b'\\xc0^3\\xa1\\x1f\\x13\\xb5\"\\x9b6\\x7f<\\x92klP\\xb65\\x07\\xf3{' \\\n      b'aP\\'I\\xdf\\xc9\\xe7p\\xc2\\n:!3Hw\\xbf\\xf2\\x07m/]\\xdd\\xbe\\xe0\\x8c\\xcd\\xe53k\\xc8\\xde\\xafmu\\x91\\xc2\\x07yj\\xcf\\xb6' \\\n      b'\\xacsX\\xfc\\x7fK(\\x83%\\xc0\\x12`\\t\\xb0\\x04X\\x02,\\x01\\x96\\x00K0a\\x89\\xbd`\\t\\xb0\\x04X\\x02,' \\\n      b'\\x01\\x96\\x00K\\x80%\\xc0\\x12LXB\\t,\\x01\\x96\\x00K\\x80%\\xc0\\x12`\\t\\xb0\\x04X\\x82\\tK\\xa8\\x82%\\xc0\\x12`\\t\\xb0\\x04X' \\\n      b'\\x02,\\x01\\x96\\x00K0a\\t5\\xb0\\x04X\\x02,\\x01\\x96\\x00K\\x80%\\xc0\\x12`\\t&,' \\\n      b'\\xa1\\x0e\\x96\\x00K\\x80%\\xc0\\x12`\\t\\xb0\\x04X\\x02,\\xc1\\x84%4\\xc0\\x12`\\t\\xb0\\x04X\\x02,' \\\n      b'\\x01\\x96\\x00K\\x80%\\x98\\xb0\\x84&X\\x02,' \\\n      b'\\x01\\x96\\x00K\\x80%\\xc0\\x12`\\t\\xb0\\x04\\x13\\x96@\\x83%\\xc0\\x12`\\t\\xb0\\x04X\\x02,' \\\n      b'\\x01\\x96\\x00K0a\\x89c`\\t\\xb0\\x04X\\x02,' \\\n      b'\\x01\\x96\\x00K\\x80%\\xc0\\x12LX\\x02\\x0b\\x96\\x00K\\x80%\\xc0\\x12`\\t\\xb0\\x04X\\x02,' \\\n      b'\\xc1\\x84%\\xdc\\xc0\\x12`\\t\\xb0\\x04X\\x02,\\x01\\x96\\x00K\\x80%\\x98\\xb0\\x84;X\\x02,' \\\n      b'\\x01\\x96\\x00K\\x80%\\xc0\\x12`\\t\\xb0\\x04\\x13\\x96\\xf0\\x00K\\x80%\\xc0\\x12`\\t\\xb0\\x04X\\x02,' \\\n      b'\\x01\\x96`\\xc2\\x12\\x9e`\\t\\xb0\\x04X\\x02,\\x01\\x96\\x00K\\x80%\\xc0\\x12\\xffl\\x89\\r,' \\\n      b'[\\x10\\xff\\xac\\x89\\x1f\\xd7\\x0eD\\xf9y\\xc4O[' \\\n      b'\\xa8|\\xb7\\x05\\xe39\\x13N\\xfa\\xb3\\xcb\\x19\\xcf\\xa5\\t\\xd0\\x9fS\\xcax\\xee\\x13\\x92\\xfeL2\\xc6sJ;\\xe9\\xcf\\x1fa<\\x17&C' \\\n      b'\\xbf\\xd78\\xe3\\xb9&e\\xfa}E\\x19\\xcfm\\xd1\\xa2\\xdfC\\x8c\\xf1\\x9c\\xab.\\xfd~!\\x8c\\xe7\\xee\\x18\\xd1\\xaf\\rf<\\xb7lI\\xbf' \\\n      b'\\x0e\\x88\\xf1\\xdc\\x1f\\x8e\\xf4s~\\x19\\xcf%\\xba\\xd1\\xcf\\xefa<\\xd7\\xebM\\xff/\\x8f\\xf1\\xdcn\\x7f\\xfa\\xefv\\x8c\\xe7\\xfc' \\\n      b'\\xc3\\xe8\\x8dna\\xcc\\xbe\\xf1\\xfb\\x88\\xc0\\xb7\\xfb\\x1c+\\x02\\xf10\\xe2\\xfb\\xcb\\x7f\\x03PK\\x03\\x04\\x14\\x00\\x02\\x00' \\\n      b'\\x08\\x00\\x1b\\xad|(\\x93u\\xdc\\xc8\\xf9\\t\\x00\\x00V\\x88\\x00\\x00\\t\\x00\\x00\\x00lib ' \\\n      b'0.zip\\xed\\xddWPS\\xdb\\x1a\\x07\\xf0H\\x118t\\x95C\\x00\\xb1Q\"H\\x95\\x1a\\xc4\\xa0\\xdc#\\xbd\\tH\\x95b(' \\\n      b'Q\\x8a\\xe8\\r-\\x14+G\\xe9\\x10\\x01)F\\x94\\x8e(QDz\\xb3%\\xa0 \\x08\\xa2 ' \\\n      b'RT\\x04\\xa4\\xb7C\\t\\x88\\x1c\\xbd\\x8e\\xf7\\xc6\\x87373y\\xfd\\xf6~X{\\xcd\\xda\\xff\\xf9^\\x7f\\xb3\\xf7*\\x16\\xc6\\xacl[\\x10,' \\\n      b'\\x08ND\\xdb\\x9d\\xb0\\xddT\\xd7\\xf1\\r\\x92\\x9c\\x08\\xc4F<\\x02\\xf1\\x1b\\x02\\x81\\xc0\\xfa\\xf9y\\xefPQ\\x089qj\\xb2\\xcf[' \\\n      b'\\xd3zu\\x1b\\xc7\\x8c\\x14%j+\\x97\\x90D\\xaa\\xb4\\x04:9\\xd4=\\xb7\\xe3O\\xc1@\\xa4\\xe0\\xae\\n\\x11\\x93)\\xa1\\xac\\xba\\xed' \\\n      b'\\x96\\x81\\xe4Fy\\xd3\\x08I\\xc7M\\xff\\xe6\\xefK.q\\xa2J%y?\\xae\\xf4I\\x15\\xac\\xba4Jj%\\x9cnun\\xc3g\\xe2\\x9co\\xd0\\x8a\\x17' \\\n      b'\\xb0\\xfb\\x1bF\\xd6\\xd7\\xc9\\x0bs\\xa5\\x99\\x01\\xb4\\xb5\\x17\\\\\\xb5\\xd7(' \\\n      b'\\x89\\xa6M.\\x89\\xdd\\x17\\x12\\xd7\\x90Oz:\\xf40l\\x86\\\\\\x87\\x04v\\xb2\\x1d$\\x19\\x9aa6\\x90\\xcf\\xdc\\x17\\x95}\\xe4' \\\n      b'~#}\\x83y\\\\\\xee\\x8e[\\xb6\\xf8\\xfd\\x81\\x8a&\\xf9\")&\\xd9\\xbe\\xc2\\xad\\x96Ra\\x05\\xb8\\x0bu\\x1f\\xf79Jd\\xe7\\x16\\x1a' \\\n      b'\\x04Kxh\\x1cNO[{0t\\xcb\\x8b\\x1cU\\xdb\\x94w[' \\\n      b'\\x10]\\xbfh\\xa4\\x97#\\xd3hgZ\\x93\\x13T\\xa0E\\xc8\\xbb\\\\\\x14\\xaah\\x8a\\x9a\\xaa\\xc6,' \\\n      b'\\xb6\\x86N\\xd4\\xd7\\\\\\xec\\xb7\\xd5\\xde\\xef\\x9bB\\x9e?\\xa0\\x7f\\xfd\\xebB\\r\\xcf\\x99\\xedd\\xb3\\xecXsL~.\\xcd,' \\\n      b'(\\x95\\xb5\\x9c\\xd3;\\xd9c[\\xb8\\xad\\xca]\\x9f\\x86\\xee\\xe9\\x0f:KG\\x1c\\xadX\\x91\\xfcZ8r\\xc5\\xca&\\xf3\\x10\\x13\\x87[' \\\n      b'\\xb1\\xca!\\xb6\\x1e\\n\\x16\\x9e\\x1a{\\xde\\x18kW=5\\xb86\\xe9\\xaa\\xf4q\\x96O\\x8c\\xf5\\xd3\\xb5\\x82\\xd4\\xc0\\xd4\\x1a\\x0b' \\\n      b'\\xaf\\x89/\\x89\\xc2\\xd5AM\\x9b\\xfb\\x1f\\xf9\\n\\x0ft\\x14\\xb0\\xb4\\xf1\\xbd,kF\\x9a\\x97\\xe1t\\xecr7R\\x85\\r\\x0b)\\xe1{' \\\n      b'\\xf9\\x9a\\xbd\\xaeo\\x9eS\\xb0\\xf5\\xe8q\\xf4\\x1fw\\x19B\\xc5~\\xde\\xb2\\xc2\\x96L\\xb2\\xa9)\\xb87&\\x17\\xe8\\x85\\xcd\\xc29' \\\n      b'\\xa0\\x8aK\\xd1\\xaer\\xfb\\xd1\\xca\\xc1\\xb4\\xfb.\\x1f\\xfb\\x89\\xe7\\xc3\\x83\\xf6\\x98\\xa9(x\\x1d\\xcf\\xbf4,' \\\n      b'\\x9d\\xa1\\x10\\xb9\\xb5\\\\m\\xe7\\xf5\\xe6\\xfa0k\\xa2\\x83\\x92\\xda\\xe2W\\xe7\\xd1Uwc\\xab?W\\xa4\\xbdK\\xe4m&3\\xd8YJ\\x9c' \\\n      b'\\x1dep\\xb9\\x17\\xf66\\xbd\\xb3_\\x9b\\x1d\\xa7MQndO\\xf0\\xd5m\\xb1\\xeaq\\xd1\\xdf\\xdd\\x90v\\xa8j\\xa6J\\xd1\\x8f\\xbax7k0~5' \\\n      b'\\x1e\\x93\\x1b~:\\xf6\\xcb\\x97\\xfc\\xf6+}\\x7f\\xa5\\xa1\\xd0\\xa3\\xd8M}<.\\xc7%\\x17\\x8c:\\x94dvk\\xce\\x18{' \\\n      b'K5\\x9c\\xe8+Ogu\\x8bM\\t\\x89k\\xa0\\xf9\\xbdO\\xc1\\x8b\\xa9\\xdfi\\xe3\\x92\\xa3V-\\x9a\\xd5K\\xf4\\x1d\\r\\x93\\x1c\\xb6\\xd5' \\\n      b'\\xd0Q\\xc58\\xd3\\xdc\\x8b\\x0cxP\\xaac\\x96\\x96\\xc7G\\xdb\\xed\\xfc\\xafS\\xad\\x89\\x8f\\x15_wFy\\x06\\xf7\\xfaZ&-4_\\x97(' \\\n      b'\\x0f\\xc9\\xd3\\xba\\xc5\\xafo\\xc8\\x83\\x9b4\\xbe\\x8aS\\xac\\xcf<Q\\xbb@t90\\xa0\\x8b\\xab\\x9eH,' \\\n      b'\\n^A\\x90qs\\xbav\\xb9~\\xd7\\xaa\\xcd^4F\\x7f\\xce\\xa1\\xf9\\xa7>x\\xc9\\xb3b\\xfe\\xf6\\xed\\xc5Y\\x94\\xee\\x96\\xa9\\xc2\\x85' \\\n      b'\\xbb\\xc5H?\\xaa\\xc9\\xd5\\x97\\xb63|j\\xe2\\xa9\\xb8\\xd2\\x8b\\\\\\x998[' \\\n      b'q}v\\xb2d\\x89\\x9dsh\\xad>\\xafl/vk\\xf3\\n\\xeb\\xcc\\xa3]\\x8a\\xf8\\xb0 ' \\\n      b'\\x92A\\xeat\\x81>\\x17\\'o\\x8c\\xb5r\\x03\\xe9\\xd9R\\x9fP@\\xc4\\x159{' \\\n      b'!\\xd4H$\\xfe\\x84\\x0bw\\x85\\x98=9\\xdb\\xa4\\xedYoh\\x95\\x05\\xb2\\xfc\\xd3\\xe3\\xa6$\\x8ac\\xd0\\xbd\\x1e\\xf9>\\x99n\\xeaE' \\\n      b'\\x8e\\x14\\xa3\\x93\\xbe\\x15xr>A\\xe4\\xb6\\x1a\\xba\\xb7\\xbf\\xa7\\xcbm\\x80\\xb6c*a\\x7f\\xfb;\\x1bgTD\\x0c\\xf6\\xd9\\x97\\x96' \\\n      b'*n\\xe2|w\\xdd\\xb57\\xbb\\x1aB%\\xdd\\x9dc\\xf0\\xaa\\x1ej\\xc9\\xcb\\xfb\\xf6\\x99W\\xc6\\x91D\\xd7\\x9e}\\xaa\\xe0\\xb7W\\xd7' \\\n      b'\\x8f{\\x15_6\\xf4<\\xa5\\xab\\xdb\\xaf]\\xcbr\\xc7\\x88\\x03\\xa9\\xe7\\xa6\\xa5\\xcd\\x81\\xc6\\xda\\'\\x0f\\x8c\\x1dKO]\\xcax\\xbc3' \\\n      b'\\xbao\\xb2\\xd2\\xbc\\xf3\\x18v\\xfd\\xbd\\x93\\xd8\\xad\\x161\\xde\\xfcp\\xc15qB\\xe6\\xe9,U\\x93,' \\\n      b'\\xe5\\xbccE\\x85\\x01\\x89\\xcf\\n\\xdd\\xba\\xcf\\x1a:\\xfaXS\\xe5s?\\xd3\\\\9\\xd9\\xbb\\xe2\\xef\\xea\\xe8\\xe4e\\\\J\\xc1s\\xc7' \\\n      b'/\\x97\\x9dL\\xcdG\\x13\\xdaQ6\\xad:#\\x94n\\xaf%j\\x01u\\xeb\\x99\\xd5\\x9d\\xaf\\xf6>/}X\\xc1Ril\\xd31D$\\x94\\xccEa\\x1a\\x91u' \\\n      b'\\xe3G\\x84r\\xc3\\xea*i(\\x8ai\\xe7\\x91Wnyc\\xd5\\xb2\\xbe\\xda\\xc8\\x1b\\xf5\\xb8zI\\x87\\xd7\\xd1Y\\xf6w\\x88\\x92\\xe9.\\x15' \\\n      b'\\x16\\xea\\x9egx\\twz3N\\x1b\\x0c\\x1c\\xf1]v\\xf3P\\rh\\t\\xacZ%y\\xc9\\x1dT\\x92Y\\xf3\\x14\\xd6\\xd3\\x14\\xdd\\xe7\\xfa\\xf9\\xbd' \\\n      b'\\x0b\\xb5Z\\xcev\\xbd\\x10]\\x91\\x94\"\\x97i\\xb7\\xa7/\\xbd\\xbf\\xbdF\\x13\\x15\\x97g\\xdey\\x99b$\\x1b\\xd7\\x1d\\xde\\xac\\x86e' \\\n      b'\\xdb8k\\x94\\xbc\\xe9y\\xa8\\xb2\\xd3\\x8d\\xf4\\x81`\\xab\\x9cg]e\\xe5\\x1e\\x18w6\\xbeOu2!\\x1d\\xfeG\\x87\\xf9)\\xb7\\xf5\\x9d5' \\\n      b'\\x17\\xa6\\xd4\\xf7\\xd4\\x16\\x15,S\\xf6I?Q\\x9f&\\xe6\\x8d\\xeb\\x8e\\x84\\xc4\\x07\\x126\\xd7\\xf4\\x96V\\xe8\\xfbt\\r\\x8a\\xaf' \\\n      b'\\xfd\\xab\\xc4\\x99\\xbff(3\"\\xd8R\\xe7\\xf7\\x86m\\xf5N\\xe2A\\xa6\\x04\\xd3{\\xba\\xd9]\\xe5\\x97\\x16\\'\\x8b\\xd7\\x13{' \\\n      b'\\xc2\\x82\\xdf\\xe3T\\xc4\\x92n^\\x96\\xcf\\xde\\xde\\x84*:a\\xd4\\xbc\\xdd@\\xd4\\x05e\\xc5\\xb6\\x16Y\\xa5,' \\\n      b'\"\\xf1\\xe0\\xe0\\xd9\\xe81\\x89G\\x88\\xdai\\xab\\x0b\\x91Xn\\xd3\\xe0\\x91\\xe5\\r\\xf7}\\x9c\\xec\\\\\\x1d\\xec{' \\\n      b'u\\xadc\\xde\\x07\\\\9\\xf5\\x987e\\xa0l\\x1a\\x95\\x11\\xd2\\xed_\\x97QRb\\x9e\\x8e\\x7f ' \\\n      b'\\xca\\xe5\\x84\\x1bI}p\\xc8\\xdf*\\xeaMg\\xe3G\\xae7\\x1an-$\\x8e\\x856\\xfe\\xa3\\xc6u\\r%\\xbb\\xae\\xd8{' \\\n      b'\\xa8\\xf4\\r\\xe5\\x99\\x897\\xbe\\xa6\\xd6\\xcaq5iD\\xbf1\\xccS\\xbb\\x11\\xee\\xd6{' \\\n      b'\\xed\\xe6\\xa9\\xa9\\x9b\\x8es\\x96\\xb16)\\xe4\\xec\\xf2\\xb0\\xee\\xa8\\x9a\\xf8\\x85\\xbcC,' \\\n      b'SD\\x9b\\xc5\\x8f\\xd65\\x033\\xec\\x81,e\\xdcI\\x92\\xed\\xaf)e\\x0e\\xc5\\x91\\x02o^d\\x94^:<\\xa9\\x99\\xb0\\x8c\\xeb\\x88}>\\xc1' \\\n      b'\\x1e#pP*\\xfa\\xdd\\x87\\x1c\\xaa\\x18\\xd1MH\\xf0\\xf0\\x8bYv\\xf1\\xe2\\xc9\\xca\\xa7\\r\\x05\\xde\\xde\\x9c1\\xadmzz\\xfcZ\\xd6' \\\n      b'\\x82\\xb9%2\\xbc<\"b\\xcd>\\xc2^dL\\xa8\\x9fF(\\xbf\\x8d\\xc4\\xd7YZ\\x8c\\xde\\xf8\\xb1\\xe2\\xec\\xbd\\x8dRjr[' \\\n      b'\\xd9\\x076\\xbb\\xbd\\xfd\\xcd\\xd7\\x9b\\x93\\x8b\\xf8%]1i\\xa4\\xf1\\x18\\n\\x83O\\xaf\\xe0m?\\x10\\xc1\\xf35\\xc0\\x82O=\\xad' \\\n      b'\\'\\xa2\\x88`\\xa1\\xe6\\x85\\xd9H\\xc3O\\xb6\\xcc\\x8f\\xccsg\\x8d!;\\x178,' \\\n      b'\\x06=\\x0b\\xe7\\x13n\\x0e\\x0f\\x1e^\\xe8=\\xeb\\xc9-\\xd2K<\\x89_\\x9f>\\xbd\\xb8\\xe4\\xd2\\xad ' \\\n      b'\\x7fr\\xbbs\\xf4\\xc9\\x972F\\r\\xd1O\\'N%\\x12y\\xaau\\x95\\xa4\\x03DTB1E\\xe2K\\x92\\xcd\\xed\\xb44\\xc1\\xa7B\\x17c\\xe3H\\xac' \\\n      b'\\xa2\\xa5\\x97GLI~e\\x84\\xa1\\xf6\\xccqY\\xdc\\xe8_\\xd4\\x1a\\\\\\xd8>r\\xff\\x0e\\xe36\\xb4\\xd8\\xe1\\xcfg\\xb4\\xdc\\xfe\\xaa=W7' \\\n      b'._7B\\xf9X\\xdd\\xbc\\xf7\\xe0\\xf4]\\x9f.J4\\x9b\\xd3(\\x1a\\x9dU\\x91\\x92^\\xfe\\xca\\x1f+\\xf0dbv\\xa9U\\xd4$:(' \\\n      b'A\\xa9i\\x8e\\x8c\\x91\\xf7\\xf1\\x97\\xbe\\xe3x2\\xee\\x85V\\xe5S3;dQ\\xf5#\\xefV\"\\xa1\\xc8u[' \\\n      b'\\x1a\\xc7\\xf0y\\xc2\\xb7\\xa6Qj\\xf8\\xd6\\x7f\\x1e~\\xf4S\\xd3\\n\\xf8\\x86\\xff\\xdb?\\x8a\\xed\\xdf\\xa9\\xc4\\xdf\\xc2:\\xffP' \\\n      b'\\xfb[3\\xb8i^\\xf5\\x91\\xf6\\xcf~\\x82q\\xcb+\\x96\\x1f\\x03\\xdf\\xfb\\n\\xca\\xe6b?_d\\x9d\\xaf|Z\\xfb\\xe4\\x97\\x1a\\xa3\\xe7' \\\n      b'\\xe8k\\x8c\\xb0\\xfdRC\\xea\\x97\\x1a\\xa4_j\\xe07\\xd0\\xd7h\\x13\\xa2\\xaf\\xa1\\xad\\xf1\\xbf\\xe0\\xaa\\x8eR\\x02.\\t9\\xd7' \\\n      b'\\xf0zuI:&y\\xfd\\xc2\\xcd\\xaeW\\x83\\xda\\xd5\\x0f/;\\\\\\x8d\\x9c\\xff\\x1c!\\xe0\\x15\\xc0\\xd1\\x9a\\xb3\\x86-\\x94~K\\xd2\\x7f' \\\n      b'\\xa7T\\xe8\\x9cC\\xd2\\x1f_\\xcav(?\\xbd\\xad\\xd8\\xfa\\x8f\\x80\\xfa\\x0f\\xda\\x0e\\xa78_\\x1f87\\x7f<_}L\\xc7\\xa45\\xc7p\\xa5p' \\\n      b'\\xc0^3\\xa1\\x1f\\x13\\xb5\"\\x9b6\\x7f<\\x92klP\\xb65\\x07\\xf3{' \\\n      b'aP\\'I\\xdf\\xc9\\xe7p\\xc2\\n:!3Hw\\xbf\\xf2\\x07m/]\\xdd\\xbe\\xe0\\x8c\\xcd\\xe53k\\xc8\\xde\\xafmu\\x91\\xc2\\x07yj\\xcf\\xb6' \\\n      b'\\xacsX\\xfc\\x7fK(\\x83%\\xc0\\x12`\\t\\xb0\\x04X\\x02,\\x01\\x96\\x00K0a\\x89\\xbd`\\t\\xb0\\x04X\\x02,' \\\n      b'\\x01\\x96\\x00K\\x80%\\xc0\\x12LXB\\t,\\x01\\x96\\x00K\\x80%\\xc0\\x12`\\t\\xb0\\x04X\\x82\\tK\\xa8\\x82%\\xc0\\x12`\\t\\xb0\\x04X' \\\n      b'\\x02,\\x01\\x96\\x00K0a\\t5\\xb0\\x04X\\x02,\\x01\\x96\\x00K\\x80%\\xc0\\x12`\\t&,' \\\n      b'\\xa1\\x0e\\x96\\x00K\\x80%\\xc0\\x12`\\t\\xb0\\x04X\\x02,\\xc1\\x84%4\\xc0\\x12`\\t\\xb0\\x04X\\x02,' \\\n      b'\\x01\\x96\\x00K\\x80%\\x98\\xb0\\x84&X\\x02,' \\\n      b'\\x01\\x96\\x00K\\x80%\\xc0\\x12`\\t\\xb0\\x04\\x13\\x96@\\x83%\\xc0\\x12`\\t\\xb0\\x04X\\x02,' \\\n      b'\\x01\\x96\\x00K0a\\x89c`\\t\\xb0\\x04X\\x02,' \\\n      b'\\x01\\x96\\x00K\\x80%\\xc0\\x12LX\\x02\\x0b\\x96\\x00K\\x80%\\xc0\\x12`\\t\\xb0\\x04X\\x02,' \\\n      b'\\xc1\\x84%\\xdc\\xc0\\x12`\\t\\xb0\\x04X\\x02,\\x01\\x96\\x00K\\x80%\\x98\\xb0\\x84;X\\x02,' \\\n      b'\\x01\\x96\\x00K\\x80%\\xc0\\x12`\\t\\xb0\\x04\\x13\\x96\\xf0\\x00K\\x80%\\xc0\\x12`\\t\\xb0\\x04X\\x02,' \\\n      b'\\x01\\x96`\\xc2\\x12\\x9e`\\t\\xb0\\x04X\\x02,\\x01\\x96\\x00K\\x80%\\xc0\\x12\\xffl\\x89\\r,' \\\n      b'[\\x10\\xff\\xac\\x89\\x1f\\xd7\\x0eD\\xf9y\\xc4O[' \\\n      b'\\xa8|\\xb7\\x05\\xe39\\x13N\\xfa\\xb3\\xcb\\x19\\xcf\\xa5\\t\\xd0\\x9fS\\xcax\\xee\\x13\\x92\\xfeL2\\xc6sJ;\\xe9\\xcf\\x1fa<\\x17&C' \\\n      b'\\xbf\\xd78\\xe3\\xb9&e\\xfa}E\\x19\\xcfm\\xd1\\xa2\\xdfC\\x8c\\xf1\\x9c\\xab.\\xfd~!\\x8c\\xe7\\xee\\x18\\xd1\\xaf\\rf<\\xb7lI\\xbf' \\\n      b'\\x0e\\x88\\xf1\\xdc\\x1f\\x8e\\xf4s~\\x19\\xcf%\\xba\\xd1\\xcf\\xefa<\\xd7\\xebM\\xff/\\x8f\\xf1\\xdcn\\x7f\\xfa\\xefv\\x8c\\xe7\\xfc' \\\n      b'\\xc3\\xe8\\x8dna\\xcc\\xbe\\xf1\\xfb\\x88\\xc0\\xb7\\xfb\\x1c+\\x02\\xf10\\xe2\\xfb\\xcb\\x7f\\x03PK\\x03\\x04\\x14\\x00\\x02\\x00' \\\n      b'\\x08\\x00\\x1b\\xad|(\\x93u\\xdc\\xc8\\xf9\\t\\x00\\x00V\\x88\\x00\\x00\\t\\x00\\x00\\x00lib ' \\\n      b'4.zip\\xed\\xddWPS\\xdb\\x1a\\x07\\xf0H\\x118t\\x95C\\x00\\xb1Q\"H\\x95\\x1a\\xc4\\xa0\\xdc#\\xbd\\tH\\x95b(' \\\n      b'Q\\x8a\\xe8\\r-\\x14+G\\xe9\\x10\\x01)F\\x94\\x8e(QDz\\xb3%\\xa0 \\x08\\xa2 ' \\\n      b'RT\\x04\\xa4\\xb7C\\t\\x88\\x1c\\xbd\\x8e\\xf7\\xc6\\x87373y\\xfd\\xf6~X{\\xcd\\xda\\xff\\xf9^\\x7f\\xb3\\xf7*\\x16\\xc6\\xacl[\\x10,' \\\n      b'\\x08ND\\xdb\\x9d\\xb0\\xddT\\xd7\\xf1\\r\\x92\\x9c\\x08\\xc4F<\\x02\\xf1\\x1b\\x02\\x81\\xc0\\xfa\\xf9y\\xefPQ\\x089qj\\xb2\\xcf[' \\\n      b'\\xd3zu\\x1b\\xc7\\x8c\\x14%j+\\x97\\x90D\\xaa\\xb4\\x04:9\\xd4=\\xb7\\xe3O\\xc1@\\xa4\\xe0\\xae\\n\\x11\\x93)\\xa1\\xac\\xba\\xed' \\\n      b'\\x96\\x81\\xe4Fy\\xd3\\x08I\\xc7M\\xff\\xe6\\xefK.q\\xa2J%y?\\xae\\xf4I\\x15\\xac\\xba4Jj%\\x9cnun\\xc3g\\xe2\\x9co\\xd0\\x8a\\x17' \\\n      b'\\xb0\\xfb\\x1bF\\xd6\\xd7\\xc9\\x0bs\\xa5\\x99\\x01\\xb4\\xb5\\x17\\\\\\xb5\\xd7(' \\\n      b'\\x89\\xa6M.\\x89\\xdd\\x17\\x12\\xd7\\x90Oz:\\xf40l\\x86\\\\\\x87\\x04v\\xb2\\x1d$\\x19\\x9aa6\\x90\\xcf\\xdc\\x17\\x95}\\xe4' \\\n      b'~#}\\x83y\\\\\\xee\\x8e[\\xb6\\xf8\\xfd\\x81\\x8a&\\xf9\")&\\xd9\\xbe\\xc2\\xad\\x96Ra\\x05\\xb8\\x0bu\\x1f\\xf79Jd\\xe7\\x16\\x1a' \\\n      b'\\x04Kxh\\x1cNO[{0t\\xcb\\x8b\\x1cU\\xdb\\x94w[' \\\n      b'\\x10]\\xbfh\\xa4\\x97#\\xd3hgZ\\x93\\x13T\\xa0E\\xc8\\xbb\\\\\\x14\\xaah\\x8a\\x9a\\xaa\\xc6,' \\\n      b'\\xb6\\x86N\\xd4\\xd7\\\\\\xec\\xb7\\xd5\\xde\\xef\\x9bB\\x9e?\\xa0\\x7f\\xfd\\xebB\\r\\xcf\\x99\\xedd\\xb3\\xecXsL~.\\xcd,' \\\n      b'(\\x95\\xb5\\x9c\\xd3;\\xd9c[\\xb8\\xad\\xca]\\x9f\\x86\\xee\\xe9\\x0f:KG\\x1c\\xadX\\x91\\xfcZ8r\\xc5\\xca&\\xf3\\x10\\x13\\x87[' \\\n      b'\\xb1\\xca!\\xb6\\x1e\\n\\x16\\x9e\\x1a{\\xde\\x18kW=5\\xb86\\xe9\\xaa\\xf4q\\x96O\\x8c\\xf5\\xd3\\xb5\\x82\\xd4\\xc0\\xd4\\x1a\\x0b' \\\n      b'\\xaf\\x89/\\x89\\xc2\\xd5AM\\x9b\\xfb\\x1f\\xf9\\n\\x0ft\\x14\\xb0\\xb4\\xf1\\xbd,kF\\x9a\\x97\\xe1t\\xecr7R\\x85\\r\\x0b)\\xe1{' \\\n      b'\\xf9\\x9a\\xbd\\xaeo\\x9eS\\xb0\\xf5\\xe8q\\xf4\\x1fw\\x19B\\xc5~\\xde\\xb2\\xc2\\x96L\\xb2\\xa9)\\xb87&\\x17\\xe8\\x85\\xcd\\xc29' \\\n      b'\\xa0\\x8aK\\xd1\\xaer\\xfb\\xd1\\xca\\xc1\\xb4\\xfb.\\x1f\\xfb\\x89\\xe7\\xc3\\x83\\xf6\\x98\\xa9(x\\x1d\\xcf\\xbf4,' \\\n      b'\\x9d\\xa1\\x10\\xb9\\xb5\\\\m\\xe7\\xf5\\xe6\\xfa0k\\xa2\\x83\\x92\\xda\\xe2W\\xe7\\xd1Uwc\\xab?W\\xa4\\xbdK\\xe4m&3\\xd8YJ\\x9c' \\\n      b'\\x1dep\\xb9\\x17\\xf66\\xbd\\xb3_\\x9b\\x1d\\xa7MQndO\\xf0\\xd5m\\xb1\\xeaq\\xd1\\xdf\\xdd\\x90v\\xa8j\\xa6J\\xd1\\x8f\\xbax7k0~5' \\\n      b'\\x1e\\x93\\x1b~:\\xf6\\xcb\\x97\\xfc\\xf6+}\\x7f\\xa5\\xa1\\xd0\\xa3\\xd8M}<.\\xc7%\\x17\\x8c:\\x94dvk\\xce\\x18{' \\\n      b'K5\\x9c\\xe8+Ogu\\x8bM\\t\\x89k\\xa0\\xf9\\xbdO\\xc1\\x8b\\xa9\\xdfi\\xe3\\x92\\xa3V-\\x9a\\xd5K\\xf4\\x1d\\r\\x93\\x1c\\xb6\\xd5' \\\n      b'\\xd0Q\\xc58\\xd3\\xdc\\x8b\\x0cxP\\xaac\\x96\\x96\\xc7G\\xdb\\xed\\xfc\\xafS\\xad\\x89\\x8f\\x15_wFy\\x06\\xf7\\xfaZ&-4_\\x97(' \\\n      b'\\x0f\\xc9\\xd3\\xba\\xc5\\xafo\\xc8\\x83\\x9b4\\xbe\\x8aS\\xac\\xcf<Q\\xbb@t90\\xa0\\x8b\\xab\\x9eH,' \\\n      b'\\n^A\\x90qs\\xbav\\xb9~\\xd7\\xaa\\xcd^4F\\x7f\\xce\\xa1\\xf9\\xa7>x\\xc9\\xb3b\\xfe\\xf6\\xed\\xc5Y\\x94\\xee\\x96\\xa9\\xc2\\x85' \\\n      b'\\xbb\\xc5H?\\xaa\\xc9\\xd5\\x97\\xb63|j\\xe2\\xa9\\xb8\\xd2\\x8b\\\\\\x998[' \\\n      b'q}v\\xb2d\\x89\\x9dsh\\xad>\\xafl/vk\\xf3\\n\\xeb\\xcc\\xa3]\\x8a\\xf8\\xb0 ' \\\n      b'\\x92A\\xeat\\x81>\\x17\\'o\\x8c\\xb5r\\x03\\xe9\\xd9R\\x9fP@\\xc4\\x159{' \\\n      b'!\\xd4H$\\xfe\\x84\\x0bw\\x85\\x98=9\\xdb\\xa4\\xedYoh\\x95\\x05\\xb2\\xfc\\xd3\\xe3\\xa6$\\x8ac\\xd0\\xbd\\x1e\\xf9>\\x99n\\xeaE' \\\n      b'\\x8e\\x14\\xa3\\x93\\xbe\\x15xr>A\\xe4\\xb6\\x1a\\xba\\xb7\\xbf\\xa7\\xcbm\\x80\\xb6c*a\\x7f\\xfb;\\x1bgTD\\x0c\\xf6\\xd9\\x97\\x96' \\\n      b'*n\\xe2|w\\xdd\\xb57\\xbb\\x1aB%\\xdd\\x9dc\\xf0\\xaa\\x1ej\\xc9\\xcb\\xfb\\xf6\\x99W\\xc6\\x91D\\xd7\\x9e}\\xaa\\xe0\\xb7W\\xd7' \\\n      b'\\x8f{\\x15_6\\xf4<\\xa5\\xab\\xdb\\xaf]\\xcbr\\xc7\\x88\\x03\\xa9\\xe7\\xa6\\xa5\\xcd\\x81\\xc6\\xda\\'\\x0f\\x8c\\x1dKO]\\xcax\\xbc3' \\\n      b'\\xbao\\xb2\\xd2\\xbc\\xf3\\x18v\\xfd\\xbd\\x93\\xd8\\xad\\x161\\xde\\xfcp\\xc15qB\\xe6\\xe9,U\\x93,' \\\n      b'\\xe5\\xbccE\\x85\\x01\\x89\\xcf\\n\\xdd\\xba\\xcf\\x1a:\\xfaXS\\xe5s?\\xd3\\\\9\\xd9\\xbb\\xe2\\xef\\xea\\xe8\\xe4e\\\\J\\xc1s\\xc7' \\\n      b'/\\x97\\x9dL\\xcdG\\x13\\xdaQ6\\xad:#\\x94n\\xaf%j\\x01u\\xeb\\x99\\xd5\\x9d\\xaf\\xf6>/}X\\xc1Ril\\xd31D$\\x94\\xccEa\\x1a\\x91u' \\\n      b'\\xe3G\\x84r\\xc3\\xea*i(\\x8ai\\xe7\\x91Wnyc\\xd5\\xb2\\xbe\\xda\\xc8\\x1b\\xf5\\xb8zI\\x87\\xd7\\xd1Y\\xf6w\\x88\\x92\\xe9.\\x15' \\\n      b'\\x16\\xea\\x9egx\\twz3N\\x1b\\x0c\\x1c\\xf1]v\\xf3P\\rh\\t\\xacZ%y\\xc9\\x1dT\\x92Y\\xf3\\x14\\xd6\\xd3\\x14\\xdd\\xe7\\xfa\\xf9\\xbd' \\\n      b'\\x0b\\xb5Z\\xcev\\xbd\\x10]\\x91\\x94\"\\x97i\\xb7\\xa7/\\xbd\\xbf\\xbdF\\x13\\x15\\x97g\\xdey\\x99b$\\x1b\\xd7\\x1d\\xde\\xac\\x86e' \\\n      b'\\xdb8k\\x94\\xbc\\xe9y\\xa8\\xb2\\xd3\\x8d\\xf4\\x81`\\xab\\x9cg]e\\xe5\\x1e\\x18w6\\xbeOu2!\\x1d\\xfeG\\x87\\xf9)\\xb7\\xf5\\x9d5' \\\n      b'\\x17\\xa6\\xd4\\xf7\\xd4\\x16\\x15,S\\xf6I?Q\\x9f&\\xe6\\x8d\\xeb\\x8e\\x84\\xc4\\x07\\x126\\xd7\\xf4\\x96V\\xe8\\xfbt\\r\\x8a\\xaf' \\\n      b'\\xfd\\xab\\xc4\\x99\\xbff(3\"\\xd8R\\xe7\\xf7\\x86m\\xf5N\\xe2A\\xa6\\x04\\xd3{\\xba\\xd9]\\xe5\\x97\\x16\\'\\x8b\\xd7\\x13{' \\\n      b'\\xc2\\x82\\xdf\\xe3T\\xc4\\x92n^\\x96\\xcf\\xde\\xde\\x84*:a\\xd4\\xbc\\xdd@\\xd4\\x05e\\xc5\\xb6\\x16Y\\xa5,' \\\n      b'\"\\xf1\\xe0\\xe0\\xd9\\xe81\\x89G\\x88\\xdai\\xab\\x0b\\x91Xn\\xd3\\xe0\\x91\\xe5\\r\\xf7}\\x9c\\xec\\\\\\x1d\\xec{' \\\n      b'u\\xadc\\xde\\x07\\\\9\\xf5\\x987e\\xa0l\\x1a\\x95\\x11\\xd2\\xed_\\x97QRb\\x9e\\x8e\\x7f ' \\\n      b'\\xca\\xe5\\x84\\x1bI}p\\xc8\\xdf*\\xeaMg\\xe3G\\xae7\\x1an-$\\x8e\\x856\\xfe\\xa3\\xc6u\\r%\\xbb\\xae\\xd8{' \\\n      b'\\xa8\\xf4\\r\\xe5\\x99\\x897\\xbe\\xa6\\xd6\\xcaq5iD\\xbf1\\xccS\\xbb\\x11\\xee\\xd6{' \\\n      b'\\xed\\xe6\\xa9\\xa9\\x9b\\x8es\\x96\\xb16)\\xe4\\xec\\xf2\\xb0\\xee\\xa8\\x9a\\xf8\\x85\\xbcC,' \\\n      b'SD\\x9b\\xc5\\x8f\\xd65\\x033\\xec\\x81,e\\xdcI\\x92\\xed\\xaf)e\\x0e\\xc5\\x91\\x02o^d\\x94^:<\\xa9\\x99\\xb0\\x8c\\xeb\\x88}>\\xc1' \\\n      b'\\x1e#pP*\\xfa\\xdd\\x87\\x1c\\xaa\\x18\\xd1MH\\xf0\\xf0\\x8bYv\\xf1\\xe2\\xc9\\xca\\xa7\\r\\x05\\xde\\xde\\x9c1\\xadmzz\\xfcZ\\xd6' \\\n      b'\\x82\\xb9%2\\xbc<\"b\\xcd>\\xc2^dL\\xa8\\x9fF(\\xbf\\x8d\\xc4\\xd7YZ\\x8c\\xde\\xf8\\xb1\\xe2\\xec\\xbd\\x8dRjr[' \\\n      b'\\xd9\\x076\\xbb\\xbd\\xfd\\xcd\\xd7\\x9b\\x93\\x8b\\xf8%]1i\\xa4\\xf1\\x18\\n\\x83O\\xaf\\xe0m?\\x10\\xc1\\xf35\\xc0\\x82O=\\xad' \\\n      b'\\'\\xa2\\x88`\\xa1\\xe6\\x85\\xd9H\\xc3O\\xb6\\xcc\\x8f\\xccsg\\x8d!;\\x178,' \\\n      b'\\x06=\\x0b\\xe7\\x13n\\x0e\\x0f\\x1e^\\xe8=\\xeb\\xc9-\\xd2K<\\x89_\\x9f>\\xbd\\xb8\\xe4\\xd2\\xad ' \\\n      b'\\x7fr\\xbbs\\xf4\\xc9\\x972F\\r\\xd1O\\'N%\\x12y\\xaau\\x95\\xa4\\x03DTB1E\\xe2K\\x92\\xcd\\xed\\xb44\\xc1\\xa7B\\x17c\\xe3H\\xac' \\\n      b'\\xa2\\xa5\\x97GLI~e\\x84\\xa1\\xf6\\xccqY\\xdc\\xe8_\\xd4\\x1a\\\\\\xd8>r\\xff\\x0e\\xe36\\xb4\\xd8\\xe1\\xcfg\\xb4\\xdc\\xfe\\xaa=W7' \\\n      b'._7B\\xf9X\\xdd\\xbc\\xf7\\xe0\\xf4]\\x9f.J4\\x9b\\xd3(\\x1a\\x9dU\\x91\\x92^\\xfe\\xca\\x1f+\\xf0dbv\\xa9U\\xd4$:(' \\\n      b'A\\xa9i\\x8e\\x8c\\x91\\xf7\\xf1\\x97\\xbe\\xe3x2\\xee\\x85V\\xe5S3;dQ\\xf5#\\xefV\"\\xa1\\xc8u[' \\\n      b'\\x1a\\xc7\\xf0y\\xc2\\xb7\\xa6Qj\\xf8\\xd6\\x7f\\x1e~\\xf4S\\xd3\\n\\xf8\\x86\\xff\\xdb?\\x8a\\xed\\xdf\\xa9\\xc4\\xdf\\xc2:\\xffP' \\\n      b'\\xfb[3\\xb8i^\\xf5\\x91\\xf6\\xcf~\\x82q\\xcb+\\x96\\x1f\\x03\\xdf\\xfb\\n\\xca\\xe6b?_d\\x9d\\xaf|Z\\xfb\\xe4\\x97\\x1a\\xa3\\xe7' \\\n      b'\\xe8k\\x8c\\xb0\\xfdRC\\xea\\x97\\x1a\\xa4_j\\xe07\\xd0\\xd7h\\x13\\xa2\\xaf\\xa1\\xad\\xf1\\xbf\\xe0\\xaa\\x8eR\\x02.\\t9\\xd7' \\\n      b'\\xf0zuI:&y\\xfd\\xc2\\xcd\\xaeW\\x83\\xda\\xd5\\x0f/;\\\\\\x8d\\x9c\\xff\\x1c!\\xe0\\x15\\xc0\\xd1\\x9a\\xb3\\x86-\\x94~K\\xd2\\x7f' \\\n      b'\\xa7T\\xe8\\x9cC\\xd2\\x1f_\\xcav(?\\xbd\\xad\\xd8\\xfa\\x8f\\x80\\xfa\\x0f\\xda\\x0e\\xa78_\\x1f87\\x7f<_}L\\xc7\\xa45\\xc7p\\xa5p' \\\n      b'\\xc0^3\\xa1\\x1f\\x13\\xb5\"\\x9b6\\x7f<\\x92klP\\xb65\\x07\\xf3{' \\\n      b'aP\\'I\\xdf\\xc9\\xe7p\\xc2\\n:!3Hw\\xbf\\xf2\\x07m/]\\xdd\\xbe\\xe0\\x8c\\xcd\\xe53k\\xc8\\xde\\xafmu\\x91\\xc2\\x07yj\\xcf\\xb6' \\\n      b'\\xacsX\\xfc\\x7fK(\\x83%\\xc0\\x12`\\t\\xb0\\x04X\\x02,\\x01\\x96\\x00K0a\\x89\\xbd`\\t\\xb0\\x04X\\x02,' \\\n      b'\\x01\\x96\\x00K\\x80%\\xc0\\x12LXB\\t,\\x01\\x96\\x00K\\x80%\\xc0\\x12`\\t\\xb0\\x04X\\x82\\tK\\xa8\\x82%\\xc0\\x12`\\t\\xb0\\x04X' \\\n      b'\\x02,\\x01\\x96\\x00K0a\\t5\\xb0\\x04X\\x02,\\x01\\x96\\x00K\\x80%\\xc0\\x12`\\t&,' \\\n      b'\\xa1\\x0e\\x96\\x00K\\x80%\\xc0\\x12`\\t\\xb0\\x04X\\x02,\\xc1\\x84%4\\xc0\\x12`\\t\\xb0\\x04X\\x02,' \\\n      b'\\x01\\x96\\x00K\\x80%\\x98\\xb0\\x84&X\\x02,' \\\n      b'\\x01\\x96\\x00K\\x80%\\xc0\\x12`\\t\\xb0\\x04\\x13\\x96@\\x83%\\xc0\\x12`\\t\\xb0\\x04X\\x02,' \\\n      b'\\x01\\x96\\x00K0a\\x89c`\\t\\xb0\\x04X\\x02,' \\\n      b'\\x01\\x96\\x00K\\x80%\\xc0\\x12LX\\x02\\x0b\\x96\\x00K\\x80%\\xc0\\x12`\\t\\xb0\\x04X\\x02,' \\\n      b'\\xc1\\x84%\\xdc\\xc0\\x12`\\t\\xb0\\x04X\\x02,\\x01\\x96\\x00K\\x80%\\x98\\xb0\\x84;X\\x02,' \\\n      b'\\x01\\x96\\x00K\\x80%\\xc0\\x12`\\t\\xb0\\x04\\x13\\x96\\xf0\\x00K\\x80%\\xc0\\x12`\\t\\xb0\\x04X\\x02,' \\\n      b'\\x01\\x96`\\xc2\\x12\\x9e`\\t\\xb0\\x04X\\x02,\\x01\\x96\\x00K\\x80%\\xc0\\x12\\xffl\\x89\\r,' \\\n      b'[\\x10\\xff\\xac\\x89\\x1f\\xd7\\x0eD\\xf9y\\xc4O[' \\\n      b'\\xa8|\\xb7\\x05\\xe39\\x13N\\xfa\\xb3\\xcb\\x19\\xcf\\xa5\\t\\xd0\\x9fS\\xcax\\xee\\x13\\x92\\xfeL2\\xc6sJ;\\xe9\\xcf\\x1fa<\\x17&C' \\\n      b'\\xbf\\xd78\\xe3\\xb9&e\\xfa}E\\x19\\xcfm\\xd1\\xa2\\xdfC\\x8c\\xf1\\x9c\\xab.\\xfd~!\\x8c\\xe7\\xee\\x18\\xd1\\xaf\\rf<\\xb7lI\\xbf' \\\n      b'\\x0e\\x88\\xf1\\xdc\\x1f\\x8e\\xf4s~\\x19\\xcf%\\xba\\xd1\\xcf\\xefa<\\xd7\\xebM\\xff/\\x8f\\xf1\\xdcn\\x7f\\xfa\\xefv\\x8c\\xe7\\xfc' \\\n      b'\\xc3\\xe8\\x8dna\\xcc\\xbe\\xf1\\xfb\\x88\\xc0\\xb7\\xfb\\x1c+\\x02\\xf10\\xe2\\xfb\\xcb\\x7f\\x03PK\\x03\\x04\\x14\\x00\\x02\\x00' \\\n      b'\\x08\\x00\\x1b\\xad|(\\x93u\\xdc\\xc8\\xf9\\t\\x00\\x00V\\x88\\x00\\x00\\t\\x00\\x00\\x00lib ' \\\n      b'5.zip\\xed\\xddWPS\\xdb\\x1a\\x07\\xf0H\\x118t\\x95C\\x00\\xb1Q\"H\\x95\\x1a\\xc4\\xa0\\xdc#\\xbd\\tH\\x95b(' \\\n      b'Q\\x8a\\xe8\\r-\\x14+G\\xe9\\x10\\x01)F\\x94\\x8e(QDz\\xb3%\\xa0 \\x08\\xa2 ' \\\n      b'RT\\x04\\xa4\\xb7C\\t\\x88\\x1c\\xbd\\x8e\\xf7\\xc6\\x87373y\\xfd\\xf6~X{\\xcd\\xda\\xff\\xf9^\\x7f\\xb3\\xf7*\\x16\\xc6\\xacl[\\x10,' \\\n      b'\\x08ND\\xdb\\x9d\\xb0\\xddT\\xd7\\xf1\\r\\x92\\x9c\\x08\\xc4F<\\x02\\xf1\\x1b\\x02\\x81\\xc0\\xfa\\xf9y\\xefPQ\\x089qj\\xb2\\xcf[' \\\n      b'\\xd3zu\\x1b\\xc7\\x8c\\x14%j+\\x97\\x90D\\xaa\\xb4\\x04:9\\xd4=\\xb7\\xe3O\\xc1@\\xa4\\xe0\\xae\\n\\x11\\x93)\\xa1\\xac\\xba\\xed' \\\n      b'\\x96\\x81\\xe4Fy\\xd3\\x08I\\xc7M\\xff\\xe6\\xefK.q\\xa2J%y?\\xae\\xf4I\\x15\\xac\\xba4Jj%\\x9cnun\\xc3g\\xe2\\x9co\\xd0\\x8a\\x17' \\\n      b'\\xb0\\xfb\\x1bF\\xd6\\xd7\\xc9\\x0bs\\xa5\\x99\\x01\\xb4\\xb5\\x17\\\\\\xb5\\xd7(' \\\n      b'\\x89\\xa6M.\\x89\\xdd\\x17\\x12\\xd7\\x90Oz:\\xf40l\\x86\\\\\\x87\\x04v\\xb2\\x1d$\\x19\\x9aa6\\x90\\xcf\\xdc\\x17\\x95}\\xe4' \\\n      b'~#}\\x83y\\\\\\xee\\x8e[\\xb6\\xf8\\xfd\\x81\\x8a&\\xf9\")&\\xd9\\xbe\\xc2\\xad\\x96Ra\\x05\\xb8\\x0bu\\x1f\\xf79Jd\\xe7\\x16\\x1a' \\\n      b'\\x04Kxh\\x1cNO[{0t\\xcb\\x8b\\x1cU\\xdb\\x94w[' \\\n      b'\\x10]\\xbfh\\xa4\\x97#\\xd3hgZ\\x93\\x13T\\xa0E\\xc8\\xbb\\\\\\x14\\xaah\\x8a\\x9a\\xaa\\xc6,' \\\n      b'\\xb6\\x86N\\xd4\\xd7\\\\\\xec\\xb7\\xd5\\xde\\xef\\x9bB\\x9e?\\xa0\\x7f\\xfd\\xebB\\r\\xcf\\x99\\xedd\\xb3\\xecXsL~.\\xcd,' \\\n      b'(\\x95\\xb5\\x9c\\xd3;\\xd9c[\\xb8\\xad\\xca]\\x9f\\x86\\xee\\xe9\\x0f:KG\\x1c\\xadX\\x91\\xfcZ8r\\xc5\\xca&\\xf3\\x10\\x13\\x87[' \\\n      b'\\xb1\\xca!\\xb6\\x1e\\n\\x16\\x9e\\x1a{\\xde\\x18kW=5\\xb86\\xe9\\xaa\\xf4q\\x96O\\x8c\\xf5\\xd3\\xb5\\x82\\xd4\\xc0\\xd4\\x1a\\x0b' \\\n      b'\\xaf\\x89/\\x89\\xc2\\xd5AM\\x9b\\xfb\\x1f\\xf9\\n\\x0ft\\x14\\xb0\\xb4\\xf1\\xbd,kF\\x9a\\x97\\xe1t\\xecr7R\\x85\\r\\x0b)\\xe1{' \\\n      b'\\xf9\\x9a\\xbd\\xaeo\\x9eS\\xb0\\xf5\\xe8q\\xf4\\x1fw\\x19B\\xc5~\\xde\\xb2\\xc2\\x96L\\xb2\\xa9)\\xb87&\\x17\\xe8\\x85\\xcd\\xc29' \\\n      b'\\xa0\\x8aK\\xd1\\xaer\\xfb\\xd1\\xca\\xc1\\xb4\\xfb.\\x1f\\xfb\\x89\\xe7\\xc3\\x83\\xf6\\x98\\xa9(x\\x1d\\xcf\\xbf4,' \\\n      b'\\x9d\\xa1\\x10\\xb9\\xb5\\\\m\\xe7\\xf5\\xe6\\xfa0k\\xa2\\x83\\x92\\xda\\xe2W\\xe7\\xd1Uwc\\xab?W\\xa4\\xbdK\\xe4m&3\\xd8YJ\\x9c' \\\n      b'\\x1dep\\xb9\\x17\\xf66\\xbd\\xb3_\\x9b\\x1d\\xa7MQndO\\xf0\\xd5m\\xb1\\xeaq\\xd1\\xdf\\xdd\\x90v\\xa8j\\xa6J\\xd1\\x8f\\xbax7k0~5' \\\n      b'\\x1e\\x93\\x1b~:\\xf6\\xcb\\x97\\xfc\\xf6+}\\x7f\\xa5\\xa1\\xd0\\xa3\\xd8M}<.\\xc7%\\x17\\x8c:\\x94dvk\\xce\\x18{' \\\n      b'K5\\x9c\\xe8+Ogu\\x8bM\\t\\x89k\\xa0\\xf9\\xbdO\\xc1\\x8b\\xa9\\xdfi\\xe3\\x92\\xa3V-\\x9a\\xd5K\\xf4\\x1d\\r\\x93\\x1c\\xb6\\xd5' \\\n      b'\\xd0Q\\xc58\\xd3\\xdc\\x8b\\x0cxP\\xaac\\x96\\x96\\xc7G\\xdb\\xed\\xfc\\xafS\\xad\\x89\\x8f\\x15_wFy\\x06\\xf7\\xfaZ&-4_\\x97(' \\\n      b'\\x0f\\xc9\\xd3\\xba\\xc5\\xafo\\xc8\\x83\\x9b4\\xbe\\x8aS\\xac\\xcf<Q\\xbb@t90\\xa0\\x8b\\xab\\x9eH,' \\\n      b'\\n^A\\x90qs\\xbav\\xb9~\\xd7\\xaa\\xcd^4F\\x7f\\xce\\xa1\\xf9\\xa7>x\\xc9\\xb3b\\xfe\\xf6\\xed\\xc5Y\\x94\\xee\\x96\\xa9\\xc2\\x85' \\\n      b'\\xbb\\xc5H?\\xaa\\xc9\\xd5\\x97\\xb63|j\\xe2\\xa9\\xb8\\xd2\\x8b\\\\\\x998[' \\\n      b'q}v\\xb2d\\x89\\x9dsh\\xad>\\xafl/vk\\xf3\\n\\xeb\\xcc\\xa3]\\x8a\\xf8\\xb0 ' \\\n      b'\\x92A\\xeat\\x81>\\x17\\'o\\x8c\\xb5r\\x03\\xe9\\xd9R\\x9fP@\\xc4\\x159{' \\\n      b'!\\xd4H$\\xfe\\x84\\x0bw\\x85\\x98=9\\xdb\\xa4\\xedYoh\\x95\\x05\\xb2\\xfc\\xd3\\xe3\\xa6$\\x8ac\\xd0\\xbd\\x1e\\xf9>\\x99n\\xeaE' \\\n      b'\\x8e\\x14\\xa3\\x93\\xbe\\x15xr>A\\xe4\\xb6\\x1a\\xba\\xb7\\xbf\\xa7\\xcbm\\x80\\xb6c*a\\x7f\\xfb;\\x1bgTD\\x0c\\xf6\\xd9\\x97\\x96' \\\n      b'*n\\xe2|w\\xdd\\xb57\\xbb\\x1aB%\\xdd\\x9dc\\xf0\\xaa\\x1ej\\xc9\\xcb\\xfb\\xf6\\x99W\\xc6\\x91D\\xd7\\x9e}\\xaa\\xe0\\xb7W\\xd7' \\\n      b'\\x8f{\\x15_6\\xf4<\\xa5\\xab\\xdb\\xaf]\\xcbr\\xc7\\x88\\x03\\xa9\\xe7\\xa6\\xa5\\xcd\\x81\\xc6\\xda\\'\\x0f\\x8c\\x1dKO]\\xcax\\xbc3' \\\n      b'\\xbao\\xb2\\xd2\\xbc\\xf3\\x18v\\xfd\\xbd\\x93\\xd8\\xad\\x161\\xde\\xfcp\\xc15qB\\xe6\\xe9,U\\x93,' \\\n      b'\\xe5\\xbccE\\x85\\x01\\x89\\xcf\\n\\xdd\\xba\\xcf\\x1a:\\xfaXS\\xe5s?\\xd3\\\\9\\xd9\\xbb\\xe2\\xef\\xea\\xe8\\xe4e\\\\J\\xc1s\\xc7' \\\n      b'/\\x97\\x9dL\\xcdG\\x13\\xdaQ6\\xad:#\\x94n\\xaf%j\\x01u\\xeb\\x99\\xd5\\x9d\\xaf\\xf6>/}X\\xc1Ril\\xd31D$\\x94\\xccEa\\x1a\\x91u' \\\n      b'\\xe3G\\x84r\\xc3\\xea*i(\\x8ai\\xe7\\x91Wnyc\\xd5\\xb2\\xbe\\xda\\xc8\\x1b\\xf5\\xb8zI\\x87\\xd7\\xd1Y\\xf6w\\x88\\x92\\xe9.\\x15' \\\n      b'\\x16\\xea\\x9egx\\twz3N\\x1b\\x0c\\x1c\\xf1]v\\xf3P\\rh\\t\\xacZ%y\\xc9\\x1dT\\x92Y\\xf3\\x14\\xd6\\xd3\\x14\\xdd\\xe7\\xfa\\xf9\\xbd' \\\n      b'\\x0b\\xb5Z\\xcev\\xbd\\x10]\\x91\\x94\"\\x97i\\xb7\\xa7/\\xbd\\xbf\\xbdF\\x13\\x15\\x97g\\xdey\\x99b$\\x1b\\xd7\\x1d\\xde\\xac\\x86e' \\\n      b'\\xdb8k\\x94\\xbc\\xe9y\\xa8\\xb2\\xd3\\x8d\\xf4\\x81`\\xab\\x9cg]e\\xe5\\x1e\\x18w6\\xbeOu2!\\x1d\\xfeG\\x87\\xf9)\\xb7\\xf5\\x9d5' \\\n      b'\\x17\\xa6\\xd4\\xf7\\xd4\\x16\\x15,S\\xf6I?Q\\x9f&\\xe6\\x8d\\xeb\\x8e\\x84\\xc4\\x07\\x126\\xd7\\xf4\\x96V\\xe8\\xfbt\\r\\x8a\\xaf' \\\n      b'\\xfd\\xab\\xc4\\x99\\xbff(3\"\\xd8R\\xe7\\xf7\\x86m\\xf5N\\xe2A\\xa6\\x04\\xd3{\\xba\\xd9]\\xe5\\x97\\x16\\'\\x8b\\xd7\\x13{' \\\n      b'\\xc2\\x82\\xdf\\xe3T\\xc4\\x92n^\\x96\\xcf\\xde\\xde\\x84*:a\\xd4\\xbc\\xdd@\\xd4\\x05e\\xc5\\xb6\\x16Y\\xa5,' \\\n      b'\"\\xf1\\xe0\\xe0\\xd9\\xe81\\x89G\\x88\\xdai\\xab\\x0b\\x91Xn\\xd3\\xe0\\x91\\xe5\\r\\xf7}\\x9c\\xec\\\\\\x1d\\xec{' \\\n      b'u\\xadc\\xde\\x07\\\\9\\xf5\\x987e\\xa0l\\x1a\\x95\\x11\\xd2\\xed_\\x97QRb\\x9e\\x8e\\x7f ' \\\n      b'\\xca\\xe5\\x84\\x1bI}p\\xc8\\xdf*\\xeaMg\\xe3G\\xae7\\x1an-$\\x8e\\x856\\xfe\\xa3\\xc6u\\r%\\xbb\\xae\\xd8{' \\\n      b'\\xa8\\xf4\\r\\xe5\\x99\\x897\\xbe\\xa6\\xd6\\xcaq5iD\\xbf1\\xccS\\xbb\\x11\\xee\\xd6{' \\\n      b'\\xed\\xe6\\xa9\\xa9\\x9b\\x8es\\x96\\xb16)\\xe4\\xec\\xf2\\xb0\\xee\\xa8\\x9a\\xf8\\x85\\xbcC,' \\\n      b'SD\\x9b\\xc5\\x8f\\xd65\\x033\\xec\\x81,e\\xdcI\\x92\\xed\\xaf)e\\x0e\\xc5\\x91\\x02o^d\\x94^:<\\xa9\\x99\\xb0\\x8c\\xeb\\x88}>\\xc1' \\\n      b'\\x1e#pP*\\xfa\\xdd\\x87\\x1c\\xaa\\x18\\xd1MH\\xf0\\xf0\\x8bYv\\xf1\\xe2\\xc9\\xca\\xa7\\r\\x05\\xde\\xde\\x9c1\\xadmzz\\xfcZ\\xd6' \\\n      b'\\x82\\xb9%2\\xbc<\"b\\xcd>\\xc2^dL\\xa8\\x9fF(\\xbf\\x8d\\xc4\\xd7YZ\\x8c\\xde\\xf8\\xb1\\xe2\\xec\\xbd\\x8dRjr[' \\\n      b'\\xd9\\x076\\xbb\\xbd\\xfd\\xcd\\xd7\\x9b\\x93\\x8b\\xf8%]1i\\xa4\\xf1\\x18\\n\\x83O\\xaf\\xe0m?\\x10\\xc1\\xf35\\xc0\\x82O=\\xad' \\\n      b'\\'\\xa2\\x88`\\xa1\\xe6\\x85\\xd9H\\xc3O\\xb6\\xcc\\x8f\\xccsg\\x8d!;\\x178,' \\\n      b'\\x06=\\x0b\\xe7\\x13n\\x0e\\x0f\\x1e^\\xe8=\\xeb\\xc9-\\xd2K<\\x89_\\x9f>\\xbd\\xb8\\xe4\\xd2\\xad ' \\\n      b'\\x7fr\\xbbs\\xf4\\xc9\\x972F\\r\\xd1O\\'N%\\x12y\\xaau\\x95\\xa4\\x03DTB1E\\xe2K\\x92\\xcd\\xed\\xb44\\xc1\\xa7B\\x17c\\xe3H\\xac' \\\n      b'\\xa2\\xa5\\x97GLI~e\\x84\\xa1\\xf6\\xccqY\\xdc\\xe8_\\xd4\\x1a\\\\\\xd8>r\\xff\\x0e\\xe36\\xb4\\xd8\\xe1\\xcfg\\xb4\\xdc\\xfe\\xaa=W7' \\\n      b'._7B\\xf9X\\xdd\\xbc\\xf7\\xe0\\xf4]\\x9f.J4\\x9b\\xd3(\\x1a\\x9dU\\x91\\x92^\\xfe\\xca\\x1f+\\xf0dbv\\xa9U\\xd4$:(' \\\n      b'A\\xa9i\\x8e\\x8c\\x91\\xf7\\xf1\\x97\\xbe\\xe3x2\\xee\\x85V\\xe5S3;dQ\\xf5#\\xefV\"\\xa1\\xc8u[' \\\n      b'\\x1a\\xc7\\xf0y\\xc2\\xb7\\xa6Qj\\xf8\\xd6\\x7f\\x1e~\\xf4S\\xd3\\n\\xf8\\x86\\xff\\xdb?\\x8a\\xed\\xdf\\xa9\\xc4\\xdf\\xc2:\\xffP' \\\n      b'\\xfb[3\\xb8i^\\xf5\\x91\\xf6\\xcf~\\x82q\\xcb+\\x96\\x1f\\x03\\xdf\\xfb\\n\\xca\\xe6b?_d\\x9d\\xaf|Z\\xfb\\xe4\\x97\\x1a\\xa3\\xe7' \\\n      b'\\xe8k\\x8c\\xb0\\xfdRC\\xea\\x97\\x1a\\xa4_j\\xe07\\xd0\\xd7h\\x13\\xa2\\xaf\\xa1\\xad\\xf1\\xbf\\xe0\\xaa\\x8eR\\x02.\\t9\\xd7' \\\n      b'\\xf0zuI:&y\\xfd\\xc2\\xcd\\xaeW\\x83\\xda\\xd5\\x0f/;\\\\\\x8d\\x9c\\xff\\x1c!\\xe0\\x15\\xc0\\xd1\\x9a\\xb3\\x86-\\x94~K\\xd2\\x7f' \\\n      b'\\xa7T\\xe8\\x9cC\\xd2\\x1f_\\xcav(?\\xbd\\xad\\xd8\\xfa\\x8f\\x80\\xfa\\x0f\\xda\\x0e\\xa78_\\x1f87\\x7f<_}L\\xc7\\xa45\\xc7p\\xa5p' \\\n      b'\\xc0^3\\xa1\\x1f\\x13\\xb5\"\\x9b6\\x7f<\\x92klP\\xb65\\x07\\xf3{' \\\n      b'aP\\'I\\xdf\\xc9\\xe7p\\xc2\\n:!3Hw\\xbf\\xf2\\x07m/]\\xdd\\xbe\\xe0\\x8c\\xcd\\xe53k\\xc8\\xde\\xafmu\\x91\\xc2\\x07yj\\xcf\\xb6' \\\n      b'\\xacsX\\xfc\\x7fK(\\x83%\\xc0\\x12`\\t\\xb0\\x04X\\x02,\\x01\\x96\\x00K0a\\x89\\xbd`\\t\\xb0\\x04X\\x02,' \\\n      b'\\x01\\x96\\x00K\\x80%\\xc0\\x12LXB\\t,\\x01\\x96\\x00K\\x80%\\xc0\\x12`\\t\\xb0\\x04X\\x82\\tK\\xa8\\x82%\\xc0\\x12`\\t\\xb0\\x04X' \\\n      b'\\x02,\\x01\\x96\\x00K0a\\t5\\xb0\\x04X\\x02,\\x01\\x96\\x00K\\x80%\\xc0\\x12`\\t&,' \\\n      b'\\xa1\\x0e\\x96\\x00K\\x80%\\xc0\\x12`\\t\\xb0\\x04X\\x02,\\xc1\\x84%4\\xc0\\x12`\\t\\xb0\\x04X\\x02,' \\\n      b'\\x01\\x96\\x00K\\x80%\\x98\\xb0\\x84&X\\x02,' \\\n      b'\\x01\\x96\\x00K\\x80%\\xc0\\x12`\\t\\xb0\\x04\\x13\\x96@\\x83%\\xc0\\x12`\\t\\xb0\\x04X\\x02,' \\\n      b'\\x01\\x96\\x00K0a\\x89c`\\t\\xb0\\x04X\\x02,' \\\n      b'\\x01\\x96\\x00K\\x80%\\xc0\\x12LX\\x02\\x0b\\x96\\x00K\\x80%\\xc0\\x12`\\t\\xb0\\x04X\\x02,' \\\n      b'\\xc1\\x84%\\xdc\\xc0\\x12`\\t\\xb0\\x04X\\x02,\\x01\\x96\\x00K\\x80%\\x98\\xb0\\x84;X\\x02,' \\\n      b'\\x01\\x96\\x00K\\x80%\\xc0\\x12`\\t\\xb0\\x04\\x13\\x96\\xf0\\x00K\\x80%\\xc0\\x12`\\t\\xb0\\x04X\\x02,' \\\n      b'\\x01\\x96`\\xc2\\x12\\x9e`\\t\\xb0\\x04X\\x02,\\x01\\x96\\x00K\\x80%\\xc0\\x12\\xffl\\x89\\r,' \\\n      b'[\\x10\\xff\\xac\\x89\\x1f\\xd7\\x0eD\\xf9y\\xc4O[' \\\n      b'\\xa8|\\xb7\\x05\\xe39\\x13N\\xfa\\xb3\\xcb\\x19\\xcf\\xa5\\t\\xd0\\x9fS\\xcax\\xee\\x13\\x92\\xfeL2\\xc6sJ;\\xe9\\xcf\\x1fa<\\x17&C' \\\n      b'\\xbf\\xd78\\xe3\\xb9&e\\xfa}E\\x19\\xcfm\\xd1\\xa2\\xdfC\\x8c\\xf1\\x9c\\xab.\\xfd~!\\x8c\\xe7\\xee\\x18\\xd1\\xaf\\rf<\\xb7lI\\xbf' \\\n      b'\\x0e\\x88\\xf1\\xdc\\x1f\\x8e\\xf4s~\\x19\\xcf%\\xba\\xd1\\xcf\\xefa<\\xd7\\xebM\\xff/\\x8f\\xf1\\xdcn\\x7f\\xfa\\xefv\\x8c\\xe7\\xfc' \\\n      b'\\xc3\\xe8\\x8dna\\xcc\\xbe\\xf1\\xfb\\x88\\xc0\\xb7\\xfb\\x1c+\\x02\\xf10\\xe2\\xfb\\xcb\\x7f\\x03PK\\x03\\x04\\x14\\x00\\x02\\x00' \\\n      b'\\x08\\x00\\x1b\\xad|(\\x93u\\xdc\\xc8\\xf9\\t\\x00\\x00V\\x88\\x00\\x00\\t\\x00\\x00\\x00lib ' \\\n      b'6.zip\\xed\\xddWPS\\xdb\\x1a\\x07\\xf0H\\x118t\\x95C\\x00\\xb1Q\"H\\x95\\x1a\\xc4\\xa0\\xdc#\\xbd\\tH\\x95b(' \\\n      b'Q\\x8a\\xe8\\r-\\x14+G\\xe9\\x10\\x01)F\\x94\\x8e(QDz\\xb3%\\xa0 \\x08\\xa2 ' \\\n      b'RT\\x04\\xa4\\xb7C\\t\\x88\\x1c\\xbd\\x8e\\xf7\\xc6\\x87373y\\xfd\\xf6~X{\\xcd\\xda\\xff\\xf9^\\x7f\\xb3\\xf7*\\x16\\xc6\\xacl[\\x10,' \\\n      b'\\x08ND\\xdb\\x9d\\xb0\\xddT\\xd7\\xf1\\r\\x92\\x9c\\x08\\xc4F<\\x02\\xf1\\x1b\\x02\\x81\\xc0\\xfa\\xf9y\\xefPQ\\x089qj\\xb2\\xcf[' \\\n      b'\\xd3zu\\x1b\\xc7\\x8c\\x14%j+\\x97\\x90D\\xaa\\xb4\\x04:9\\xd4=\\xb7\\xe3O\\xc1@\\xa4\\xe0\\xae\\n\\x11\\x93)\\xa1\\xac\\xba\\xed' \\\n      b'\\x96\\x81\\xe4Fy\\xd3\\x08I\\xc7M\\xff\\xe6\\xefK.q\\xa2J%y?\\xae\\xf4I\\x15\\xac\\xba4Jj%\\x9cnun\\xc3g\\xe2\\x9co\\xd0\\x8a\\x17' \\\n      b'\\xb0\\xfb\\x1bF\\xd6\\xd7\\xc9\\x0bs\\xa5\\x99\\x01\\xb4\\xb5\\x17\\\\\\xb5\\xd7(' \\\n      b'\\x89\\xa6M.\\x89\\xdd\\x17\\x12\\xd7\\x90Oz:\\xf40l\\x86\\\\\\x87\\x04v\\xb2\\x1d$\\x19\\x9aa6\\x90\\xcf\\xdc\\x17\\x95}\\xe4' \\\n      b'~#}\\x83y\\\\\\xee\\x8e[\\xb6\\xf8\\xfd\\x81\\x8a&\\xf9\")&\\xd9\\xbe\\xc2\\xad\\x96Ra\\x05\\xb8\\x0bu\\x1f\\xf79Jd\\xe7\\x16\\x1a' \\\n      b'\\x04Kxh\\x1cNO[{0t\\xcb\\x8b\\x1cU\\xdb\\x94w[' \\\n      b'\\x10]\\xbfh\\xa4\\x97#\\xd3hgZ\\x93\\x13T\\xa0E\\xc8\\xbb\\\\\\x14\\xaah\\x8a\\x9a\\xaa\\xc6,' \\\n      b'\\xb6\\x86N\\xd4\\xd7\\\\\\xec\\xb7\\xd5\\xde\\xef\\x9bB\\x9e?\\xa0\\x7f\\xfd\\xebB\\r\\xcf\\x99\\xedd\\xb3\\xecXsL~.\\xcd,' \\\n      b'(\\x95\\xb5\\x9c\\xd3;\\xd9c[\\xb8\\xad\\xca]\\x9f\\x86\\xee\\xe9\\x0f:KG\\x1c\\xadX\\x91\\xfcZ8r\\xc5\\xca&\\xf3\\x10\\x13\\x87[' \\\n      b'\\xb1\\xca!\\xb6\\x1e\\n\\x16\\x9e\\x1a{\\xde\\x18kW=5\\xb86\\xe9\\xaa\\xf4q\\x96O\\x8c\\xf5\\xd3\\xb5\\x82\\xd4\\xc0\\xd4\\x1a\\x0b' \\\n      b'\\xaf\\x89/\\x89\\xc2\\xd5AM\\x9b\\xfb\\x1f\\xf9\\n\\x0ft\\x14\\xb0\\xb4\\xf1\\xbd,kF\\x9a\\x97\\xe1t\\xecr7R\\x85\\r\\x0b)\\xe1{' \\\n      b'\\xf9\\x9a\\xbd\\xaeo\\x9eS\\xb0\\xf5\\xe8q\\xf4\\x1fw\\x19B\\xc5~\\xde\\xb2\\xc2\\x96L\\xb2\\xa9)\\xb87&\\x17\\xe8\\x85\\xcd\\xc29' \\\n      b'\\xa0\\x8aK\\xd1\\xaer\\xfb\\xd1\\xca\\xc1\\xb4\\xfb.\\x1f\\xfb\\x89\\xe7\\xc3\\x83\\xf6\\x98\\xa9(x\\x1d\\xcf\\xbf4,' \\\n      b'\\x9d\\xa1\\x10\\xb9\\xb5\\\\m\\xe7\\xf5\\xe6\\xfa0k\\xa2\\x83\\x92\\xda\\xe2W\\xe7\\xd1Uwc\\xab?W\\xa4\\xbdK\\xe4m&3\\xd8YJ\\x9c' \\\n      b'\\x1dep\\xb9\\x17\\xf66\\xbd\\xb3_\\x9b\\x1d\\xa7MQndO\\xf0\\xd5m\\xb1\\xeaq\\xd1\\xdf\\xdd\\x90v\\xa8j\\xa6J\\xd1\\x8f\\xbax7k0~5' \\\n      b'\\x1e\\x93\\x1b~:\\xf6\\xcb\\x97\\xfc\\xf6+}\\x7f\\xa5\\xa1\\xd0\\xa3\\xd8M}<.\\xc7%\\x17\\x8c:\\x94dvk\\xce\\x18{' \\\n      b'K5\\x9c\\xe8+Ogu\\x8bM\\t\\x89k\\xa0\\xf9\\xbdO\\xc1\\x8b\\xa9\\xdfi\\xe3\\x92\\xa3V-\\x9a\\xd5K\\xf4\\x1d\\r\\x93\\x1c\\xb6\\xd5' \\\n      b'\\xd0Q\\xc58\\xd3\\xdc\\x8b\\x0cxP\\xaac\\x96\\x96\\xc7G\\xdb\\xed\\xfc\\xafS\\xad\\x89\\x8f\\x15_wFy\\x06\\xf7\\xfaZ&-4_\\x97(' \\\n      b'\\x0f\\xc9\\xd3\\xba\\xc5\\xafo\\xc8\\x83\\x9b4\\xbe\\x8aS\\xac\\xcf<Q\\xbb@t90\\xa0\\x8b\\xab\\x9eH,' \\\n      b'\\n^A\\x90qs\\xbav\\xb9~\\xd7\\xaa\\xcd^4F\\x7f\\xce\\xa1\\xf9\\xa7>x\\xc9\\xb3b\\xfe\\xf6\\xed\\xc5Y\\x94\\xee\\x96\\xa9\\xc2\\x85' \\\n      b'\\xbb\\xc5H?\\xaa\\xc9\\xd5\\x97\\xb63|j\\xe2\\xa9\\xb8\\xd2\\x8b\\\\\\x998[' \\\n      b'q}v\\xb2d\\x89\\x9dsh\\xad>\\xafl/vk\\xf3\\n\\xeb\\xcc\\xa3]\\x8a\\xf8\\xb0 ' \\\n      b'\\x92A\\xeat\\x81>\\x17\\'o\\x8c\\xb5r\\x03\\xe9\\xd9R\\x9fP@\\xc4\\x159{' \\\n      b'!\\xd4H$\\xfe\\x84\\x0bw\\x85\\x98=9\\xdb\\xa4\\xedYoh\\x95\\x05\\xb2\\xfc\\xd3\\xe3\\xa6$\\x8ac\\xd0\\xbd\\x1e\\xf9>\\x99n\\xeaE' \\\n      b'\\x8e\\x14\\xa3\\x93\\xbe\\x15xr>A\\xe4\\xb6\\x1a\\xba\\xb7\\xbf\\xa7\\xcbm\\x80\\xb6c*a\\x7f\\xfb;\\x1bgTD\\x0c\\xf6\\xd9\\x97\\x96' \\\n      b'*n\\xe2|w\\xdd\\xb57\\xbb\\x1aB%\\xdd\\x9dc\\xf0\\xaa\\x1ej\\xc9\\xcb\\xfb\\xf6\\x99W\\xc6\\x91D\\xd7\\x9e}\\xaa\\xe0\\xb7W\\xd7' \\\n      b'\\x8f{\\x15_6\\xf4<\\xa5\\xab\\xdb\\xaf]\\xcbr\\xc7\\x88\\x03\\xa9\\xe7\\xa6\\xa5\\xcd\\x81\\xc6\\xda\\'\\x0f\\x8c\\x1dKO]\\xcax\\xbc3' \\\n      b'\\xbao\\xb2\\xd2\\xbc\\xf3\\x18v\\xfd\\xbd\\x93\\xd8\\xad\\x161\\xde\\xfcp\\xc15qB\\xe6\\xe9,U\\x93,' \\\n      b'\\xe5\\xbccE\\x85\\x01\\x89\\xcf\\n\\xdd\\xba\\xcf\\x1a:\\xfaXS\\xe5s?\\xd3\\\\9\\xd9\\xbb\\xe2\\xef\\xea\\xe8\\xe4e\\\\J\\xc1s\\xc7' \\\n      b'/\\x97\\x9dL\\xcdG\\x13\\xdaQ6\\xad:#\\x94n\\xaf%j\\x01u\\xeb\\x99\\xd5\\x9d\\xaf\\xf6>/}X\\xc1Ril\\xd31D$\\x94\\xccEa\\x1a\\x91u' \\\n      b'\\xe3G\\x84r\\xc3\\xea*i(\\x8ai\\xe7\\x91Wnyc\\xd5\\xb2\\xbe\\xda\\xc8\\x1b\\xf5\\xb8zI\\x87\\xd7\\xd1Y\\xf6w\\x88\\x92\\xe9.\\x15' \\\n      b'\\x16\\xea\\x9egx\\twz3N\\x1b\\x0c\\x1c\\xf1]v\\xf3P\\rh\\t\\xacZ%y\\xc9\\x1dT\\x92Y\\xf3\\x14\\xd6\\xd3\\x14\\xdd\\xe7\\xfa\\xf9\\xbd' \\\n      b'\\x0b\\xb5Z\\xcev\\xbd\\x10]\\x91\\x94\"\\x97i\\xb7\\xa7/\\xbd\\xbf\\xbdF\\x13\\x15\\x97g\\xdey\\x99b$\\x1b\\xd7\\x1d\\xde\\xac\\x86e' \\\n      b'\\xdb8k\\x94\\xbc\\xe9y\\xa8\\xb2\\xd3\\x8d\\xf4\\x81`\\xab\\x9cg]e\\xe5\\x1e\\x18w6\\xbeOu2!\\x1d\\xfeG\\x87\\xf9)\\xb7\\xf5\\x9d5' \\\n      b'\\x17\\xa6\\xd4\\xf7\\xd4\\x16\\x15,S\\xf6I?Q\\x9f&\\xe6\\x8d\\xeb\\x8e\\x84\\xc4\\x07\\x126\\xd7\\xf4\\x96V\\xe8\\xfbt\\r\\x8a\\xaf' \\\n      b'\\xfd\\xab\\xc4\\x99\\xbff(3\"\\xd8R\\xe7\\xf7\\x86m\\xf5N\\xe2A\\xa6\\x04\\xd3{\\xba\\xd9]\\xe5\\x97\\x16\\'\\x8b\\xd7\\x13{' \\\n      b'\\xc2\\x82\\xdf\\xe3T\\xc4\\x92n^\\x96\\xcf\\xde\\xde\\x84*:a\\xd4\\xbc\\xdd@\\xd4\\x05e\\xc5\\xb6\\x16Y\\xa5,' \\\n      b'\"\\xf1\\xe0\\xe0\\xd9\\xe81\\x89G\\x88\\xdai\\xab\\x0b\\x91Xn\\xd3\\xe0\\x91\\xe5\\r\\xf7}\\x9c\\xec\\\\\\x1d\\xec{' \\\n      b'u\\xadc\\xde\\x07\\\\9\\xf5\\x987e\\xa0l\\x1a\\x95\\x11\\xd2\\xed_\\x97QRb\\x9e\\x8e\\x7f ' \\\n      b'\\xca\\xe5\\x84\\x1bI}p\\xc8\\xdf*\\xeaMg\\xe3G\\xae7\\x1an-$\\x8e\\x856\\xfe\\xa3\\xc6u\\r%\\xbb\\xae\\xd8{' \\\n      b'\\xa8\\xf4\\r\\xe5\\x99\\x897\\xbe\\xa6\\xd6\\xcaq5iD\\xbf1\\xccS\\xbb\\x11\\xee\\xd6{' \\\n      b'\\xed\\xe6\\xa9\\xa9\\x9b\\x8es\\x96\\xb16)\\xe4\\xec\\xf2\\xb0\\xee\\xa8\\x9a\\xf8\\x85\\xbcC,' \\\n      b'SD\\x9b\\xc5\\x8f\\xd65\\x033\\xec\\x81,e\\xdcI\\x92\\xed\\xaf)e\\x0e\\xc5\\x91\\x02o^d\\x94^:<\\xa9\\x99\\xb0\\x8c\\xeb\\x88}>\\xc1' \\\n      b'\\x1e#pP*\\xfa\\xdd\\x87\\x1c\\xaa\\x18\\xd1MH\\xf0\\xf0\\x8bYv\\xf1\\xe2\\xc9\\xca\\xa7\\r\\x05\\xde\\xde\\x9c1\\xadmzz\\xfcZ\\xd6' \\\n      b'\\x82\\xb9%2\\xbc<\"b\\xcd>\\xc2^dL\\xa8\\x9fF(\\xbf\\x8d\\xc4\\xd7YZ\\x8c\\xde\\xf8\\xb1\\xe2\\xec\\xbd\\x8dRjr[' \\\n      b'\\xd9\\x076\\xbb\\xbd\\xfd\\xcd\\xd7\\x9b\\x93\\x8b\\xf8%]1i\\xa4\\xf1\\x18\\n\\x83O\\xaf\\xe0m?\\x10\\xc1\\xf35\\xc0\\x82O=\\xad' \\\n      b'\\'\\xa2\\x88`\\xa1\\xe6\\x85\\xd9H\\xc3O\\xb6\\xcc\\x8f\\xccsg\\x8d!;\\x178,' \\\n      b'\\x06=\\x0b\\xe7\\x13n\\x0e\\x0f\\x1e^\\xe8=\\xeb\\xc9-\\xd2K<\\x89_\\x9f>\\xbd\\xb8\\xe4\\xd2\\xad ' \\\n      b'\\x7fr\\xbbs\\xf4\\xc9\\x972F\\r\\xd1O\\'N%\\x12y\\xaau\\x95\\xa4\\x03DTB1E\\xe2K\\x92\\xcd\\xed\\xb44\\xc1\\xa7B\\x17c\\xe3H\\xac' \\\n      b'\\xa2\\xa5\\x97GLI~e\\x84\\xa1\\xf6\\xccqY\\xdc\\xe8_\\xd4\\x1a\\\\\\xd8>r\\xff\\x0e\\xe36\\xb4\\xd8\\xe1\\xcfg\\xb4\\xdc\\xfe\\xaa=W7' \\\n      b'._7B\\xf9X\\xdd\\xbc\\xf7\\xe0\\xf4]\\x9f.J4\\x9b\\xd3(\\x1a\\x9dU\\x91\\x92^\\xfe\\xca\\x1f+\\xf0dbv\\xa9U\\xd4$:(' \\\n      b'A\\xa9i\\x8e\\x8c\\x91\\xf7\\xf1\\x97\\xbe\\xe3x2\\xee\\x85V\\xe5S3;dQ\\xf5#\\xefV\"\\xa1\\xc8u[' \\\n      b'\\x1a\\xc7\\xf0y\\xc2\\xb7\\xa6Qj\\xf8\\xd6\\x7f\\x1e~\\xf4S\\xd3\\n\\xf8\\x86\\xff\\xdb?\\x8a\\xed\\xdf\\xa9\\xc4\\xdf\\xc2:\\xffP' \\\n      b'\\xfb[3\\xb8i^\\xf5\\x91\\xf6\\xcf~\\x82q\\xcb+\\x96\\x1f\\x03\\xdf\\xfb\\n\\xca\\xe6b?_d\\x9d\\xaf|Z\\xfb\\xe4\\x97\\x1a\\xa3\\xe7' \\\n      b'\\xe8k\\x8c\\xb0\\xfdRC\\xea\\x97\\x1a\\xa4_j\\xe07\\xd0\\xd7h\\x13\\xa2\\xaf\\xa1\\xad\\xf1\\xbf\\xe0\\xaa\\x8eR\\x02.\\t9\\xd7' \\\n      b'\\xf0zuI:&y\\xfd\\xc2\\xcd\\xaeW\\x83\\xda\\xd5\\x0f/;\\\\\\x8d\\x9c\\xff\\x1c!\\xe0\\x15\\xc0\\xd1\\x9a\\xb3\\x86-\\x94~K\\xd2\\x7f' \\\n      b'\\xa7T\\xe8\\x9cC\\xd2\\x1f_\\xcav(?\\xbd\\xad\\xd8\\xfa\\x8f\\x80\\xfa\\x0f\\xda\\x0e\\xa78_\\x1f87\\x7f<_}L\\xc7\\xa45\\xc7p\\xa5p' \\\n      b'\\xc0^3\\xa1\\x1f\\x13\\xb5\"\\x9b6\\x7f<\\x92klP\\xb65\\x07\\xf3{' \\\n      b'aP\\'I\\xdf\\xc9\\xe7p\\xc2\\n:!3Hw\\xbf\\xf2\\x07m/]\\xdd\\xbe\\xe0\\x8c\\xcd\\xe53k\\xc8\\xde\\xafmu\\x91\\xc2\\x07yj\\xcf\\xb6' \\\n      b'\\xacsX\\xfc\\x7fK(\\x83%\\xc0\\x12`\\t\\xb0\\x04X\\x02,\\x01\\x96\\x00K0a\\x89\\xbd`\\t\\xb0\\x04X\\x02,' \\\n      b'\\x01\\x96\\x00K\\x80%\\xc0\\x12LXB\\t,\\x01\\x96\\x00K\\x80%\\xc0\\x12`\\t\\xb0\\x04X\\x82\\tK\\xa8\\x82%\\xc0\\x12`\\t\\xb0\\x04X' \\\n      b'\\x02,\\x01\\x96\\x00K0a\\t5\\xb0\\x04X\\x02,\\x01\\x96\\x00K\\x80%\\xc0\\x12`\\t&,' \\\n      b'\\xa1\\x0e\\x96\\x00K\\x80%\\xc0\\x12`\\t\\xb0\\x04X\\x02,\\xc1\\x84%4\\xc0\\x12`\\t\\xb0\\x04X\\x02,' \\\n      b'\\x01\\x96\\x00K\\x80%\\x98\\xb0\\x84&X\\x02,' \\\n      b'\\x01\\x96\\x00K\\x80%\\xc0\\x12`\\t\\xb0\\x04\\x13\\x96@\\x83%\\xc0\\x12`\\t\\xb0\\x04X\\x02,' \\\n      b'\\x01\\x96\\x00K0a\\x89c`\\t\\xb0\\x04X\\x02,' \\\n      b'\\x01\\x96\\x00K\\x80%\\xc0\\x12LX\\x02\\x0b\\x96\\x00K\\x80%\\xc0\\x12`\\t\\xb0\\x04X\\x02,' \\\n      b'\\xc1\\x84%\\xdc\\xc0\\x12`\\t\\xb0\\x04X\\x02,\\x01\\x96\\x00K\\x80%\\x98\\xb0\\x84;X\\x02,' \\\n      b'\\x01\\x96\\x00K\\x80%\\xc0\\x12`\\t\\xb0\\x04\\x13\\x96\\xf0\\x00K\\x80%\\xc0\\x12`\\t\\xb0\\x04X\\x02,' \\\n      b'\\x01\\x96`\\xc2\\x12\\x9e`\\t\\xb0\\x04X\\x02,\\x01\\x96\\x00K\\x80%\\xc0\\x12\\xffl\\x89\\r,' \\\n      b'[\\x10\\xff\\xac\\x89\\x1f\\xd7\\x0eD\\xf9y\\xc4O[' \\\n      b'\\xa8|\\xb7\\x05\\xe39\\x13N\\xfa\\xb3\\xcb\\x19\\xcf\\xa5\\t\\xd0\\x9fS\\xcax\\xee\\x13\\x92\\xfeL2\\xc6sJ;\\xe9\\xcf\\x1fa<\\x17&C' \\\n      b'\\xbf\\xd78\\xe3\\xb9&e\\xfa}E\\x19\\xcfm\\xd1\\xa2\\xdfC\\x8c\\xf1\\x9c\\xab.\\xfd~!\\x8c\\xe7\\xee\\x18\\xd1\\xaf\\rf<\\xb7lI\\xbf' \\\n      b'\\x0e\\x88\\xf1\\xdc\\x1f\\x8e\\xf4s~\\x19\\xcf%\\xba\\xd1\\xcf\\xefa<\\xd7\\xebM\\xff/\\x8f\\xf1\\xdcn\\x7f\\xfa\\xefv\\x8c\\xe7\\xfc' \\\n      b'\\xc3\\xe8\\x8dna\\xcc\\xbe\\xf1\\xfb\\x88\\xc0\\xb7\\xfb\\x1c+\\x02\\xf10\\xe2\\xfb\\xcb\\x7f\\x03PK\\x03\\x04\\x14\\x00\\x02\\x00' \\\n      b'\\x08\\x00\\x1b\\xad|(\\x93u\\xdc\\xc8\\xf9\\t\\x00\\x00V\\x88\\x00\\x00\\t\\x00\\x00\\x00lib ' \\\n      b'7.zip\\xed\\xddWPS\\xdb\\x1a\\x07\\xf0H\\x118t\\x95C\\x00\\xb1Q\"H\\x95\\x1a\\xc4\\xa0\\xdc#\\xbd\\tH\\x95b(' \\\n      b'Q\\x8a\\xe8\\r-\\x14+G\\xe9\\x10\\x01)F\\x94\\x8e(QDz\\xb3%\\xa0 \\x08\\xa2 ' \\\n      b'RT\\x04\\xa4\\xb7C\\t\\x88\\x1c\\xbd\\x8e\\xf7\\xc6\\x87373y\\xfd\\xf6~X{\\xcd\\xda\\xff\\xf9^\\x7f\\xb3\\xf7*\\x16\\xc6\\xacl[\\x10,' \\\n      b'\\x08ND\\xdb\\x9d\\xb0\\xddT\\xd7\\xf1\\r\\x92\\x9c\\x08\\xc4F<\\x02\\xf1\\x1b\\x02\\x81\\xc0\\xfa\\xf9y\\xefPQ\\x089qj\\xb2\\xcf[' \\\n      b'\\xd3zu\\x1b\\xc7\\x8c\\x14%j+\\x97\\x90D\\xaa\\xb4\\x04:9\\xd4=\\xb7\\xe3O\\xc1@\\xa4\\xe0\\xae\\n\\x11\\x93)\\xa1\\xac\\xba\\xed' \\\n      b'\\x96\\x81\\xe4Fy\\xd3\\x08I\\xc7M\\xff\\xe6\\xefK.q\\xa2J%y?\\xae\\xf4I\\x15\\xac\\xba4Jj%\\x9cnun\\xc3g\\xe2\\x9co\\xd0\\x8a\\x17' \\\n      b'\\xb0\\xfb\\x1bF\\xd6\\xd7\\xc9\\x0bs\\xa5\\x99\\x01\\xb4\\xb5\\x17\\\\\\xb5\\xd7(' \\\n      b'\\x89\\xa6M.\\x89\\xdd\\x17\\x12\\xd7\\x90Oz:\\xf40l\\x86\\\\\\x87\\x04v\\xb2\\x1d$\\x19\\x9aa6\\x90\\xcf\\xdc\\x17\\x95}\\xe4' \\\n      b'~#}\\x83y\\\\\\xee\\x8e[\\xb6\\xf8\\xfd\\x81\\x8a&\\xf9\")&\\xd9\\xbe\\xc2\\xad\\x96Ra\\x05\\xb8\\x0bu\\x1f\\xf79Jd\\xe7\\x16\\x1a' \\\n      b'\\x04Kxh\\x1cNO[{0t\\xcb\\x8b\\x1cU\\xdb\\x94w[' \\\n      b'\\x10]\\xbfh\\xa4\\x97#\\xd3hgZ\\x93\\x13T\\xa0E\\xc8\\xbb\\\\\\x14\\xaah\\x8a\\x9a\\xaa\\xc6,' \\\n      b'\\xb6\\x86N\\xd4\\xd7\\\\\\xec\\xb7\\xd5\\xde\\xef\\x9bB\\x9e?\\xa0\\x7f\\xfd\\xebB\\r\\xcf\\x99\\xedd\\xb3\\xecXsL~.\\xcd,' \\\n      b'(\\x95\\xb5\\x9c\\xd3;\\xd9c[\\xb8\\xad\\xca]\\x9f\\x86\\xee\\xe9\\x0f:KG\\x1c\\xadX\\x91\\xfcZ8r\\xc5\\xca&\\xf3\\x10\\x13\\x87[' \\\n      b'\\xb1\\xca!\\xb6\\x1e\\n\\x16\\x9e\\x1a{\\xde\\x18kW=5\\xb86\\xe9\\xaa\\xf4q\\x96O\\x8c\\xf5\\xd3\\xb5\\x82\\xd4\\xc0\\xd4\\x1a\\x0b' \\\n      b'\\xaf\\x89/\\x89\\xc2\\xd5AM\\x9b\\xfb\\x1f\\xf9\\n\\x0ft\\x14\\xb0\\xb4\\xf1\\xbd,kF\\x9a\\x97\\xe1t\\xecr7R\\x85\\r\\x0b)\\xe1{' \\\n      b'\\xf9\\x9a\\xbd\\xaeo\\x9eS\\xb0\\xf5\\xe8q\\xf4\\x1fw\\x19B\\xc5~\\xde\\xb2\\xc2\\x96L\\xb2\\xa9)\\xb87&\\x17\\xe8\\x85\\xcd\\xc29' \\\n      b'\\xa0\\x8aK\\xd1\\xaer\\xfb\\xd1\\xca\\xc1\\xb4\\xfb.\\x1f\\xfb\\x89\\xe7\\xc3\\x83\\xf6\\x98\\xa9(x\\x1d\\xcf\\xbf4,' \\\n      b'\\x9d\\xa1\\x10\\xb9\\xb5\\\\m\\xe7\\xf5\\xe6\\xfa0k\\xa2\\x83\\x92\\xda\\xe2W\\xe7\\xd1Uwc\\xab?W\\xa4\\xbdK\\xe4m&3\\xd8YJ\\x9c' \\\n      b'\\x1dep\\xb9\\x17\\xf66\\xbd\\xb3_\\x9b\\x1d\\xa7MQndO\\xf0\\xd5m\\xb1\\xeaq\\xd1\\xdf\\xdd\\x90v\\xa8j\\xa6J\\xd1\\x8f\\xbax7k0~5' \\\n      b'\\x1e\\x93\\x1b~:\\xf6\\xcb\\x97\\xfc\\xf6+}\\x7f\\xa5\\xa1\\xd0\\xa3\\xd8M}<.\\xc7%\\x17\\x8c:\\x94dvk\\xce\\x18{' \\\n      b'K5\\x9c\\xe8+Ogu\\x8bM\\t\\x89k\\xa0\\xf9\\xbdO\\xc1\\x8b\\xa9\\xdfi\\xe3\\x92\\xa3V-\\x9a\\xd5K\\xf4\\x1d\\r\\x93\\x1c\\xb6\\xd5' \\\n      b'\\xd0Q\\xc58\\xd3\\xdc\\x8b\\x0cxP\\xaac\\x96\\x96\\xc7G\\xdb\\xed\\xfc\\xafS\\xad\\x89\\x8f\\x15_wFy\\x06\\xf7\\xfaZ&-4_\\x97(' \\\n      b'\\x0f\\xc9\\xd3\\xba\\xc5\\xafo\\xc8\\x83\\x9b4\\xbe\\x8aS\\xac\\xcf<Q\\xbb@t90\\xa0\\x8b\\xab\\x9eH,' \\\n      b'\\n^A\\x90qs\\xbav\\xb9~\\xd7\\xaa\\xcd^4F\\x7f\\xce\\xa1\\xf9\\xa7>x\\xc9\\xb3b\\xfe\\xf6\\xed\\xc5Y\\x94\\xee\\x96\\xa9\\xc2\\x85' \\\n      b'\\xbb\\xc5H?\\xaa\\xc9\\xd5\\x97\\xb63|j\\xe2\\xa9\\xb8\\xd2\\x8b\\\\\\x998[' \\\n      b'q}v\\xb2d\\x89\\x9dsh\\xad>\\xafl/vk\\xf3\\n\\xeb\\xcc\\xa3]\\x8a\\xf8\\xb0 ' \\\n      b'\\x92A\\xeat\\x81>\\x17\\'o\\x8c\\xb5r\\x03\\xe9\\xd9R\\x9fP@\\xc4\\x159{' \\\n      b'!\\xd4H$\\xfe\\x84\\x0bw\\x85\\x98=9\\xdb\\xa4\\xedYoh\\x95\\x05\\xb2\\xfc\\xd3\\xe3\\xa6$\\x8ac\\xd0\\xbd\\x1e\\xf9>\\x99n\\xeaE' \\\n      b'\\x8e\\x14\\xa3\\x93\\xbe\\x15xr>A\\xe4\\xb6\\x1a\\xba\\xb7\\xbf\\xa7\\xcbm\\x80\\xb6c*a\\x7f\\xfb;\\x1bgTD\\x0c\\xf6\\xd9\\x97\\x96' \\\n      b'*n\\xe2|w\\xdd\\xb57\\xbb\\x1aB%\\xdd\\x9dc\\xf0\\xaa\\x1ej\\xc9\\xcb\\xfb\\xf6\\x99W\\xc6\\x91D\\xd7\\x9e}\\xaa\\xe0\\xb7W\\xd7' \\\n      b'\\x8f{\\x15_6\\xf4<\\xa5\\xab\\xdb\\xaf]\\xcbr\\xc7\\x88\\x03\\xa9\\xe7\\xa6\\xa5\\xcd\\x81\\xc6\\xda\\'\\x0f\\x8c\\x1dKO]\\xcax\\xbc3' \\\n      b'\\xbao\\xb2\\xd2\\xbc\\xf3\\x18v\\xfd\\xbd\\x93\\xd8\\xad\\x161\\xde\\xfcp\\xc15qB\\xe6\\xe9,U\\x93,' \\\n      b'\\xe5\\xbccE\\x85\\x01\\x89\\xcf\\n\\xdd\\xba\\xcf\\x1a:\\xfaXS\\xe5s?\\xd3\\\\9\\xd9\\xbb\\xe2\\xef\\xea\\xe8\\xe4e\\\\J\\xc1s\\xc7' \\\n      b'/\\x97\\x9dL\\xcdG\\x13\\xdaQ6\\xad:#\\x94n\\xaf%j\\x01u\\xeb\\x99\\xd5\\x9d\\xaf\\xf6>/}X\\xc1Ril\\xd31D$\\x94\\xccEa\\x1a\\x91u' \\\n      b'\\xe3G\\x84r\\xc3\\xea*i(\\x8ai\\xe7\\x91Wnyc\\xd5\\xb2\\xbe\\xda\\xc8\\x1b\\xf5\\xb8zI\\x87\\xd7\\xd1Y\\xf6w\\x88\\x92\\xe9.\\x15' \\\n      b'\\x16\\xea\\x9egx\\twz3N\\x1b\\x0c\\x1c\\xf1]v\\xf3P\\rh\\t\\xacZ%y\\xc9\\x1dT\\x92Y\\xf3\\x14\\xd6\\xd3\\x14\\xdd\\xe7\\xfa\\xf9\\xbd' \\\n      b'\\x0b\\xb5Z\\xcev\\xbd\\x10]\\x91\\x94\"\\x97i\\xb7\\xa7/\\xbd\\xbf\\xbdF\\x13\\x15\\x97g\\xdey\\x99b$\\x1b\\xd7\\x1d\\xde\\xac\\x86e' \\\n      b'\\xdb8k\\x94\\xbc\\xe9y\\xa8\\xb2\\xd3\\x8d\\xf4\\x81`\\xab\\x9cg]e\\xe5\\x1e\\x18w6\\xbeOu2!\\x1d\\xfeG\\x87\\xf9)\\xb7\\xf5\\x9d5' \\\n      b'\\x17\\xa6\\xd4\\xf7\\xd4\\x16\\x15,S\\xf6I?Q\\x9f&\\xe6\\x8d\\xeb\\x8e\\x84\\xc4\\x07\\x126\\xd7\\xf4\\x96V\\xe8\\xfbt\\r\\x8a\\xaf' \\\n      b'\\xfd\\xab\\xc4\\x99\\xbff(3\"\\xd8R\\xe7\\xf7\\x86m\\xf5N\\xe2A\\xa6\\x04\\xd3{\\xba\\xd9]\\xe5\\x97\\x16\\'\\x8b\\xd7\\x13{' \\\n      b'\\xc2\\x82\\xdf\\xe3T\\xc4\\x92n^\\x96\\xcf\\xde\\xde\\x84*:a\\xd4\\xbc\\xdd@\\xd4\\x05e\\xc5\\xb6\\x16Y\\xa5,' \\\n      b'\"\\xf1\\xe0\\xe0\\xd9\\xe81\\x89G\\x88\\xdai\\xab\\x0b\\x91Xn\\xd3\\xe0\\x91\\xe5\\r\\xf7}\\x9c\\xec\\\\\\x1d\\xec{' \\\n      b'u\\xadc\\xde\\x07\\\\9\\xf5\\x987e\\xa0l\\x1a\\x95\\x11\\xd2\\xed_\\x97QRb\\x9e\\x8e\\x7f ' \\\n      b'\\xca\\xe5\\x84\\x1bI}p\\xc8\\xdf*\\xeaMg\\xe3G\\xae7\\x1an-$\\x8e\\x856\\xfe\\xa3\\xc6u\\r%\\xbb\\xae\\xd8{' \\\n      b'\\xa8\\xf4\\r\\xe5\\x99\\x897\\xbe\\xa6\\xd6\\xcaq5iD\\xbf1\\xccS\\xbb\\x11\\xee\\xd6{' \\\n      b'\\xed\\xe6\\xa9\\xa9\\x9b\\x8es\\x96\\xb16)\\xe4\\xec\\xf2\\xb0\\xee\\xa8\\x9a\\xf8\\x85\\xbcC,' \\\n      b'SD\\x9b\\xc5\\x8f\\xd65\\x033\\xec\\x81,e\\xdcI\\x92\\xed\\xaf)e\\x0e\\xc5\\x91\\x02o^d\\x94^:<\\xa9\\x99\\xb0\\x8c\\xeb\\x88}>\\xc1' \\\n      b'\\x1e#pP*\\xfa\\xdd\\x87\\x1c\\xaa\\x18\\xd1MH\\xf0\\xf0\\x8bYv\\xf1\\xe2\\xc9\\xca\\xa7\\r\\x05\\xde\\xde\\x9c1\\xadmzz\\xfcZ\\xd6' \\\n      b'\\x82\\xb9%2\\xbc<\"b\\xcd>\\xc2^dL\\xa8\\x9fF(\\xbf\\x8d\\xc4\\xd7YZ\\x8c\\xde\\xf8\\xb1\\xe2\\xec\\xbd\\x8dRjr[' \\\n      b'\\xd9\\x076\\xbb\\xbd\\xfd\\xcd\\xd7\\x9b\\x93\\x8b\\xf8%]1i\\xa4\\xf1\\x18\\n\\x83O\\xaf\\xe0m?\\x10\\xc1\\xf35\\xc0\\x82O=\\xad' \\\n      b'\\'\\xa2\\x88`\\xa1\\xe6\\x85\\xd9H\\xc3O\\xb6\\xcc\\x8f\\xccsg\\x8d!;\\x178,' \\\n      b'\\x06=\\x0b\\xe7\\x13n\\x0e\\x0f\\x1e^\\xe8=\\xeb\\xc9-\\xd2K<\\x89_\\x9f>\\xbd\\xb8\\xe4\\xd2\\xad ' \\\n      b'\\x7fr\\xbbs\\xf4\\xc9\\x972F\\r\\xd1O\\'N%\\x12y\\xaau\\x95\\xa4\\x03DTB1E\\xe2K\\x92\\xcd\\xed\\xb44\\xc1\\xa7B\\x17c\\xe3H\\xac' \\\n      b'\\xa2\\xa5\\x97GLI~e\\x84\\xa1\\xf6\\xccqY\\xdc\\xe8_\\xd4\\x1a\\\\\\xd8>r\\xff\\x0e\\xe36\\xb4\\xd8\\xe1\\xcfg\\xb4\\xdc\\xfe\\xaa=W7' \\\n      b'._7B\\xf9X\\xdd\\xbc\\xf7\\xe0\\xf4]\\x9f.J4\\x9b\\xd3(\\x1a\\x9dU\\x91\\x92^\\xfe\\xca\\x1f+\\xf0dbv\\xa9U\\xd4$:(' \\\n      b'A\\xa9i\\x8e\\x8c\\x91\\xf7\\xf1\\x97\\xbe\\xe3x2\\xee\\x85V\\xe5S3;dQ\\xf5#\\xefV\"\\xa1\\xc8u[' \\\n      b'\\x1a\\xc7\\xf0y\\xc2\\xb7\\xa6Qj\\xf8\\xd6\\x7f\\x1e~\\xf4S\\xd3\\n\\xf8\\x86\\xff\\xdb?\\x8a\\xed\\xdf\\xa9\\xc4\\xdf\\xc2:\\xffP' \\\n      b'\\xfb[3\\xb8i^\\xf5\\x91\\xf6\\xcf~\\x82q\\xcb+\\x96\\x1f\\x03\\xdf\\xfb\\n\\xca\\xe6b?_d\\x9d\\xaf|Z\\xfb\\xe4\\x97\\x1a\\xa3\\xe7' \\\n      b'\\xe8k\\x8c\\xb0\\xfdRC\\xea\\x97\\x1a\\xa4_j\\xe07\\xd0\\xd7h\\x13\\xa2\\xaf\\xa1\\xad\\xf1\\xbf\\xe0\\xaa\\x8eR\\x02.\\t9\\xd7' \\\n      b'\\xf0zuI:&y\\xfd\\xc2\\xcd\\xaeW\\x83\\xda\\xd5\\x0f/;\\\\\\x8d\\x9c\\xff\\x1c!\\xe0\\x15\\xc0\\xd1\\x9a\\xb3\\x86-\\x94~K\\xd2\\x7f' \\\n      b'\\xa7T\\xe8\\x9cC\\xd2\\x1f_\\xcav(?\\xbd\\xad\\xd8\\xfa\\x8f\\x80\\xfa\\x0f\\xda\\x0e\\xa78_\\x1f87\\x7f<_}L\\xc7\\xa45\\xc7p\\xa5p' \\\n      b'\\xc0^3\\xa1\\x1f\\x13\\xb5\"\\x9b6\\x7f<\\x92klP\\xb65\\x07\\xf3{' \\\n      b'aP\\'I\\xdf\\xc9\\xe7p\\xc2\\n:!3Hw\\xbf\\xf2\\x07m/]\\xdd\\xbe\\xe0\\x8c\\xcd\\xe53k\\xc8\\xde\\xafmu\\x91\\xc2\\x07yj\\xcf\\xb6' \\\n      b'\\xacsX\\xfc\\x7fK(\\x83%\\xc0\\x12`\\t\\xb0\\x04X\\x02,\\x01\\x96\\x00K0a\\x89\\xbd`\\t\\xb0\\x04X\\x02,' \\\n      b'\\x01\\x96\\x00K\\x80%\\xc0\\x12LXB\\t,\\x01\\x96\\x00K\\x80%\\xc0\\x12`\\t\\xb0\\x04X\\x82\\tK\\xa8\\x82%\\xc0\\x12`\\t\\xb0\\x04X' \\\n      b'\\x02,\\x01\\x96\\x00K0a\\t5\\xb0\\x04X\\x02,\\x01\\x96\\x00K\\x80%\\xc0\\x12`\\t&,' \\\n      b'\\xa1\\x0e\\x96\\x00K\\x80%\\xc0\\x12`\\t\\xb0\\x04X\\x02,\\xc1\\x84%4\\xc0\\x12`\\t\\xb0\\x04X\\x02,' \\\n      b'\\x01\\x96\\x00K\\x80%\\x98\\xb0\\x84&X\\x02,' \\\n      b'\\x01\\x96\\x00K\\x80%\\xc0\\x12`\\t\\xb0\\x04\\x13\\x96@\\x83%\\xc0\\x12`\\t\\xb0\\x04X\\x02,' \\\n      b'\\x01\\x96\\x00K0a\\x89c`\\t\\xb0\\x04X\\x02,' \\\n      b'\\x01\\x96\\x00K\\x80%\\xc0\\x12LX\\x02\\x0b\\x96\\x00K\\x80%\\xc0\\x12`\\t\\xb0\\x04X\\x02,' \\\n      b'\\xc1\\x84%\\xdc\\xc0\\x12`\\t\\xb0\\x04X\\x02,\\x01\\x96\\x00K\\x80%\\x98\\xb0\\x84;X\\x02,' \\\n      b'\\x01\\x96\\x00K\\x80%\\xc0\\x12`\\t\\xb0\\x04\\x13\\x96\\xf0\\x00K\\x80%\\xc0\\x12`\\t\\xb0\\x04X\\x02,' \\\n      b'\\x01\\x96`\\xc2\\x12\\x9e`\\t\\xb0\\x04X\\x02,\\x01\\x96\\x00K\\x80%\\xc0\\x12\\xffl\\x89\\r,' \\\n      b'[\\x10\\xff\\xac\\x89\\x1f\\xd7\\x0eD\\xf9y\\xc4O[' \\\n      b'\\xa8|\\xb7\\x05\\xe39\\x13N\\xfa\\xb3\\xcb\\x19\\xcf\\xa5\\t\\xd0\\x9fS\\xcax\\xee\\x13\\x92\\xfeL2\\xc6sJ;\\xe9\\xcf\\x1fa<\\x17&C' \\\n      b'\\xbf\\xd78\\xe3\\xb9&e\\xfa}E\\x19\\xcfm\\xd1\\xa2\\xdfC\\x8c\\xf1\\x9c\\xab.\\xfd~!\\x8c\\xe7\\xee\\x18\\xd1\\xaf\\rf<\\xb7lI\\xbf' \\\n      b'\\x0e\\x88\\xf1\\xdc\\x1f\\x8e\\xf4s~\\x19\\xcf%\\xba\\xd1\\xcf\\xefa<\\xd7\\xebM\\xff/\\x8f\\xf1\\xdcn\\x7f\\xfa\\xefv\\x8c\\xe7\\xfc' \\\n      b'\\xc3\\xe8\\x8dna\\xcc\\xbe\\xf1\\xfb\\x88\\xc0\\xb7\\xfb\\x1c+\\x02\\xf10\\xe2\\xfb\\xcb\\x7f\\x03PK\\x03\\x04\\x14\\x00\\x02\\x00' \\\n      b'\\x08\\x00\\x1b\\xad|(\\x93u\\xdc\\xc8\\xf9\\t\\x00\\x00V\\x88\\x00\\x00\\t\\x00\\x00\\x00lib ' \\\n      b'8.zip\\xed\\xddWPS\\xdb\\x1a\\x07\\xf0H\\x118t\\x95C\\x00\\xb1Q\"H\\x95\\x1a\\xc4\\xa0\\xdc#\\xbd\\tH\\x95b(' \\\n      b'Q\\x8a\\xe8\\r-\\x14+G\\xe9\\x10\\x01)F\\x94\\x8e(QDz\\xb3%\\xa0 \\x08\\xa2 ' \\\n      b'RT\\x04\\xa4\\xb7C\\t\\x88\\x1c\\xbd\\x8e\\xf7\\xc6\\x87373y\\xfd\\xf6~X{\\xcd\\xda\\xff\\xf9^\\x7f\\xb3\\xf7*\\x16\\xc6\\xacl[\\x10,' \\\n      b'\\x08ND\\xdb\\x9d\\xb0\\xddT\\xd7\\xf1\\r\\x92\\x9c\\x08\\xc4F<\\x02\\xf1\\x1b\\x02\\x81\\xc0\\xfa\\xf9y\\xefPQ\\x089qj\\xb2\\xcf[' \\\n      b'\\xd3zu\\x1b\\xc7\\x8c\\x14%j+\\x97\\x90D\\xaa\\xb4\\x04:9\\xd4=\\xb7\\xe3O\\xc1@\\xa4\\xe0\\xae\\n\\x11\\x93)\\xa1\\xac\\xba\\xed' \\\n      b'\\x96\\x81\\xe4Fy\\xd3\\x08I\\xc7M\\xff\\xe6\\xefK.q\\xa2J%y?\\xae\\xf4I\\x15\\xac\\xba4Jj%\\x9cnun\\xc3g\\xe2\\x9co\\xd0\\x8a\\x17' \\\n      b'\\xb0\\xfb\\x1bF\\xd6\\xd7\\xc9\\x0bs\\xa5\\x99\\x01\\xb4\\xb5\\x17\\\\\\xb5\\xd7(' \\\n      b'\\x89\\xa6M.\\x89\\xdd\\x17\\x12\\xd7\\x90Oz:\\xf40l\\x86\\\\\\x87\\x04v\\xb2\\x1d$\\x19\\x9aa6\\x90\\xcf\\xdc\\x17\\x95}\\xe4' \\\n      b'~#}\\x83y\\\\\\xee\\x8e[\\xb6\\xf8\\xfd\\x81\\x8a&\\xf9\")&\\xd9\\xbe\\xc2\\xad\\x96Ra\\x05\\xb8\\x0bu\\x1f\\xf79Jd\\xe7\\x16\\x1a' \\\n      b'\\x04Kxh\\x1cNO[{0t\\xcb\\x8b\\x1cU\\xdb\\x94w[' \\\n      b'\\x10]\\xbfh\\xa4\\x97#\\xd3hgZ\\x93\\x13T\\xa0E\\xc8\\xbb\\\\\\x14\\xaah\\x8a\\x9a\\xaa\\xc6,' \\\n      b'\\xb6\\x86N\\xd4\\xd7\\\\\\xec\\xb7\\xd5\\xde\\xef\\x9bB\\x9e?\\xa0\\x7f\\xfd\\xebB\\r\\xcf\\x99\\xedd\\xb3\\xecXsL~.\\xcd,' \\\n      b'(\\x95\\xb5\\x9c\\xd3;\\xd9c[\\xb8\\xad\\xca]\\x9f\\x86\\xee\\xe9\\x0f:KG\\x1c\\xadX\\x91\\xfcZ8r\\xc5\\xca&\\xf3\\x10\\x13\\x87[' \\\n      b'\\xb1\\xca!\\xb6\\x1e\\n\\x16\\x9e\\x1a{\\xde\\x18kW=5\\xb86\\xe9\\xaa\\xf4q\\x96O\\x8c\\xf5\\xd3\\xb5\\x82\\xd4\\xc0\\xd4\\x1a\\x0b' \\\n      b'\\xaf\\x89/\\x89\\xc2\\xd5AM\\x9b\\xfb\\x1f\\xf9\\n\\x0ft\\x14\\xb0\\xb4\\xf1\\xbd,kF\\x9a\\x97\\xe1t\\xecr7R\\x85\\r\\x0b)\\xe1{' \\\n      b'\\xf9\\x9a\\xbd\\xaeo\\x9eS\\xb0\\xf5\\xe8q\\xf4\\x1fw\\x19B\\xc5~\\xde\\xb2\\xc2\\x96L\\xb2\\xa9)\\xb87&\\x17\\xe8\\x85\\xcd\\xc29' \\\n      b'\\xa0\\x8aK\\xd1\\xaer\\xfb\\xd1\\xca\\xc1\\xb4\\xfb.\\x1f\\xfb\\x89\\xe7\\xc3\\x83\\xf6\\x98\\xa9(x\\x1d\\xcf\\xbf4,' \\\n      b'\\x9d\\xa1\\x10\\xb9\\xb5\\\\m\\xe7\\xf5\\xe6\\xfa0k\\xa2\\x83\\x92\\xda\\xe2W\\xe7\\xd1Uwc\\xab?W\\xa4\\xbdK\\xe4m&3\\xd8YJ\\x9c' \\\n      b'\\x1dep\\xb9\\x17\\xf66\\xbd\\xb3_\\x9b\\x1d\\xa7MQndO\\xf0\\xd5m\\xb1\\xeaq\\xd1\\xdf\\xdd\\x90v\\xa8j\\xa6J\\xd1\\x8f\\xbax7k0~5' \\\n      b'\\x1e\\x93\\x1b~:\\xf6\\xcb\\x97\\xfc\\xf6+}\\x7f\\xa5\\xa1\\xd0\\xa3\\xd8M}<.\\xc7%\\x17\\x8c:\\x94dvk\\xce\\x18{' \\\n      b'K5\\x9c\\xe8+Ogu\\x8bM\\t\\x89k\\xa0\\xf9\\xbdO\\xc1\\x8b\\xa9\\xdfi\\xe3\\x92\\xa3V-\\x9a\\xd5K\\xf4\\x1d\\r\\x93\\x1c\\xb6\\xd5' \\\n      b'\\xd0Q\\xc58\\xd3\\xdc\\x8b\\x0cxP\\xaac\\x96\\x96\\xc7G\\xdb\\xed\\xfc\\xafS\\xad\\x89\\x8f\\x15_wFy\\x06\\xf7\\xfaZ&-4_\\x97(' \\\n      b'\\x0f\\xc9\\xd3\\xba\\xc5\\xafo\\xc8\\x83\\x9b4\\xbe\\x8aS\\xac\\xcf<Q\\xbb@t90\\xa0\\x8b\\xab\\x9eH,' \\\n      b'\\n^A\\x90qs\\xbav\\xb9~\\xd7\\xaa\\xcd^4F\\x7f\\xce\\xa1\\xf9\\xa7>x\\xc9\\xb3b\\xfe\\xf6\\xed\\xc5Y\\x94\\xee\\x96\\xa9\\xc2\\x85' \\\n      b'\\xbb\\xc5H?\\xaa\\xc9\\xd5\\x97\\xb63|j\\xe2\\xa9\\xb8\\xd2\\x8b\\\\\\x998[' \\\n      b'q}v\\xb2d\\x89\\x9dsh\\xad>\\xafl/vk\\xf3\\n\\xeb\\xcc\\xa3]\\x8a\\xf8\\xb0 ' \\\n      b'\\x92A\\xeat\\x81>\\x17\\'o\\x8c\\xb5r\\x03\\xe9\\xd9R\\x9fP@\\xc4\\x159{' \\\n      b'!\\xd4H$\\xfe\\x84\\x0bw\\x85\\x98=9\\xdb\\xa4\\xedYoh\\x95\\x05\\xb2\\xfc\\xd3\\xe3\\xa6$\\x8ac\\xd0\\xbd\\x1e\\xf9>\\x99n\\xeaE' \\\n      b'\\x8e\\x14\\xa3\\x93\\xbe\\x15xr>A\\xe4\\xb6\\x1a\\xba\\xb7\\xbf\\xa7\\xcbm\\x80\\xb6c*a\\x7f\\xfb;\\x1bgTD\\x0c\\xf6\\xd9\\x97\\x96' \\\n      b'*n\\xe2|w\\xdd\\xb57\\xbb\\x1aB%\\xdd\\x9dc\\xf0\\xaa\\x1ej\\xc9\\xcb\\xfb\\xf6\\x99W\\xc6\\x91D\\xd7\\x9e}\\xaa\\xe0\\xb7W\\xd7' \\\n      b'\\x8f{\\x15_6\\xf4<\\xa5\\xab\\xdb\\xaf]\\xcbr\\xc7\\x88\\x03\\xa9\\xe7\\xa6\\xa5\\xcd\\x81\\xc6\\xda\\'\\x0f\\x8c\\x1dKO]\\xcax\\xbc3' \\\n      b'\\xbao\\xb2\\xd2\\xbc\\xf3\\x18v\\xfd\\xbd\\x93\\xd8\\xad\\x161\\xde\\xfcp\\xc15qB\\xe6\\xe9,U\\x93,' \\\n      b'\\xe5\\xbccE\\x85\\x01\\x89\\xcf\\n\\xdd\\xba\\xcf\\x1a:\\xfaXS\\xe5s?\\xd3\\\\9\\xd9\\xbb\\xe2\\xef\\xea\\xe8\\xe4e\\\\J\\xc1s\\xc7' \\\n      b'/\\x97\\x9dL\\xcdG\\x13\\xdaQ6\\xad:#\\x94n\\xaf%j\\x01u\\xeb\\x99\\xd5\\x9d\\xaf\\xf6>/}X\\xc1Ril\\xd31D$\\x94\\xccEa\\x1a\\x91u' \\\n      b'\\xe3G\\x84r\\xc3\\xea*i(\\x8ai\\xe7\\x91Wnyc\\xd5\\xb2\\xbe\\xda\\xc8\\x1b\\xf5\\xb8zI\\x87\\xd7\\xd1Y\\xf6w\\x88\\x92\\xe9.\\x15' \\\n      b'\\x16\\xea\\x9egx\\twz3N\\x1b\\x0c\\x1c\\xf1]v\\xf3P\\rh\\t\\xacZ%y\\xc9\\x1dT\\x92Y\\xf3\\x14\\xd6\\xd3\\x14\\xdd\\xe7\\xfa\\xf9\\xbd' \\\n      b'\\x0b\\xb5Z\\xcev\\xbd\\x10]\\x91\\x94\"\\x97i\\xb7\\xa7/\\xbd\\xbf\\xbdF\\x13\\x15\\x97g\\xdey\\x99b$\\x1b\\xd7\\x1d\\xde\\xac\\x86e' \\\n      b'\\xdb8k\\x94\\xbc\\xe9y\\xa8\\xb2\\xd3\\x8d\\xf4\\x81`\\xab\\x9cg]e\\xe5\\x1e\\x18w6\\xbeOu2!\\x1d\\xfeG\\x87\\xf9)\\xb7\\xf5\\x9d5' \\\n      b'\\x17\\xa6\\xd4\\xf7\\xd4\\x16\\x15,S\\xf6I?Q\\x9f&\\xe6\\x8d\\xeb\\x8e\\x84\\xc4\\x07\\x126\\xd7\\xf4\\x96V\\xe8\\xfbt\\r\\x8a\\xaf' \\\n      b'\\xfd\\xab\\xc4\\x99\\xbff(3\"\\xd8R\\xe7\\xf7\\x86m\\xf5N\\xe2A\\xa6\\x04\\xd3{\\xba\\xd9]\\xe5\\x97\\x16\\'\\x8b\\xd7\\x13{' \\\n      b'\\xc2\\x82\\xdf\\xe3T\\xc4\\x92n^\\x96\\xcf\\xde\\xde\\x84*:a\\xd4\\xbc\\xdd@\\xd4\\x05e\\xc5\\xb6\\x16Y\\xa5,' \\\n      b'\"\\xf1\\xe0\\xe0\\xd9\\xe81\\x89G\\x88\\xdai\\xab\\x0b\\x91Xn\\xd3\\xe0\\x91\\xe5\\r\\xf7}\\x9c\\xec\\\\\\x1d\\xec{' \\\n      b'u\\xadc\\xde\\x07\\\\9\\xf5\\x987e\\xa0l\\x1a\\x95\\x11\\xd2\\xed_\\x97QRb\\x9e\\x8e\\x7f ' \\\n      b'\\xca\\xe5\\x84\\x1bI}p\\xc8\\xdf*\\xeaMg\\xe3G\\xae7\\x1an-$\\x8e\\x856\\xfe\\xa3\\xc6u\\r%\\xbb\\xae\\xd8{' \\\n      b'\\xa8\\xf4\\r\\xe5\\x99\\x897\\xbe\\xa6\\xd6\\xcaq5iD\\xbf1\\xccS\\xbb\\x11\\xee\\xd6{' \\\n      b'\\xed\\xe6\\xa9\\xa9\\x9b\\x8es\\x96\\xb16)\\xe4\\xec\\xf2\\xb0\\xee\\xa8\\x9a\\xf8\\x85\\xbcC,' \\\n      b'SD\\x9b\\xc5\\x8f\\xd65\\x033\\xec\\x81,e\\xdcI\\x92\\xed\\xaf)e\\x0e\\xc5\\x91\\x02o^d\\x94^:<\\xa9\\x99\\xb0\\x8c\\xeb\\x88}>\\xc1' \\\n      b'\\x1e#pP*\\xfa\\xdd\\x87\\x1c\\xaa\\x18\\xd1MH\\xf0\\xf0\\x8bYv\\xf1\\xe2\\xc9\\xca\\xa7\\r\\x05\\xde\\xde\\x9c1\\xadmzz\\xfcZ\\xd6' \\\n      b'\\x82\\xb9%2\\xbc<\"b\\xcd>\\xc2^dL\\xa8\\x9fF(\\xbf\\x8d\\xc4\\xd7YZ\\x8c\\xde\\xf8\\xb1\\xe2\\xec\\xbd\\x8dRjr[' \\\n      b'\\xd9\\x076\\xbb\\xbd\\xfd\\xcd\\xd7\\x9b\\x93\\x8b\\xf8%]1i\\xa4\\xf1\\x18\\n\\x83O\\xaf\\xe0m?\\x10\\xc1\\xf35\\xc0\\x82O=\\xad' \\\n      b'\\'\\xa2\\x88`\\xa1\\xe6\\x85\\xd9H\\xc3O\\xb6\\xcc\\x8f\\xccsg\\x8d!;\\x178,' \\\n      b'\\x06=\\x0b\\xe7\\x13n\\x0e\\x0f\\x1e^\\xe8=\\xeb\\xc9-\\xd2K<\\x89_\\x9f>\\xbd\\xb8\\xe4\\xd2\\xad ' \\\n      b'\\x7fr\\xbbs\\xf4\\xc9\\x972F\\r\\xd1O\\'N%\\x12y\\xaau\\x95\\xa4\\x03DTB1E\\xe2K\\x92\\xcd\\xed\\xb44\\xc1\\xa7B\\x17c\\xe3H\\xac' \\\n      b'\\xa2\\xa5\\x97GLI~e\\x84\\xa1\\xf6\\xccqY\\xdc\\xe8_\\xd4\\x1a\\\\\\xd8>r\\xff\\x0e\\xe36\\xb4\\xd8\\xe1\\xcfg\\xb4\\xdc\\xfe\\xaa=W7' \\\n      b'._7B\\xf9X\\xdd\\xbc\\xf7\\xe0\\xf4]\\x9f.J4\\x9b\\xd3(\\x1a\\x9dU\\x91\\x92^\\xfe\\xca\\x1f+\\xf0dbv\\xa9U\\xd4$:(' \\\n      b'A\\xa9i\\x8e\\x8c\\x91\\xf7\\xf1\\x97\\xbe\\xe3x2\\xee\\x85V\\xe5S3;dQ\\xf5#\\xefV\"\\xa1\\xc8u[' \\\n      b'\\x1a\\xc7\\xf0y\\xc2\\xb7\\xa6Qj\\xf8\\xd6\\x7f\\x1e~\\xf4S\\xd3\\n\\xf8\\x86\\xff\\xdb?\\x8a\\xed\\xdf\\xa9\\xc4\\xdf\\xc2:\\xffP' \\\n      b'\\xfb[3\\xb8i^\\xf5\\x91\\xf6\\xcf~\\x82q\\xcb+\\x96\\x1f\\x03\\xdf\\xfb\\n\\xca\\xe6b?_d\\x9d\\xaf|Z\\xfb\\xe4\\x97\\x1a\\xa3\\xe7' \\\n      b'\\xe8k\\x8c\\xb0\\xfdRC\\xea\\x97\\x1a\\xa4_j\\xe07\\xd0\\xd7h\\x13\\xa2\\xaf\\xa1\\xad\\xf1\\xbf\\xe0\\xaa\\x8eR\\x02.\\t9\\xd7' \\\n      b'\\xf0zuI:&y\\xfd\\xc2\\xcd\\xaeW\\x83\\xda\\xd5\\x0f/;\\\\\\x8d\\x9c\\xff\\x1c!\\xe0\\x15\\xc0\\xd1\\x9a\\xb3\\x86-\\x94~K\\xd2\\x7f' \\\n      b'\\xa7T\\xe8\\x9cC\\xd2\\x1f_\\xcav(?\\xbd\\xad\\xd8\\xfa\\x8f\\x80\\xfa\\x0f\\xda\\x0e\\xa78_\\x1f87\\x7f<_}L\\xc7\\xa45\\xc7p\\xa5p' \\\n      b'\\xc0^3\\xa1\\x1f\\x13\\xb5\"\\x9b6\\x7f<\\x92klP\\xb65\\x07\\xf3{' \\\n      b'aP\\'I\\xdf\\xc9\\xe7p\\xc2\\n:!3Hw\\xbf\\xf2\\x07m/]\\xdd\\xbe\\xe0\\x8c\\xcd\\xe53k\\xc8\\xde\\xafmu\\x91\\xc2\\x07yj\\xcf\\xb6' \\\n      b'\\xacsX\\xfc\\x7fK(\\x83%\\xc0\\x12`\\t\\xb0\\x04X\\x02,\\x01\\x96\\x00K0a\\x89\\xbd`\\t\\xb0\\x04X\\x02,' \\\n      b'\\x01\\x96\\x00K\\x80%\\xc0\\x12LXB\\t,\\x01\\x96\\x00K\\x80%\\xc0\\x12`\\t\\xb0\\x04X\\x82\\tK\\xa8\\x82%\\xc0\\x12`\\t\\xb0\\x04X' \\\n      b'\\x02,\\x01\\x96\\x00K0a\\t5\\xb0\\x04X\\x02,\\x01\\x96\\x00K\\x80%\\xc0\\x12`\\t&,' \\\n      b'\\xa1\\x0e\\x96\\x00K\\x80%\\xc0\\x12`\\t\\xb0\\x04X\\x02,\\xc1\\x84%4\\xc0\\x12`\\t\\xb0\\x04X\\x02,' \\\n      b'\\x01\\x96\\x00K\\x80%\\x98\\xb0\\x84&X\\x02,' \\\n      b'\\x01\\x96\\x00K\\x80%\\xc0\\x12`\\t\\xb0\\x04\\x13\\x96@\\x83%\\xc0\\x12`\\t\\xb0\\x04X\\x02,' \\\n      b'\\x01\\x96\\x00K0a\\x89c`\\t\\xb0\\x04X\\x02,' \\\n      b'\\x01\\x96\\x00K\\x80%\\xc0\\x12LX\\x02\\x0b\\x96\\x00K\\x80%\\xc0\\x12`\\t\\xb0\\x04X\\x02,' \\\n      b'\\xc1\\x84%\\xdc\\xc0\\x12`\\t\\xb0\\x04X\\x02,\\x01\\x96\\x00K\\x80%\\x98\\xb0\\x84;X\\x02,' \\\n      b'\\x01\\x96\\x00K\\x80%\\xc0\\x12`\\t\\xb0\\x04\\x13\\x96\\xf0\\x00K\\x80%\\xc0\\x12`\\t\\xb0\\x04X\\x02,' \\\n      b'\\x01\\x96`\\xc2\\x12\\x9e`\\t\\xb0\\x04X\\x02,\\x01\\x96\\x00K\\x80%\\xc0\\x12\\xffl\\x89\\r,' \\\n      b'[\\x10\\xff\\xac\\x89\\x1f\\xd7\\x0eD\\xf9y\\xc4O[' \\\n      b'\\xa8|\\xb7\\x05\\xe39\\x13N\\xfa\\xb3\\xcb\\x19\\xcf\\xa5\\t\\xd0\\x9fS\\xcax\\xee\\x13\\x92\\xfeL2\\xc6sJ;\\xe9\\xcf\\x1fa<\\x17&C' \\\n      b'\\xbf\\xd78\\xe3\\xb9&e\\xfa}E\\x19\\xcfm\\xd1\\xa2\\xdfC\\x8c\\xf1\\x9c\\xab.\\xfd~!\\x8c\\xe7\\xee\\x18\\xd1\\xaf\\rf<\\xb7lI\\xbf' \\\n      b'\\x0e\\x88\\xf1\\xdc\\x1f\\x8e\\xf4s~\\x19\\xcf%\\xba\\xd1\\xcf\\xefa<\\xd7\\xebM\\xff/\\x8f\\xf1\\xdcn\\x7f\\xfa\\xefv\\x8c\\xe7\\xfc' \\\n      b'\\xc3\\xe8\\x8dna\\xcc\\xbe\\xf1\\xfb\\x88\\xc0\\xb7\\xfb\\x1c+\\x02\\xf10\\xe2\\xfb\\xcb\\x7f\\x03PK\\x03\\x04\\x14\\x00\\x02\\x00' \\\n      b'\\x08\\x00\\x1b\\xad|(\\x93u\\xdc\\xc8\\xf9\\t\\x00\\x00V\\x88\\x00\\x00\\t\\x00\\x00\\x00lib ' \\\n      b'9.zip\\xed\\xddWPS\\xdb\\x1a\\x07\\xf0H\\x118t\\x95C\\x00\\xb1Q\"H\\x95\\x1a\\xc4\\xa0\\xdc#\\xbd\\tH\\x95b(' \\\n      b'Q\\x8a\\xe8\\r-\\x14+G\\xe9\\x10\\x01)F\\x94\\x8e(QDz\\xb3%\\xa0 \\x08\\xa2 ' \\\n      b'RT\\x04\\xa4\\xb7C\\t\\x88\\x1c\\xbd\\x8e\\xf7\\xc6\\x87373y\\xfd\\xf6~X{\\xcd\\xda\\xff\\xf9^\\x7f\\xb3\\xf7*\\x16\\xc6\\xacl[\\x10,' \\\n      b'\\x08ND\\xdb\\x9d\\xb0\\xddT\\xd7\\xf1\\r\\x92\\x9c\\x08\\xc4F<\\x02\\xf1\\x1b\\x02\\x81\\xc0\\xfa\\xf9y\\xefPQ\\x089qj\\xb2\\xcf[' \\\n      b'\\xd3zu\\x1b\\xc7\\x8c\\x14%j+\\x97\\x90D\\xaa\\xb4\\x04:9\\xd4=\\xb7\\xe3O\\xc1@\\xa4\\xe0\\xae\\n\\x11\\x93)\\xa1\\xac\\xba\\xed' \\\n      b'\\x96\\x81\\xe4Fy\\xd3\\x08I\\xc7M\\xff\\xe6\\xefK.q\\xa2J%y?\\xae\\xf4I\\x15\\xac\\xba4Jj%\\x9cnun\\xc3g\\xe2\\x9co\\xd0\\x8a\\x17' \\\n      b'\\xb0\\xfb\\x1bF\\xd6\\xd7\\xc9\\x0bs\\xa5\\x99\\x01\\xb4\\xb5\\x17\\\\\\xb5\\xd7(' \\\n      b'\\x89\\xa6M.\\x89\\xdd\\x17\\x12\\xd7\\x90Oz:\\xf40l\\x86\\\\\\x87\\x04v\\xb2\\x1d$\\x19\\x9aa6\\x90\\xcf\\xdc\\x17\\x95}\\xe4' \\\n      b'~#}\\x83y\\\\\\xee\\x8e[\\xb6\\xf8\\xfd\\x81\\x8a&\\xf9\")&\\xd9\\xbe\\xc2\\xad\\x96Ra\\x05\\xb8\\x0bu\\x1f\\xf79Jd\\xe7\\x16\\x1a' \\\n      b'\\x04Kxh\\x1cNO[{0t\\xcb\\x8b\\x1cU\\xdb\\x94w[' \\\n      b'\\x10]\\xbfh\\xa4\\x97#\\xd3hgZ\\x93\\x13T\\xa0E\\xc8\\xbb\\\\\\x14\\xaah\\x8a\\x9a\\xaa\\xc6,' \\\n      b'\\xb6\\x86N\\xd4\\xd7\\\\\\xec\\xb7\\xd5\\xde\\xef\\x9bB\\x9e?\\xa0\\x7f\\xfd\\xebB\\r\\xcf\\x99\\xedd\\xb3\\xecXsL~.\\xcd,' \\\n      b'(\\x95\\xb5\\x9c\\xd3;\\xd9c[\\xb8\\xad\\xca]\\x9f\\x86\\xee\\xe9\\x0f:KG\\x1c\\xadX\\x91\\xfcZ8r\\xc5\\xca&\\xf3\\x10\\x13\\x87[' \\\n      b'\\xb1\\xca!\\xb6\\x1e\\n\\x16\\x9e\\x1a{\\xde\\x18kW=5\\xb86\\xe9\\xaa\\xf4q\\x96O\\x8c\\xf5\\xd3\\xb5\\x82\\xd4\\xc0\\xd4\\x1a\\x0b' \\\n      b'\\xaf\\x89/\\x89\\xc2\\xd5AM\\x9b\\xfb\\x1f\\xf9\\n\\x0ft\\x14\\xb0\\xb4\\xf1\\xbd,kF\\x9a\\x97\\xe1t\\xecr7R\\x85\\r\\x0b)\\xe1{' \\\n      b'\\xf9\\x9a\\xbd\\xaeo\\x9eS\\xb0\\xf5\\xe8q\\xf4\\x1fw\\x19B\\xc5~\\xde\\xb2\\xc2\\x96L\\xb2\\xa9)\\xb87&\\x17\\xe8\\x85\\xcd\\xc29' \\\n      b'\\xa0\\x8aK\\xd1\\xaer\\xfb\\xd1\\xca\\xc1\\xb4\\xfb.\\x1f\\xfb\\x89\\xe7\\xc3\\x83\\xf6\\x98\\xa9(x\\x1d\\xcf\\xbf4,' \\\n      b'\\x9d\\xa1\\x10\\xb9\\xb5\\\\m\\xe7\\xf5\\xe6\\xfa0k\\xa2\\x83\\x92\\xda\\xe2W\\xe7\\xd1Uwc\\xab?W\\xa4\\xbdK\\xe4m&3\\xd8YJ\\x9c' \\\n      b'\\x1dep\\xb9\\x17\\xf66\\xbd\\xb3_\\x9b\\x1d\\xa7MQndO\\xf0\\xd5m\\xb1\\xeaq\\xd1\\xdf\\xdd\\x90v\\xa8j\\xa6J\\xd1\\x8f\\xbax7k0~5' \\\n      b'\\x1e\\x93\\x1b~:\\xf6\\xcb\\x97\\xfc\\xf6+}\\x7f\\xa5\\xa1\\xd0\\xa3\\xd8M}<.\\xc7%\\x17\\x8c:\\x94dvk\\xce\\x18{' \\\n      b'K5\\x9c\\xe8+Ogu\\x8bM\\t\\x89k\\xa0\\xf9\\xbdO\\xc1\\x8b\\xa9\\xdfi\\xe3\\x92\\xa3V-\\x9a\\xd5K\\xf4\\x1d\\r\\x93\\x1c\\xb6\\xd5' \\\n      b'\\xd0Q\\xc58\\xd3\\xdc\\x8b\\x0cxP\\xaac\\x96\\x96\\xc7G\\xdb\\xed\\xfc\\xafS\\xad\\x89\\x8f\\x15_wFy\\x06\\xf7\\xfaZ&-4_\\x97(' \\\n      b'\\x0f\\xc9\\xd3\\xba\\xc5\\xafo\\xc8\\x83\\x9b4\\xbe\\x8aS\\xac\\xcf<Q\\xbb@t90\\xa0\\x8b\\xab\\x9eH,' \\\n      b'\\n^A\\x90qs\\xbav\\xb9~\\xd7\\xaa\\xcd^4F\\x7f\\xce\\xa1\\xf9\\xa7>x\\xc9\\xb3b\\xfe\\xf6\\xed\\xc5Y\\x94\\xee\\x96\\xa9\\xc2\\x85' \\\n      b'\\xbb\\xc5H?\\xaa\\xc9\\xd5\\x97\\xb63|j\\xe2\\xa9\\xb8\\xd2\\x8b\\\\\\x998[' \\\n      b'q}v\\xb2d\\x89\\x9dsh\\xad>\\xafl/vk\\xf3\\n\\xeb\\xcc\\xa3]\\x8a\\xf8\\xb0 ' \\\n      b'\\x92A\\xeat\\x81>\\x17\\'o\\x8c\\xb5r\\x03\\xe9\\xd9R\\x9fP@\\xc4\\x159{' \\\n      b'!\\xd4H$\\xfe\\x84\\x0bw\\x85\\x98=9\\xdb\\xa4\\xedYoh\\x95\\x05\\xb2\\xfc\\xd3\\xe3\\xa6$\\x8ac\\xd0\\xbd\\x1e\\xf9>\\x99n\\xeaE' \\\n      b'\\x8e\\x14\\xa3\\x93\\xbe\\x15xr>A\\xe4\\xb6\\x1a\\xba\\xb7\\xbf\\xa7\\xcbm\\x80\\xb6c*a\\x7f\\xfb;\\x1bgTD\\x0c\\xf6\\xd9\\x97\\x96' \\\n      b'*n\\xe2|w\\xdd\\xb57\\xbb\\x1aB%\\xdd\\x9dc\\xf0\\xaa\\x1ej\\xc9\\xcb\\xfb\\xf6\\x99W\\xc6\\x91D\\xd7\\x9e}\\xaa\\xe0\\xb7W\\xd7' \\\n      b'\\x8f{\\x15_6\\xf4<\\xa5\\xab\\xdb\\xaf]\\xcbr\\xc7\\x88\\x03\\xa9\\xe7\\xa6\\xa5\\xcd\\x81\\xc6\\xda\\'\\x0f\\x8c\\x1dKO]\\xcax\\xbc3' \\\n      b'\\xbao\\xb2\\xd2\\xbc\\xf3\\x18v\\xfd\\xbd\\x93\\xd8\\xad\\x161\\xde\\xfcp\\xc15qB\\xe6\\xe9,U\\x93,' \\\n      b'\\xe5\\xbccE\\x85\\x01\\x89\\xcf\\n\\xdd\\xba\\xcf\\x1a:\\xfaXS\\xe5s?\\xd3\\\\9\\xd9\\xbb\\xe2\\xef\\xea\\xe8\\xe4e\\\\J\\xc1s\\xc7' \\\n      b'/\\x97\\x9dL\\xcdG\\x13\\xdaQ6\\xad:#\\x94n\\xaf%j\\x01u\\xeb\\x99\\xd5\\x9d\\xaf\\xf6>/}X\\xc1Ril\\xd31D$\\x94\\xccEa\\x1a\\x91u' \\\n      b'\\xe3G\\x84r\\xc3\\xea*i(\\x8ai\\xe7\\x91Wnyc\\xd5\\xb2\\xbe\\xda\\xc8\\x1b\\xf5\\xb8zI\\x87\\xd7\\xd1Y\\xf6w\\x88\\x92\\xe9.\\x15' \\\n      b'\\x16\\xea\\x9egx\\twz3N\\x1b\\x0c\\x1c\\xf1]v\\xf3P\\rh\\t\\xacZ%y\\xc9\\x1dT\\x92Y\\xf3\\x14\\xd6\\xd3\\x14\\xdd\\xe7\\xfa\\xf9\\xbd' \\\n      b'\\x0b\\xb5Z\\xcev\\xbd\\x10]\\x91\\x94\"\\x97i\\xb7\\xa7/\\xbd\\xbf\\xbdF\\x13\\x15\\x97g\\xdey\\x99b$\\x1b\\xd7\\x1d\\xde\\xac\\x86e' \\\n      b'\\xdb8k\\x94\\xbc\\xe9y\\xa8\\xb2\\xd3\\x8d\\xf4\\x81`\\xab\\x9cg]e\\xe5\\x1e\\x18w6\\xbeOu2!\\x1d\\xfeG\\x87\\xf9)\\xb7\\xf5\\x9d5' \\\n      b'\\x17\\xa6\\xd4\\xf7\\xd4\\x16\\x15,S\\xf6I?Q\\x9f&\\xe6\\x8d\\xeb\\x8e\\x84\\xc4\\x07\\x126\\xd7\\xf4\\x96V\\xe8\\xfbt\\r\\x8a\\xaf' \\\n      b'\\xfd\\xab\\xc4\\x99\\xbff(3\"\\xd8R\\xe7\\xf7\\x86m\\xf5N\\xe2A\\xa6\\x04\\xd3{\\xba\\xd9]\\xe5\\x97\\x16\\'\\x8b\\xd7\\x13{' \\\n      b'\\xc2\\x82\\xdf\\xe3T\\xc4\\x92n^\\x96\\xcf\\xde\\xde\\x84*:a\\xd4\\xbc\\xdd@\\xd4\\x05e\\xc5\\xb6\\x16Y\\xa5,' \\\n      b'\"\\xf1\\xe0\\xe0\\xd9\\xe81\\x89G\\x88\\xdai\\xab\\x0b\\x91Xn\\xd3\\xe0\\x91\\xe5\\r\\xf7}\\x9c\\xec\\\\\\x1d\\xec{' \\\n      b'u\\xadc\\xde\\x07\\\\9\\xf5\\x987e\\xa0l\\x1a\\x95\\x11\\xd2\\xed_\\x97QRb\\x9e\\x8e\\x7f ' \\\n      b'\\xca\\xe5\\x84\\x1bI}p\\xc8\\xdf*\\xeaMg\\xe3G\\xae7\\x1an-$\\x8e\\x856\\xfe\\xa3\\xc6u\\r%\\xbb\\xae\\xd8{' \\\n      b'\\xa8\\xf4\\r\\xe5\\x99\\x897\\xbe\\xa6\\xd6\\xcaq5iD\\xbf1\\xccS\\xbb\\x11\\xee\\xd6{' \\\n      b'\\xed\\xe6\\xa9\\xa9\\x9b\\x8es\\x96\\xb16)\\xe4\\xec\\xf2\\xb0\\xee\\xa8\\x9a\\xf8\\x85\\xbcC,' \\\n      b'SD\\x9b\\xc5\\x8f\\xd65\\x033\\xec\\x81,e\\xdcI\\x92\\xed\\xaf)e\\x0e\\xc5\\x91\\x02o^d\\x94^:<\\xa9\\x99\\xb0\\x8c\\xeb\\x88}>\\xc1' \\\n      b'\\x1e#pP*\\xfa\\xdd\\x87\\x1c\\xaa\\x18\\xd1MH\\xf0\\xf0\\x8bYv\\xf1\\xe2\\xc9\\xca\\xa7\\r\\x05\\xde\\xde\\x9c1\\xadmzz\\xfcZ\\xd6' \\\n      b'\\x82\\xb9%2\\xbc<\"b\\xcd>\\xc2^dL\\xa8\\x9fF(\\xbf\\x8d\\xc4\\xd7YZ\\x8c\\xde\\xf8\\xb1\\xe2\\xec\\xbd\\x8dRjr[' \\\n      b'\\xd9\\x076\\xbb\\xbd\\xfd\\xcd\\xd7\\x9b\\x93\\x8b\\xf8%]1i\\xa4\\xf1\\x18\\n\\x83O\\xaf\\xe0m?\\x10\\xc1\\xf35\\xc0\\x82O=\\xad' \\\n      b'\\'\\xa2\\x88`\\xa1\\xe6\\x85\\xd9H\\xc3O\\xb6\\xcc\\x8f\\xccsg\\x8d!;\\x178,' \\\n      b'\\x06=\\x0b\\xe7\\x13n\\x0e\\x0f\\x1e^\\xe8=\\xeb\\xc9-\\xd2K<\\x89_\\x9f>\\xbd\\xb8\\xe4\\xd2\\xad ' \\\n      b'\\x7fr\\xbbs\\xf4\\xc9\\x972F\\r\\xd1O\\'N%\\x12y\\xaau\\x95\\xa4\\x03DTB1E\\xe2K\\x92\\xcd\\xed\\xb44\\xc1\\xa7B\\x17c\\xe3H\\xac' \\\n      b'\\xa2\\xa5\\x97GLI~e\\x84\\xa1\\xf6\\xccqY\\xdc\\xe8_\\xd4\\x1a\\\\\\xd8>r\\xff\\x0e\\xe36\\xb4\\xd8\\xe1\\xcfg\\xb4\\xdc\\xfe\\xaa=W7' \\\n      b'._7B\\xf9X\\xdd\\xbc\\xf7\\xe0\\xf4]\\x9f.J4\\x9b\\xd3(\\x1a\\x9dU\\x91\\x92^\\xfe\\xca\\x1f+\\xf0dbv\\xa9U\\xd4$:(' \\\n      b'A\\xa9i\\x8e\\x8c\\x91\\xf7\\xf1\\x97\\xbe\\xe3x2\\xee\\x85V\\xe5S3;dQ\\xf5#\\xefV\"\\xa1\\xc8u[' \\\n      b'\\x1a\\xc7\\xf0y\\xc2\\xb7\\xa6Qj\\xf8\\xd6\\x7f\\x1e~\\xf4S\\xd3\\n\\xf8\\x86\\xff\\xdb?\\x8a\\xed\\xdf\\xa9\\xc4\\xdf\\xc2:\\xffP' \\\n      b'\\xfb[3\\xb8i^\\xf5\\x91\\xf6\\xcf~\\x82q\\xcb+\\x96\\x1f\\x03\\xdf\\xfb\\n\\xca\\xe6b?_d\\x9d\\xaf|Z\\xfb\\xe4\\x97\\x1a\\xa3\\xe7' \\\n      b'\\xe8k\\x8c\\xb0\\xfdRC\\xea\\x97\\x1a\\xa4_j\\xe07\\xd0\\xd7h\\x13\\xa2\\xaf\\xa1\\xad\\xf1\\xbf\\xe0\\xaa\\x8eR\\x02.\\t9\\xd7' \\\n      b'\\xf0zuI:&y\\xfd\\xc2\\xcd\\xaeW\\x83\\xda\\xd5\\x0f/;\\\\\\x8d\\x9c\\xff\\x1c!\\xe0\\x15\\xc0\\xd1\\x9a\\xb3\\x86-\\x94~K\\xd2\\x7f' \\\n      b'\\xa7T\\xe8\\x9cC\\xd2\\x1f_\\xcav(?\\xbd\\xad\\xd8\\xfa\\x8f\\x80\\xfa\\x0f\\xda\\x0e\\xa78_\\x1f87\\x7f<_}L\\xc7\\xa45\\xc7p\\xa5p' \\\n      b'\\xc0^3\\xa1\\x1f\\x13\\xb5\"\\x9b6\\x7f<\\x92klP\\xb65\\x07\\xf3{' \\\n      b'aP\\'I\\xdf\\xc9\\xe7p\\xc2\\n:!3Hw\\xbf\\xf2\\x07m/]\\xdd\\xbe\\xe0\\x8c\\xcd\\xe53k\\xc8\\xde\\xafmu\\x91\\xc2\\x07yj\\xcf\\xb6' \\\n      b'\\xacsX\\xfc\\x7fK(\\x83%\\xc0\\x12`\\t\\xb0\\x04X\\x02,\\x01\\x96\\x00K0a\\x89\\xbd`\\t\\xb0\\x04X\\x02,' \\\n      b'\\x01\\x96\\x00K\\x80%\\xc0\\x12LXB\\t,\\x01\\x96\\x00K\\x80%\\xc0\\x12`\\t\\xb0\\x04X\\x82\\tK\\xa8\\x82%\\xc0\\x12`\\t\\xb0\\x04X' \\\n      b'\\x02,\\x01\\x96\\x00K0a\\t5\\xb0\\x04X\\x02,\\x01\\x96\\x00K\\x80%\\xc0\\x12`\\t&,' \\\n      b'\\xa1\\x0e\\x96\\x00K\\x80%\\xc0\\x12`\\t\\xb0\\x04X\\x02,\\xc1\\x84%4\\xc0\\x12`\\t\\xb0\\x04X\\x02,' \\\n      b'\\x01\\x96\\x00K\\x80%\\x98\\xb0\\x84&X\\x02,' \\\n      b'\\x01\\x96\\x00K\\x80%\\xc0\\x12`\\t\\xb0\\x04\\x13\\x96@\\x83%\\xc0\\x12`\\t\\xb0\\x04X\\x02,' \\\n      b'\\x01\\x96\\x00K0a\\x89c`\\t\\xb0\\x04X\\x02,' \\\n      b'\\x01\\x96\\x00K\\x80%\\xc0\\x12LX\\x02\\x0b\\x96\\x00K\\x80%\\xc0\\x12`\\t\\xb0\\x04X\\x02,' \\\n      b'\\xc1\\x84%\\xdc\\xc0\\x12`\\t\\xb0\\x04X\\x02,\\x01\\x96\\x00K\\x80%\\x98\\xb0\\x84;X\\x02,' \\\n      b'\\x01\\x96\\x00K\\x80%\\xc0\\x12`\\t\\xb0\\x04\\x13\\x96\\xf0\\x00K\\x80%\\xc0\\x12`\\t\\xb0\\x04X\\x02,' \\\n      b'\\x01\\x96`\\xc2\\x12\\x9e`\\t\\xb0\\x04X\\x02,\\x01\\x96\\x00K\\x80%\\xc0\\x12\\xffl\\x89\\r,' \\\n      b'[\\x10\\xff\\xac\\x89\\x1f\\xd7\\x0eD\\xf9y\\xc4O[' \\\n      b'\\xa8|\\xb7\\x05\\xe39\\x13N\\xfa\\xb3\\xcb\\x19\\xcf\\xa5\\t\\xd0\\x9fS\\xcax\\xee\\x13\\x92\\xfeL2\\xc6sJ;\\xe9\\xcf\\x1fa<\\x17&C' \\\n      b'\\xbf\\xd78\\xe3\\xb9&e\\xfa}E\\x19\\xcfm\\xd1\\xa2\\xdfC\\x8c\\xf1\\x9c\\xab.\\xfd~!\\x8c\\xe7\\xee\\x18\\xd1\\xaf\\rf<\\xb7lI\\xbf' \\\n      b'\\x0e\\x88\\xf1\\xdc\\x1f\\x8e\\xf4s~\\x19\\xcf%\\xba\\xd1\\xcf\\xefa<\\xd7\\xebM\\xff/\\x8f\\xf1\\xdcn\\x7f\\xfa\\xefv\\x8c\\xe7\\xfc' \\\n      b'\\xc3\\xe8\\x8dna\\xcc\\xbe\\xf1\\xfb\\x88\\xc0\\xb7\\xfb\\x1c+\\x02\\xf10\\xe2\\xfb\\xcb\\x7f\\x03PK\\x03\\x04\\x14\\x00\\x02\\x00' \\\n      b'\\x08\\x00\\x1b\\xad|(\\x93u\\xdc\\xc8\\xf9\\t\\x00\\x00V\\x88\\x00\\x00\\t\\x00\\x00\\x00lib ' \\\n      b'a.zip\\xed\\xddWPS\\xdb\\x1a\\x07\\xf0H\\x118t\\x95C\\x00\\xb1Q\"H\\x95\\x1a\\xc4\\xa0\\xdc#\\xbd\\tH\\x95b(' \\\n      b'Q\\x8a\\xe8\\r-\\x14+G\\xe9\\x10\\x01)F\\x94\\x8e(QDz\\xb3%\\xa0 \\x08\\xa2 ' \\\n      b'RT\\x04\\xa4\\xb7C\\t\\x88\\x1c\\xbd\\x8e\\xf7\\xc6\\x87373y\\xfd\\xf6~X{\\xcd\\xda\\xff\\xf9^\\x7f\\xb3\\xf7*\\x16\\xc6\\xacl[\\x10,' \\\n      b'\\x08ND\\xdb\\x9d\\xb0\\xddT\\xd7\\xf1\\r\\x92\\x9c\\x08\\xc4F<\\x02\\xf1\\x1b\\x02\\x81\\xc0\\xfa\\xf9y\\xefPQ\\x089qj\\xb2\\xcf[' \\\n      b'\\xd3zu\\x1b\\xc7\\x8c\\x14%j+\\x97\\x90D\\xaa\\xb4\\x04:9\\xd4=\\xb7\\xe3O\\xc1@\\xa4\\xe0\\xae\\n\\x11\\x93)\\xa1\\xac\\xba\\xed' \\\n      b'\\x96\\x81\\xe4Fy\\xd3\\x08I\\xc7M\\xff\\xe6\\xefK.q\\xa2J%y?\\xae\\xf4I\\x15\\xac\\xba4Jj%\\x9cnun\\xc3g\\xe2\\x9co\\xd0\\x8a\\x17' \\\n      b'\\xb0\\xfb\\x1bF\\xd6\\xd7\\xc9\\x0bs\\xa5\\x99\\x01\\xb4\\xb5\\x17\\\\\\xb5\\xd7(' \\\n      b'\\x89\\xa6M.\\x89\\xdd\\x17\\x12\\xd7\\x90Oz:\\xf40l\\x86\\\\\\x87\\x04v\\xb2\\x1d$\\x19\\x9aa6\\x90\\xcf\\xdc\\x17\\x95}\\xe4' \\\n      b'~#}\\x83y\\\\\\xee\\x8e[\\xb6\\xf8\\xfd\\x81\\x8a&\\xf9\")&\\xd9\\xbe\\xc2\\xad\\x96Ra\\x05\\xb8\\x0bu\\x1f\\xf79Jd\\xe7\\x16\\x1a' \\\n      b'\\x04Kxh\\x1cNO[{0t\\xcb\\x8b\\x1cU\\xdb\\x94w[' \\\n      b'\\x10]\\xbfh\\xa4\\x97#\\xd3hgZ\\x93\\x13T\\xa0E\\xc8\\xbb\\\\\\x14\\xaah\\x8a\\x9a\\xaa\\xc6,' \\\n      b'\\xb6\\x86N\\xd4\\xd7\\\\\\xec\\xb7\\xd5\\xde\\xef\\x9bB\\x9e?\\xa0\\x7f\\xfd\\xebB\\r\\xcf\\x99\\xedd\\xb3\\xecXsL~.\\xcd,' \\\n      b'(\\x95\\xb5\\x9c\\xd3;\\xd9c[\\xb8\\xad\\xca]\\x9f\\x86\\xee\\xe9\\x0f:KG\\x1c\\xadX\\x91\\xfcZ8r\\xc5\\xca&\\xf3\\x10\\x13\\x87[' \\\n      b'\\xb1\\xca!\\xb6\\x1e\\n\\x16\\x9e\\x1a{\\xde\\x18kW=5\\xb86\\xe9\\xaa\\xf4q\\x96O\\x8c\\xf5\\xd3\\xb5\\x82\\xd4\\xc0\\xd4\\x1a\\x0b' \\\n      b'\\xaf\\x89/\\x89\\xc2\\xd5AM\\x9b\\xfb\\x1f\\xf9\\n\\x0ft\\x14\\xb0\\xb4\\xf1\\xbd,kF\\x9a\\x97\\xe1t\\xecr7R\\x85\\r\\x0b)\\xe1{' \\\n      b'\\xf9\\x9a\\xbd\\xaeo\\x9eS\\xb0\\xf5\\xe8q\\xf4\\x1fw\\x19B\\xc5~\\xde\\xb2\\xc2\\x96L\\xb2\\xa9)\\xb87&\\x17\\xe8\\x85\\xcd\\xc29' \\\n      b'\\xa0\\x8aK\\xd1\\xaer\\xfb\\xd1\\xca\\xc1\\xb4\\xfb.\\x1f\\xfb\\x89\\xe7\\xc3\\x83\\xf6\\x98\\xa9(x\\x1d\\xcf\\xbf4,' \\\n      b'\\x9d\\xa1\\x10\\xb9\\xb5\\\\m\\xe7\\xf5\\xe6\\xfa0k\\xa2\\x83\\x92\\xda\\xe2W\\xe7\\xd1Uwc\\xab?W\\xa4\\xbdK\\xe4m&3\\xd8YJ\\x9c' \\\n      b'\\x1dep\\xb9\\x17\\xf66\\xbd\\xb3_\\x9b\\x1d\\xa7MQndO\\xf0\\xd5m\\xb1\\xeaq\\xd1\\xdf\\xdd\\x90v\\xa8j\\xa6J\\xd1\\x8f\\xbax7k0~5' \\\n      b'\\x1e\\x93\\x1b~:\\xf6\\xcb\\x97\\xfc\\xf6+}\\x7f\\xa5\\xa1\\xd0\\xa3\\xd8M}<.\\xc7%\\x17\\x8c:\\x94dvk\\xce\\x18{' \\\n      b'K5\\x9c\\xe8+Ogu\\x8bM\\t\\x89k\\xa0\\xf9\\xbdO\\xc1\\x8b\\xa9\\xdfi\\xe3\\x92\\xa3V-\\x9a\\xd5K\\xf4\\x1d\\r\\x93\\x1c\\xb6\\xd5' \\\n      b'\\xd0Q\\xc58\\xd3\\xdc\\x8b\\x0cxP\\xaac\\x96\\x96\\xc7G\\xdb\\xed\\xfc\\xafS\\xad\\x89\\x8f\\x15_wFy\\x06\\xf7\\xfaZ&-4_\\x97(' \\\n      b'\\x0f\\xc9\\xd3\\xba\\xc5\\xafo\\xc8\\x83\\x9b4\\xbe\\x8aS\\xac\\xcf<Q\\xbb@t90\\xa0\\x8b\\xab\\x9eH,' \\\n      b'\\n^A\\x90qs\\xbav\\xb9~\\xd7\\xaa\\xcd^4F\\x7f\\xce\\xa1\\xf9\\xa7>x\\xc9\\xb3b\\xfe\\xf6\\xed\\xc5Y\\x94\\xee\\x96\\xa9\\xc2\\x85' \\\n      b'\\xbb\\xc5H?\\xaa\\xc9\\xd5\\x97\\xb63|j\\xe2\\xa9\\xb8\\xd2\\x8b\\\\\\x998[' \\\n      b'q}v\\xb2d\\x89\\x9dsh\\xad>\\xafl/vk\\xf3\\n\\xeb\\xcc\\xa3]\\x8a\\xf8\\xb0 ' \\\n      b'\\x92A\\xeat\\x81>\\x17\\'o\\x8c\\xb5r\\x03\\xe9\\xd9R\\x9fP@\\xc4\\x159{' \\\n      b'!\\xd4H$\\xfe\\x84\\x0bw\\x85\\x98=9\\xdb\\xa4\\xedYoh\\x95\\x05\\xb2\\xfc\\xd3\\xe3\\xa6$\\x8ac\\xd0\\xbd\\x1e\\xf9>\\x99n\\xeaE' \\\n      b'\\x8e\\x14\\xa3\\x93\\xbe\\x15xr>A\\xe4\\xb6\\x1a\\xba\\xb7\\xbf\\xa7\\xcbm\\x80\\xb6c*a\\x7f\\xfb;\\x1bgTD\\x0c\\xf6\\xd9\\x97\\x96' \\\n      b'*n\\xe2|w\\xdd\\xb57\\xbb\\x1aB%\\xdd\\x9dc\\xf0\\xaa\\x1ej\\xc9\\xcb\\xfb\\xf6\\x99W\\xc6\\x91D\\xd7\\x9e}\\xaa\\xe0\\xb7W\\xd7' \\\n      b'\\x8f{\\x15_6\\xf4<\\xa5\\xab\\xdb\\xaf]\\xcbr\\xc7\\x88\\x03\\xa9\\xe7\\xa6\\xa5\\xcd\\x81\\xc6\\xda\\'\\x0f\\x8c\\x1dKO]\\xcax\\xbc3' \\\n      b'\\xbao\\xb2\\xd2\\xbc\\xf3\\x18v\\xfd\\xbd\\x93\\xd8\\xad\\x161\\xde\\xfcp\\xc15qB\\xe6\\xe9,U\\x93,' \\\n      b'\\xe5\\xbccE\\x85\\x01\\x89\\xcf\\n\\xdd\\xba\\xcf\\x1a:\\xfaXS\\xe5s?\\xd3\\\\9\\xd9\\xbb\\xe2\\xef\\xea\\xe8\\xe4e\\\\J\\xc1s\\xc7' \\\n      b'/\\x97\\x9dL\\xcdG\\x13\\xdaQ6\\xad:#\\x94n\\xaf%j\\x01u\\xeb\\x99\\xd5\\x9d\\xaf\\xf6>/}X\\xc1Ril\\xd31D$\\x94\\xccEa\\x1a\\x91u' \\\n      b'\\xe3G\\x84r\\xc3\\xea*i(\\x8ai\\xe7\\x91Wnyc\\xd5\\xb2\\xbe\\xda\\xc8\\x1b\\xf5\\xb8zI\\x87\\xd7\\xd1Y\\xf6w\\x88\\x92\\xe9.\\x15' \\\n      b'\\x16\\xea\\x9egx\\twz3N\\x1b\\x0c\\x1c\\xf1]v\\xf3P\\rh\\t\\xacZ%y\\xc9\\x1dT\\x92Y\\xf3\\x14\\xd6\\xd3\\x14\\xdd\\xe7\\xfa\\xf9\\xbd' \\\n      b'\\x0b\\xb5Z\\xcev\\xbd\\x10]\\x91\\x94\"\\x97i\\xb7\\xa7/\\xbd\\xbf\\xbdF\\x13\\x15\\x97g\\xdey\\x99b$\\x1b\\xd7\\x1d\\xde\\xac\\x86e' \\\n      b'\\xdb8k\\x94\\xbc\\xe9y\\xa8\\xb2\\xd3\\x8d\\xf4\\x81`\\xab\\x9cg]e\\xe5\\x1e\\x18w6\\xbeOu2!\\x1d\\xfeG\\x87\\xf9)\\xb7\\xf5\\x9d5' \\\n      b'\\x17\\xa6\\xd4\\xf7\\xd4\\x16\\x15,S\\xf6I?Q\\x9f&\\xe6\\x8d\\xeb\\x8e\\x84\\xc4\\x07\\x126\\xd7\\xf4\\x96V\\xe8\\xfbt\\r\\x8a\\xaf' \\\n      b'\\xfd\\xab\\xc4\\x99\\xbff(3\"\\xd8R\\xe7\\xf7\\x86m\\xf5N\\xe2A\\xa6\\x04\\xd3{\\xba\\xd9]\\xe5\\x97\\x16\\'\\x8b\\xd7\\x13{' \\\n      b'\\xc2\\x82\\xdf\\xe3T\\xc4\\x92n^\\x96\\xcf\\xde\\xde\\x84*:a\\xd4\\xbc\\xdd@\\xd4\\x05e\\xc5\\xb6\\x16Y\\xa5,' \\\n      b'\"\\xf1\\xe0\\xe0\\xd9\\xe81\\x89G\\x88\\xdai\\xab\\x0b\\x91Xn\\xd3\\xe0\\x91\\xe5\\r\\xf7}\\x9c\\xec\\\\\\x1d\\xec{' \\\n      b'u\\xadc\\xde\\x07\\\\9\\xf5\\x987e\\xa0l\\x1a\\x95\\x11\\xd2\\xed_\\x97QRb\\x9e\\x8e\\x7f ' \\\n      b'\\xca\\xe5\\x84\\x1bI}p\\xc8\\xdf*\\xeaMg\\xe3G\\xae7\\x1an-$\\x8e\\x856\\xfe\\xa3\\xc6u\\r%\\xbb\\xae\\xd8{' \\\n      b'\\xa8\\xf4\\r\\xe5\\x99\\x897\\xbe\\xa6\\xd6\\xcaq5iD\\xbf1\\xccS\\xbb\\x11\\xee\\xd6{' \\\n      b'\\xed\\xe6\\xa9\\xa9\\x9b\\x8es\\x96\\xb16)\\xe4\\xec\\xf2\\xb0\\xee\\xa8\\x9a\\xf8\\x85\\xbcC,' \\\n      b'SD\\x9b\\xc5\\x8f\\xd65\\x033\\xec\\x81,e\\xdcI\\x92\\xed\\xaf)e\\x0e\\xc5\\x91\\x02o^d\\x94^:<\\xa9\\x99\\xb0\\x8c\\xeb\\x88}>\\xc1' \\\n      b'\\x1e#pP*\\xfa\\xdd\\x87\\x1c\\xaa\\x18\\xd1MH\\xf0\\xf0\\x8bYv\\xf1\\xe2\\xc9\\xca\\xa7\\r\\x05\\xde\\xde\\x9c1\\xadmzz\\xfcZ\\xd6' \\\n      b'\\x82\\xb9%2\\xbc<\"b\\xcd>\\xc2^dL\\xa8\\x9fF(\\xbf\\x8d\\xc4\\xd7YZ\\x8c\\xde\\xf8\\xb1\\xe2\\xec\\xbd\\x8dRjr[' \\\n      b'\\xd9\\x076\\xbb\\xbd\\xfd\\xcd\\xd7\\x9b\\x93\\x8b\\xf8%]1i\\xa4\\xf1\\x18\\n\\x83O\\xaf\\xe0m?\\x10\\xc1\\xf35\\xc0\\x82O=\\xad' \\\n      b'\\'\\xa2\\x88`\\xa1\\xe6\\x85\\xd9H\\xc3O\\xb6\\xcc\\x8f\\xccsg\\x8d!;\\x178,' \\\n      b'\\x06=\\x0b\\xe7\\x13n\\x0e\\x0f\\x1e^\\xe8=\\xeb\\xc9-\\xd2K<\\x89_\\x9f>\\xbd\\xb8\\xe4\\xd2\\xad ' \\\n      b'\\x7fr\\xbbs\\xf4\\xc9\\x972F\\r\\xd1O\\'N%\\x12y\\xaau\\x95\\xa4\\x03DTB1E\\xe2K\\x92\\xcd\\xed\\xb44\\xc1\\xa7B\\x17c\\xe3H\\xac' \\\n      b'\\xa2\\xa5\\x97GLI~e\\x84\\xa1\\xf6\\xccqY\\xdc\\xe8_\\xd4\\x1a\\\\\\xd8>r\\xff\\x0e\\xe36\\xb4\\xd8\\xe1\\xcfg\\xb4\\xdc\\xfe\\xaa=W7' \\\n      b'._7B\\xf9X\\xdd\\xbc\\xf7\\xe0\\xf4]\\x9f.J4\\x9b\\xd3(\\x1a\\x9dU\\x91\\x92^\\xfe\\xca\\x1f+\\xf0dbv\\xa9U\\xd4$:(' \\\n      b'A\\xa9i\\x8e\\x8c\\x91\\xf7\\xf1\\x97\\xbe\\xe3x2\\xee\\x85V\\xe5S3;dQ\\xf5#\\xefV\"\\xa1\\xc8u[' \\\n      b'\\x1a\\xc7\\xf0y\\xc2\\xb7\\xa6Qj\\xf8\\xd6\\x7f\\x1e~\\xf4S\\xd3\\n\\xf8\\x86\\xff\\xdb?\\x8a\\xed\\xdf\\xa9\\xc4\\xdf\\xc2:\\xffP' \\\n      b'\\xfb[3\\xb8i^\\xf5\\x91\\xf6\\xcf~\\x82q\\xcb+\\x96\\x1f\\x03\\xdf\\xfb\\n\\xca\\xe6b?_d\\x9d\\xaf|Z\\xfb\\xe4\\x97\\x1a\\xa3\\xe7' \\\n      b'\\xe8k\\x8c\\xb0\\xfdRC\\xea\\x97\\x1a\\xa4_j\\xe07\\xd0\\xd7h\\x13\\xa2\\xaf\\xa1\\xad\\xf1\\xbf\\xe0\\xaa\\x8eR\\x02.\\t9\\xd7' \\\n      b'\\xf0zuI:&y\\xfd\\xc2\\xcd\\xaeW\\x83\\xda\\xd5\\x0f/;\\\\\\x8d\\x9c\\xff\\x1c!\\xe0\\x15\\xc0\\xd1\\x9a\\xb3\\x86-\\x94~K\\xd2\\x7f' \\\n      b'\\xa7T\\xe8\\x9cC\\xd2\\x1f_\\xcav(?\\xbd\\xad\\xd8\\xfa\\x8f\\x80\\xfa\\x0f\\xda\\x0e\\xa78_\\x1f87\\x7f<_}L\\xc7\\xa45\\xc7p\\xa5p' \\\n      b'\\xc0^3\\xa1\\x1f\\x13\\xb5\"\\x9b6\\x7f<\\x92klP\\xb65\\x07\\xf3{' \\\n      b'aP\\'I\\xdf\\xc9\\xe7p\\xc2\\n:!3Hw\\xbf\\xf2\\x07m/]\\xdd\\xbe\\xe0\\x8c\\xcd\\xe53k\\xc8\\xde\\xafmu\\x91\\xc2\\x07yj\\xcf\\xb6' \\\n      b'\\xacsX\\xfc\\x7fK(\\x83%\\xc0\\x12`\\t\\xb0\\x04X\\x02,\\x01\\x96\\x00K0a\\x89\\xbd`\\t\\xb0\\x04X\\x02,' \\\n      b'\\x01\\x96\\x00K\\x80%\\xc0\\x12LXB\\t,\\x01\\x96\\x00K\\x80%\\xc0\\x12`\\t\\xb0\\x04X\\x82\\tK\\xa8\\x82%\\xc0\\x12`\\t\\xb0\\x04X' \\\n      b'\\x02,\\x01\\x96\\x00K0a\\t5\\xb0\\x04X\\x02,\\x01\\x96\\x00K\\x80%\\xc0\\x12`\\t&,' \\\n      b'\\xa1\\x0e\\x96\\x00K\\x80%\\xc0\\x12`\\t\\xb0\\x04X\\x02,\\xc1\\x84%4\\xc0\\x12`\\t\\xb0\\x04X\\x02,' \\\n      b'\\x01\\x96\\x00K\\x80%\\x98\\xb0\\x84&X\\x02,' \\\n      b'\\x01\\x96\\x00K\\x80%\\xc0\\x12`\\t\\xb0\\x04\\x13\\x96@\\x83%\\xc0\\x12`\\t\\xb0\\x04X\\x02,' \\\n      b'\\x01\\x96\\x00K0a\\x89c`\\t\\xb0\\x04X\\x02,' \\\n      b'\\x01\\x96\\x00K\\x80%\\xc0\\x12LX\\x02\\x0b\\x96\\x00K\\x80%\\xc0\\x12`\\t\\xb0\\x04X\\x02,' \\\n      b'\\xc1\\x84%\\xdc\\xc0\\x12`\\t\\xb0\\x04X\\x02,\\x01\\x96\\x00K\\x80%\\x98\\xb0\\x84;X\\x02,' \\\n      b'\\x01\\x96\\x00K\\x80%\\xc0\\x12`\\t\\xb0\\x04\\x13\\x96\\xf0\\x00K\\x80%\\xc0\\x12`\\t\\xb0\\x04X\\x02,' \\\n      b'\\x01\\x96`\\xc2\\x12\\x9e`\\t\\xb0\\x04X\\x02,\\x01\\x96\\x00K\\x80%\\xc0\\x12\\xffl\\x89\\r,' \\\n      b'[\\x10\\xff\\xac\\x89\\x1f\\xd7\\x0eD\\xf9y\\xc4O[' \\\n      b'\\xa8|\\xb7\\x05\\xe39\\x13N\\xfa\\xb3\\xcb\\x19\\xcf\\xa5\\t\\xd0\\x9fS\\xcax\\xee\\x13\\x92\\xfeL2\\xc6sJ;\\xe9\\xcf\\x1fa<\\x17&C' \\\n      b'\\xbf\\xd78\\xe3\\xb9&e\\xfa}E\\x19\\xcfm\\xd1\\xa2\\xdfC\\x8c\\xf1\\x9c\\xab.\\xfd~!\\x8c\\xe7\\xee\\x18\\xd1\\xaf\\rf<\\xb7lI\\xbf' \\\n      b'\\x0e\\x88\\xf1\\xdc\\x1f\\x8e\\xf4s~\\x19\\xcf%\\xba\\xd1\\xcf\\xefa<\\xd7\\xebM\\xff/\\x8f\\xf1\\xdcn\\x7f\\xfa\\xefv\\x8c\\xe7\\xfc' \\\n      b'\\xc3\\xe8\\x8dna\\xcc\\xbe\\xf1\\xfb\\x88\\xc0\\xb7\\xfb\\x1c+\\x02\\xf10\\xe2\\xfb\\xcb\\x7f\\x03PK\\x03\\x04\\x14\\x00\\x02\\x00' \\\n      b'\\x08\\x00\\x1b\\xad|(\\x93u\\xdc\\xc8\\xf9\\t\\x00\\x00V\\x88\\x00\\x00\\t\\x00\\x00\\x00lib ' \\\n      b'b.zip\\xed\\xddWPS\\xdb\\x1a\\x07\\xf0H\\x118t\\x95C\\x00\\xb1Q\"H\\x95\\x1a\\xc4\\xa0\\xdc#\\xbd\\tH\\x95b(' \\\n      b'Q\\x8a\\xe8\\r-\\x14+G\\xe9\\x10\\x01)F\\x94\\x8e(QDz\\xb3%\\xa0 \\x08\\xa2 ' \\\n      b'RT\\x04\\xa4\\xb7C\\t\\x88\\x1c\\xbd\\x8e\\xf7\\xc6\\x87373y\\xfd\\xf6~X{\\xcd\\xda\\xff\\xf9^\\x7f\\xb3\\xf7*\\x16\\xc6\\xacl[\\x10,' \\\n      b'\\x08ND\\xdb\\x9d\\xb0\\xddT\\xd7\\xf1\\r\\x92\\x9c\\x08\\xc4F<\\x02\\xf1\\x1b\\x02\\x81\\xc0\\xfa\\xf9y\\xefPQ\\x089qj\\xb2\\xcf[' \\\n      b'\\xd3zu\\x1b\\xc7\\x8c\\x14%j+\\x97\\x90D\\xaa\\xb4\\x04:9\\xd4=\\xb7\\xe3O\\xc1@\\xa4\\xe0\\xae\\n\\x11\\x93)\\xa1\\xac\\xba\\xed' \\\n      b'\\x96\\x81\\xe4Fy\\xd3\\x08I\\xc7M\\xff\\xe6\\xefK.q\\xa2J%y?\\xae\\xf4I\\x15\\xac\\xba4Jj%\\x9cnun\\xc3g\\xe2\\x9co\\xd0\\x8a\\x17' \\\n      b'\\xb0\\xfb\\x1bF\\xd6\\xd7\\xc9\\x0bs\\xa5\\x99\\x01\\xb4\\xb5\\x17\\\\\\xb5\\xd7(' \\\n      b'\\x89\\xa6M.\\x89\\xdd\\x17\\x12\\xd7\\x90Oz:\\xf40l\\x86\\\\\\x87\\x04v\\xb2\\x1d$\\x19\\x9aa6\\x90\\xcf\\xdc\\x17\\x95}\\xe4' \\\n      b'~#}\\x83y\\\\\\xee\\x8e[\\xb6\\xf8\\xfd\\x81\\x8a&\\xf9\")&\\xd9\\xbe\\xc2\\xad\\x96Ra\\x05\\xb8\\x0bu\\x1f\\xf79Jd\\xe7\\x16\\x1a' \\\n      b'\\x04Kxh\\x1cNO[{0t\\xcb\\x8b\\x1cU\\xdb\\x94w[' \\\n      b'\\x10]\\xbfh\\xa4\\x97#\\xd3hgZ\\x93\\x13T\\xa0E\\xc8\\xbb\\\\\\x14\\xaah\\x8a\\x9a\\xaa\\xc6,' \\\n      b'\\xb6\\x86N\\xd4\\xd7\\\\\\xec\\xb7\\xd5\\xde\\xef\\x9bB\\x9e?\\xa0\\x7f\\xfd\\xebB\\r\\xcf\\x99\\xedd\\xb3\\xecXsL~.\\xcd,' \\\n      b'(\\x95\\xb5\\x9c\\xd3;\\xd9c[\\xb8\\xad\\xca]\\x9f\\x86\\xee\\xe9\\x0f:KG\\x1c\\xadX\\x91\\xfcZ8r\\xc5\\xca&\\xf3\\x10\\x13\\x87[' \\\n      b'\\xb1\\xca!\\xb6\\x1e\\n\\x16\\x9e\\x1a{\\xde\\x18kW=5\\xb86\\xe9\\xaa\\xf4q\\x96O\\x8c\\xf5\\xd3\\xb5\\x82\\xd4\\xc0\\xd4\\x1a\\x0b' \\\n      b'\\xaf\\x89/\\x89\\xc2\\xd5AM\\x9b\\xfb\\x1f\\xf9\\n\\x0ft\\x14\\xb0\\xb4\\xf1\\xbd,kF\\x9a\\x97\\xe1t\\xecr7R\\x85\\r\\x0b)\\xe1{' \\\n      b'\\xf9\\x9a\\xbd\\xaeo\\x9eS\\xb0\\xf5\\xe8q\\xf4\\x1fw\\x19B\\xc5~\\xde\\xb2\\xc2\\x96L\\xb2\\xa9)\\xb87&\\x17\\xe8\\x85\\xcd\\xc29' \\\n      b'\\xa0\\x8aK\\xd1\\xaer\\xfb\\xd1\\xca\\xc1\\xb4\\xfb.\\x1f\\xfb\\x89\\xe7\\xc3\\x83\\xf6\\x98\\xa9(x\\x1d\\xcf\\xbf4,' \\\n      b'\\x9d\\xa1\\x10\\xb9\\xb5\\\\m\\xe7\\xf5\\xe6\\xfa0k\\xa2\\x83\\x92\\xda\\xe2W\\xe7\\xd1Uwc\\xab?W\\xa4\\xbdK\\xe4m&3\\xd8YJ\\x9c' \\\n      b'\\x1dep\\xb9\\x17\\xf66\\xbd\\xb3_\\x9b\\x1d\\xa7MQndO\\xf0\\xd5m\\xb1\\xeaq\\xd1\\xdf\\xdd\\x90v\\xa8j\\xa6J\\xd1\\x8f\\xbax7k0~5' \\\n      b'\\x1e\\x93\\x1b~:\\xf6\\xcb\\x97\\xfc\\xf6+}\\x7f\\xa5\\xa1\\xd0\\xa3\\xd8M}<.\\xc7%\\x17\\x8c:\\x94dvk\\xce\\x18{' \\\n      b'K5\\x9c\\xe8+Ogu\\x8bM\\t\\x89k\\xa0\\xf9\\xbdO\\xc1\\x8b\\xa9\\xdfi\\xe3\\x92\\xa3V-\\x9a\\xd5K\\xf4\\x1d\\r\\x93\\x1c\\xb6\\xd5' \\\n      b'\\xd0Q\\xc58\\xd3\\xdc\\x8b\\x0cxP\\xaac\\x96\\x96\\xc7G\\xdb\\xed\\xfc\\xafS\\xad\\x89\\x8f\\x15_wFy\\x06\\xf7\\xfaZ&-4_\\x97(' \\\n      b'\\x0f\\xc9\\xd3\\xba\\xc5\\xafo\\xc8\\x83\\x9b4\\xbe\\x8aS\\xac\\xcf<Q\\xbb@t90\\xa0\\x8b\\xab\\x9eH,' \\\n      b'\\n^A\\x90qs\\xbav\\xb9~\\xd7\\xaa\\xcd^4F\\x7f\\xce\\xa1\\xf9\\xa7>x\\xc9\\xb3b\\xfe\\xf6\\xed\\xc5Y\\x94\\xee\\x96\\xa9\\xc2\\x85' \\\n      b'\\xbb\\xc5H?\\xaa\\xc9\\xd5\\x97\\xb63|j\\xe2\\xa9\\xb8\\xd2\\x8b\\\\\\x998[' \\\n      b'q}v\\xb2d\\x89\\x9dsh\\xad>\\xafl/vk\\xf3\\n\\xeb\\xcc\\xa3]\\x8a\\xf8\\xb0 ' \\\n      b'\\x92A\\xeat\\x81>\\x17\\'o\\x8c\\xb5r\\x03\\xe9\\xd9R\\x9fP@\\xc4\\x159{' \\\n      b'!\\xd4H$\\xfe\\x84\\x0bw\\x85\\x98=9\\xdb\\xa4\\xedYoh\\x95\\x05\\xb2\\xfc\\xd3\\xe3\\xa6$\\x8ac\\xd0\\xbd\\x1e\\xf9>\\x99n\\xeaE' \\\n      b'\\x8e\\x14\\xa3\\x93\\xbe\\x15xr>A\\xe4\\xb6\\x1a\\xba\\xb7\\xbf\\xa7\\xcbm\\x80\\xb6c*a\\x7f\\xfb;\\x1bgTD\\x0c\\xf6\\xd9\\x97\\x96' \\\n      b'*n\\xe2|w\\xdd\\xb57\\xbb\\x1aB%\\xdd\\x9dc\\xf0\\xaa\\x1ej\\xc9\\xcb\\xfb\\xf6\\x99W\\xc6\\x91D\\xd7\\x9e}\\xaa\\xe0\\xb7W\\xd7' \\\n      b'\\x8f{\\x15_6\\xf4<\\xa5\\xab\\xdb\\xaf]\\xcbr\\xc7\\x88\\x03\\xa9\\xe7\\xa6\\xa5\\xcd\\x81\\xc6\\xda\\'\\x0f\\x8c\\x1dKO]\\xcax\\xbc3' \\\n      b'\\xbao\\xb2\\xd2\\xbc\\xf3\\x18v\\xfd\\xbd\\x93\\xd8\\xad\\x161\\xde\\xfcp\\xc15qB\\xe6\\xe9,U\\x93,' \\\n      b'\\xe5\\xbccE\\x85\\x01\\x89\\xcf\\n\\xdd\\xba\\xcf\\x1a:\\xfaXS\\xe5s?\\xd3\\\\9\\xd9\\xbb\\xe2\\xef\\xea\\xe8\\xe4e\\\\J\\xc1s\\xc7' \\\n      b'/\\x97\\x9dL\\xcdG\\x13\\xdaQ6\\xad:#\\x94n\\xaf%j\\x01u\\xeb\\x99\\xd5\\x9d\\xaf\\xf6>/}X\\xc1Ril\\xd31D$\\x94\\xccEa\\x1a\\x91u' \\\n      b'\\xe3G\\x84r\\xc3\\xea*i(\\x8ai\\xe7\\x91Wnyc\\xd5\\xb2\\xbe\\xda\\xc8\\x1b\\xf5\\xb8zI\\x87\\xd7\\xd1Y\\xf6w\\x88\\x92\\xe9.\\x15' \\\n      b'\\x16\\xea\\x9egx\\twz3N\\x1b\\x0c\\x1c\\xf1]v\\xf3P\\rh\\t\\xacZ%y\\xc9\\x1dT\\x92Y\\xf3\\x14\\xd6\\xd3\\x14\\xdd\\xe7\\xfa\\xf9\\xbd' \\\n      b'\\x0b\\xb5Z\\xcev\\xbd\\x10]\\x91\\x94\"\\x97i\\xb7\\xa7/\\xbd\\xbf\\xbdF\\x13\\x15\\x97g\\xdey\\x99b$\\x1b\\xd7\\x1d\\xde\\xac\\x86e' \\\n      b'\\xdb8k\\x94\\xbc\\xe9y\\xa8\\xb2\\xd3\\x8d\\xf4\\x81`\\xab\\x9cg]e\\xe5\\x1e\\x18w6\\xbeOu2!\\x1d\\xfeG\\x87\\xf9)\\xb7\\xf5\\x9d5' \\\n      b'\\x17\\xa6\\xd4\\xf7\\xd4\\x16\\x15,S\\xf6I?Q\\x9f&\\xe6\\x8d\\xeb\\x8e\\x84\\xc4\\x07\\x126\\xd7\\xf4\\x96V\\xe8\\xfbt\\r\\x8a\\xaf' \\\n      b'\\xfd\\xab\\xc4\\x99\\xbff(3\"\\xd8R\\xe7\\xf7\\x86m\\xf5N\\xe2A\\xa6\\x04\\xd3{\\xba\\xd9]\\xe5\\x97\\x16\\'\\x8b\\xd7\\x13{' \\\n      b'\\xc2\\x82\\xdf\\xe3T\\xc4\\x92n^\\x96\\xcf\\xde\\xde\\x84*:a\\xd4\\xbc\\xdd@\\xd4\\x05e\\xc5\\xb6\\x16Y\\xa5,' \\\n      b'\"\\xf1\\xe0\\xe0\\xd9\\xe81\\x89G\\x88\\xdai\\xab\\x0b\\x91Xn\\xd3\\xe0\\x91\\xe5\\r\\xf7}\\x9c\\xec\\\\\\x1d\\xec{' \\\n      b'u\\xadc\\xde\\x07\\\\9\\xf5\\x987e\\xa0l\\x1a\\x95\\x11\\xd2\\xed_\\x97QRb\\x9e\\x8e\\x7f ' \\\n      b'\\xca\\xe5\\x84\\x1bI}p\\xc8\\xdf*\\xeaMg\\xe3G\\xae7\\x1an-$\\x8e\\x856\\xfe\\xa3\\xc6u\\r%\\xbb\\xae\\xd8{' \\\n      b'\\xa8\\xf4\\r\\xe5\\x99\\x897\\xbe\\xa6\\xd6\\xcaq5iD\\xbf1\\xccS\\xbb\\x11\\xee\\xd6{' \\\n      b'\\xed\\xe6\\xa9\\xa9\\x9b\\x8es\\x96\\xb16)\\xe4\\xec\\xf2\\xb0\\xee\\xa8\\x9a\\xf8\\x85\\xbcC,' \\\n      b'SD\\x9b\\xc5\\x8f\\xd65\\x033\\xec\\x81,e\\xdcI\\x92\\xed\\xaf)e\\x0e\\xc5\\x91\\x02o^d\\x94^:<\\xa9\\x99\\xb0\\x8c\\xeb\\x88}>\\xc1' \\\n      b'\\x1e#pP*\\xfa\\xdd\\x87\\x1c\\xaa\\x18\\xd1MH\\xf0\\xf0\\x8bYv\\xf1\\xe2\\xc9\\xca\\xa7\\r\\x05\\xde\\xde\\x9c1\\xadmzz\\xfcZ\\xd6' \\\n      b'\\x82\\xb9%2\\xbc<\"b\\xcd>\\xc2^dL\\xa8\\x9fF(\\xbf\\x8d\\xc4\\xd7YZ\\x8c\\xde\\xf8\\xb1\\xe2\\xec\\xbd\\x8dRjr[' \\\n      b'\\xd9\\x076\\xbb\\xbd\\xfd\\xcd\\xd7\\x9b\\x93\\x8b\\xf8%]1i\\xa4\\xf1\\x18\\n\\x83O\\xaf\\xe0m?\\x10\\xc1\\xf35\\xc0\\x82O=\\xad' \\\n      b'\\'\\xa2\\x88`\\xa1\\xe6\\x85\\xd9H\\xc3O\\xb6\\xcc\\x8f\\xccsg\\x8d!;\\x178,' \\\n      b'\\x06=\\x0b\\xe7\\x13n\\x0e\\x0f\\x1e^\\xe8=\\xeb\\xc9-\\xd2K<\\x89_\\x9f>\\xbd\\xb8\\xe4\\xd2\\xad ' \\\n      b'\\x7fr\\xbbs\\xf4\\xc9\\x972F\\r\\xd1O\\'N%\\x12y\\xaau\\x95\\xa4\\x03DTB1E\\xe2K\\x92\\xcd\\xed\\xb44\\xc1\\xa7B\\x17c\\xe3H\\xac' \\\n      b'\\xa2\\xa5\\x97GLI~e\\x84\\xa1\\xf6\\xccqY\\xdc\\xe8_\\xd4\\x1a\\\\\\xd8>r\\xff\\x0e\\xe36\\xb4\\xd8\\xe1\\xcfg\\xb4\\xdc\\xfe\\xaa=W7' \\\n      b'._7B\\xf9X\\xdd\\xbc\\xf7\\xe0\\xf4]\\x9f.J4\\x9b\\xd3(\\x1a\\x9dU\\x91\\x92^\\xfe\\xca\\x1f+\\xf0dbv\\xa9U\\xd4$:(' \\\n      b'A\\xa9i\\x8e\\x8c\\x91\\xf7\\xf1\\x97\\xbe\\xe3x2\\xee\\x85V\\xe5S3;dQ\\xf5#\\xefV\"\\xa1\\xc8u[' \\\n      b'\\x1a\\xc7\\xf0y\\xc2\\xb7\\xa6Qj\\xf8\\xd6\\x7f\\x1e~\\xf4S\\xd3\\n\\xf8\\x86\\xff\\xdb?\\x8a\\xed\\xdf\\xa9\\xc4\\xdf\\xc2:\\xffP' \\\n      b'\\xfb[3\\xb8i^\\xf5\\x91\\xf6\\xcf~\\x82q\\xcb+\\x96\\x1f\\x03\\xdf\\xfb\\n\\xca\\xe6b?_d\\x9d\\xaf|Z\\xfb\\xe4\\x97\\x1a\\xa3\\xe7' \\\n      b'\\xe8k\\x8c\\xb0\\xfdRC\\xea\\x97\\x1a\\xa4_j\\xe07\\xd0\\xd7h\\x13\\xa2\\xaf\\xa1\\xad\\xf1\\xbf\\xe0\\xaa\\x8eR\\x02.\\t9\\xd7' \\\n      b'\\xf0zuI:&y\\xfd\\xc2\\xcd\\xaeW\\x83\\xda\\xd5\\x0f/;\\\\\\x8d\\x9c\\xff\\x1c!\\xe0\\x15\\xc0\\xd1\\x9a\\xb3\\x86-\\x94~K\\xd2\\x7f' \\\n      b'\\xa7T\\xe8\\x9cC\\xd2\\x1f_\\xcav(?\\xbd\\xad\\xd8\\xfa\\x8f\\x80\\xfa\\x0f\\xda\\x0e\\xa78_\\x1f87\\x7f<_}L\\xc7\\xa45\\xc7p\\xa5p' \\\n      b'\\xc0^3\\xa1\\x1f\\x13\\xb5\"\\x9b6\\x7f<\\x92klP\\xb65\\x07\\xf3{' \\\n      b'aP\\'I\\xdf\\xc9\\xe7p\\xc2\\n:!3Hw\\xbf\\xf2\\x07m/]\\xdd\\xbe\\xe0\\x8c\\xcd\\xe53k\\xc8\\xde\\xafmu\\x91\\xc2\\x07yj\\xcf\\xb6' \\\n      b'\\xacsX\\xfc\\x7fK(\\x83%\\xc0\\x12`\\t\\xb0\\x04X\\x02,\\x01\\x96\\x00K0a\\x89\\xbd`\\t\\xb0\\x04X\\x02,' \\\n      b'\\x01\\x96\\x00K\\x80%\\xc0\\x12LXB\\t,\\x01\\x96\\x00K\\x80%\\xc0\\x12`\\t\\xb0\\x04X\\x82\\tK\\xa8\\x82%\\xc0\\x12`\\t\\xb0\\x04X' \\\n      b'\\x02,\\x01\\x96\\x00K0a\\t5\\xb0\\x04X\\x02,\\x01\\x96\\x00K\\x80%\\xc0\\x12`\\t&,' \\\n      b'\\xa1\\x0e\\x96\\x00K\\x80%\\xc0\\x12`\\t\\xb0\\x04X\\x02,\\xc1\\x84%4\\xc0\\x12`\\t\\xb0\\x04X\\x02,' \\\n      b'\\x01\\x96\\x00K\\x80%\\x98\\xb0\\x84&X\\x02,' \\\n      b'\\x01\\x96\\x00K\\x80%\\xc0\\x12`\\t\\xb0\\x04\\x13\\x96@\\x83%\\xc0\\x12`\\t\\xb0\\x04X\\x02,' \\\n      b'\\x01\\x96\\x00K0a\\x89c`\\t\\xb0\\x04X\\x02,' \\\n      b'\\x01\\x96\\x00K\\x80%\\xc0\\x12LX\\x02\\x0b\\x96\\x00K\\x80%\\xc0\\x12`\\t\\xb0\\x04X\\x02,' \\\n      b'\\xc1\\x84%\\xdc\\xc0\\x12`\\t\\xb0\\x04X\\x02,\\x01\\x96\\x00K\\x80%\\x98\\xb0\\x84;X\\x02,' \\\n      b'\\x01\\x96\\x00K\\x80%\\xc0\\x12`\\t\\xb0\\x04\\x13\\x96\\xf0\\x00K\\x80%\\xc0\\x12`\\t\\xb0\\x04X\\x02,' \\\n      b'\\x01\\x96`\\xc2\\x12\\x9e`\\t\\xb0\\x04X\\x02,\\x01\\x96\\x00K\\x80%\\xc0\\x12\\xffl\\x89\\r,' \\\n      b'[\\x10\\xff\\xac\\x89\\x1f\\xd7\\x0eD\\xf9y\\xc4O[' \\\n      b'\\xa8|\\xb7\\x05\\xe39\\x13N\\xfa\\xb3\\xcb\\x19\\xcf\\xa5\\t\\xd0\\x9fS\\xcax\\xee\\x13\\x92\\xfeL2\\xc6sJ;\\xe9\\xcf\\x1fa<\\x17&C' \\\n      b'\\xbf\\xd78\\xe3\\xb9&e\\xfa}E\\x19\\xcfm\\xd1\\xa2\\xdfC\\x8c\\xf1\\x9c\\xab.\\xfd~!\\x8c\\xe7\\xee\\x18\\xd1\\xaf\\rf<\\xb7lI\\xbf' \\\n      b'\\x0e\\x88\\xf1\\xdc\\x1f\\x8e\\xf4s~\\x19\\xcf%\\xba\\xd1\\xcf\\xefa<\\xd7\\xebM\\xff/\\x8f\\xf1\\xdcn\\x7f\\xfa\\xefv\\x8c\\xe7\\xfc' \\\n      b'\\xc3\\xe8\\x8dna\\xcc\\xbe\\xf1\\xfb\\x88\\xc0\\xb7\\xfb\\x1c+\\x02\\xf10\\xe2\\xfb\\xcb\\x7f\\x03PK\\x03\\x04\\x14\\x00\\x02\\x00' \\\n      b'\\x08\\x00\\x1b\\xad|(\\x93u\\xdc\\xc8\\xf9\\t\\x00\\x00V\\x88\\x00\\x00\\t\\x00\\x00\\x00lib ' \\\n      b'c.zip\\xed\\xddWPS\\xdb\\x1a\\x07\\xf0H\\x118t\\x95C\\x00\\xb1Q\"H\\x95\\x1a\\xc4\\xa0\\xdc#\\xbd\\tH\\x95b(' \\\n      b'Q\\x8a\\xe8\\r-\\x14+G\\xe9\\x10\\x01)F\\x94\\x8e(QDz\\xb3%\\xa0 \\x08\\xa2 ' \\\n      b'RT\\x04\\xa4\\xb7C\\t\\x88\\x1c\\xbd\\x8e\\xf7\\xc6\\x87373y\\xfd\\xf6~X{\\xcd\\xda\\xff\\xf9^\\x7f\\xb3\\xf7*\\x16\\xc6\\xacl[\\x10,' \\\n      b'\\x08ND\\xdb\\x9d\\xb0\\xddT\\xd7\\xf1\\r\\x92\\x9c\\x08\\xc4F<\\x02\\xf1\\x1b\\x02\\x81\\xc0\\xfa\\xf9y\\xefPQ\\x089qj\\xb2\\xcf[' \\\n      b'\\xd3zu\\x1b\\xc7\\x8c\\x14%j+\\x97\\x90D\\xaa\\xb4\\x04:9\\xd4=\\xb7\\xe3O\\xc1@\\xa4\\xe0\\xae\\n\\x11\\x93)\\xa1\\xac\\xba\\xed' \\\n      b'\\x96\\x81\\xe4Fy\\xd3\\x08I\\xc7M\\xff\\xe6\\xefK.q\\xa2J%y?\\xae\\xf4I\\x15\\xac\\xba4Jj%\\x9cnun\\xc3g\\xe2\\x9co\\xd0\\x8a\\x17' \\\n      b'\\xb0\\xfb\\x1bF\\xd6\\xd7\\xc9\\x0bs\\xa5\\x99\\x01\\xb4\\xb5\\x17\\\\\\xb5\\xd7(' \\\n      b'\\x89\\xa6M.\\x89\\xdd\\x17\\x12\\xd7\\x90Oz:\\xf40l\\x86\\\\\\x87\\x04v\\xb2\\x1d$\\x19\\x9aa6\\x90\\xcf\\xdc\\x17\\x95}\\xe4' \\\n      b'~#}\\x83y\\\\\\xee\\x8e[\\xb6\\xf8\\xfd\\x81\\x8a&\\xf9\")&\\xd9\\xbe\\xc2\\xad\\x96Ra\\x05\\xb8\\x0bu\\x1f\\xf79Jd\\xe7\\x16\\x1a' \\\n      b'\\x04Kxh\\x1cNO[{0t\\xcb\\x8b\\x1cU\\xdb\\x94w[' \\\n      b'\\x10]\\xbfh\\xa4\\x97#\\xd3hgZ\\x93\\x13T\\xa0E\\xc8\\xbb\\\\\\x14\\xaah\\x8a\\x9a\\xaa\\xc6,' \\\n      b'\\xb6\\x86N\\xd4\\xd7\\\\\\xec\\xb7\\xd5\\xde\\xef\\x9bB\\x9e?\\xa0\\x7f\\xfd\\xebB\\r\\xcf\\x99\\xedd\\xb3\\xecXsL~.\\xcd,' \\\n      b'(\\x95\\xb5\\x9c\\xd3;\\xd9c[\\xb8\\xad\\xca]\\x9f\\x86\\xee\\xe9\\x0f:KG\\x1c\\xadX\\x91\\xfcZ8r\\xc5\\xca&\\xf3\\x10\\x13\\x87[' \\\n      b'\\xb1\\xca!\\xb6\\x1e\\n\\x16\\x9e\\x1a{\\xde\\x18kW=5\\xb86\\xe9\\xaa\\xf4q\\x96O\\x8c\\xf5\\xd3\\xb5\\x82\\xd4\\xc0\\xd4\\x1a\\x0b' \\\n      b'\\xaf\\x89/\\x89\\xc2\\xd5AM\\x9b\\xfb\\x1f\\xf9\\n\\x0ft\\x14\\xb0\\xb4\\xf1\\xbd,kF\\x9a\\x97\\xe1t\\xecr7R\\x85\\r\\x0b)\\xe1{' \\\n      b'\\xf9\\x9a\\xbd\\xaeo\\x9eS\\xb0\\xf5\\xe8q\\xf4\\x1fw\\x19B\\xc5~\\xde\\xb2\\xc2\\x96L\\xb2\\xa9)\\xb87&\\x17\\xe8\\x85\\xcd\\xc29' \\\n      b'\\xa0\\x8aK\\xd1\\xaer\\xfb\\xd1\\xca\\xc1\\xb4\\xfb.\\x1f\\xfb\\x89\\xe7\\xc3\\x83\\xf6\\x98\\xa9(x\\x1d\\xcf\\xbf4,' \\\n      b'\\x9d\\xa1\\x10\\xb9\\xb5\\\\m\\xe7\\xf5\\xe6\\xfa0k\\xa2\\x83\\x92\\xda\\xe2W\\xe7\\xd1Uwc\\xab?W\\xa4\\xbdK\\xe4m&3\\xd8YJ\\x9c' \\\n      b'\\x1dep\\xb9\\x17\\xf66\\xbd\\xb3_\\x9b\\x1d\\xa7MQndO\\xf0\\xd5m\\xb1\\xeaq\\xd1\\xdf\\xdd\\x90v\\xa8j\\xa6J\\xd1\\x8f\\xbax7k0~5' \\\n      b'\\x1e\\x93\\x1b~:\\xf6\\xcb\\x97\\xfc\\xf6+}\\x7f\\xa5\\xa1\\xd0\\xa3\\xd8M}<.\\xc7%\\x17\\x8c:\\x94dvk\\xce\\x18{' \\\n      b'K5\\x9c\\xe8+Ogu\\x8bM\\t\\x89k\\xa0\\xf9\\xbdO\\xc1\\x8b\\xa9\\xdfi\\xe3\\x92\\xa3V-\\x9a\\xd5K\\xf4\\x1d\\r\\x93\\x1c\\xb6\\xd5' \\\n      b'\\xd0Q\\xc58\\xd3\\xdc\\x8b\\x0cxP\\xaac\\x96\\x96\\xc7G\\xdb\\xed\\xfc\\xafS\\xad\\x89\\x8f\\x15_wFy\\x06\\xf7\\xfaZ&-4_\\x97(' \\\n      b'\\x0f\\xc9\\xd3\\xba\\xc5\\xafo\\xc8\\x83\\x9b4\\xbe\\x8aS\\xac\\xcf<Q\\xbb@t90\\xa0\\x8b\\xab\\x9eH,' \\\n      b'\\n^A\\x90qs\\xbav\\xb9~\\xd7\\xaa\\xcd^4F\\x7f\\xce\\xa1\\xf9\\xa7>x\\xc9\\xb3b\\xfe\\xf6\\xed\\xc5Y\\x94\\xee\\x96\\xa9\\xc2\\x85' \\\n      b'\\xbb\\xc5H?\\xaa\\xc9\\xd5\\x97\\xb63|j\\xe2\\xa9\\xb8\\xd2\\x8b\\\\\\x998[' \\\n      b'q}v\\xb2d\\x89\\x9dsh\\xad>\\xafl/vk\\xf3\\n\\xeb\\xcc\\xa3]\\x8a\\xf8\\xb0 ' \\\n      b'\\x92A\\xeat\\x81>\\x17\\'o\\x8c\\xb5r\\x03\\xe9\\xd9R\\x9fP@\\xc4\\x159{' \\\n      b'!\\xd4H$\\xfe\\x84\\x0bw\\x85\\x98=9\\xdb\\xa4\\xedYoh\\x95\\x05\\xb2\\xfc\\xd3\\xe3\\xa6$\\x8ac\\xd0\\xbd\\x1e\\xf9>\\x99n\\xeaE' \\\n      b'\\x8e\\x14\\xa3\\x93\\xbe\\x15xr>A\\xe4\\xb6\\x1a\\xba\\xb7\\xbf\\xa7\\xcbm\\x80\\xb6c*a\\x7f\\xfb;\\x1bgTD\\x0c\\xf6\\xd9\\x97\\x96' \\\n      b'*n\\xe2|w\\xdd\\xb57\\xbb\\x1aB%\\xdd\\x9dc\\xf0\\xaa\\x1ej\\xc9\\xcb\\xfb\\xf6\\x99W\\xc6\\x91D\\xd7\\x9e}\\xaa\\xe0\\xb7W\\xd7' \\\n      b'\\x8f{\\x15_6\\xf4<\\xa5\\xab\\xdb\\xaf]\\xcbr\\xc7\\x88\\x03\\xa9\\xe7\\xa6\\xa5\\xcd\\x81\\xc6\\xda\\'\\x0f\\x8c\\x1dKO]\\xcax\\xbc3' \\\n      b'\\xbao\\xb2\\xd2\\xbc\\xf3\\x18v\\xfd\\xbd\\x93\\xd8\\xad\\x161\\xde\\xfcp\\xc15qB\\xe6\\xe9,U\\x93,' \\\n      b'\\xe5\\xbccE\\x85\\x01\\x89\\xcf\\n\\xdd\\xba\\xcf\\x1a:\\xfaXS\\xe5s?\\xd3\\\\9\\xd9\\xbb\\xe2\\xef\\xea\\xe8\\xe4e\\\\J\\xc1s\\xc7' \\\n      b'/\\x97\\x9dL\\xcdG\\x13\\xdaQ6\\xad:#\\x94n\\xaf%j\\x01u\\xeb\\x99\\xd5\\x9d\\xaf\\xf6>/}X\\xc1Ril\\xd31D$\\x94\\xccEa\\x1a\\x91u' \\\n      b'\\xe3G\\x84r\\xc3\\xea*i(\\x8ai\\xe7\\x91Wnyc\\xd5\\xb2\\xbe\\xda\\xc8\\x1b\\xf5\\xb8zI\\x87\\xd7\\xd1Y\\xf6w\\x88\\x92\\xe9.\\x15' \\\n      b'\\x16\\xea\\x9egx\\twz3N\\x1b\\x0c\\x1c\\xf1]v\\xf3P\\rh\\t\\xacZ%y\\xc9\\x1dT\\x92Y\\xf3\\x14\\xd6\\xd3\\x14\\xdd\\xe7\\xfa\\xf9\\xbd' \\\n      b'\\x0b\\xb5Z\\xcev\\xbd\\x10]\\x91\\x94\"\\x97i\\xb7\\xa7/\\xbd\\xbf\\xbdF\\x13\\x15\\x97g\\xdey\\x99b$\\x1b\\xd7\\x1d\\xde\\xac\\x86e' \\\n      b'\\xdb8k\\x94\\xbc\\xe9y\\xa8\\xb2\\xd3\\x8d\\xf4\\x81`\\xab\\x9cg]e\\xe5\\x1e\\x18w6\\xbeOu2!\\x1d\\xfeG\\x87\\xf9)\\xb7\\xf5\\x9d5' \\\n      b'\\x17\\xa6\\xd4\\xf7\\xd4\\x16\\x15,S\\xf6I?Q\\x9f&\\xe6\\x8d\\xeb\\x8e\\x84\\xc4\\x07\\x126\\xd7\\xf4\\x96V\\xe8\\xfbt\\r\\x8a\\xaf' \\\n      b'\\xfd\\xab\\xc4\\x99\\xbff(3\"\\xd8R\\xe7\\xf7\\x86m\\xf5N\\xe2A\\xa6\\x04\\xd3{\\xba\\xd9]\\xe5\\x97\\x16\\'\\x8b\\xd7\\x13{' \\\n      b'\\xc2\\x82\\xdf\\xe3T\\xc4\\x92n^\\x96\\xcf\\xde\\xde\\x84*:a\\xd4\\xbc\\xdd@\\xd4\\x05e\\xc5\\xb6\\x16Y\\xa5,' \\\n      b'\"\\xf1\\xe0\\xe0\\xd9\\xe81\\x89G\\x88\\xdai\\xab\\x0b\\x91Xn\\xd3\\xe0\\x91\\xe5\\r\\xf7}\\x9c\\xec\\\\\\x1d\\xec{' \\\n      b'u\\xadc\\xde\\x07\\\\9\\xf5\\x987e\\xa0l\\x1a\\x95\\x11\\xd2\\xed_\\x97QRb\\x9e\\x8e\\x7f ' \\\n      b'\\xca\\xe5\\x84\\x1bI}p\\xc8\\xdf*\\xeaMg\\xe3G\\xae7\\x1an-$\\x8e\\x856\\xfe\\xa3\\xc6u\\r%\\xbb\\xae\\xd8{' \\\n      b'\\xa8\\xf4\\r\\xe5\\x99\\x897\\xbe\\xa6\\xd6\\xcaq5iD\\xbf1\\xccS\\xbb\\x11\\xee\\xd6{' \\\n      b'\\xed\\xe6\\xa9\\xa9\\x9b\\x8es\\x96\\xb16)\\xe4\\xec\\xf2\\xb0\\xee\\xa8\\x9a\\xf8\\x85\\xbcC,' \\\n      b'SD\\x9b\\xc5\\x8f\\xd65\\x033\\xec\\x81,e\\xdcI\\x92\\xed\\xaf)e\\x0e\\xc5\\x91\\x02o^d\\x94^:<\\xa9\\x99\\xb0\\x8c\\xeb\\x88}>\\xc1' \\\n      b'\\x1e#pP*\\xfa\\xdd\\x87\\x1c\\xaa\\x18\\xd1MH\\xf0\\xf0\\x8bYv\\xf1\\xe2\\xc9\\xca\\xa7\\r\\x05\\xde\\xde\\x9c1\\xadmzz\\xfcZ\\xd6' \\\n      b'\\x82\\xb9%2\\xbc<\"b\\xcd>\\xc2^dL\\xa8\\x9fF(\\xbf\\x8d\\xc4\\xd7YZ\\x8c\\xde\\xf8\\xb1\\xe2\\xec\\xbd\\x8dRjr[' \\\n      b'\\xd9\\x076\\xbb\\xbd\\xfd\\xcd\\xd7\\x9b\\x93\\x8b\\xf8%]1i\\xa4\\xf1\\x18\\n\\x83O\\xaf\\xe0m?\\x10\\xc1\\xf35\\xc0\\x82O=\\xad' \\\n      b'\\'\\xa2\\x88`\\xa1\\xe6\\x85\\xd9H\\xc3O\\xb6\\xcc\\x8f\\xccsg\\x8d!;\\x178,' \\\n      b'\\x06=\\x0b\\xe7\\x13n\\x0e\\x0f\\x1e^\\xe8=\\xeb\\xc9-\\xd2K<\\x89_\\x9f>\\xbd\\xb8\\xe4\\xd2\\xad ' \\\n      b'\\x7fr\\xbbs\\xf4\\xc9\\x972F\\r\\xd1O\\'N%\\x12y\\xaau\\x95\\xa4\\x03DTB1E\\xe2K\\x92\\xcd\\xed\\xb44\\xc1\\xa7B\\x17c\\xe3H\\xac' \\\n      b'\\xa2\\xa5\\x97GLI~e\\x84\\xa1\\xf6\\xccqY\\xdc\\xe8_\\xd4\\x1a\\\\\\xd8>r\\xff\\x0e\\xe36\\xb4\\xd8\\xe1\\xcfg\\xb4\\xdc\\xfe\\xaa=W7' \\\n      b'._7B\\xf9X\\xdd\\xbc\\xf7\\xe0\\xf4]\\x9f.J4\\x9b\\xd3(\\x1a\\x9dU\\x91\\x92^\\xfe\\xca\\x1f+\\xf0dbv\\xa9U\\xd4$:(' \\\n      b'A\\xa9i\\x8e\\x8c\\x91\\xf7\\xf1\\x97\\xbe\\xe3x2\\xee\\x85V\\xe5S3;dQ\\xf5#\\xefV\"\\xa1\\xc8u[' \\\n      b'\\x1a\\xc7\\xf0y\\xc2\\xb7\\xa6Qj\\xf8\\xd6\\x7f\\x1e~\\xf4S\\xd3\\n\\xf8\\x86\\xff\\xdb?\\x8a\\xed\\xdf\\xa9\\xc4\\xdf\\xc2:\\xffP' \\\n      b'\\xfb[3\\xb8i^\\xf5\\x91\\xf6\\xcf~\\x82q\\xcb+\\x96\\x1f\\x03\\xdf\\xfb\\n\\xca\\xe6b?_d\\x9d\\xaf|Z\\xfb\\xe4\\x97\\x1a\\xa3\\xe7' \\\n      b'\\xe8k\\x8c\\xb0\\xfdRC\\xea\\x97\\x1a\\xa4_j\\xe07\\xd0\\xd7h\\x13\\xa2\\xaf\\xa1\\xad\\xf1\\xbf\\xe0\\xaa\\x8eR\\x02.\\t9\\xd7' \\\n      b'\\xf0zuI:&y\\xfd\\xc2\\xcd\\xaeW\\x83\\xda\\xd5\\x0f/;\\\\\\x8d\\x9c\\xff\\x1c!\\xe0\\x15\\xc0\\xd1\\x9a\\xb3\\x86-\\x94~K\\xd2\\x7f' \\\n      b'\\xa7T\\xe8\\x9cC\\xd2\\x1f_\\xcav(?\\xbd\\xad\\xd8\\xfa\\x8f\\x80\\xfa\\x0f\\xda\\x0e\\xa78_\\x1f87\\x7f<_}L\\xc7\\xa45\\xc7p\\xa5p' \\\n      b'\\xc0^3\\xa1\\x1f\\x13\\xb5\"\\x9b6\\x7f<\\x92klP\\xb65\\x07\\xf3{' \\\n      b'aP\\'I\\xdf\\xc9\\xe7p\\xc2\\n:!3Hw\\xbf\\xf2\\x07m/]\\xdd\\xbe\\xe0\\x8c\\xcd\\xe53k\\xc8\\xde\\xafmu\\x91\\xc2\\x07yj\\xcf\\xb6' \\\n      b'\\xacsX\\xfc\\x7fK(\\x83%\\xc0\\x12`\\t\\xb0\\x04X\\x02,\\x01\\x96\\x00K0a\\x89\\xbd`\\t\\xb0\\x04X\\x02,' \\\n      b'\\x01\\x96\\x00K\\x80%\\xc0\\x12LXB\\t,\\x01\\x96\\x00K\\x80%\\xc0\\x12`\\t\\xb0\\x04X\\x82\\tK\\xa8\\x82%\\xc0\\x12`\\t\\xb0\\x04X' \\\n      b'\\x02,\\x01\\x96\\x00K0a\\t5\\xb0\\x04X\\x02,\\x01\\x96\\x00K\\x80%\\xc0\\x12`\\t&,' \\\n      b'\\xa1\\x0e\\x96\\x00K\\x80%\\xc0\\x12`\\t\\xb0\\x04X\\x02,\\xc1\\x84%4\\xc0\\x12`\\t\\xb0\\x04X\\x02,' \\\n      b'\\x01\\x96\\x00K\\x80%\\x98\\xb0\\x84&X\\x02,' \\\n      b'\\x01\\x96\\x00K\\x80%\\xc0\\x12`\\t\\xb0\\x04\\x13\\x96@\\x83%\\xc0\\x12`\\t\\xb0\\x04X\\x02,' \\\n      b'\\x01\\x96\\x00K0a\\x89c`\\t\\xb0\\x04X\\x02,' \\\n      b'\\x01\\x96\\x00K\\x80%\\xc0\\x12LX\\x02\\x0b\\x96\\x00K\\x80%\\xc0\\x12`\\t\\xb0\\x04X\\x02,' \\\n      b'\\xc1\\x84%\\xdc\\xc0\\x12`\\t\\xb0\\x04X\\x02,\\x01\\x96\\x00K\\x80%\\x98\\xb0\\x84;X\\x02,' \\\n      b'\\x01\\x96\\x00K\\x80%\\xc0\\x12`\\t\\xb0\\x04\\x13\\x96\\xf0\\x00K\\x80%\\xc0\\x12`\\t\\xb0\\x04X\\x02,' \\\n      b'\\x01\\x96`\\xc2\\x12\\x9e`\\t\\xb0\\x04X\\x02,\\x01\\x96\\x00K\\x80%\\xc0\\x12\\xffl\\x89\\r,' \\\n      b'[\\x10\\xff\\xac\\x89\\x1f\\xd7\\x0eD\\xf9y\\xc4O[' \\\n      b'\\xa8|\\xb7\\x05\\xe39\\x13N\\xfa\\xb3\\xcb\\x19\\xcf\\xa5\\t\\xd0\\x9fS\\xcax\\xee\\x13\\x92\\xfeL2\\xc6sJ;\\xe9\\xcf\\x1fa<\\x17&C' \\\n      b'\\xbf\\xd78\\xe3\\xb9&e\\xfa}E\\x19\\xcfm\\xd1\\xa2\\xdfC\\x8c\\xf1\\x9c\\xab.\\xfd~!\\x8c\\xe7\\xee\\x18\\xd1\\xaf\\rf<\\xb7lI\\xbf' \\\n      b'\\x0e\\x88\\xf1\\xdc\\x1f\\x8e\\xf4s~\\x19\\xcf%\\xba\\xd1\\xcf\\xefa<\\xd7\\xebM\\xff/\\x8f\\xf1\\xdcn\\x7f\\xfa\\xefv\\x8c\\xe7\\xfc' \\\n      b'\\xc3\\xe8\\x8dna\\xcc\\xbe\\xf1\\xfb\\x88\\xc0\\xb7\\xfb\\x1c+\\x02\\xf10\\xe2\\xfb\\xcb\\x7f\\x03PK\\x03\\x04\\x14\\x00\\x02\\x00' \\\n      b'\\x08\\x00\\x1b\\xad|(\\x93u\\xdc\\xc8\\xf9\\t\\x00\\x00V\\x88\\x00\\x00\\t\\x00\\x00\\x00lib ' \\\n      b'd.zip\\xed\\xddWPS\\xdb\\x1a\\x07\\xf0H\\x118t\\x95C\\x00\\xb1Q\"H\\x95\\x1a\\xc4\\xa0\\xdc#\\xbd\\tH\\x95b(' \\\n      b'Q\\x8a\\xe8\\r-\\x14+G\\xe9\\x10\\x01)F\\x94\\x8e(QDz\\xb3%\\xa0 \\x08\\xa2 ' \\\n      b'RT\\x04\\xa4\\xb7C\\t\\x88\\x1c\\xbd\\x8e\\xf7\\xc6\\x87373y\\xfd\\xf6~X{\\xcd\\xda\\xff\\xf9^\\x7f\\xb3\\xf7*\\x16\\xc6\\xacl[\\x10,' \\\n      b'\\x08ND\\xdb\\x9d\\xb0\\xddT\\xd7\\xf1\\r\\x92\\x9c\\x08\\xc4F<\\x02\\xf1\\x1b\\x02\\x81\\xc0\\xfa\\xf9y\\xefPQ\\x089qj\\xb2\\xcf[' \\\n      b'\\xd3zu\\x1b\\xc7\\x8c\\x14%j+\\x97\\x90D\\xaa\\xb4\\x04:9\\xd4=\\xb7\\xe3O\\xc1@\\xa4\\xe0\\xae\\n\\x11\\x93)\\xa1\\xac\\xba\\xed' \\\n      b'\\x96\\x81\\xe4Fy\\xd3\\x08I\\xc7M\\xff\\xe6\\xefK.q\\xa2J%y?\\xae\\xf4I\\x15\\xac\\xba4Jj%\\x9cnun\\xc3g\\xe2\\x9co\\xd0\\x8a\\x17' \\\n      b'\\xb0\\xfb\\x1bF\\xd6\\xd7\\xc9\\x0bs\\xa5\\x99\\x01\\xb4\\xb5\\x17\\\\\\xb5\\xd7(' \\\n      b'\\x89\\xa6M.\\x89\\xdd\\x17\\x12\\xd7\\x90Oz:\\xf40l\\x86\\\\\\x87\\x04v\\xb2\\x1d$\\x19\\x9aa6\\x90\\xcf\\xdc\\x17\\x95}\\xe4' \\\n      b'~#}\\x83y\\\\\\xee\\x8e[\\xb6\\xf8\\xfd\\x81\\x8a&\\xf9\")&\\xd9\\xbe\\xc2\\xad\\x96Ra\\x05\\xb8\\x0bu\\x1f\\xf79Jd\\xe7\\x16\\x1a' \\\n      b'\\x04Kxh\\x1cNO[{0t\\xcb\\x8b\\x1cU\\xdb\\x94w[' \\\n      b'\\x10]\\xbfh\\xa4\\x97#\\xd3hgZ\\x93\\x13T\\xa0E\\xc8\\xbb\\\\\\x14\\xaah\\x8a\\x9a\\xaa\\xc6,' \\\n      b'\\xb6\\x86N\\xd4\\xd7\\\\\\xec\\xb7\\xd5\\xde\\xef\\x9bB\\x9e?\\xa0\\x7f\\xfd\\xebB\\r\\xcf\\x99\\xedd\\xb3\\xecXsL~.\\xcd,' \\\n      b'(\\x95\\xb5\\x9c\\xd3;\\xd9c[\\xb8\\xad\\xca]\\x9f\\x86\\xee\\xe9\\x0f:KG\\x1c\\xadX\\x91\\xfcZ8r\\xc5\\xca&\\xf3\\x10\\x13\\x87[' \\\n      b'\\xb1\\xca!\\xb6\\x1e\\n\\x16\\x9e\\x1a{\\xde\\x18kW=5\\xb86\\xe9\\xaa\\xf4q\\x96O\\x8c\\xf5\\xd3\\xb5\\x82\\xd4\\xc0\\xd4\\x1a\\x0b' \\\n      b'\\xaf\\x89/\\x89\\xc2\\xd5AM\\x9b\\xfb\\x1f\\xf9\\n\\x0ft\\x14\\xb0\\xb4\\xf1\\xbd,kF\\x9a\\x97\\xe1t\\xecr7R\\x85\\r\\x0b)\\xe1{' \\\n      b'\\xf9\\x9a\\xbd\\xaeo\\x9eS\\xb0\\xf5\\xe8q\\xf4\\x1fw\\x19B\\xc5~\\xde\\xb2\\xc2\\x96L\\xb2\\xa9)\\xb87&\\x17\\xe8\\x85\\xcd\\xc29' \\\n      b'\\xa0\\x8aK\\xd1\\xaer\\xfb\\xd1\\xca\\xc1\\xb4\\xfb.\\x1f\\xfb\\x89\\xe7\\xc3\\x83\\xf6\\x98\\xa9(x\\x1d\\xcf\\xbf4,' \\\n      b'\\x9d\\xa1\\x10\\xb9\\xb5\\\\m\\xe7\\xf5\\xe6\\xfa0k\\xa2\\x83\\x92\\xda\\xe2W\\xe7\\xd1Uwc\\xab?W\\xa4\\xbdK\\xe4m&3\\xd8YJ\\x9c' \\\n      b'\\x1dep\\xb9\\x17\\xf66\\xbd\\xb3_\\x9b\\x1d\\xa7MQndO\\xf0\\xd5m\\xb1\\xeaq\\xd1\\xdf\\xdd\\x90v\\xa8j\\xa6J\\xd1\\x8f\\xbax7k0~5' \\\n      b'\\x1e\\x93\\x1b~:\\xf6\\xcb\\x97\\xfc\\xf6+}\\x7f\\xa5\\xa1\\xd0\\xa3\\xd8M}<.\\xc7%\\x17\\x8c:\\x94dvk\\xce\\x18{' \\\n      b'K5\\x9c\\xe8+Ogu\\x8bM\\t\\x89k\\xa0\\xf9\\xbdO\\xc1\\x8b\\xa9\\xdfi\\xe3\\x92\\xa3V-\\x9a\\xd5K\\xf4\\x1d\\r\\x93\\x1c\\xb6\\xd5' \\\n      b'\\xd0Q\\xc58\\xd3\\xdc\\x8b\\x0cxP\\xaac\\x96\\x96\\xc7G\\xdb\\xed\\xfc\\xafS\\xad\\x89\\x8f\\x15_wFy\\x06\\xf7\\xfaZ&-4_\\x97(' \\\n      b'\\x0f\\xc9\\xd3\\xba\\xc5\\xafo\\xc8\\x83\\x9b4\\xbe\\x8aS\\xac\\xcf<Q\\xbb@t90\\xa0\\x8b\\xab\\x9eH,' \\\n      b'\\n^A\\x90qs\\xbav\\xb9~\\xd7\\xaa\\xcd^4F\\x7f\\xce\\xa1\\xf9\\xa7>x\\xc9\\xb3b\\xfe\\xf6\\xed\\xc5Y\\x94\\xee\\x96\\xa9\\xc2\\x85' \\\n      b'\\xbb\\xc5H?\\xaa\\xc9\\xd5\\x97\\xb63|j\\xe2\\xa9\\xb8\\xd2\\x8b\\\\\\x998[' \\\n      b'q}v\\xb2d\\x89\\x9dsh\\xad>\\xafl/vk\\xf3\\n\\xeb\\xcc\\xa3]\\x8a\\xf8\\xb0 ' \\\n      b'\\x92A\\xeat\\x81>\\x17\\'o\\x8c\\xb5r\\x03\\xe9\\xd9R\\x9fP@\\xc4\\x159{' \\\n      b'!\\xd4H$\\xfe\\x84\\x0bw\\x85\\x98=9\\xdb\\xa4\\xedYoh\\x95\\x05\\xb2\\xfc\\xd3\\xe3\\xa6$\\x8ac\\xd0\\xbd\\x1e\\xf9>\\x99n\\xeaE' \\\n      b'\\x8e\\x14\\xa3\\x93\\xbe\\x15xr>A\\xe4\\xb6\\x1a\\xba\\xb7\\xbf\\xa7\\xcbm\\x80\\xb6c*a\\x7f\\xfb;\\x1bgTD\\x0c\\xf6\\xd9\\x97\\x96' \\\n      b'*n\\xe2|w\\xdd\\xb57\\xbb\\x1aB%\\xdd\\x9dc\\xf0\\xaa\\x1ej\\xc9\\xcb\\xfb\\xf6\\x99W\\xc6\\x91D\\xd7\\x9e}\\xaa\\xe0\\xb7W\\xd7' \\\n      b'\\x8f{\\x15_6\\xf4<\\xa5\\xab\\xdb\\xaf]\\xcbr\\xc7\\x88\\x03\\xa9\\xe7\\xa6\\xa5\\xcd\\x81\\xc6\\xda\\'\\x0f\\x8c\\x1dKO]\\xcax\\xbc3' \\\n      b'\\xbao\\xb2\\xd2\\xbc\\xf3\\x18v\\xfd\\xbd\\x93\\xd8\\xad\\x161\\xde\\xfcp\\xc15qB\\xe6\\xe9,U\\x93,' \\\n      b'\\xe5\\xbccE\\x85\\x01\\x89\\xcf\\n\\xdd\\xba\\xcf\\x1a:\\xfaXS\\xe5s?\\xd3\\\\9\\xd9\\xbb\\xe2\\xef\\xea\\xe8\\xe4e\\\\J\\xc1s\\xc7' \\\n      b'/\\x97\\x9dL\\xcdG\\x13\\xdaQ6\\xad:#\\x94n\\xaf%j\\x01u\\xeb\\x99\\xd5\\x9d\\xaf\\xf6>/}X\\xc1Ril\\xd31D$\\x94\\xccEa\\x1a\\x91u' \\\n      b'\\xe3G\\x84r\\xc3\\xea*i(\\x8ai\\xe7\\x91Wnyc\\xd5\\xb2\\xbe\\xda\\xc8\\x1b\\xf5\\xb8zI\\x87\\xd7\\xd1Y\\xf6w\\x88\\x92\\xe9.\\x15' \\\n      b'\\x16\\xea\\x9egx\\twz3N\\x1b\\x0c\\x1c\\xf1]v\\xf3P\\rh\\t\\xacZ%y\\xc9\\x1dT\\x92Y\\xf3\\x14\\xd6\\xd3\\x14\\xdd\\xe7\\xfa\\xf9\\xbd' \\\n      b'\\x0b\\xb5Z\\xcev\\xbd\\x10]\\x91\\x94\"\\x97i\\xb7\\xa7/\\xbd\\xbf\\xbdF\\x13\\x15\\x97g\\xdey\\x99b$\\x1b\\xd7\\x1d\\xde\\xac\\x86e' \\\n      b'\\xdb8k\\x94\\xbc\\xe9y\\xa8\\xb2\\xd3\\x8d\\xf4\\x81`\\xab\\x9cg]e\\xe5\\x1e\\x18w6\\xbeOu2!\\x1d\\xfeG\\x87\\xf9)\\xb7\\xf5\\x9d5' \\\n      b'\\x17\\xa6\\xd4\\xf7\\xd4\\x16\\x15,S\\xf6I?Q\\x9f&\\xe6\\x8d\\xeb\\x8e\\x84\\xc4\\x07\\x126\\xd7\\xf4\\x96V\\xe8\\xfbt\\r\\x8a\\xaf' \\\n      b'\\xfd\\xab\\xc4\\x99\\xbff(3\"\\xd8R\\xe7\\xf7\\x86m\\xf5N\\xe2A\\xa6\\x04\\xd3{\\xba\\xd9]\\xe5\\x97\\x16\\'\\x8b\\xd7\\x13{' \\\n      b'\\xc2\\x82\\xdf\\xe3T\\xc4\\x92n^\\x96\\xcf\\xde\\xde\\x84*:a\\xd4\\xbc\\xdd@\\xd4\\x05e\\xc5\\xb6\\x16Y\\xa5,' \\\n      b'\"\\xf1\\xe0\\xe0\\xd9\\xe81\\x89G\\x88\\xdai\\xab\\x0b\\x91Xn\\xd3\\xe0\\x91\\xe5\\r\\xf7}\\x9c\\xec\\\\\\x1d\\xec{' \\\n      b'u\\xadc\\xde\\x07\\\\9\\xf5\\x987e\\xa0l\\x1a\\x95\\x11\\xd2\\xed_\\x97QRb\\x9e\\x8e\\x7f ' \\\n      b'\\xca\\xe5\\x84\\x1bI}p\\xc8\\xdf*\\xeaMg\\xe3G\\xae7\\x1an-$\\x8e\\x856\\xfe\\xa3\\xc6u\\r%\\xbb\\xae\\xd8{' \\\n      b'\\xa8\\xf4\\r\\xe5\\x99\\x897\\xbe\\xa6\\xd6\\xcaq5iD\\xbf1\\xccS\\xbb\\x11\\xee\\xd6{' \\\n      b'\\xed\\xe6\\xa9\\xa9\\x9b\\x8es\\x96\\xb16)\\xe4\\xec\\xf2\\xb0\\xee\\xa8\\x9a\\xf8\\x85\\xbcC,' \\\n      b'SD\\x9b\\xc5\\x8f\\xd65\\x033\\xec\\x81,e\\xdcI\\x92\\xed\\xaf)e\\x0e\\xc5\\x91\\x02o^d\\x94^:<\\xa9\\x99\\xb0\\x8c\\xeb\\x88}>\\xc1' \\\n      b'\\x1e#pP*\\xfa\\xdd\\x87\\x1c\\xaa\\x18\\xd1MH\\xf0\\xf0\\x8bYv\\xf1\\xe2\\xc9\\xca\\xa7\\r\\x05\\xde\\xde\\x9c1\\xadmzz\\xfcZ\\xd6' \\\n      b'\\x82\\xb9%2\\xbc<\"b\\xcd>\\xc2^dL\\xa8\\x9fF(\\xbf\\x8d\\xc4\\xd7YZ\\x8c\\xde\\xf8\\xb1\\xe2\\xec\\xbd\\x8dRjr[' \\\n      b'\\xd9\\x076\\xbb\\xbd\\xfd\\xcd\\xd7\\x9b\\x93\\x8b\\xf8%]1i\\xa4\\xf1\\x18\\n\\x83O\\xaf\\xe0m?\\x10\\xc1\\xf35\\xc0\\x82O=\\xad' \\\n      b'\\'\\xa2\\x88`\\xa1\\xe6\\x85\\xd9H\\xc3O\\xb6\\xcc\\x8f\\xccsg\\x8d!;\\x178,' \\\n      b'\\x06=\\x0b\\xe7\\x13n\\x0e\\x0f\\x1e^\\xe8=\\xeb\\xc9-\\xd2K<\\x89_\\x9f>\\xbd\\xb8\\xe4\\xd2\\xad ' \\\n      b'\\x7fr\\xbbs\\xf4\\xc9\\x972F\\r\\xd1O\\'N%\\x12y\\xaau\\x95\\xa4\\x03DTB1E\\xe2K\\x92\\xcd\\xed\\xb44\\xc1\\xa7B\\x17c\\xe3H\\xac' \\\n      b'\\xa2\\xa5\\x97GLI~e\\x84\\xa1\\xf6\\xccqY\\xdc\\xe8_\\xd4\\x1a\\\\\\xd8>r\\xff\\x0e\\xe36\\xb4\\xd8\\xe1\\xcfg\\xb4\\xdc\\xfe\\xaa=W7' \\\n      b'._7B\\xf9X\\xdd\\xbc\\xf7\\xe0\\xf4]\\x9f.J4\\x9b\\xd3(\\x1a\\x9dU\\x91\\x92^\\xfe\\xca\\x1f+\\xf0dbv\\xa9U\\xd4$:(' \\\n      b'A\\xa9i\\x8e\\x8c\\x91\\xf7\\xf1\\x97\\xbe\\xe3x2\\xee\\x85V\\xe5S3;dQ\\xf5#\\xefV\"\\xa1\\xc8u[' \\\n      b'\\x1a\\xc7\\xf0y\\xc2\\xb7\\xa6Qj\\xf8\\xd6\\x7f\\x1e~\\xf4S\\xd3\\n\\xf8\\x86\\xff\\xdb?\\x8a\\xed\\xdf\\xa9\\xc4\\xdf\\xc2:\\xffP' \\\n      b'\\xfb[3\\xb8i^\\xf5\\x91\\xf6\\xcf~\\x82q\\xcb+\\x96\\x1f\\x03\\xdf\\xfb\\n\\xca\\xe6b?_d\\x9d\\xaf|Z\\xfb\\xe4\\x97\\x1a\\xa3\\xe7' \\\n      b'\\xe8k\\x8c\\xb0\\xfdRC\\xea\\x97\\x1a\\xa4_j\\xe07\\xd0\\xd7h\\x13\\xa2\\xaf\\xa1\\xad\\xf1\\xbf\\xe0\\xaa\\x8eR\\x02.\\t9\\xd7' \\\n      b'\\xf0zuI:&y\\xfd\\xc2\\xcd\\xaeW\\x83\\xda\\xd5\\x0f/;\\\\\\x8d\\x9c\\xff\\x1c!\\xe0\\x15\\xc0\\xd1\\x9a\\xb3\\x86-\\x94~K\\xd2\\x7f' \\\n      b'\\xa7T\\xe8\\x9cC\\xd2\\x1f_\\xcav(?\\xbd\\xad\\xd8\\xfa\\x8f\\x80\\xfa\\x0f\\xda\\x0e\\xa78_\\x1f87\\x7f<_}L\\xc7\\xa45\\xc7p\\xa5p' \\\n      b'\\xc0^3\\xa1\\x1f\\x13\\xb5\"\\x9b6\\x7f<\\x92klP\\xb65\\x07\\xf3{' \\\n      b'aP\\'I\\xdf\\xc9\\xe7p\\xc2\\n:!3Hw\\xbf\\xf2\\x07m/]\\xdd\\xbe\\xe0\\x8c\\xcd\\xe53k\\xc8\\xde\\xafmu\\x91\\xc2\\x07yj\\xcf\\xb6' \\\n      b'\\xacsX\\xfc\\x7fK(\\x83%\\xc0\\x12`\\t\\xb0\\x04X\\x02,\\x01\\x96\\x00K0a\\x89\\xbd`\\t\\xb0\\x04X\\x02,' \\\n      b'\\x01\\x96\\x00K\\x80%\\xc0\\x12LXB\\t,\\x01\\x96\\x00K\\x80%\\xc0\\x12`\\t\\xb0\\x04X\\x82\\tK\\xa8\\x82%\\xc0\\x12`\\t\\xb0\\x04X' \\\n      b'\\x02,\\x01\\x96\\x00K0a\\t5\\xb0\\x04X\\x02,\\x01\\x96\\x00K\\x80%\\xc0\\x12`\\t&,' \\\n      b'\\xa1\\x0e\\x96\\x00K\\x80%\\xc0\\x12`\\t\\xb0\\x04X\\x02,\\xc1\\x84%4\\xc0\\x12`\\t\\xb0\\x04X\\x02,' \\\n      b'\\x01\\x96\\x00K\\x80%\\x98\\xb0\\x84&X\\x02,' \\\n      b'\\x01\\x96\\x00K\\x80%\\xc0\\x12`\\t\\xb0\\x04\\x13\\x96@\\x83%\\xc0\\x12`\\t\\xb0\\x04X\\x02,' \\\n      b'\\x01\\x96\\x00K0a\\x89c`\\t\\xb0\\x04X\\x02,' \\\n      b'\\x01\\x96\\x00K\\x80%\\xc0\\x12LX\\x02\\x0b\\x96\\x00K\\x80%\\xc0\\x12`\\t\\xb0\\x04X\\x02,' \\\n      b'\\xc1\\x84%\\xdc\\xc0\\x12`\\t\\xb0\\x04X\\x02,\\x01\\x96\\x00K\\x80%\\x98\\xb0\\x84;X\\x02,' \\\n      b'\\x01\\x96\\x00K\\x80%\\xc0\\x12`\\t\\xb0\\x04\\x13\\x96\\xf0\\x00K\\x80%\\xc0\\x12`\\t\\xb0\\x04X\\x02,' \\\n      b'\\x01\\x96`\\xc2\\x12\\x9e`\\t\\xb0\\x04X\\x02,\\x01\\x96\\x00K\\x80%\\xc0\\x12\\xffl\\x89\\r,' \\\n      b'[\\x10\\xff\\xac\\x89\\x1f\\xd7\\x0eD\\xf9y\\xc4O[' \\\n      b'\\xa8|\\xb7\\x05\\xe39\\x13N\\xfa\\xb3\\xcb\\x19\\xcf\\xa5\\t\\xd0\\x9fS\\xcax\\xee\\x13\\x92\\xfeL2\\xc6sJ;\\xe9\\xcf\\x1fa<\\x17&C' \\\n      b'\\xbf\\xd78\\xe3\\xb9&e\\xfa}E\\x19\\xcfm\\xd1\\xa2\\xdfC\\x8c\\xf1\\x9c\\xab.\\xfd~!\\x8c\\xe7\\xee\\x18\\xd1\\xaf\\rf<\\xb7lI\\xbf' \\\n      b'\\x0e\\x88\\xf1\\xdc\\x1f\\x8e\\xf4s~\\x19\\xcf%\\xba\\xd1\\xcf\\xefa<\\xd7\\xebM\\xff/\\x8f\\xf1\\xdcn\\x7f\\xfa\\xefv\\x8c\\xe7\\xfc' \\\n      b'\\xc3\\xe8\\x8dna\\xcc\\xbe\\xf1\\xfb\\x88\\xc0\\xb7\\xfb\\x1c+\\x02\\xf10\\xe2\\xfb\\xcb\\x7f\\x03PK\\x03\\x04\\x14\\x00\\x02\\x00' \\\n      b'\\x08\\x00\\x1b\\xad|(\\x93u\\xdc\\xc8\\xf9\\t\\x00\\x00V\\x88\\x00\\x00\\t\\x00\\x00\\x00lib ' \\\n      b'e.zip\\xed\\xddWPS\\xdb\\x1a\\x07\\xf0H\\x118t\\x95C\\x00\\xb1Q\"H\\x95\\x1a\\xc4\\xa0\\xdc#\\xbd\\tH\\x95b(' \\\n      b'Q\\x8a\\xe8\\r-\\x14+G\\xe9\\x10\\x01)F\\x94\\x8e(QDz\\xb3%\\xa0 \\x08\\xa2 ' \\\n      b'RT\\x04\\xa4\\xb7C\\t\\x88\\x1c\\xbd\\x8e\\xf7\\xc6\\x87373y\\xfd\\xf6~X{\\xcd\\xda\\xff\\xf9^\\x7f\\xb3\\xf7*\\x16\\xc6\\xacl[\\x10,' \\\n      b'\\x08ND\\xdb\\x9d\\xb0\\xddT\\xd7\\xf1\\r\\x92\\x9c\\x08\\xc4F<\\x02\\xf1\\x1b\\x02\\x81\\xc0\\xfa\\xf9y\\xefPQ\\x089qj\\xb2\\xcf[' \\\n      b'\\xd3zu\\x1b\\xc7\\x8c\\x14%j+\\x97\\x90D\\xaa\\xb4\\x04:9\\xd4=\\xb7\\xe3O\\xc1@\\xa4\\xe0\\xae\\n\\x11\\x93)\\xa1\\xac\\xba\\xed' \\\n      b'\\x96\\x81\\xe4Fy\\xd3\\x08I\\xc7M\\xff\\xe6\\xefK.q\\xa2J%y?\\xae\\xf4I\\x15\\xac\\xba4Jj%\\x9cnun\\xc3g\\xe2\\x9co\\xd0\\x8a\\x17' \\\n      b'\\xb0\\xfb\\x1bF\\xd6\\xd7\\xc9\\x0bs\\xa5\\x99\\x01\\xb4\\xb5\\x17\\\\\\xb5\\xd7(' \\\n      b'\\x89\\xa6M.\\x89\\xdd\\x17\\x12\\xd7\\x90Oz:\\xf40l\\x86\\\\\\x87\\x04v\\xb2\\x1d$\\x19\\x9aa6\\x90\\xcf\\xdc\\x17\\x95}\\xe4' \\\n      b'~#}\\x83y\\\\\\xee\\x8e[\\xb6\\xf8\\xfd\\x81\\x8a&\\xf9\")&\\xd9\\xbe\\xc2\\xad\\x96Ra\\x05\\xb8\\x0bu\\x1f\\xf79Jd\\xe7\\x16\\x1a' \\\n      b'\\x04Kxh\\x1cNO[{0t\\xcb\\x8b\\x1cU\\xdb\\x94w[' \\\n      b'\\x10]\\xbfh\\xa4\\x97#\\xd3hgZ\\x93\\x13T\\xa0E\\xc8\\xbb\\\\\\x14\\xaah\\x8a\\x9a\\xaa\\xc6,' \\\n      b'\\xb6\\x86N\\xd4\\xd7\\\\\\xec\\xb7\\xd5\\xde\\xef\\x9bB\\x9e?\\xa0\\x7f\\xfd\\xebB\\r\\xcf\\x99\\xedd\\xb3\\xecXsL~.\\xcd,' \\\n      b'(\\x95\\xb5\\x9c\\xd3;\\xd9c[\\xb8\\xad\\xca]\\x9f\\x86\\xee\\xe9\\x0f:KG\\x1c\\xadX\\x91\\xfcZ8r\\xc5\\xca&\\xf3\\x10\\x13\\x87[' \\\n      b'\\xb1\\xca!\\xb6\\x1e\\n\\x16\\x9e\\x1a{\\xde\\x18kW=5\\xb86\\xe9\\xaa\\xf4q\\x96O\\x8c\\xf5\\xd3\\xb5\\x82\\xd4\\xc0\\xd4\\x1a\\x0b' \\\n      b'\\xaf\\x89/\\x89\\xc2\\xd5AM\\x9b\\xfb\\x1f\\xf9\\n\\x0ft\\x14\\xb0\\xb4\\xf1\\xbd,kF\\x9a\\x97\\xe1t\\xecr7R\\x85\\r\\x0b)\\xe1{' \\\n      b'\\xf9\\x9a\\xbd\\xaeo\\x9eS\\xb0\\xf5\\xe8q\\xf4\\x1fw\\x19B\\xc5~\\xde\\xb2\\xc2\\x96L\\xb2\\xa9)\\xb87&\\x17\\xe8\\x85\\xcd\\xc29' \\\n      b'\\xa0\\x8aK\\xd1\\xaer\\xfb\\xd1\\xca\\xc1\\xb4\\xfb.\\x1f\\xfb\\x89\\xe7\\xc3\\x83\\xf6\\x98\\xa9(x\\x1d\\xcf\\xbf4,' \\\n      b'\\x9d\\xa1\\x10\\xb9\\xb5\\\\m\\xe7\\xf5\\xe6\\xfa0k\\xa2\\x83\\x92\\xda\\xe2W\\xe7\\xd1Uwc\\xab?W\\xa4\\xbdK\\xe4m&3\\xd8YJ\\x9c' \\\n      b'\\x1dep\\xb9\\x17\\xf66\\xbd\\xb3_\\x9b\\x1d\\xa7MQndO\\xf0\\xd5m\\xb1\\xeaq\\xd1\\xdf\\xdd\\x90v\\xa8j\\xa6J\\xd1\\x8f\\xbax7k0~5' \\\n      b'\\x1e\\x93\\x1b~:\\xf6\\xcb\\x97\\xfc\\xf6+}\\x7f\\xa5\\xa1\\xd0\\xa3\\xd8M}<.\\xc7%\\x17\\x8c:\\x94dvk\\xce\\x18{' \\\n      b'K5\\x9c\\xe8+Ogu\\x8bM\\t\\x89k\\xa0\\xf9\\xbdO\\xc1\\x8b\\xa9\\xdfi\\xe3\\x92\\xa3V-\\x9a\\xd5K\\xf4\\x1d\\r\\x93\\x1c\\xb6\\xd5' \\\n      b'\\xd0Q\\xc58\\xd3\\xdc\\x8b\\x0cxP\\xaac\\x96\\x96\\xc7G\\xdb\\xed\\xfc\\xafS\\xad\\x89\\x8f\\x15_wFy\\x06\\xf7\\xfaZ&-4_\\x97(' \\\n      b'\\x0f\\xc9\\xd3\\xba\\xc5\\xafo\\xc8\\x83\\x9b4\\xbe\\x8aS\\xac\\xcf<Q\\xbb@t90\\xa0\\x8b\\xab\\x9eH,' \\\n      b'\\n^A\\x90qs\\xbav\\xb9~\\xd7\\xaa\\xcd^4F\\x7f\\xce\\xa1\\xf9\\xa7>x\\xc9\\xb3b\\xfe\\xf6\\xed\\xc5Y\\x94\\xee\\x96\\xa9\\xc2\\x85' \\\n      b'\\xbb\\xc5H?\\xaa\\xc9\\xd5\\x97\\xb63|j\\xe2\\xa9\\xb8\\xd2\\x8b\\\\\\x998[' \\\n      b'q}v\\xb2d\\x89\\x9dsh\\xad>\\xafl/vk\\xf3\\n\\xeb\\xcc\\xa3]\\x8a\\xf8\\xb0 ' \\\n      b'\\x92A\\xeat\\x81>\\x17\\'o\\x8c\\xb5r\\x03\\xe9\\xd9R\\x9fP@\\xc4\\x159{' \\\n      b'!\\xd4H$\\xfe\\x84\\x0bw\\x85\\x98=9\\xdb\\xa4\\xedYoh\\x95\\x05\\xb2\\xfc\\xd3\\xe3\\xa6$\\x8ac\\xd0\\xbd\\x1e\\xf9>\\x99n\\xeaE' \\\n      b'\\x8e\\x14\\xa3\\x93\\xbe\\x15xr>A\\xe4\\xb6\\x1a\\xba\\xb7\\xbf\\xa7\\xcbm\\x80\\xb6c*a\\x7f\\xfb;\\x1bgTD\\x0c\\xf6\\xd9\\x97\\x96' \\\n      b'*n\\xe2|w\\xdd\\xb57\\xbb\\x1aB%\\xdd\\x9dc\\xf0\\xaa\\x1ej\\xc9\\xcb\\xfb\\xf6\\x99W\\xc6\\x91D\\xd7\\x9e}\\xaa\\xe0\\xb7W\\xd7' \\\n      b'\\x8f{\\x15_6\\xf4<\\xa5\\xab\\xdb\\xaf]\\xcbr\\xc7\\x88\\x03\\xa9\\xe7\\xa6\\xa5\\xcd\\x81\\xc6\\xda\\'\\x0f\\x8c\\x1dKO]\\xcax\\xbc3' \\\n      b'\\xbao\\xb2\\xd2\\xbc\\xf3\\x18v\\xfd\\xbd\\x93\\xd8\\xad\\x161\\xde\\xfcp\\xc15qB\\xe6\\xe9,U\\x93,' \\\n      b'\\xe5\\xbccE\\x85\\x01\\x89\\xcf\\n\\xdd\\xba\\xcf\\x1a:\\xfaXS\\xe5s?\\xd3\\\\9\\xd9\\xbb\\xe2\\xef\\xea\\xe8\\xe4e\\\\J\\xc1s\\xc7' \\\n      b'/\\x97\\x9dL\\xcdG\\x13\\xdaQ6\\xad:#\\x94n\\xaf%j\\x01u\\xeb\\x99\\xd5\\x9d\\xaf\\xf6>/}X\\xc1Ril\\xd31D$\\x94\\xccEa\\x1a\\x91u' \\\n      b'\\xe3G\\x84r\\xc3\\xea*i(\\x8ai\\xe7\\x91Wnyc\\xd5\\xb2\\xbe\\xda\\xc8\\x1b\\xf5\\xb8zI\\x87\\xd7\\xd1Y\\xf6w\\x88\\x92\\xe9.\\x15' \\\n      b'\\x16\\xea\\x9egx\\twz3N\\x1b\\x0c\\x1c\\xf1]v\\xf3P\\rh\\t\\xacZ%y\\xc9\\x1dT\\x92Y\\xf3\\x14\\xd6\\xd3\\x14\\xdd\\xe7\\xfa\\xf9\\xbd' \\\n      b'\\x0b\\xb5Z\\xcev\\xbd\\x10]\\x91\\x94\"\\x97i\\xb7\\xa7/\\xbd\\xbf\\xbdF\\x13\\x15\\x97g\\xdey\\x99b$\\x1b\\xd7\\x1d\\xde\\xac\\x86e' \\\n      b'\\xdb8k\\x94\\xbc\\xe9y\\xa8\\xb2\\xd3\\x8d\\xf4\\x81`\\xab\\x9cg]e\\xe5\\x1e\\x18w6\\xbeOu2!\\x1d\\xfeG\\x87\\xf9)\\xb7\\xf5\\x9d5' \\\n      b'\\x17\\xa6\\xd4\\xf7\\xd4\\x16\\x15,S\\xf6I?Q\\x9f&\\xe6\\x8d\\xeb\\x8e\\x84\\xc4\\x07\\x126\\xd7\\xf4\\x96V\\xe8\\xfbt\\r\\x8a\\xaf' \\\n      b'\\xfd\\xab\\xc4\\x99\\xbff(3\"\\xd8R\\xe7\\xf7\\x86m\\xf5N\\xe2A\\xa6\\x04\\xd3{\\xba\\xd9]\\xe5\\x97\\x16\\'\\x8b\\xd7\\x13{' \\\n      b'\\xc2\\x82\\xdf\\xe3T\\xc4\\x92n^\\x96\\xcf\\xde\\xde\\x84*:a\\xd4\\xbc\\xdd@\\xd4\\x05e\\xc5\\xb6\\x16Y\\xa5,' \\\n      b'\"\\xf1\\xe0\\xe0\\xd9\\xe81\\x89G\\x88\\xdai\\xab\\x0b\\x91Xn\\xd3\\xe0\\x91\\xe5\\r\\xf7}\\x9c\\xec\\\\\\x1d\\xec{' \\\n      b'u\\xadc\\xde\\x07\\\\9\\xf5\\x987e\\xa0l\\x1a\\x95\\x11\\xd2\\xed_\\x97QRb\\x9e\\x8e\\x7f ' \\\n      b'\\xca\\xe5\\x84\\x1bI}p\\xc8\\xdf*\\xeaMg\\xe3G\\xae7\\x1an-$\\x8e\\x856\\xfe\\xa3\\xc6u\\r%\\xbb\\xae\\xd8{' \\\n      b'\\xa8\\xf4\\r\\xe5\\x99\\x897\\xbe\\xa6\\xd6\\xcaq5iD\\xbf1\\xccS\\xbb\\x11\\xee\\xd6{' \\\n      b'\\xed\\xe6\\xa9\\xa9\\x9b\\x8es\\x96\\xb16)\\xe4\\xec\\xf2\\xb0\\xee\\xa8\\x9a\\xf8\\x85\\xbcC,' \\\n      b'SD\\x9b\\xc5\\x8f\\xd65\\x033\\xec\\x81,e\\xdcI\\x92\\xed\\xaf)e\\x0e\\xc5\\x91\\x02o^d\\x94^:<\\xa9\\x99\\xb0\\x8c\\xeb\\x88}>\\xc1' \\\n      b'\\x1e#pP*\\xfa\\xdd\\x87\\x1c\\xaa\\x18\\xd1MH\\xf0\\xf0\\x8bYv\\xf1\\xe2\\xc9\\xca\\xa7\\r\\x05\\xde\\xde\\x9c1\\xadmzz\\xfcZ\\xd6' \\\n      b'\\x82\\xb9%2\\xbc<\"b\\xcd>\\xc2^dL\\xa8\\x9fF(\\xbf\\x8d\\xc4\\xd7YZ\\x8c\\xde\\xf8\\xb1\\xe2\\xec\\xbd\\x8dRjr[' \\\n      b'\\xd9\\x076\\xbb\\xbd\\xfd\\xcd\\xd7\\x9b\\x93\\x8b\\xf8%]1i\\xa4\\xf1\\x18\\n\\x83O\\xaf\\xe0m?\\x10\\xc1\\xf35\\xc0\\x82O=\\xad' \\\n      b'\\'\\xa2\\x88`\\xa1\\xe6\\x85\\xd9H\\xc3O\\xb6\\xcc\\x8f\\xccsg\\x8d!;\\x178,' \\\n      b'\\x06=\\x0b\\xe7\\x13n\\x0e\\x0f\\x1e^\\xe8=\\xeb\\xc9-\\xd2K<\\x89_\\x9f>\\xbd\\xb8\\xe4\\xd2\\xad ' \\\n      b'\\x7fr\\xbbs\\xf4\\xc9\\x972F\\r\\xd1O\\'N%\\x12y\\xaau\\x95\\xa4\\x03DTB1E\\xe2K\\x92\\xcd\\xed\\xb44\\xc1\\xa7B\\x17c\\xe3H\\xac' \\\n      b'\\xa2\\xa5\\x97GLI~e\\x84\\xa1\\xf6\\xccqY\\xdc\\xe8_\\xd4\\x1a\\\\\\xd8>r\\xff\\x0e\\xe36\\xb4\\xd8\\xe1\\xcfg\\xb4\\xdc\\xfe\\xaa=W7' \\\n      b'._7B\\xf9X\\xdd\\xbc\\xf7\\xe0\\xf4]\\x9f.J4\\x9b\\xd3(\\x1a\\x9dU\\x91\\x92^\\xfe\\xca\\x1f+\\xf0dbv\\xa9U\\xd4$:(' \\\n      b'A\\xa9i\\x8e\\x8c\\x91\\xf7\\xf1\\x97\\xbe\\xe3x2\\xee\\x85V\\xe5S3;dQ\\xf5#\\xefV\"\\xa1\\xc8u[' \\\n      b'\\x1a\\xc7\\xf0y\\xc2\\xb7\\xa6Qj\\xf8\\xd6\\x7f\\x1e~\\xf4S\\xd3\\n\\xf8\\x86\\xff\\xdb?\\x8a\\xed\\xdf\\xa9\\xc4\\xdf\\xc2:\\xffP' \\\n      b'\\xfb[3\\xb8i^\\xf5\\x91\\xf6\\xcf~\\x82q\\xcb+\\x96\\x1f\\x03\\xdf\\xfb\\n\\xca\\xe6b?_d\\x9d\\xaf|Z\\xfb\\xe4\\x97\\x1a\\xa3\\xe7' \\\n      b'\\xe8k\\x8c\\xb0\\xfdRC\\xea\\x97\\x1a\\xa4_j\\xe07\\xd0\\xd7h\\x13\\xa2\\xaf\\xa1\\xad\\xf1\\xbf\\xe0\\xaa\\x8eR\\x02.\\t9\\xd7' \\\n      b'\\xf0zuI:&y\\xfd\\xc2\\xcd\\xaeW\\x83\\xda\\xd5\\x0f/;\\\\\\x8d\\x9c\\xff\\x1c!\\xe0\\x15\\xc0\\xd1\\x9a\\xb3\\x86-\\x94~K\\xd2\\x7f' \\\n      b'\\xa7T\\xe8\\x9cC\\xd2\\x1f_\\xcav(?\\xbd\\xad\\xd8\\xfa\\x8f\\x80\\xfa\\x0f\\xda\\x0e\\xa78_\\x1f87\\x7f<_}L\\xc7\\xa45\\xc7p\\xa5p' \\\n      b'\\xc0^3\\xa1\\x1f\\x13\\xb5\"\\x9b6\\x7f<\\x92klP\\xb65\\x07\\xf3{' \\\n      b'aP\\'I\\xdf\\xc9\\xe7p\\xc2\\n:!3Hw\\xbf\\xf2\\x07m/]\\xdd\\xbe\\xe0\\x8c\\xcd\\xe53k\\xc8\\xde\\xafmu\\x91\\xc2\\x07yj\\xcf\\xb6' \\\n      b'\\xacsX\\xfc\\x7fK(\\x83%\\xc0\\x12`\\t\\xb0\\x04X\\x02,\\x01\\x96\\x00K0a\\x89\\xbd`\\t\\xb0\\x04X\\x02,' \\\n      b'\\x01\\x96\\x00K\\x80%\\xc0\\x12LXB\\t,\\x01\\x96\\x00K\\x80%\\xc0\\x12`\\t\\xb0\\x04X\\x82\\tK\\xa8\\x82%\\xc0\\x12`\\t\\xb0\\x04X' \\\n      b'\\x02,\\x01\\x96\\x00K0a\\t5\\xb0\\x04X\\x02,\\x01\\x96\\x00K\\x80%\\xc0\\x12`\\t&,' \\\n      b'\\xa1\\x0e\\x96\\x00K\\x80%\\xc0\\x12`\\t\\xb0\\x04X\\x02,\\xc1\\x84%4\\xc0\\x12`\\t\\xb0\\x04X\\x02,' \\\n      b'\\x01\\x96\\x00K\\x80%\\x98\\xb0\\x84&X\\x02,' \\\n      b'\\x01\\x96\\x00K\\x80%\\xc0\\x12`\\t\\xb0\\x04\\x13\\x96@\\x83%\\xc0\\x12`\\t\\xb0\\x04X\\x02,' \\\n      b'\\x01\\x96\\x00K0a\\x89c`\\t\\xb0\\x04X\\x02,' \\\n      b'\\x01\\x96\\x00K\\x80%\\xc0\\x12LX\\x02\\x0b\\x96\\x00K\\x80%\\xc0\\x12`\\t\\xb0\\x04X\\x02,' \\\n      b'\\xc1\\x84%\\xdc\\xc0\\x12`\\t\\xb0\\x04X\\x02,\\x01\\x96\\x00K\\x80%\\x98\\xb0\\x84;X\\x02,' \\\n      b'\\x01\\x96\\x00K\\x80%\\xc0\\x12`\\t\\xb0\\x04\\x13\\x96\\xf0\\x00K\\x80%\\xc0\\x12`\\t\\xb0\\x04X\\x02,' \\\n      b'\\x01\\x96`\\xc2\\x12\\x9e`\\t\\xb0\\x04X\\x02,\\x01\\x96\\x00K\\x80%\\xc0\\x12\\xffl\\x89\\r,' \\\n      b'[\\x10\\xff\\xac\\x89\\x1f\\xd7\\x0eD\\xf9y\\xc4O[' \\\n      b'\\xa8|\\xb7\\x05\\xe39\\x13N\\xfa\\xb3\\xcb\\x19\\xcf\\xa5\\t\\xd0\\x9fS\\xcax\\xee\\x13\\x92\\xfeL2\\xc6sJ;\\xe9\\xcf\\x1fa<\\x17&C' \\\n      b'\\xbf\\xd78\\xe3\\xb9&e\\xfa}E\\x19\\xcfm\\xd1\\xa2\\xdfC\\x8c\\xf1\\x9c\\xab.\\xfd~!\\x8c\\xe7\\xee\\x18\\xd1\\xaf\\rf<\\xb7lI\\xbf' \\\n      b'\\x0e\\x88\\xf1\\xdc\\x1f\\x8e\\xf4s~\\x19\\xcf%\\xba\\xd1\\xcf\\xefa<\\xd7\\xebM\\xff/\\x8f\\xf1\\xdcn\\x7f\\xfa\\xefv\\x8c\\xe7\\xfc' \\\n      b'\\xc3\\xe8\\x8dna\\xcc\\xbe\\xf1\\xfb\\x88\\xc0\\xb7\\xfb\\x1c+\\x02\\xf10\\xe2\\xfb\\xcb\\x7f\\x03PK\\x03\\x04\\x14\\x00\\x02\\x00' \\\n      b'\\x08\\x00\\x1b\\xad|(\\x93u\\xdc\\xc8\\xf9\\t\\x00\\x00V\\x88\\x00\\x00\\t\\x00\\x00\\x00lib ' \\\n      b'f.zip\\xed\\xddWPS\\xdb\\x1a\\x07\\xf0H\\x118t\\x95C\\x00\\xb1Q\"H\\x95\\x1a\\xc4\\xa0\\xdc#\\xbd\\tH\\x95b(' \\\n      b'Q\\x8a\\xe8\\r-\\x14+G\\xe9\\x10\\x01)F\\x94\\x8e(QDz\\xb3%\\xa0 \\x08\\xa2 ' \\\n      b'RT\\x04\\xa4\\xb7C\\t\\x88\\x1c\\xbd\\x8e\\xf7\\xc6\\x87373y\\xfd\\xf6~X{\\xcd\\xda\\xff\\xf9^\\x7f\\xb3\\xf7*\\x16\\xc6\\xacl[\\x10,' \\\n      b'\\x08ND\\xdb\\x9d\\xb0\\xddT\\xd7\\xf1\\r\\x92\\x9c\\x08\\xc4F<\\x02\\xf1\\x1b\\x02\\x81\\xc0\\xfa\\xf9y\\xefPQ\\x089qj\\xb2\\xcf[' \\\n      b'\\xd3zu\\x1b\\xc7\\x8c\\x14%j+\\x97\\x90D\\xaa\\xb4\\x04:9\\xd4=\\xb7\\xe3O\\xc1@\\xa4\\xe0\\xae\\n\\x11\\x93)\\xa1\\xac\\xba\\xed' \\\n      b'\\x96\\x81\\xe4Fy\\xd3\\x08I\\xc7M\\xff\\xe6\\xefK.q\\xa2J%y?\\xae\\xf4I\\x15\\xac\\xba4Jj%\\x9cnun\\xc3g\\xe2\\x9co\\xd0\\x8a\\x17' \\\n      b'\\xb0\\xfb\\x1bF\\xd6\\xd7\\xc9\\x0bs\\xa5\\x99\\x01\\xb4\\xb5\\x17\\\\\\xb5\\xd7(' \\\n      b'\\x89\\xa6M.\\x89\\xdd\\x17\\x12\\xd7\\x90Oz:\\xf40l\\x86\\\\\\x87\\x04v\\xb2\\x1d$\\x19\\x9aa6\\x90\\xcf\\xdc\\x17\\x95}\\xe4' \\\n      b'~#}\\x83y\\\\\\xee\\x8e[\\xb6\\xf8\\xfd\\x81\\x8a&\\xf9\")&\\xd9\\xbe\\xc2\\xad\\x96Ra\\x05\\xb8\\x0bu\\x1f\\xf79Jd\\xe7\\x16\\x1a' \\\n      b'\\x04Kxh\\x1cNO[{0t\\xcb\\x8b\\x1cU\\xdb\\x94w[' \\\n      b'\\x10]\\xbfh\\xa4\\x97#\\xd3hgZ\\x93\\x13T\\xa0E\\xc8\\xbb\\\\\\x14\\xaah\\x8a\\x9a\\xaa\\xc6,' \\\n      b'\\xb6\\x86N\\xd4\\xd7\\\\\\xec\\xb7\\xd5\\xde\\xef\\x9bB\\x9e?\\xa0\\x7f\\xfd\\xebB\\r\\xcf\\x99\\xedd\\xb3\\xecXsL~.\\xcd,' \\\n      b'(\\x95\\xb5\\x9c\\xd3;\\xd9c[\\xb8\\xad\\xca]\\x9f\\x86\\xee\\xe9\\x0f:KG\\x1c\\xadX\\x91\\xfcZ8r\\xc5\\xca&\\xf3\\x10\\x13\\x87[' \\\n      b'\\xb1\\xca!\\xb6\\x1e\\n\\x16\\x9e\\x1a{\\xde\\x18kW=5\\xb86\\xe9\\xaa\\xf4q\\x96O\\x8c\\xf5\\xd3\\xb5\\x82\\xd4\\xc0\\xd4\\x1a\\x0b' \\\n      b'\\xaf\\x89/\\x89\\xc2\\xd5AM\\x9b\\xfb\\x1f\\xf9\\n\\x0ft\\x14\\xb0\\xb4\\xf1\\xbd,kF\\x9a\\x97\\xe1t\\xecr7R\\x85\\r\\x0b)\\xe1{' \\\n      b'\\xf9\\x9a\\xbd\\xaeo\\x9eS\\xb0\\xf5\\xe8q\\xf4\\x1fw\\x19B\\xc5~\\xde\\xb2\\xc2\\x96L\\xb2\\xa9)\\xb87&\\x17\\xe8\\x85\\xcd\\xc29' \\\n      b'\\xa0\\x8aK\\xd1\\xaer\\xfb\\xd1\\xca\\xc1\\xb4\\xfb.\\x1f\\xfb\\x89\\xe7\\xc3\\x83\\xf6\\x98\\xa9(x\\x1d\\xcf\\xbf4,' \\\n      b'\\x9d\\xa1\\x10\\xb9\\xb5\\\\m\\xe7\\xf5\\xe6\\xfa0k\\xa2\\x83\\x92\\xda\\xe2W\\xe7\\xd1Uwc\\xab?W\\xa4\\xbdK\\xe4m&3\\xd8YJ\\x9c' \\\n      b'\\x1dep\\xb9\\x17\\xf66\\xbd\\xb3_\\x9b\\x1d\\xa7MQndO\\xf0\\xd5m\\xb1\\xeaq\\xd1\\xdf\\xdd\\x90v\\xa8j\\xa6J\\xd1\\x8f\\xbax7k0~5' \\\n      b'\\x1e\\x93\\x1b~:\\xf6\\xcb\\x97\\xfc\\xf6+}\\x7f\\xa5\\xa1\\xd0\\xa3\\xd8M}<.\\xc7%\\x17\\x8c:\\x94dvk\\xce\\x18{' \\\n      b'K5\\x9c\\xe8+Ogu\\x8bM\\t\\x89k\\xa0\\xf9\\xbdO\\xc1\\x8b\\xa9\\xdfi\\xe3\\x92\\xa3V-\\x9a\\xd5K\\xf4\\x1d\\r\\x93\\x1c\\xb6\\xd5' \\\n      b'\\xd0Q\\xc58\\xd3\\xdc\\x8b\\x0cxP\\xaac\\x96\\x96\\xc7G\\xdb\\xed\\xfc\\xafS\\xad\\x89\\x8f\\x15_wFy\\x06\\xf7\\xfaZ&-4_\\x97(' \\\n      b'\\x0f\\xc9\\xd3\\xba\\xc5\\xafo\\xc8\\x83\\x9b4\\xbe\\x8aS\\xac\\xcf<Q\\xbb@t90\\xa0\\x8b\\xab\\x9eH,' \\\n      b'\\n^A\\x90qs\\xbav\\xb9~\\xd7\\xaa\\xcd^4F\\x7f\\xce\\xa1\\xf9\\xa7>x\\xc9\\xb3b\\xfe\\xf6\\xed\\xc5Y\\x94\\xee\\x96\\xa9\\xc2\\x85' \\\n      b'\\xbb\\xc5H?\\xaa\\xc9\\xd5\\x97\\xb63|j\\xe2\\xa9\\xb8\\xd2\\x8b\\\\\\x998[' \\\n      b'q}v\\xb2d\\x89\\x9dsh\\xad>\\xafl/vk\\xf3\\n\\xeb\\xcc\\xa3]\\x8a\\xf8\\xb0 ' \\\n      b'\\x92A\\xeat\\x81>\\x17\\'o\\x8c\\xb5r\\x03\\xe9\\xd9R\\x9fP@\\xc4\\x159{' \\\n      b'!\\xd4H$\\xfe\\x84\\x0bw\\x85\\x98=9\\xdb\\xa4\\xedYoh\\x95\\x05\\xb2\\xfc\\xd3\\xe3\\xa6$\\x8ac\\xd0\\xbd\\x1e\\xf9>\\x99n\\xeaE' \\\n      b'\\x8e\\x14\\xa3\\x93\\xbe\\x15xr>A\\xe4\\xb6\\x1a\\xba\\xb7\\xbf\\xa7\\xcbm\\x80\\xb6c*a\\x7f\\xfb;\\x1bgTD\\x0c\\xf6\\xd9\\x97\\x96' \\\n      b'*n\\xe2|w\\xdd\\xb57\\xbb\\x1aB%\\xdd\\x9dc\\xf0\\xaa\\x1ej\\xc9\\xcb\\xfb\\xf6\\x99W\\xc6\\x91D\\xd7\\x9e}\\xaa\\xe0\\xb7W\\xd7' \\\n      b'\\x8f{\\x15_6\\xf4<\\xa5\\xab\\xdb\\xaf]\\xcbr\\xc7\\x88\\x03\\xa9\\xe7\\xa6\\xa5\\xcd\\x81\\xc6\\xda\\'\\x0f\\x8c\\x1dKO]\\xcax\\xbc3' \\\n      b'\\xbao\\xb2\\xd2\\xbc\\xf3\\x18v\\xfd\\xbd\\x93\\xd8\\xad\\x161\\xde\\xfcp\\xc15qB\\xe6\\xe9,U\\x93,' \\\n      b'\\xe5\\xbccE\\x85\\x01\\x89\\xcf\\n\\xdd\\xba\\xcf\\x1a:\\xfaXS\\xe5s?\\xd3\\\\9\\xd9\\xbb\\xe2\\xef\\xea\\xe8\\xe4e\\\\J\\xc1s\\xc7' \\\n      b'/\\x97\\x9dL\\xcdG\\x13\\xdaQ6\\xad:#\\x94n\\xaf%j\\x01u\\xeb\\x99\\xd5\\x9d\\xaf\\xf6>/}X\\xc1Ril\\xd31D$\\x94\\xccEa\\x1a\\x91u' \\\n      b'\\xe3G\\x84r\\xc3\\xea*i(\\x8ai\\xe7\\x91Wnyc\\xd5\\xb2\\xbe\\xda\\xc8\\x1b\\xf5\\xb8zI\\x87\\xd7\\xd1Y\\xf6w\\x88\\x92\\xe9.\\x15' \\\n      b'\\x16\\xea\\x9egx\\twz3N\\x1b\\x0c\\x1c\\xf1]v\\xf3P\\rh\\t\\xacZ%y\\xc9\\x1dT\\x92Y\\xf3\\x14\\xd6\\xd3\\x14\\xdd\\xe7\\xfa\\xf9\\xbd' \\\n      b'\\x0b\\xb5Z\\xcev\\xbd\\x10]\\x91\\x94\"\\x97i\\xb7\\xa7/\\xbd\\xbf\\xbdF\\x13\\x15\\x97g\\xdey\\x99b$\\x1b\\xd7\\x1d\\xde\\xac\\x86e' \\\n      b'\\xdb8k\\x94\\xbc\\xe9y\\xa8\\xb2\\xd3\\x8d\\xf4\\x81`\\xab\\x9cg]e\\xe5\\x1e\\x18w6\\xbeOu2!\\x1d\\xfeG\\x87\\xf9)\\xb7\\xf5\\x9d5' \\\n      b'\\x17\\xa6\\xd4\\xf7\\xd4\\x16\\x15,S\\xf6I?Q\\x9f&\\xe6\\x8d\\xeb\\x8e\\x84\\xc4\\x07\\x126\\xd7\\xf4\\x96V\\xe8\\xfbt\\r\\x8a\\xaf' \\\n      b'\\xfd\\xab\\xc4\\x99\\xbff(3\"\\xd8R\\xe7\\xf7\\x86m\\xf5N\\xe2A\\xa6\\x04\\xd3{\\xba\\xd9]\\xe5\\x97\\x16\\'\\x8b\\xd7\\x13{' \\\n      b'\\xc2\\x82\\xdf\\xe3T\\xc4\\x92n^\\x96\\xcf\\xde\\xde\\x84*:a\\xd4\\xbc\\xdd@\\xd4\\x05e\\xc5\\xb6\\x16Y\\xa5,' \\\n      b'\"\\xf1\\xe0\\xe0\\xd9\\xe81\\x89G\\x88\\xdai\\xab\\x0b\\x91Xn\\xd3\\xe0\\x91\\xe5\\r\\xf7}\\x9c\\xec\\\\\\x1d\\xec{' \\\n      b'u\\xadc\\xde\\x07\\\\9\\xf5\\x987e\\xa0l\\x1a\\x95\\x11\\xd2\\xed_\\x97QRb\\x9e\\x8e\\x7f ' \\\n      b'\\xca\\xe5\\x84\\x1bI}p\\xc8\\xdf*\\xeaMg\\xe3G\\xae7\\x1an-$\\x8e\\x856\\xfe\\xa3\\xc6u\\r%\\xbb\\xae\\xd8{' \\\n      b'\\xa8\\xf4\\r\\xe5\\x99\\x897\\xbe\\xa6\\xd6\\xcaq5iD\\xbf1\\xccS\\xbb\\x11\\xee\\xd6{' \\\n      b'\\xed\\xe6\\xa9\\xa9\\x9b\\x8es\\x96\\xb16)\\xe4\\xec\\xf2\\xb0\\xee\\xa8\\x9a\\xf8\\x85\\xbcC,' \\\n      b'SD\\x9b\\xc5\\x8f\\xd65\\x033\\xec\\x81,e\\xdcI\\x92\\xed\\xaf)e\\x0e\\xc5\\x91\\x02o^d\\x94^:<\\xa9\\x99\\xb0\\x8c\\xeb\\x88}>\\xc1' \\\n      b'\\x1e#pP*\\xfa\\xdd\\x87\\x1c\\xaa\\x18\\xd1MH\\xf0\\xf0\\x8bYv\\xf1\\xe2\\xc9\\xca\\xa7\\r\\x05\\xde\\xde\\x9c1\\xadmzz\\xfcZ\\xd6' \\\n      b'\\x82\\xb9%2\\xbc<\"b\\xcd>\\xc2^dL\\xa8\\x9fF(\\xbf\\x8d\\xc4\\xd7YZ\\x8c\\xde\\xf8\\xb1\\xe2\\xec\\xbd\\x8dRjr[' \\\n      b'\\xd9\\x076\\xbb\\xbd\\xfd\\xcd\\xd7\\x9b\\x93\\x8b\\xf8%]1i\\xa4\\xf1\\x18\\n\\x83O\\xaf\\xe0m?\\x10\\xc1\\xf35\\xc0\\x82O=\\xad' \\\n      b'\\'\\xa2\\x88`\\xa1\\xe6\\x85\\xd9H\\xc3O\\xb6\\xcc\\x8f\\xccsg\\x8d!;\\x178,' \\\n      b'\\x06=\\x0b\\xe7\\x13n\\x0e\\x0f\\x1e^\\xe8=\\xeb\\xc9-\\xd2K<\\x89_\\x9f>\\xbd\\xb8\\xe4\\xd2\\xad ' \\\n      b'\\x7fr\\xbbs\\xf4\\xc9\\x972F\\r\\xd1O\\'N%\\x12y\\xaau\\x95\\xa4\\x03DTB1E\\xe2K\\x92\\xcd\\xed\\xb44\\xc1\\xa7B\\x17c\\xe3H\\xac' \\\n      b'\\xa2\\xa5\\x97GLI~e\\x84\\xa1\\xf6\\xccqY\\xdc\\xe8_\\xd4\\x1a\\\\\\xd8>r\\xff\\x0e\\xe36\\xb4\\xd8\\xe1\\xcfg\\xb4\\xdc\\xfe\\xaa=W7' \\\n      b'._7B\\xf9X\\xdd\\xbc\\xf7\\xe0\\xf4]\\x9f.J4\\x9b\\xd3(\\x1a\\x9dU\\x91\\x92^\\xfe\\xca\\x1f+\\xf0dbv\\xa9U\\xd4$:(' \\\n      b'A\\xa9i\\x8e\\x8c\\x91\\xf7\\xf1\\x97\\xbe\\xe3x2\\xee\\x85V\\xe5S3;dQ\\xf5#\\xefV\"\\xa1\\xc8u[' \\\n      b'\\x1a\\xc7\\xf0y\\xc2\\xb7\\xa6Qj\\xf8\\xd6\\x7f\\x1e~\\xf4S\\xd3\\n\\xf8\\x86\\xff\\xdb?\\x8a\\xed\\xdf\\xa9\\xc4\\xdf\\xc2:\\xffP' \\\n      b'\\xfb[3\\xb8i^\\xf5\\x91\\xf6\\xcf~\\x82q\\xcb+\\x96\\x1f\\x03\\xdf\\xfb\\n\\xca\\xe6b?_d\\x9d\\xaf|Z\\xfb\\xe4\\x97\\x1a\\xa3\\xe7' \\\n      b'\\xe8k\\x8c\\xb0\\xfdRC\\xea\\x97\\x1a\\xa4_j\\xe07\\xd0\\xd7h\\x13\\xa2\\xaf\\xa1\\xad\\xf1\\xbf\\xe0\\xaa\\x8eR\\x02.\\t9\\xd7' \\\n      b'\\xf0zuI:&y\\xfd\\xc2\\xcd\\xaeW\\x83\\xda\\xd5\\x0f/;\\\\\\x8d\\x9c\\xff\\x1c!\\xe0\\x15\\xc0\\xd1\\x9a\\xb3\\x86-\\x94~K\\xd2\\x7f' \\\n      b'\\xa7T\\xe8\\x9cC\\xd2\\x1f_\\xcav(?\\xbd\\xad\\xd8\\xfa\\x8f\\x80\\xfa\\x0f\\xda\\x0e\\xa78_\\x1f87\\x7f<_}L\\xc7\\xa45\\xc7p\\xa5p' \\\n      b'\\xc0^3\\xa1\\x1f\\x13\\xb5\"\\x9b6\\x7f<\\x92klP\\xb65\\x07\\xf3{' \\\n      b'aP\\'I\\xdf\\xc9\\xe7p\\xc2\\n:!3Hw\\xbf\\xf2\\x07m/]\\xdd\\xbe\\xe0\\x8c\\xcd\\xe53k\\xc8\\xde\\xafmu\\x91\\xc2\\x07yj\\xcf\\xb6' \\\n      b'\\xacsX\\xfc\\x7fK(\\x83%\\xc0\\x12`\\t\\xb0\\x04X\\x02,\\x01\\x96\\x00K0a\\x89\\xbd`\\t\\xb0\\x04X\\x02,' \\\n      b'\\x01\\x96\\x00K\\x80%\\xc0\\x12LXB\\t,\\x01\\x96\\x00K\\x80%\\xc0\\x12`\\t\\xb0\\x04X\\x82\\tK\\xa8\\x82%\\xc0\\x12`\\t\\xb0\\x04X' \\\n      b'\\x02,\\x01\\x96\\x00K0a\\t5\\xb0\\x04X\\x02,\\x01\\x96\\x00K\\x80%\\xc0\\x12`\\t&,' \\\n      b'\\xa1\\x0e\\x96\\x00K\\x80%\\xc0\\x12`\\t\\xb0\\x04X\\x02,\\xc1\\x84%4\\xc0\\x12`\\t\\xb0\\x04X\\x02,' \\\n      b'\\x01\\x96\\x00K\\x80%\\x98\\xb0\\x84&X\\x02,' \\\n      b'\\x01\\x96\\x00K\\x80%\\xc0\\x12`\\t\\xb0\\x04\\x13\\x96@\\x83%\\xc0\\x12`\\t\\xb0\\x04X\\x02,' \\\n      b'\\x01\\x96\\x00K0a\\x89c`\\t\\xb0\\x04X\\x02,' \\\n      b'\\x01\\x96\\x00K\\x80%\\xc0\\x12LX\\x02\\x0b\\x96\\x00K\\x80%\\xc0\\x12`\\t\\xb0\\x04X\\x02,' \\\n      b'\\xc1\\x84%\\xdc\\xc0\\x12`\\t\\xb0\\x04X\\x02,\\x01\\x96\\x00K\\x80%\\x98\\xb0\\x84;X\\x02,' \\\n      b'\\x01\\x96\\x00K\\x80%\\xc0\\x12`\\t\\xb0\\x04\\x13\\x96\\xf0\\x00K\\x80%\\xc0\\x12`\\t\\xb0\\x04X\\x02,' \\\n      b'\\x01\\x96`\\xc2\\x12\\x9e`\\t\\xb0\\x04X\\x02,\\x01\\x96\\x00K\\x80%\\xc0\\x12\\xffl\\x89\\r,' \\\n      b'[\\x10\\xff\\xac\\x89\\x1f\\xd7\\x0eD\\xf9y\\xc4O[' \\\n      b'\\xa8|\\xb7\\x05\\xe39\\x13N\\xfa\\xb3\\xcb\\x19\\xcf\\xa5\\t\\xd0\\x9fS\\xcax\\xee\\x13\\x92\\xfeL2\\xc6sJ;\\xe9\\xcf\\x1fa<\\x17&C' \\\n      b'\\xbf\\xd78\\xe3\\xb9&e\\xfa}E\\x19\\xcfm\\xd1\\xa2\\xdfC\\x8c\\xf1\\x9c\\xab.\\xfd~!\\x8c\\xe7\\xee\\x18\\xd1\\xaf\\rf<\\xb7lI\\xbf' \\\n      b'\\x0e\\x88\\xf1\\xdc\\x1f\\x8e\\xf4s~\\x19\\xcf%\\xba\\xd1\\xcf\\xefa<\\xd7\\xebM\\xff/\\x8f\\xf1\\xdcn\\x7f\\xfa\\xefv\\x8c\\xe7\\xfc' \\\n      b'\\xc3\\xe8\\x8dna\\xcc\\xbe\\xf1\\xfb\\x88\\xc0\\xb7\\xfb\\x1c+\\x02\\xf10\\xe2\\xfb\\xcb\\x7f\\x03PK\\x01\\x02\\x14\\x00\\x14\\x00' \\\n      b'\\x02\\x00\\x08\\x00\\x1b\\xad|(\\x93u\\xdc\\xc8\\xf9\\t\\x00\\x00V\\x88\\x00\\x00\\t\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00 ' \\\n      b'\\x00\\xb6\\x81\\x00\\x00\\x00\\x00lib 3.zipPK\\x01\\x02\\x14\\x00\\x14\\x00\\x02\\x00\\x08\\x00\\x1b\\xad|(' \\\n      b'\\x93u\\xdc\\xc8\\xf9\\t\\x00\\x00V\\x88\\x00\\x00\\t\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00 \\x00\\xb6\\x81 \\n\\x00\\x00lib ' \\\n      b'1.zipPK\\x01\\x02\\x14\\x00\\x14\\x00\\x02\\x00\\x08\\x00\\x1b\\xad|(' \\\n      b'\\x93u\\xdc\\xc8\\xf9\\t\\x00\\x00V\\x88\\x00\\x00\\t\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00 \\x00\\xb6\\x81@\\x14\\x00\\x00lib ' \\\n      b'2.zipPK\\x01\\x02\\x14\\x00\\x14\\x00\\x02\\x00\\x08\\x00\\x1b\\xad|(' \\\n      b'\\x93u\\xdc\\xc8\\xf9\\t\\x00\\x00V\\x88\\x00\\x00\\t\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00 \\x00\\xb6\\x81`\\x1e\\x00\\x00lib ' \\\n      b'0.zipPK\\x01\\x02\\x14\\x00\\x14\\x00\\x02\\x00\\x08\\x00\\x1b\\xad|(' \\\n      b'\\x93u\\xdc\\xc8\\xf9\\t\\x00\\x00V\\x88\\x00\\x00\\t\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00 \\x00\\xb6\\x81\\x80(\\x00\\x00lib ' \\\n      b'4.zipPK\\x01\\x02\\x14\\x00\\x14\\x00\\x02\\x00\\x08\\x00\\x1b\\xad|(' \\\n      b'\\x93u\\xdc\\xc8\\xf9\\t\\x00\\x00V\\x88\\x00\\x00\\t\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00 \\x00\\xb6\\x81\\xa02\\x00\\x00lib ' \\\n      b'5.zipPK\\x01\\x02\\x14\\x00\\x14\\x00\\x02\\x00\\x08\\x00\\x1b\\xad|(' \\\n      b'\\x93u\\xdc\\xc8\\xf9\\t\\x00\\x00V\\x88\\x00\\x00\\t\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00 \\x00\\xb6\\x81\\xc0<\\x00\\x00lib ' \\\n      b'6.zipPK\\x01\\x02\\x14\\x00\\x14\\x00\\x02\\x00\\x08\\x00\\x1b\\xad|(' \\\n      b'\\x93u\\xdc\\xc8\\xf9\\t\\x00\\x00V\\x88\\x00\\x00\\t\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00 \\x00\\xb6\\x81\\xe0F\\x00\\x00lib ' \\\n      b'7.zipPK\\x01\\x02\\x14\\x00\\x14\\x00\\x02\\x00\\x08\\x00\\x1b\\xad|(' \\\n      b'\\x93u\\xdc\\xc8\\xf9\\t\\x00\\x00V\\x88\\x00\\x00\\t\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00 \\x00\\xb6\\x81\\x00Q\\x00\\x00lib ' \\\n      b'8.zipPK\\x01\\x02\\x14\\x00\\x14\\x00\\x02\\x00\\x08\\x00\\x1b\\xad|(' \\\n      b'\\x93u\\xdc\\xc8\\xf9\\t\\x00\\x00V\\x88\\x00\\x00\\t\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00 \\x00\\xb6\\x81 [\\x00\\x00lib ' \\\n      b'9.zipPK\\x01\\x02\\x14\\x00\\x14\\x00\\x02\\x00\\x08\\x00\\x1b\\xad|(' \\\n      b'\\x93u\\xdc\\xc8\\xf9\\t\\x00\\x00V\\x88\\x00\\x00\\t\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00 \\x00\\xb6\\x81@e\\x00\\x00lib ' \\\n      b'a.zipPK\\x01\\x02\\x14\\x00\\x14\\x00\\x02\\x00\\x08\\x00\\x1b\\xad|(' \\\n      b'\\x93u\\xdc\\xc8\\xf9\\t\\x00\\x00V\\x88\\x00\\x00\\t\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00 \\x00\\xb6\\x81`o\\x00\\x00lib ' \\\n      b'b.zipPK\\x01\\x02\\x14\\x00\\x14\\x00\\x02\\x00\\x08\\x00\\x1b\\xad|(' \\\n      b'\\x93u\\xdc\\xc8\\xf9\\t\\x00\\x00V\\x88\\x00\\x00\\t\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00 \\x00\\xb6\\x81\\x80y\\x00\\x00lib ' \\\n      b'c.zipPK\\x01\\x02\\x14\\x00\\x14\\x00\\x02\\x00\\x08\\x00\\x1b\\xad|(' \\\n      b'\\x93u\\xdc\\xc8\\xf9\\t\\x00\\x00V\\x88\\x00\\x00\\t\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00 ' \\\n      b'\\x00\\xb6\\x81\\xa0\\x83\\x00\\x00lib d.zipPK\\x01\\x02\\x14\\x00\\x14\\x00\\x02\\x00\\x08\\x00\\x1b\\xad|(' \\\n      b'\\x93u\\xdc\\xc8\\xf9\\t\\x00\\x00V\\x88\\x00\\x00\\t\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00 ' \\\n      b'\\x00\\xb6\\x81\\xc0\\x8d\\x00\\x00lib e.zipPK\\x01\\x02\\x14\\x00\\x14\\x00\\x02\\x00\\x08\\x00\\x1b\\xad|(' \\\n      b'\\x93u\\xdc\\xc8\\xf9\\t\\x00\\x00V\\x88\\x00\\x00\\t\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00 ' \\\n      b'\\x00\\xb6\\x81\\xe0\\x97\\x00\\x00lib f.zipPK\\x05\\x06\\x00\\x00\\x00\\x00\\x10\\x00\\x10\\x00p\\x03\\x00\\x00\\x00\\xa2\\x00\\x00' \\\n      b'\\x00\\x00 '\n"
  },
  {
    "path": "tests/file_handler/zip_bomb_2.py",
    "content": "zb2 = b'PK\\x03\\x04\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05\\xfbXR\\xe8\\x95v\\x00\\x00^dM\\x01\\x01\\x00\\x00\\x000\\x00\\x1f\\x00\\xe0' \\\n      b'\\xffPK\\x03\\x04\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05z)V>qv\\x00\\x00?dM\\x01\\x01\\x00\\x00\\x001\\x00\\x1f\\x00\\xe0\\xffPK' \\\n      b'\\x03\\x04\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05X>){Mv\\x00\\x00 ' \\\n      b'dM\\x01\\x01\\x00\\x00\\x002\\x00\\x1f\\x00\\xe0\\xffPK\\x03\\x04\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05x\\xda\\xd9L)v\\x00\\x00' \\\n      b'\\x01dM\\x01\\x01\\x00\\x00\\x003\\x00\\x1f\\x00\\xe0\\xffPK\\x03\\x04\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05>\\x890\\x03\\x05v' \\\n      b'\\x00\\x00\\xe2cM\\x01\\x01\\x00\\x00\\x004\\x00\\x1f\\x00\\xe0\\xffPK\\x03\\x04\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05\\x04iN9' \\\n      b'\\xe1u\\x00\\x00\\xc3cM\\x01\\x01\\x00\\x00\\x005\\x00\\x1f\\x00\\xe0\\xffPK\\x03\\x04\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05(' \\\n      b'\\xd1\\xfc\\xda\\xbdu\\x00\\x00\\xa4cM\\x01\\x01\\x00\\x00\\x006\\x00\\x1f\\x00\\xe0\\xffPK\\x03\\x04\\x14\\x00\\x00\\x00\\x08\\x00' \\\n      b'\\xa0lH\\x05\\x15\\x83\\x9f[\\x99u\\x00\\x00\\x85cM\\x01\\x01\\x00\\x00\\x007\\x00\\x1f\\x00\\xe0\\xffPK\\x03\\x04\\x14\\x00\\x00\\x00' \\\n      b'\\x08\\x00\\xa0lH\\x05d\\xcf\\x95Xuu\\x00\\x00fcM\\x01\\x01\\x00\\x00\\x008\\x00\\x1f\\x00\\xe0\\xffPK\\x03\\x04\\x14\\x00\\x00\\x00' \\\n      b'\\x08\\x00\\xa0lH\\x05!BA\\xe6Qu\\x00\\x00GcM\\x01\\x01\\x00\\x00\\x009\\x00\\x1f\\x00\\xe0\\xffPK\\x03\\x04\\x14\\x00\\x00\\x00\\x08' \\\n      b'\\x00\\xa0lH\\x05\\x90n\\xed6-u\\x00\\x00(cM\\x01\\x01\\x00\\x00\\x00A\\x00\\x1f\\x00\\xe0\\xffPK\\x03\\x04\\x14\\x00\\x00\\x00\\x08' \\\n      b'\\x00\\xa0lH\\x05#\\xf6\\xf8\\xe2\\tu\\x00\\x00\\tcM\\x01\\x01\\x00\\x00\\x00B\\x00\\x1f\\x00\\xe0\\xffPK\\x03\\x04\\x14\\x00\\x00\\x00' \\\n      b'\\x08\\x00\\xa0lH\\x05\\xa6\\xc5\\xc4\\xcf\\xe5t\\x00\\x00\\xeabM\\x01\\x01\\x00\\x00\\x00C\\x00\\x1f\\x00\\xe0\\xffPK\\x03\\x04\\x14' \\\n      b'\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05\\xe4\\x19QC\\xc1t\\x00\\x00\\xcbbM\\x01\\x01\\x00\\x00\\x00D\\x00\\x1f\\x00\\xe0\\xffPK\\x03' \\\n      b'\\x04\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05\\xb2\\x8b\\xb4u\\x9dt\\x00\\x00\\xacbM\\x01\\x01\\x00\\x00\\x00E\\x00\\x1f\\x00\\xe0' \\\n      b'\\xffPK\\x03\\x04\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05\\x88`\\xf60yt\\x00\\x00\\x8dbM\\x01\\x01\\x00\\x00\\x00F\\x00\\x1f\\x00' \\\n      b'\\xe0\\xffPK\\x03\\x04\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05\\xb7\\x15fDUt\\x00\\x00nbM\\x01\\x01\\x00\\x00\\x00G\\x00\\x1f\\x00' \\\n      b'\\xe0\\xffPK\\x03\\x04\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05\\x90\\x03\\xcdZ1t\\x00\\x00ObM\\x01\\x01\\x00\\x00\\x00H\\x00\\x1f' \\\n      b'\\x00\\xe0\\xffPK\\x03\\x04\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05\\xcfZ\\xa9;\\rt\\x00\\x000bM\\x01\\x01\\x00\\x00\\x00I\\x00\\x1f' \\\n      b'\\x00\\xe0\\xffPK\\x03\\x04\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05\\xean\\xe3e\\xe9s\\x00\\x00\\x11bM\\x01\\x01\\x00\\x00\\x00J' \\\n      b'\\x00\\x1f\\x00\\xe0\\xffPK\\x03\\x04\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05\\xba\\x7f,' \\\n      b'\\x9c\\xc5s\\x00\\x00\\xf2aM\\x01\\x01\\x00\\x00\\x00K\\x00\\x1f\\x00\\xe0\\xffPK\\x03\\x04\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05' \\\n      b'\\x95\\xfa3\\x8c\\xa1s\\x00\\x00\\xd3aM\\x01\\x01\\x00\\x00\\x00L\\x00\\x1f\\x00\\xe0\\xffPK\\x03\\x04\\x14\\x00\\x00\\x00\\x08\\x00' \\\n      b'\\xa0lH\\x05\\xbc.\\xb0\\xbe}s\\x00\\x00\\xb4aM\\x01\\x01\\x00\\x00\\x00M\\x00\\x1f\\x00\\xe0\\xffPK\\x03\\x04\\x14\\x00\\x00\\x00' \\\n      b'\\x08\\x00\\xa0lH\\x05i\\xd1\\\\\\x88Ys\\x00\\x00\\x95aM\\x01\\x01\\x00\\x00\\x00N\\x00\\x1f\\x00\\xe0\\xffPK\\x03\\x04\\x14\\x00\\x00' \\\n      b'\\x00\\x08\\x00\\xa0lH\\x05\\r\\x84\\xc0\\xda5s\\x00\\x00vaM\\x01\\x01\\x00\\x00\\x00O\\x00\\x1f\\x00\\xe0\\xffPK\\x03\\x04\\x14\\x00' \\\n      b'\\x00\\x00\\x08\\x00\\xa0lH\\x05\\xdc\\xaf,' \\\n      b'b\\x11s\\x00\\x00WaM\\x01\\x01\\x00\\x00\\x00P\\x00\\x1f\\x00\\xe0\\xffPK\\x03\\x04\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05\\x9b' \\\n      b'\\xfe\\x15\\x8d\\xedr\\x00\\x008aM\\x01\\x01\\x00\\x00\\x00Q\\x00\\x1f\\x00\\xe0\\xffPK\\x03\\x04\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH' \\\n      b'\\x05\\'%jF\\xc9r\\x00\\x00\\x19aM\\x01\\x01\\x00\\x00\\x00R\\x00\\x1f\\x00\\xe0\\xffPK\\x03\\x04\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH' \\\n      b'\\x05\\xa7\\x89\\x056\\xa5r\\x00\\x00\\xfa`M\\x01\\x01\\x00\\x00\\x00S\\x00\\x1f\\x00\\xe0\\xffPK\\x03\\x04\\x14\\x00\\x00\\x00\\x08' \\\n      b'\\x00\\xa0lH\\x05\\xe0`?\\xbd\\x81r\\x00\\x00\\xdb`M\\x01\\x01\\x00\\x00\\x00T\\x00\\x1f\\x00\\xe0\\xffPK\\x03\\x04\\x14\\x00\\x00' \\\n      b'\\x00\\x08\\x00\\xa0lH\\x05\\xba\\xa1\\xdcB]r\\x00\\x00\\xbc`M\\x01\\x01\\x00\\x00\\x00U\\x00\\x1f\\x00\\xe0\\xffPK\\x03\\x04\\x14' \\\n      b'\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05\\x88\\xb1\\xa4\\xc39r\\x00\\x00\\x9d`M\\x01\\x01\\x00\\x00\\x00V\\x00\\x1f\\x00\\xe0\\xffPK\\x03' \\\n      b'\\x04\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05jqM\\x8c\\x15r\\x00\\x00~`M\\x01\\x01\\x00\\x00\\x00W\\x00\\x1f\\x00\\xe0\\xffPK\\x03' \\\n      b'\\x04\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05\\xd1+\\xf1\\x1d\\xf1q\\x00\\x00_`M\\x01\\x01\\x00\\x00\\x00X\\x00\\x1f\\x00\\xe0' \\\n      b'\\xffPK\\x03\\x04\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05\\x12\\xf8(' \\\n      b'_\\xcdq\\x00\\x00@`M\\x01\\x01\\x00\\x00\\x00Y\\x00\\x1f\\x00\\xe0\\xffPK\\x03\\x04\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05\\x99' \\\n      b'\\xacY\\xe2\\xa9q\\x00\\x00!`M\\x01\\x01\\x00\\x00\\x00Z\\x00 ' \\\n      b'\\x00\\xdf\\xffPK\\x03\\x04\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05\\xb3\\xd5\\xf6\\x98\\x84q\\x00\\x00\\x01`M\\x01\\x02\\x00\\x00' \\\n      b'\\x0000\\x00 \\x00\\xdf\\xffPK\\x03\\x04\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05\\xb0\\xff\\x13~_q\\x00\\x00\\xe1_M\\x01\\x02\\x00' \\\n      b'\\x00\\x0001\\x00 \\x00\\xdf\\xffPK\\x03\\x04\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05\\x0c\\x9fI;:q\\x00\\x00\\xc1_M\\x01\\x02\\x00' \\\n      b'\\x00\\x0002\\x00 \\x00\\xdf\\xffPK\\x03\\x04\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05\\x18/\\xbb\\xe9\\x15q\\x00\\x00\\xa1_M\\x01' \\\n      b'\\x02\\x00\\x00\\x0003\\x00 \\x00\\xdf\\xffPK\\x03\\x04\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05\\x84\\xb37\\x0c\\xf0p\\x00\\x00' \\\n      b'\\x81_M\\x01\\x02\\x00\\x00\\x0004\\x00 \\x00\\xdf\\xffPK\\x03\\x04\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05\\xf2\\xc6T\\xd6\\xcbp' \\\n      b'\\x00\\x00a_M\\x01\\x02\\x00\\x00\\x0005\\x00 \\x00\\xdf\\xffPK\\x03\\x04\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05urkX\\xa6p\\x00' \\\n      b'\\x00A_M\\x01\\x02\\x00\\x00\\x0006\\x00 \\x00\\xdf\\xffPK\\x03\\x04\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05F\\x9b%f\\x81p\\x00' \\\n      b'\\x00!_M\\x01\\x02\\x00\\x00\\x0007\\x00 \\x00\\xdf\\xffPK\\x03\\x04\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05\\x0cb\\x0eh\\\\p\\x00' \\\n      b'\\x00\\x01_M\\x01\\x02\\x00\\x00\\x0008\\x00 \\x00\\xdf\\xffPK\\x03\\x04\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05\\x9a\\xe8 ' \\\n      b'\\x8f7p\\x00\\x00\\xe1^M\\x01\\x02\\x00\\x00\\x0009\\x00 ' \\\n      b'\\x00\\xdf\\xffPK\\x03\\x04\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05\\x8b\\x86G\\x1d\\x12p\\x00\\x00\\xc1^M\\x01\\x02\\x00\\x00' \\\n      b'\\x000A\\x00 \\x00\\xdf\\xffPK\\x03\\x04\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05\\xe3/\\x83\\xa3\\xedo\\x00\\x00\\xa1^M\\x01\\x02' \\\n      b'\\x00\\x00\\x000B\\x00 \\x00\\xdf\\xffPK\\x03\\x04\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05Bh ' \\\n      b'H\\xc8o\\x00\\x00\\x81^M\\x01\\x02\\x00\\x00\\x000C\\x00 ' \\\n      b'\\x00\\xdf\\xffPK\\x03\\x04\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05\\xb7a\\x99\\xd7\\xa3o\\x00\\x00a^M\\x01\\x02\\x00\\x00\\x000D' \\\n      b'\\x00 \\x00\\xdf\\xffPK\\x03\\x04\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05+wRl~o\\x00\\x00A^M\\x01\\x02\\x00\\x00\\x000E\\x00 ' \\\n      b'\\x00\\xdf\\xffPK\\x03\\x04\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05\\xbc\\xb0C\\xb7Yo\\x00\\x00!^M\\x01\\x02\\x00\\x00\\x000F\\x00 ' \\\n      b'\\x00\\xdf\\xffPK\\x03\\x04\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05\\xc3`\\xfb%4o\\x00\\x00\\x01^M\\x01\\x02\\x00\\x00\\x000G\\x00 ' \\\n      b'\\x00\\xdf\\xffPK\\x03\\x04\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05\\x02\\xf8X\\xa3\\x0fo\\x00\\x00\\xe1]M\\x01\\x02\\x00\\x00' \\\n      b'\\x000H\\x00 \\x00\\xdf\\xffPK\\x03\\x04\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05\\x12Y7\\x0f\\xean\\x00\\x00\\xc1]M\\x01\\x02\\x00' \\\n      b'\\x00\\x000I\\x00 \\x00\\xdf\\xffPK\\x03\\x04\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05NP\\x15\\xaf\\xc5n\\x00\\x00\\xa1]M\\x01\\x02' \\\n      b'\\x00\\x00\\x000J\\x00 \\x00\\xdf\\xffPK\\x03\\x04\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05A\\x0bB\\xb9\\xa0n\\x00\\x00\\x81]M\\x01' \\\n      b'\\x02\\x00\\x00\\x000K\\x00 \\x00\\xdf\\xffPK\\x03\\x04\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05\\x19f\\xc8x{' \\\n      b'n\\x00\\x00a]M\\x01\\x02\\x00\\x00\\x000L\\x00 ' \\\n      b'\\x00\\xdf\\xffPK\\x03\\x04\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05\\xa7\\xb0\\xfeWVn\\x00\\x00A]M\\x01\\x02\\x00\\x00\\x000M\\x00 ' \\\n      b'\\x00\\xdf\\xffPK\\x03\\x04\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05\\xed\\xd0\\r\\xb11n\\x00\\x00!]M\\x01\\x02\\x00\\x00\\x000N' \\\n      b'\\x00 ' \\\n      b'\\x00\\xdf\\xffPK\\x03\\x04\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05\\x14\\xeb\\xba\\xf1\\x0cn\\x00\\x00\\x01]M\\x01\\x02\\x00\\x00' \\\n      b'\\x000O\\x00 \\x00\\xdf\\xffPK\\x03\\x04\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05\\x9e\\x85K\\xce\\xe7m\\x00\\x00\\xe1\\\\M\\x01\\x02' \\\n      b'\\x00\\x00\\x000P\\x00 \\x00\\xdf\\xffPK\\x03\\x04\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05\\xdf\\xe7vB\\xc2m\\x00\\x00\\xc1\\\\M\\x01' \\\n      b'\\x02\\x00\\x00\\x000Q\\x00 \\x00\\xdf\\xffPK\\x03\\x04\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05\\xc1\\x92\\x03\\xc7\\x9dm\\x00\\x00' \\\n      b'\\xa1\\\\M\\x01\\x02\\x00\\x00\\x000R\\x00 \\x00\\xdf\\xffPK\\x03\\x04\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05%\\xd6\\xe2\\xa8xm\\x00' \\\n      b'\\x00\\x81\\\\M\\x01\\x02\\x00\\x00\\x000S\\x00 \\x00\\xdf\\xffPK\\x03\\x04\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05\\xfd\\x99{' \\\n      b'iSm\\x00\\x00a\\\\M\\x01\\x02\\x00\\x00\\x000T\\x00 ' \\\n      b'\\x00\\xdf\\xffPK\\x03\\x04\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05\\x02\\x05\\xcf5.m\\x00\\x00A\\\\M\\x01\\x02\\x00\\x00\\x000U' \\\n      b'\\x00 ' \\\n      b'\\x00\\xdf\\xffPK\\x03\\x04\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05\\x16u\\x88!\\tm\\x00\\x00!\\\\M\\x01\\x02\\x00\\x00\\x000V\\x00 ' \\\n      b'\\x00\\xdf\\xffPK\\x03\\x04\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05\\xc0\\x83S\\xdc\\xe4l\\x00\\x00\\x01\\\\M\\x01\\x02\\x00\\x00' \\\n      b'\\x000W\\x00 \\x00\\xdf\\xffPK\\x03\\x04\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05\\x97\\x98=x\\xbfl\\x00\\x00\\xe1[' \\\n      b'M\\x01\\x02\\x00\\x00\\x000X\\x00 \\x00\\xdf\\xffPK\\x03\\x04\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05\\x13L\\xe7\\xa9\\x9al\\x00' \\\n      b'\\x00\\xc1[M\\x01\\x02\\x00\\x00\\x000Y\\x00 \\x00\\xdf\\xffPK\\x03\\x04\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05T9\\x8e\\xd6ul\\x00' \\\n      b'\\x00\\xa1[M\\x01\\x02\\x00\\x00\\x000Z\\x00 \\x00\\xdf\\xffPK\\x03\\x04\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05\\x16\\xb7\\xa8XPl' \\\n      b'\\x00\\x00\\x81[M\\x01\\x02\\x00\\x00\\x0010\\x00 ' \\\n      b'\\x00\\xdf\\xffPK\\x03\\x04\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05\\xd4A5!+l\\x00\\x00a[M\\x01\\x02\\x00\\x00\\x0011\\x00 ' \\\n      b'\\x00\\xdf\\xffPK\\x03\\x04\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05\\x1a\\xa7\\x1a\\x81\\x06l\\x00\\x00A[' \\\n      b'M\\x01\\x02\\x00\\x00\\x0012\\x00 \\x00\\xdf\\xffPK\\x03\\x04\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05~\\xff:&\\xe1k\\x00\\x00![' \\\n      b'M\\x01\\x02\\x00\\x00\\x0013\\x00 \\x00\\xdf\\xffPK\\x03\\x04\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x052/\\x96Y\\xbck\\x00\\x00\\x01[' \\\n      b'M\\x01\\x02\\x00\\x00\\x0014\\x00 \\x00\\xdf\\xffPK\\x03\\x04\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05\\xda\\x1df\\x80\\x97k\\x00' \\\n      b'\\x00\\xe1ZM\\x01\\x02\\x00\\x00\\x0015\\x00 \\x00\\xdf\\xffPK\\x03\\x04\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05t\\xa6\\xb5\\xb3rk' \\\n      b'\\x00\\x00\\xc1ZM\\x01\\x02\\x00\\x00\\x0016\\x00 ' \\\n      b'\\x00\\xdf\\xffPK\\x03\\x04\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05\\xe5\\xce\\xd6\\rMk\\x00\\x00\\xa1ZM\\x01\\x02\\x00\\x00\\x0017' \\\n      b'\\x00 \\x00\\xdf\\xffPK\\x03\\x04\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05f\\x8b\\xf0\\xd5(' \\\n      b'k\\x00\\x00\\x81ZM\\x01\\x02\\x00\\x00\\x0018\\x00 ' \\\n      b'\\x00\\xdf\\xffPK\\x03\\x04\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05\\xcb\\xe2\\xf1x\\x03k\\x00\\x00aZM\\x01\\x02\\x00\\x00\\x0019' \\\n      b'\\x00 \\x00\\xdf\\xffPK\\x03\\x04\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05~\\xe2|\\x13\\xdej\\x00\\x00AZM\\x01\\x02\\x00\\x00\\x001A' \\\n      b'\\x00 \\x00\\xdf\\xffPK\\x03\\x04\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05?!\\x19,' \\\n      b'\\xb9j\\x00\\x00!ZM\\x01\\x02\\x00\\x00\\x001B\\x00 ' \\\n      b'\\x00\\xdf\\xffPK\\x03\\x04\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05\\n=$\\xcd\\x94j\\x00\\x00\\x01ZM\\x01\\x02\\x00\\x00\\x001C' \\\n      b'\\x00 ' \\\n      b'\\x00\\xdf\\xffPK\\x03\\x04\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05\\xaa\\x8f\\xedQoj\\x00\\x00\\xe1YM\\x01\\x02\\x00\\x00\\x001D' \\\n      b'\\x00 \\x00\\xdf\\xffPK\\x03\\x04\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05\\xa5h\\x16\\xe2Jj\\x00\\x00\\xc1YM\\x01\\x02\\x00\\x00' \\\n      b'\\x001E\\x00 \\x00\\xdf\\xffPK\\x03\\x04\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05\\xb6\\x87\"\\xfb%j\\x00\\x00\\xa1YM\\x01\\x02\\x00' \\\n      b'\\x00\\x001F\\x00 \\x00\\xdf\\xffPK\\x03\\x04\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05\\xec\\xc90\\xdc\\x00j\\x00\\x00\\x81YM\\x01' \\\n      b'\\x02\\x00\\x00\\x001G\\x00 \\x00\\xdf\\xffPK\\x03\\x04\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05\\xbc\\xba\\xc0`\\xdbi\\x00\\x00aYM' \\\n      b'\\x01\\x02\\x00\\x00\\x001H\\x00 \\x00\\xdf\\xffPK\\x03\\x04\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05\\xb8qU/\\xb6i\\x00\\x00AYM' \\\n      b'\\x01\\x02\\x00\\x00\\x001I\\x00 \\x00\\xdf\\xffPK\\x03\\x04\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05\\x83\\x82\\xe2{' \\\n      b'\\x91i\\x00\\x00!YM\\x01\\x02\\x00\\x00\\x001J\\x00 ' \\\n      b'\\x00\\xdf\\xffPK\\x03\\x04\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05\\xc8\\xb5\\x945li\\x00\\x00\\x01YM\\x01\\x02\\x00\\x00\\x001K' \\\n      b'\\x00 \\x00\\xdf\\xffPK\\x03\\x04\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05\\xae6\\xae5Gi\\x00\\x00\\xe1XM\\x01\\x02\\x00\\x00\\x001L' \\\n      b'\\x00 \\x00\\xdf\\xffPK\\x03\\x04\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05\\x0b\\x04\\x86D\"i\\x00\\x00\\xc1XM\\x01\\x02\\x00\\x00' \\\n      b'\\x001M\\x00 \\x00\\xdf\\xffPK\\x03\\x04\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05\\x8bN\\xd9\\xdc\\xfdh\\x00\\x00\\xa1XM\\x01\\x02' \\\n      b'\\x00\\x00\\x001N\\x00 \\x00\\xdf\\xffPK\\x03\\x04\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05\\x12\\'\\\\>\\xd8h\\x00\\x00\\x81XM\\x01' \\\n      b'\\x02\\x00\\x00\\x001O\\x00 \\x00\\xdf\\xffPK\\x03\\x04\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05\\x92\\x96\\x8b\\x82\\xb3h\\x00' \\\n      b'\\x00aXM\\x01\\x02\\x00\\x00\\x001P\\x00 \\x00\\xdf\\xffPK\\x03\\x04\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05\\xeex\\x88\\x98\\x8eh' \\\n      b'\\x00\\x00AXM\\x01\\x02\\x00\\x00\\x001Q\\x00 \\x00\\xdf\\xffPK\\x03\\x04\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05d!3\\x93ih\\x00' \\\n      b'\\x00!XM\\x01\\x02\\x00\\x00\\x001R\\x00 \\x00\\xdf\\xffPK\\x03\\x04\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05\\xd2\\xf6\\toDh\\x00' \\\n      b'\\x00\\x01XM\\x01\\x02\\x00\\x00\\x001S\\x00 \\x00\\xdf\\xffPK\\x03\\x04\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05\\x93\\xb7\\x1c1' \\\n      b'\\x1fh\\x00\\x00\\xe1WM\\x01\\x02\\x00\\x00\\x001T\\x00 ' \\\n      b'\\x00\\xdf\\xffPK\\x03\\x04\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05%\\xd4\\xc1\\x93\\xfag\\x00\\x00\\xc1WM\\x01\\x02\\x00\\x00' \\\n      b'\\x001U\\x00 \\x00\\xdf\\xffPK\\x03\\x04\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05\\xc5\\xec\\xda\\x08\\xd5g\\x00\\x00\\xa1WM\\x01' \\\n      b'\\x02\\x00\\x00\\x001V\\x00 \\x00\\xdf\\xffPK\\x03\\x04\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05\\x14\\xc7\\x84>\\xb0g\\x00\\x00' \\\n      b'\\x81WM\\x01\\x02\\x00\\x00\\x001W\\x00 \\x00\\xdf\\xffPK\\x03\\x04\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05N\\xc9c\\xab\\x8bg\\x00' \\\n      b'\\x00aWM\\x01\\x02\\x00\\x00\\x001X\\x00 \\x00\\xdf\\xffPK\\x03\\x04\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05 ' \\\n      b'\\ru\\xaafg\\x00\\x00AWM\\x01\\x02\\x00\\x00\\x001Y\\x00 ' \\\n      b'\\x00\\xdf\\xffPK\\x03\\x04\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05\\x94FbWAg\\x00\\x00!WM\\x01\\x02\\x00\\x00\\x001Z\\x00 ' \\\n      b'\\x00\\xdf\\xffPK\\x03\\x04\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05\\xf01\\xb1\\xdd\\x1cg\\x00\\x00\\x01WM\\x01\\x02\\x00\\x00' \\\n      b'\\x0020\\x00 \\x00\\xdf\\xffPK\\x03\\x04\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05t\\x00n\\x0f\\xf7f\\x00\\x00\\xe1VM\\x01\\x02\\x00' \\\n      b'\\x00\\x0021\\x00 \\x00\\xdf\\xffPK\\x03\\x04\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05\\xaa\\x85i,' \\\n      b'\\xd2f\\x00\\x00\\xc1VM\\x01\\x02\\x00\\x00\\x0022\\x00 ' \\\n      b'\\x00\\xdf\\xffPK\\x03\\x04\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05\\xae\\x0fA\\xf9\\xadf\\x00\\x00\\xa1VM\\x01\\x02\\x00\\x00' \\\n      b'\\x0023\\x00 \\x00\\xdf\\xffPK\\x03\\x04\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05\\xbc\\x1e\\xf9\\x84\\x88f\\x00\\x00\\x81VM\\x01' \\\n      b'\\x02\\x00\\x00\\x0024\\x00 \\x00\\xdf\\xffPK\\x03\\x04\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05.\\x98jGcf\\x00\\x00aVM\\x01\\x02' \\\n      b'\\x00\\x00\\x0025\\x00 \\x00\\xdf\\xffPK\\x03\\x04\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05_}0\\x02>f\\x00\\x00AVM\\x01\\x02\\x00' \\\n      b'\\x00\\x0026\\x00 \\x00\\xdf\\xffPK\\x03\\x04\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05\\xac\\r\\xc5\\xae\\x19f\\x00\\x00!VM\\x01\\x02' \\\n      b'\\x00\\x00\\x0027\\x00 \\x00\\xdf\\xffPK\\x03\\x04\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x056\\x1c\\xacP\\xf4e\\x00\\x00\\x01VM\\x01' \\\n      b'\\x02\\x00\\x00\\x0028\\x00 \\x00\\xdf\\xffPK\\x03\\x04\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05s\\x1biZ\\xcfe\\x00\\x00\\xe1UM\\x01' \\\n      b'\\x02\\x00\\x00\\x0029\\x00 \\x00\\xdf\\xffPK\\x03\\x04\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05\\xaaw\\xad9\\xaae\\x00\\x00\\xc1UM' \\\n      b'\\x01\\x02\\x00\\x00\\x002A\\x00 \\x00\\xdf\\xffPK\\x03\\x04\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05\\x10\\xe0c\\x02\\x85e\\x00\\x00' \\\n      b'\\xa1UM\\x01\\x02\\x00\\x00\\x002B\\x00 \\x00\\xdf\\xffPK\\x03\\x04\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05\\x9e\\x11\\xcb\\xf0`e' \\\n      b'\\x00\\x00\\x81UM\\x01\\x02\\x00\\x00\\x002C\\x00 ' \\\n      b'\\x00\\xdf\\xffPK\\x03\\x04\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05\\x06\\xb4\\x06\\xc4;e\\x00\\x00aUM\\x01\\x02\\x00\\x00\\x002D' \\\n      b'\\x00 \\x00\\xdf\\xffPK\\x03\\x04\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05@\\x92\\xd21\\x16e\\x00\\x00AUM\\x01\\x02\\x00\\x00\\x002E' \\\n      b'\\x00 \\x00\\xdf\\xffPK\\x03\\x04\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05\\x19\\x85F\\xad\\xf1d\\x00\\x00!UM\\x01\\x02\\x00\\x00' \\\n      b'\\x002F\\x00 \\x00\\xdf\\xffPK\\x03\\x04\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05\\xbd\\x8e\\x15\\xae\\xccd\\x00\\x00\\x01UM\\x01' \\\n      b'\\x02\\x00\\x00\\x002G\\x00 \\x00\\xdf\\xffPK\\x03\\x04\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05`]\\xdb\\x9a\\xa7d\\x00\\x00\\xe1TM' \\\n      b'\\x01\\x02\\x00\\x00\\x002H\\x00 \\x00\\xdf\\xffPK\\x03\\x04\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05\\xd2\\xfd\\xea;\\x82d\\x00\\x00' \\\n      b'\\xc1TM\\x01\\x02\\x00\\x00\\x002I\\x00 \\x00\\xdf\\xffPK\\x03\\x04\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x051\\x14\\x89\\xd9]d\\x00' \\\n      b'\\x00\\xa1TM\\x01\\x02\\x00\\x00\\x002J\\x00 \\x00\\xdf\\xffPK\\x03\\x04\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05\\xda\\xb6a\\xe48d' \\\n      b'\\x00\\x00\\x81TM\\x01\\x02\\x00\\x00\\x002K\\x00 ' \\\n      b'\\x00\\xdf\\xffPK\\x03\\x04\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05V-w\\xf7\\x13d\\x00\\x00aTM\\x01\\x02\\x00\\x00\\x002L\\x00 ' \\\n      b'\\x00\\xdf\\xffPK\\x03\\x04\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05\\xcc\\xe9%\\xb0\\xeec\\x00\\x00ATM\\x01\\x02\\x00\\x00\\x002M' \\\n      b'\\x00 \\x00\\xdf\\xffPK\\x03\\x04\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05TR\\xad\\xcc\\xc9c\\x00\\x00!TM\\x01\\x02\\x00\\x00\\x002N' \\\n      b'\\x00 \\x00\\xdf\\xffPK\\x03\\x04\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05bX\\xc6\\x00\\xa4c\\x00\\x00\\x01TM\\x01\\x02\\x00\\x00' \\\n      b'\\x002O\\x00 \\x00\\xdf\\xffPK\\x03\\x04\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05l\\x1b\\xd5\\x11\\x7fc\\x00\\x00\\xe1SM\\x01\\x02' \\\n      b'\\x00\\x00\\x002P\\x00 \\x00\\xdf\\xffPK\\x03\\x04\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05\\x1d\\'}\\xeaZc\\x00\\x00\\xc1SM\\x01' \\\n      b'\\x02\\x00\\x00\\x002Q\\x00 \\x00\\xdf\\xffPK\\x03\\x04\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05\\xff\\xe2\\xcf\\xd75c\\x00\\x00' \\\n      b'\\xa1SM\\x01\\x02\\x00\\x00\\x002R\\x00 \\x00\\xdf\\xffPK\\x03\\x04\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05=\\xba\\xfd\\x9b\\x10c' \\\n      b'\\x00\\x00\\x81SM\\x01\\x02\\x00\\x00\\x002S\\x00 ' \\\n      b'\\x00\\xdf\\xffPK\\x03\\x04\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05\\x96\\x11\\xe0\\x95\\xebb\\x00\\x00aSM\\x01\\x02\\x00\\x00' \\\n      b'\\x002T\\x00 \\x00\\xdf\\xffPK\\x03\\x04\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05\\x17\\x04\\xc6\\x04\\xc6b\\x00\\x00ASM\\x01\\x02' \\\n      b'\\x00\\x00\\x002U\\x00 \\x00\\xdf\\xffPK\\x03\\x04\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05\\xbd\\x15\\xcc(' \\\n      b'\\xa1b\\x00\\x00!SM\\x01\\x02\\x00\\x00\\x002V\\x00 ' \\\n      b'\\x00\\xdf\\xffPK\\x03\\x04\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05`\\xf6O\\xfb|b\\x00\\x00\\x01SM\\x01\\x02\\x00\\x00\\x002W\\x00 ' \\\n      b'\\x00\\xdf\\xffPK\\x03\\x04\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05i@\\xe1\\xc5Wb\\x00\\x00\\xe1RM\\x01\\x02\\x00\\x00\\x002X\\x00 ' \\\n      b'\\x00\\xdf\\xffPK\\x03\\x04\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05r\\xb0\\xd6\\xf52b\\x00\\x00\\xc1RM\\x01\\x02\\x00\\x00\\x002Y' \\\n      b'\\x00 \\x00\\xdf\\xffPK\\x03\\x04\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05\\x1e\\xd2\\xa0\\xfb\\rb\\x00\\x00\\xa1RM\\x01\\x02\\x00' \\\n      b'\\x00\\x002Z\\x00 \\x00\\xdf\\xffPK\\x03\\x04\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05\\xd1\\xcb\\xdb\\xe2\\xe8a\\x00\\x00\\x81RM' \\\n      b'\\x01\\x02\\x00\\x00\\x0030\\x00 \\x00\\xdf\\xffPK\\x03\\x04\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05\\xf9.\\xeeu\\xc3a\\x00\\x00aRM' \\\n      b'\\x01\\x02\\x00\\x00\\x0031\\x00 \\x00\\xdf\\xffPK\\x03\\x04\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x053\\xb4\\xc8\\xa1\\x9ea\\x00' \\\n      b'\\x00ARM\\x01\\x02\\x00\\x00\\x0032\\x00 \\x00\\xdf\\xffPK\\x03\\x04\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05\\xb5\\xc1\\xefZya\\x00' \\\n      b'\\x00!RM\\x01\\x02\\x00\\x00\\x0033\\x00 \\x00\\xdf\\xffPK\\x03\\x04\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05@\\x02Q\\x9dTa\\x00' \\\n      b'\\x00\\x01RM\\x01\\x02\\x00\\x00\\x0034\\x00 \\x00\\xdf\\xffPK\\x03\\x04\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x059\\xd2\\xc4&/a\\x00' \\\n      b'\\x00\\xe1QM\\x01\\x02\\x00\\x00\\x0035\\x00 \\x00\\xdf\\xffPK\\x03\\x04\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05\\xfaw\\r\\x08\\na' \\\n      b'\\x00\\x00\\xc1QM\\x01\\x02\\x00\\x00\\x0036\\x00 ' \\\n      b'\\x00\\xdf\\xffPK\\x03\\x04\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05\\xed\\xb4\\xb4k\\xe5`\\x00\\x00\\xa1QM\\x01\\x02\\x00\\x00' \\\n      b'\\x0037\\x00 \\x00\\xdf\\xffPK\\x03\\x04\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x056\\x8f\\x10\\xd3\\xc0`\\x00\\x00\\x81QM\\x01\\x02' \\\n      b'\\x00\\x00\\x0038\\x00 \\x00\\xdf\\xffPK\\x03\\x04\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05_\\x82R\\xcc\\x9b`\\x00\\x00aQM\\x01\\x02' \\\n      b'\\x00\\x00\\x0039\\x00 \\x00\\xdf\\xffPK\\x03\\x04\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05\\xd7m\\xc4\\xc9v`\\x00\\x00AQM\\x01\\x02' \\\n      b'\\x00\\x00\\x003A\\x00 \\x00\\xdf\\xffPK\\x03\\x04\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05\\xf6uy\\x8aQ`\\x00\\x00!QM\\x01\\x02' \\\n      b'\\x00\\x00\\x003B\\x00 \\x00\\xdf\\xffPK\\x03\\x04\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05\\xb8p1\\xcf,' \\\n      b'`\\x00\\x00\\x01QM\\x01\\x02\\x00\\x00\\x003C\\x00 ' \\\n      b'\\x00\\xdf\\xffPK\\x03\\x04\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05Up\\xc0@\\x07`\\x00\\x00\\xe1PM\\x01\\x02\\x00\\x00\\x003D\\x00 ' \\\n      b'\\x00\\xdf\\xffPK\\x03\\x04\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05\\xecO\\x00\\xb3\\xe2_\\x00\\x00\\xc1PM\\x01\\x02\\x00\\x00' \\\n      b'\\x003E\\x00 \\x00\\xdf\\xffPK\\x03\\x04\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05\\x10\\x9f\\x12\\x91\\xbd_\\x00\\x00\\xa1PM\\x01' \\\n      b'\\x02\\x00\\x00\\x003F\\x00 \\x00\\xdf\\xffPK\\x03\\x04\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05+\\xbc\\xa3\\x88\\x98_\\x00\\x00' \\\n      b'\\x81PM\\x01\\x02\\x00\\x00\\x003G\\x00 \\x00\\xdf\\xffPK\\x03\\x04\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05a\\x9dM\\xe9s_\\x00' \\\n      b'\\x00aPM\\x01\\x02\\x00\\x00\\x003H\\x00 \\x00\\xdf\\xffPK\\x03\\x04\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05\\xe98\\x02/N_\\x00' \\\n      b'\\x00APM\\x01\\x02\\x00\\x00\\x003I\\x00 \\x00\\xdf\\xffPK\\x03\\x04\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05w\\x14\\x8c\\xe6)_\\x00' \\\n      b'\\x00!PM\\x01\\x02\\x00\\x00\\x003J\\x00 \\x00\\xdf\\xffPK\\x03\\x04\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05\\xd0E\\x03l\\x04_\\x00' \\\n      b'\\x00\\x01PM\\x01\\x02\\x00\\x00\\x003K\\x00 \\x00\\xdf\\xffPK\\x03\\x04\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05\\xf1\\xb4\\xeb\\xae' \\\n      b'\\xdf^\\x00\\x00\\xe1OM\\x01\\x02\\x00\\x00\\x003L\\x00 ' \\\n      b'\\x00\\xdf\\xffPK\\x03\\x04\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05\\xd4\\xa0\\'F\\xba^\\x00\\x00\\xc1OM\\x01\\x02\\x00\\x00\\x003M' \\\n      b'\\x00 \\x00\\xdf\\xffPK\\x03\\x04\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05pR}\\xf1\\x95^\\x00\\x00\\xa1OM\\x01\\x02\\x00\\x00\\x003N' \\\n      b'\\x00 \\x00\\xdf\\xffPK\\x03\\x04\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05M\\xde\\xa4\\xecp^\\x00\\x00\\x81OM\\x01\\x02\\x00\\x00' \\\n      b'\\x003O\\x00 \\x00\\xdf\\xffPK\\x03\\x04\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05&\\xf7\\xeb\\xb6K^\\x00\\x00aOM\\x01\\x02\\x00\\x00' \\\n      b'\\x003P\\x00 \\x00\\xdf\\xffPK\\x03\\x04\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05\\x00\\xf8\\xcd|&^\\x00\\x00AOM\\x01\\x02\\x00\\x00' \\\n      b'\\x003Q\\x00 \\x00\\xdf\\xffPK\\x03\\x04\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05\\x7f(' \\\n      b'\\xfb^\\x01^\\x00\\x00!OM\\x01\\x02\\x00\\x00\\x003R\\x00 ' \\\n      b'\\x00\\xdf\\xffPK\\x03\\x04\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05R\\x1b\\x94z\\xdc]\\x00\\x00\\x01OM\\x01\\x02\\x00\\x00\\x003S' \\\n      b'\\x00 \\x00\\xdf\\xffPK\\x03\\x04\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05g\\xebI4\\xb7]\\x00\\x00\\xe1NM\\x01\\x02\\x00\\x00\\x003T' \\\n      b'\\x00 \\x00\\xdf\\xffPK\\x03\\x04\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05\\xbf\\xdd\\x1d\\xcf\\x92]\\x00\\x00\\xc1NM\\x01\\x02\\x00' \\\n      b'\\x00\\x003U\\x00 \\x00\\xdf\\xffPK\\x03\\x04\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05\\xcb\\xb2Q*m]\\x00\\x00\\xa1NM\\x01\\x02\\x00' \\\n      b'\\x00\\x003V\\x00 \\x00\\xdf\\xffPK\\x03\\x04\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05\\xb6\\x04\\xa8\\xd5H]\\x00\\x00\\x81NM\\x01' \\\n      b'\\x02\\x00\\x00\\x003W\\x00 \\x00\\xdf\\xffPK\\x03\\x04\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x051\\x00\\xa7\\xd1#]\\x00\\x00aNM\\x01' \\\n      b'\\x02\\x00\\x00\\x003X\\x00 \\x00\\xdf\\xffPK\\x03\\x04\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05\\x1e\\x8eJ]\\xfe\\\\\\x00\\x00ANM' \\\n      b'\\x01\\x02\\x00\\x00\\x003Y\\x00 \\x00\\xdf\\xffPK\\x03\\x04\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05\\xfd\\x11\\xc8\\xaf\\xd9\\\\\\x00' \\\n      b'\\x00!NM\\x01\\x02\\x00\\x00\\x003Z\\x00 \\x00\\xdf\\xffPK\\x03\\x04\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05CiG\\x90\\xb4\\\\\\x00' \\\n      b'\\x00\\x01NM\\x01\\x02\\x00\\x00\\x0040\\x00 \\x00\\xdf\\xffPK\\x03\\x04\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05\\xcb\\t\\x95K\\x8f' \\\n      b'\\\\\\x00\\x00\\xe1MM\\x01\\x02\\x00\\x00\\x0041\\x00 ' \\\n      b'\\x00\\xdf\\xffPK\\x03\\x04\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05\\xab\\xd2\\xd0\\x9cj\\\\\\x00\\x00\\xc1MM\\x01\\x02\\x00\\x00' \\\n      b'\\x0042\\x00 \\x00\\xdf\\xffPK\\x03\\x04\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05\\x10\\x1a\\x18\\xd3E\\\\\\x00\\x00\\xa1MM\\x01\\x02' \\\n      b'\\x00\\x00\\x0043\\x00 \\x00\\xdf\\xffPK\\x03\\x04\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05\\x90\\xb5\\x86\\xc6 ' \\\n      b'\\\\\\x00\\x00\\x81MM\\x01\\x02\\x00\\x00\\x0044\\x00 \\x00\\xdf\\xffPK\\x03\\x04\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05\\xc5\\x99,' \\\n      b'/\\xfb[\\x00\\x00aMM\\x01\\x02\\x00\\x00\\x0045\\x00 ' \\\n      b'\\x00\\xdf\\xffPK\\x03\\x04\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05\\xbd0\\xfej\\xd6[\\x00\\x00AMM\\x01\\x02\\x00\\x00\\x0046\\x00 ' \\\n      b'\\x00\\xdf\\xffPK\\x03\\x04\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05S\\xe8\\xd4\\x86\\xb1[' \\\n      b'\\x00\\x00!MM\\x01\\x02\\x00\\x00\\x0047\\x00 \\x00\\xdf\\xffPK\\x03\\x04\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05\\xad\\r]>\\x8c[' \\\n      b'\\x00\\x00\\x01MM\\x01\\x02\\x00\\x00\\x0048\\x00 ' \\\n      b'\\x00\\xdf\\xffPK\\x03\\x04\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05:\\xe8\\xf8\\x97g[' \\\n      b'\\x00\\x00\\xe1LM\\x01\\x02\\x00\\x00\\x0049\\x00 \\x00\\xdf\\xffPK\\x03\\x04\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05n[?\\xeaB[' \\\n      b'\\x00\\x00\\xc1LM\\x01\\x02\\x00\\x00\\x004A\\x00 \\x00\\xdf\\xffPK\\x03\\x04\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05)*m\\x97\\x1d[' \\\n      b'\\x00\\x00\\xa1LM\\x01\\x02\\x00\\x00\\x004B\\x00 ' \\\n      b'\\x00\\xdf\\xffPK\\x03\\x04\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x055\\xccS\\xc6\\xf8Z\\x00\\x00\\x81LM\\x01\\x02\\x00\\x00\\x004C' \\\n      b'\\x00 \\x00\\xdf\\xffPK\\x03\\x04\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05\\xb3\\x1d5?\\xd3Z\\x00\\x00aLM\\x01\\x02\\x00\\x00\\x004D' \\\n      b'\\x00 \\x00\\xdf\\xffPK\\x03\\x04\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05\\xf7\\x16\\x95\\xe6\\xaeZ\\x00\\x00ALM\\x01\\x02\\x00\\x00' \\\n      b'\\x004E\\x00 \\x00\\xdf\\xffPK\\x03\\x04\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05\\x9ck\\xcf\\xf4\\x89Z\\x00\\x00!LM\\x01\\x02\\x00' \\\n      b'\\x00\\x004F\\x00 \\x00\\xdf\\xffPK\\x03\\x04\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05}\\xf4\\x07\\x95dZ\\x00\\x00\\x01LM\\x01\\x02' \\\n      b'\\x00\\x00\\x004G\\x00 \\x00\\xdf\\xffPK\\x03\\x04\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05\\xe0\\xa1\\x8fJ?Z\\x00\\x00\\xe1KM\\x01' \\\n      b'\\x02\\x00\\x00\\x004H\\x00 \\x00\\xdf\\xffPK\\x03\\x04\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05\\x18\\xeb\\x1c\\xc2\\x1aZ\\x00\\x00' \\\n      b'\\xc1KM\\x01\\x02\\x00\\x00\\x004I\\x00 \\x00\\xdf\\xffPK\\x03\\x04\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05D\\x91Y\\xbc\\xf5Y\\x00' \\\n      b'\\x00\\xa1KM\\x01\\x02\\x00\\x00\\x004J\\x00 \\x00\\xdf\\xffPK\\x03\\x04\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05\\x94\\xe2\\xcd\\xba' \\\n      b'\\xd0Y\\x00\\x00\\x81KM\\x01\\x02\\x00\\x00\\x004K\\x00 ' \\\n      b'\\x00\\xdf\\xffPK\\x03\\x04\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05\\x16\\x13\\x88q\\xabY\\x00\\x00aKM\\x01\\x02\\x00\\x00\\x004L' \\\n      b'\\x00 \\x00\\xdf\\xffPK\\x03\\x04\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05\\xbf\\x13\\xfc\\xa2\\x86Y\\x00\\x00AKM\\x01\\x02\\x00\\x00' \\\n      b'\\x004M\\x00 \\x00\\xdf\\xffPK\\x03\\x04\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05l8\\x93BaY\\x00\\x00!KM\\x01\\x02\\x00\\x00\\x004N' \\\n      b'\\x00 \\x00\\xdf\\xffPK\\x03\\x04\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05A\\xc2\\x1d\\x80<Y\\x00\\x00\\x01KM\\x01\\x02\\x00\\x00' \\\n      b'\\x004O\\x00 \\x00\\xdf\\xffPK\\x03\\x04\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05\\xa8e\\xb9D\\x17Y\\x00\\x00\\xe1JM\\x01\\x02\\x00' \\\n      b'\\x00\\x004P\\x00 \\x00\\xdf\\xffPK\\x03\\x04\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05*W\\xff\\x8d\\xf2X\\x00\\x00\\xc1JM\\x01\\x02' \\\n      b'\\x00\\x00\\x004Q\\x00 \\x00\\xdf\\xffPK\\x03\\x04\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05ST}\\x95\\xcdX\\x00\\x00\\xa1JM\\x01\\x02' \\\n      b'\\x00\\x00\\x004R\\x00 \\x00\\xdf\\xffPK\\x03\\x04\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x057\\xe9\\x8e.\\xa8X\\x00\\x00\\x81JM\\x01' \\\n      b'\\x02\\x00\\x00\\x004S\\x00 \\x00\\xdf\\xffPK\\x03\\x04\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05\\xb9\\xb2>\\xb0\\x83X\\x00\\x00aJM' \\\n      b'\\x01\\x02\\x00\\x00\\x004T\\x00 \\x00\\xdf\\xffPK\\x03\\x04\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05\\xf5\\x05\\xc9\\xb4^X\\x00' \\\n      b'\\x00AJM\\x01\\x02\\x00\\x00\\x004U\\x00 \\x00\\xdf\\xffPK\\x03\\x04\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05\\xfb\\xa9\\xec\\xe09X' \\\n      b'\\x00\\x00!JM\\x01\\x02\\x00\\x00\\x004V\\x00 ' \\\n      b'\\x00\\xdf\\xffPK\\x03\\x04\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05s6\\x0cw\\x14X\\x00\\x00\\x01JM\\x01\\x02\\x00\\x00\\x004W\\x00 ' \\\n      b'\\x00\\xdf\\xffPK\\x03\\x04\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05\\xc5d\\xe9r\\xefW\\x00\\x00\\xe1IM\\x01\\x02\\x00\\x00\\x004X' \\\n      b'\\x00 \\x00\\xdf\\xffPK\\x03\\x04\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05\\x82{' \\\n      b'\\xb6*\\xcaW\\x00\\x00\\xc1IM\\x01\\x02\\x00\\x00\\x004Y\\x00 ' \\\n      b'\\x00\\xdf\\xffPK\\x03\\x04\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05C\\xfe\\xcd\\x10\\xa5W\\x00\\x00\\xa1IM\\x01\\x02\\x00\\x00' \\\n      b'\\x004Z\\x00 \\x00\\xdf\\xffPK\\x03\\x04\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05j*\\x1d\\x8f\\x80W\\x00\\x00\\x81IM\\x01\\x02\\x00' \\\n      b'\\x00\\x0050\\x00 \\x00\\xdf\\xffPK\\x03\\x04\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05\\xe3\\xad\\xf0\\x83[' \\\n      b'W\\x00\\x00aIM\\x01\\x02\\x00\\x00\\x0051\\x00 ' \\\n      b'\\x00\\xdf\\xffPK\\x03\\x04\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05\\x85\\x90\\xbb\\xe36W\\x00\\x00AIM\\x01\\x02\\x00\\x00\\x0052' \\\n      b'\\x00 \\x00\\xdf\\xffPK\\x03\\x04\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05\\xe7\\x14\\xda\\xa7\\x11W\\x00\\x00!IM\\x01\\x02\\x00\\x00' \\\n      b'\\x0053\\x00 \\x00\\xdf\\xffPK\\x03\\x04\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05\\xdd\\xde\\x83\\xe8\\xecV\\x00\\x00\\x01IM\\x01' \\\n      b'\\x02\\x00\\x00\\x0054\\x00 \\x00\\xdf\\xffPK\\x03\\x04\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05\\xfcfm\\x8c\\xc7V\\x00\\x00\\xe1HM' \\\n      b'\\x01\\x02\\x00\\x00\\x0055\\x00 \\x00\\xdf\\xffPK\\x03\\x04\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05\\xed\\xadFp\\xa2V\\x00\\x00' \\\n      b'\\xc1HM\\x01\\x02\\x00\\x00\\x0056\\x00 \\x00\\xdf\\xffPK\\x03\\x04\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05\\x9dh0\\x9a}V\\x00\\x00' \\\n      b'\\xa1HM\\x01\\x02\\x00\\x00\\x0057\\x00 \\x00\\xdf\\xffPK\\x03\\x04\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05\\xd6\\xcdd\\x91XV\\x00' \\\n      b'\\x00\\x81HM\\x01\\x02\\x00\\x00\\x0058\\x00 \\x00\\xdf\\xffPK\\x03\\x04\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05\\x99\\xe6\\x86' \\\n      b'\\xe93V\\x00\\x00aHM\\x01\\x02\\x00\\x00\\x0059\\x00 ' \\\n      b'\\x00\\xdf\\xffPK\\x03\\x04\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05\\xb6\\xff\\x82B\\x0eV\\x00\\x00AHM\\x01\\x02\\x00\\x00\\x005A' \\\n      b'\\x00 \\x00\\xdf\\xffPK\\x03\\x04\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05\\xc1R\\xd7+\\xe9U\\x00\\x00!HM\\x01\\x02\\x00\\x00\\x005B' \\\n      b'\\x00 \\x00\\xdf\\xffPK\\x03\\x04\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05\\x19\\r)\\xcb\\xc4U\\x00\\x00\\x01HM\\x01\\x02\\x00\\x00' \\\n      b'\\x005C\\x00 \\x00\\xdf\\xffPK\\x03\\x04\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05\\xaa\\x07\\xd1+\\x9fU\\x00\\x00\\xe1GM\\x01\\x02' \\\n      b'\\x00\\x00\\x005D\\x00 \\x00\\xdf\\xffPK\\x03\\x04\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05]4\\x8f\\xadzU\\x00\\x00\\xc1GM\\x01\\x02' \\\n      b'\\x00\\x00\\x005E\\x00 \\x00\\xdf\\xffPK\\x03\\x04\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05\\xb7\\xf4;\\xc8UU\\x00\\x00\\xa1GM\\x01' \\\n      b'\\x02\\x00\\x00\\x005F\\x00 \\x00\\xdf\\xffPK\\x03\\x04\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05\\xeaN\\xedc0U\\x00\\x00\\x81GM\\x01' \\\n      b'\\x02\\x00\\x00\\x005G\\x00 \\x00\\xdf\\xffPK\\x03\\x04\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05\\xb7\\xd9\\x99?\\x0bU\\x00\\x00aGM' \\\n      b'\\x01\\x02\\x00\\x00\\x005H\\x00 \\x00\\xdf\\xffPK\\x03\\x04\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05\\x9a\\xec\\x13\\xef\\xe6T\\x00' \\\n      b'\\x00AGM\\x01\\x02\\x00\\x00\\x005I\\x00 \\x00\\xdf\\xffPK\\x03\\x04\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05~\\x94\\x0e\\xf1\\xc1T' \\\n      b'\\x00\\x00!GM\\x01\\x02\\x00\\x00\\x005J\\x00 ' \\\n      b'\\x00\\xdf\\xffPK\\x03\\x04\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05\\x08\\x99\\xd0\\xf7\\x9cT\\x00\\x00\\x01GM\\x01\\x02\\x00\\x00' \\\n      b'\\x005K\\x00 \\x00\\xdf\\xffPK\\x03\\x04\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05\\x8e\\x14\\xb2bwT\\x00\\x00\\xe1FM\\x01\\x02\\x00' \\\n      b'\\x00\\x005L\\x00 \\x00\\xdf\\xffPK\\x03\\x04\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05\\xa11\\x03\\xa6RT\\x00\\x00\\xc1FM\\x01\\x02' \\\n      b'\\x00\\x00\\x005M\\x00 \\x00\\xdf\\xffPK\\x03\\x04\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05\\x8aS\\xa4\\xcd-T\\x00\\x00\\xa1FM\\x01' \\\n      b'\\x02\\x00\\x00\\x005N\\x00 \\x00\\xdf\\xffPK\\x03\\x04\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05\\x9d\\x0e\\xe9\\xdf\\x08T\\x00\\x00' \\\n      b'\\x81FM\\x01\\x02\\x00\\x00\\x005O\\x00 \\x00\\xdf\\xffPK\\x03\\x04\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05\\x1b\\rI\\xaa\\xe3S\\x00' \\\n      b'\\x00aFM\\x01\\x02\\x00\\x00\\x005P\\x00 \\x00\\xdf\\xffPK\\x03\\x04\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05k\\x03Gz\\xbeS\\x00' \\\n      b'\\x00AFM\\x01\\x02\\x00\\x00\\x005Q\\x00 \\x00\\xdf\\xffPK\\x03\\x04\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05\\xca0\\xb4\\xa5\\x99S' \\\n      b'\\x00\\x00!FM\\x01\\x02\\x00\\x00\\x005R\\x00 \\x00\\xdf\\xffPK\\x03\\x04\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05,' \\\n      b'^\\xb9JtS\\x00\\x00\\x01FM\\x01\\x02\\x00\\x00\\x005S\\x00 ' \\\n      b'\\x00\\xdf\\xffPK\\x03\\x04\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05\\xf3\\x1e\\x07\\xfcOS\\x00\\x00\\xe1EM\\x01\\x02\\x00\\x00' \\\n      b'\\x005T\\x00 \\x00\\xdf\\xffPK\\x03\\x04\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05Oo\\x8c\\x8a*S\\x00\\x00\\xc1EM\\x01\\x02\\x00\\x00' \\\n      b'\\x005U\\x00 \\x00\\xdf\\xffPK\\x03\\x04\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05\\xcb?~\\x93\\x05S\\x00\\x00\\xa1EM\\x01\\x02\\x00' \\\n      b'\\x00\\x005V\\x00 \\x00\\xdf\\xffPK\\x03\\x04\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05\\xf4,' \\\n      b'\\x82\\xf1\\xe0R\\x00\\x00\\x81EM\\x01\\x02\\x00\\x00\\x005W\\x00 ' \\\n      b'\\x00\\xdf\\xffPK\\x03\\x04\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05Q\\xbaZ\\x17\\xbbR\\x00\\x00aEM\\x01\\x02\\x00\\x00\\x005X\\xed' \\\n      b'\\xc0\\x81\\x08\\x00\\x00\\x00\\xc00\\xd6\\xfbK\\\\d\\x0b\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00`PK\\x01\\x02\\x14\\x00\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05\\xfbXR\\xe8\\x95v\\x00\\x00^dM\\x01' \\\n      b'\\x01\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x000PK\\x01\\x02\\x14\\x00\\x14\\x00\\x00\\x00' \\\n      b'\\x08\\x00\\xa0lH\\x05z)V>qv\\x00\\x00?dM\\x01\\x01\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00$\\x00\\x00' \\\n      b'\\x001PK\\x01\\x02\\x14\\x00\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05X>){Mv\\x00\\x00 ' \\\n      b'dM\\x01\\x01\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00H\\x00\\x00\\x002PK\\x01\\x02\\x14\\x00\\x14\\x00\\x00' \\\n      b'\\x00\\x08\\x00\\xa0lH\\x05x\\xda\\xd9L)v\\x00\\x00\\x01dM\\x01\\x01\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00l' \\\n      b'\\x00\\x00\\x003PK\\x01\\x02\\x14\\x00\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05>\\x890\\x03\\x05v\\x00\\x00\\xe2cM\\x01\\x01\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x90\\x00\\x00\\x004PK\\x01\\x02\\x14\\x00\\x14\\x00\\x00\\x00\\x08\\x00' \\\n      b'\\xa0lH\\x05\\x04iN9\\xe1u\\x00\\x00\\xc3cM\\x01\\x01\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\xb4\\x00\\x00' \\\n      b'\\x005PK\\x01\\x02\\x14\\x00\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05(' \\\n      b'\\xd1\\xfc\\xda\\xbdu\\x00\\x00\\xa4cM\\x01\\x01\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\xd8\\x00\\x00' \\\n      b'\\x006PK\\x01\\x02\\x14\\x00\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05\\x15\\x83\\x9f[' \\\n      b'\\x99u\\x00\\x00\\x85cM\\x01\\x01\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\xfc\\x00\\x00\\x007PK\\x01\\x02' \\\n      b'\\x14\\x00\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05d\\xcf\\x95Xuu\\x00\\x00fcM\\x01\\x01\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00 \\x01\\x00\\x008PK\\x01\\x02\\x14\\x00\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05!BA\\xe6Qu\\x00\\x00GcM\\x01' \\\n      b'\\x01\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00D\\x01\\x00\\x009PK\\x01\\x02\\x14\\x00\\x14\\x00\\x00\\x00\\x08' \\\n      b'\\x00\\xa0lH\\x05\\x90n\\xed6-u\\x00\\x00(cM\\x01\\x01\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00h\\x01\\x00' \\\n      b'\\x00APK\\x01\\x02\\x14\\x00\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05#\\xf6\\xf8\\xe2\\tu\\x00\\x00\\tcM\\x01\\x01\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x8c\\x01\\x00\\x00BPK\\x01\\x02\\x14\\x00\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05\\xa6' \\\n      b'\\xc5\\xc4\\xcf\\xe5t\\x00\\x00\\xeabM\\x01\\x01\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\xb0\\x01\\x00' \\\n      b'\\x00CPK\\x01\\x02\\x14\\x00\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05\\xe4\\x19QC\\xc1t\\x00\\x00\\xcbbM\\x01\\x01\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\xd4\\x01\\x00\\x00DPK\\x01\\x02\\x14\\x00\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05' \\\n      b'\\xb2\\x8b\\xb4u\\x9dt\\x00\\x00\\xacbM\\x01\\x01\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\xf8\\x01\\x00' \\\n      b'\\x00EPK\\x01\\x02\\x14\\x00\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05\\x88`\\xf60yt\\x00\\x00\\x8dbM\\x01\\x01\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x1c\\x02\\x00\\x00FPK\\x01\\x02\\x14\\x00\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05\\xb7' \\\n      b'\\x15fDUt\\x00\\x00nbM\\x01\\x01\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00@\\x02\\x00\\x00GPK\\x01\\x02\\x14' \\\n      b'\\x00\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05\\x90\\x03\\xcdZ1t\\x00\\x00ObM\\x01\\x01\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00d\\x02\\x00\\x00HPK\\x01\\x02\\x14\\x00\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05\\xcfZ\\xa9;\\rt\\x00\\x000bM' \\\n      b'\\x01\\x01\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x88\\x02\\x00\\x00IPK\\x01\\x02\\x14\\x00\\x14\\x00\\x00' \\\n      b'\\x00\\x08\\x00\\xa0lH\\x05\\xean\\xe3e\\xe9s\\x00\\x00\\x11bM\\x01\\x01\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\xac\\x02\\x00\\x00JPK\\x01\\x02\\x14\\x00\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05\\xba\\x7f,' \\\n      b'\\x9c\\xc5s\\x00\\x00\\xf2aM\\x01\\x01\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\xd0\\x02\\x00\\x00KPK\\x01' \\\n      b'\\x02\\x14\\x00\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05\\x95\\xfa3\\x8c\\xa1s\\x00\\x00\\xd3aM\\x01\\x01\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\xf4\\x02\\x00\\x00LPK\\x01\\x02\\x14\\x00\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05\\xbc' \\\n      b'.\\xb0\\xbe}s\\x00\\x00\\xb4aM\\x01\\x01\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x18\\x03\\x00\\x00MPK\\x01' \\\n      b'\\x02\\x14\\x00\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05i\\xd1\\\\\\x88Ys\\x00\\x00\\x95aM\\x01\\x01\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00<\\x03\\x00\\x00NPK\\x01\\x02\\x14\\x00\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05\\r\\x84\\xc0\\xda5s' \\\n      b'\\x00\\x00vaM\\x01\\x01\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00`\\x03\\x00\\x00OPK\\x01\\x02\\x14\\x00\\x14' \\\n      b'\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05\\xdc\\xaf,' \\\n      b'b\\x11s\\x00\\x00WaM\\x01\\x01\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x84\\x03\\x00\\x00PPK\\x01\\x02\\x14' \\\n      b'\\x00\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05\\x9b\\xfe\\x15\\x8d\\xedr\\x00\\x008aM\\x01\\x01\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\xa8\\x03\\x00\\x00QPK\\x01\\x02\\x14\\x00\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05\\'%jF\\xc9r\\x00' \\\n      b'\\x00\\x19aM\\x01\\x01\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\xcc\\x03\\x00\\x00RPK\\x01\\x02\\x14\\x00\\x14' \\\n      b'\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05\\xa7\\x89\\x056\\xa5r\\x00\\x00\\xfa`M\\x01\\x01\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\xf0\\x03\\x00\\x00SPK\\x01\\x02\\x14\\x00\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05\\xe0`?\\xbd\\x81r\\x00\\x00' \\\n      b'\\xdb`M\\x01\\x01\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x14\\x04\\x00\\x00TPK\\x01\\x02\\x14\\x00\\x14\\x00' \\\n      b'\\x00\\x00\\x08\\x00\\xa0lH\\x05\\xba\\xa1\\xdcB]r\\x00\\x00\\xbc`M\\x01\\x01\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x008\\x04\\x00\\x00UPK\\x01\\x02\\x14\\x00\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05\\x88\\xb1\\xa4\\xc39r\\x00\\x00\\x9d`M' \\\n      b'\\x01\\x01\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\\\\\x04\\x00\\x00VPK\\x01\\x02\\x14\\x00\\x14\\x00\\x00\\x00' \\\n      b'\\x08\\x00\\xa0lH\\x05jqM\\x8c\\x15r\\x00\\x00~`M\\x01\\x01\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x80\\x04' \\\n      b'\\x00\\x00WPK\\x01\\x02\\x14\\x00\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05\\xd1+\\xf1\\x1d\\xf1q\\x00\\x00_`M\\x01\\x01\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\xa4\\x04\\x00\\x00XPK\\x01\\x02\\x14\\x00\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH' \\\n      b'\\x05\\x12\\xf8(_\\xcdq\\x00\\x00@`M\\x01\\x01\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\xc8\\x04\\x00\\x00YPK' \\\n      b'\\x01\\x02\\x14\\x00\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05\\x99\\xacY\\xe2\\xa9q\\x00\\x00!`M\\x01\\x01\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\xec\\x04\\x00\\x00ZPK\\x01\\x02\\x14\\x00\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05\\xb3\\xd5' \\\n      b'\\xf6\\x98\\x84q\\x00\\x00\\x01`M\\x01\\x02\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x10\\x05\\x00\\x0000PK' \\\n      b'\\x01\\x02\\x14\\x00\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05\\xb0\\xff\\x13~_q\\x00\\x00\\xe1_M\\x01\\x02\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x005\\x05\\x00\\x0001PK\\x01\\x02\\x14\\x00\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05\\x0c\\x9fI' \\\n      b';:q\\x00\\x00\\xc1_M\\x01\\x02\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00Z\\x05\\x00\\x0002PK\\x01\\x02\\x14' \\\n      b'\\x00\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05\\x18/\\xbb\\xe9\\x15q\\x00\\x00\\xa1_M\\x01\\x02\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x7f\\x05\\x00\\x0003PK\\x01\\x02\\x14\\x00\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05\\x84\\xb37\\x0c' \\\n      b'\\xf0p\\x00\\x00\\x81_M\\x01\\x02\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\xa4\\x05\\x00\\x0004PK\\x01\\x02' \\\n      b'\\x14\\x00\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05\\xf2\\xc6T\\xd6\\xcbp\\x00\\x00a_M\\x01\\x02\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\xc9\\x05\\x00\\x0005PK\\x01\\x02\\x14\\x00\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05urkX\\xa6p\\x00' \\\n      b'\\x00A_M\\x01\\x02\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\xee\\x05\\x00\\x0006PK\\x01\\x02\\x14\\x00\\x14' \\\n      b'\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05F\\x9b%f\\x81p\\x00\\x00!_M\\x01\\x02\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x13\\x06\\x00\\x0007PK\\x01\\x02\\x14\\x00\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05\\x0cb\\x0eh\\\\p\\x00\\x00\\x01_M\\x01\\x02' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x008\\x06\\x00\\x0008PK\\x01\\x02\\x14\\x00\\x14\\x00\\x00\\x00\\x08\\x00' \\\n      b'\\xa0lH\\x05\\x9a\\xe8 \\x8f7p\\x00\\x00\\xe1^M\\x01\\x02\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00]\\x06\\x00' \\\n      b'\\x0009PK\\x01\\x02\\x14\\x00\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05\\x8b\\x86G\\x1d\\x12p\\x00\\x00\\xc1^M\\x01\\x02\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x82\\x06\\x00\\x000APK\\x01\\x02\\x14\\x00\\x14\\x00\\x00\\x00\\x08\\x00' \\\n      b'\\xa0lH\\x05\\xe3/\\x83\\xa3\\xedo\\x00\\x00\\xa1^M\\x01\\x02\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\xa7' \\\n      b'\\x06\\x00\\x000BPK\\x01\\x02\\x14\\x00\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05Bh ' \\\n      b'H\\xc8o\\x00\\x00\\x81^M\\x01\\x02\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\xcc\\x06\\x00\\x000CPK\\x01\\x02' \\\n      b'\\x14\\x00\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05\\xb7a\\x99\\xd7\\xa3o\\x00\\x00a^M\\x01\\x02\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\xf1\\x06\\x00\\x000DPK\\x01\\x02\\x14\\x00\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05+wRl~o\\x00\\x00A' \\\n      b'^M\\x01\\x02\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x16\\x07\\x00\\x000EPK\\x01\\x02\\x14\\x00\\x14\\x00' \\\n      b'\\x00\\x00\\x08\\x00\\xa0lH\\x05\\xbc\\xb0C\\xb7Yo\\x00\\x00!^M\\x01\\x02\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00;\\x07\\x00\\x000FPK\\x01\\x02\\x14\\x00\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05\\xc3`\\xfb%4o\\x00\\x00\\x01^M\\x01\\x02\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00`\\x07\\x00\\x000GPK\\x01\\x02\\x14\\x00\\x14\\x00\\x00\\x00\\x08\\x00' \\\n      b'\\xa0lH\\x05\\x02\\xf8X\\xa3\\x0fo\\x00\\x00\\xe1]M\\x01\\x02\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x85' \\\n      b'\\x07\\x00\\x000HPK\\x01\\x02\\x14\\x00\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05\\x12Y7\\x0f\\xean\\x00\\x00\\xc1]M\\x01\\x02\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\xaa\\x07\\x00\\x000IPK\\x01\\x02\\x14\\x00\\x14\\x00\\x00\\x00\\x08\\x00' \\\n      b'\\xa0lH\\x05NP\\x15\\xaf\\xc5n\\x00\\x00\\xa1]M\\x01\\x02\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\xcf\\x07' \\\n      b'\\x00\\x000JPK\\x01\\x02\\x14\\x00\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05A\\x0bB\\xb9\\xa0n\\x00\\x00\\x81]M\\x01\\x02\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\xf4\\x07\\x00\\x000KPK\\x01\\x02\\x14\\x00\\x14\\x00\\x00\\x00\\x08\\x00' \\\n      b'\\xa0lH\\x05\\x19f\\xc8x{n\\x00\\x00a]M\\x01\\x02\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x19\\x08\\x00' \\\n      b'\\x000LPK\\x01\\x02\\x14\\x00\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05\\xa7\\xb0\\xfeWVn\\x00\\x00A]M\\x01\\x02\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00>\\x08\\x00\\x000MPK\\x01\\x02\\x14\\x00\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05\\xed' \\\n      b'\\xd0\\r\\xb11n\\x00\\x00!]M\\x01\\x02\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00c\\x08\\x00\\x000NPK\\x01\\x02' \\\n      b'\\x14\\x00\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05\\x14\\xeb\\xba\\xf1\\x0cn\\x00\\x00\\x01]M\\x01\\x02\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x88\\x08\\x00\\x000OPK\\x01\\x02\\x14\\x00\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05\\x9e\\x85K' \\\n      b'\\xce\\xe7m\\x00\\x00\\xe1\\\\M\\x01\\x02\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\xad\\x08\\x00\\x000PPK\\x01' \\\n      b'\\x02\\x14\\x00\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05\\xdf\\xe7vB\\xc2m\\x00\\x00\\xc1\\\\M\\x01\\x02\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\xd2\\x08\\x00\\x000QPK\\x01\\x02\\x14\\x00\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05\\xc1\\x92' \\\n      b'\\x03\\xc7\\x9dm\\x00\\x00\\xa1\\\\M\\x01\\x02\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\xf7\\x08\\x00\\x000RPK' \\\n      b'\\x01\\x02\\x14\\x00\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05%\\xd6\\xe2\\xa8xm\\x00\\x00\\x81\\\\M\\x01\\x02\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x1c\\t\\x00\\x000SPK\\x01\\x02\\x14\\x00\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05\\xfd\\x99{' \\\n      b'iSm\\x00\\x00a\\\\M\\x01\\x02\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00A\\t\\x00\\x000TPK\\x01\\x02\\x14\\x00' \\\n      b'\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05\\x02\\x05\\xcf5.m\\x00\\x00A\\\\M\\x01\\x02\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00f\\t\\x00\\x000UPK\\x01\\x02\\x14\\x00\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05\\x16u\\x88!\\tm\\x00\\x00!\\\\M\\x01' \\\n      b'\\x02\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x8b\\t\\x00\\x000VPK\\x01\\x02\\x14\\x00\\x14\\x00\\x00\\x00' \\\n      b'\\x08\\x00\\xa0lH\\x05\\xc0\\x83S\\xdc\\xe4l\\x00\\x00\\x01\\\\M\\x01\\x02\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\xb0\\t\\x00\\x000WPK\\x01\\x02\\x14\\x00\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05\\x97\\x98=x\\xbfl\\x00\\x00\\xe1[' \\\n      b'M\\x01\\x02\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\xd5\\t\\x00\\x000XPK\\x01\\x02\\x14\\x00\\x14\\x00\\x00' \\\n      b'\\x00\\x08\\x00\\xa0lH\\x05\\x13L\\xe7\\xa9\\x9al\\x00\\x00\\xc1[' \\\n      b'M\\x01\\x02\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\xfa\\t\\x00\\x000YPK\\x01\\x02\\x14\\x00\\x14\\x00\\x00' \\\n      b'\\x00\\x08\\x00\\xa0lH\\x05T9\\x8e\\xd6ul\\x00\\x00\\xa1[' \\\n      b'M\\x01\\x02\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x1f\\n\\x00\\x000ZPK\\x01\\x02\\x14\\x00\\x14\\x00\\x00' \\\n      b'\\x00\\x08\\x00\\xa0lH\\x05\\x16\\xb7\\xa8XPl\\x00\\x00\\x81[' \\\n      b'M\\x01\\x02\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00D\\n\\x00\\x0010PK\\x01\\x02\\x14\\x00\\x14\\x00\\x00\\x00' \\\n      b'\\x08\\x00\\xa0lH\\x05\\xd4A5!+l\\x00\\x00a[M\\x01\\x02\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00i\\n\\x00' \\\n      b'\\x0011PK\\x01\\x02\\x14\\x00\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05\\x1a\\xa7\\x1a\\x81\\x06l\\x00\\x00A[' \\\n      b'M\\x01\\x02\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x8e\\n\\x00\\x0012PK\\x01\\x02\\x14\\x00\\x14\\x00\\x00' \\\n      b'\\x00\\x08\\x00\\xa0lH\\x05~\\xff:&\\xe1k\\x00\\x00![' \\\n      b'M\\x01\\x02\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\xb3\\n\\x00\\x0013PK\\x01\\x02\\x14\\x00\\x14\\x00\\x00' \\\n      b'\\x00\\x08\\x00\\xa0lH\\x052/\\x96Y\\xbck\\x00\\x00\\x01[' \\\n      b'M\\x01\\x02\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\xd8\\n\\x00\\x0014PK\\x01\\x02\\x14\\x00\\x14\\x00\\x00' \\\n      b'\\x00\\x08\\x00\\xa0lH\\x05\\xda\\x1df\\x80\\x97k\\x00\\x00\\xe1ZM\\x01\\x02\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\xfd\\n\\x00\\x0015PK\\x01\\x02\\x14\\x00\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05t\\xa6\\xb5\\xb3rk\\x00\\x00\\xc1ZM\\x01' \\\n      b'\\x02\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\"\\x0b\\x00\\x0016PK\\x01\\x02\\x14\\x00\\x14\\x00\\x00\\x00\\x08' \\\n      b'\\x00\\xa0lH\\x05\\xe5\\xce\\xd6\\rMk\\x00\\x00\\xa1ZM\\x01\\x02\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00G\\x0b' \\\n      b'\\x00\\x0017PK\\x01\\x02\\x14\\x00\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05f\\x8b\\xf0\\xd5(' \\\n      b'k\\x00\\x00\\x81ZM\\x01\\x02\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00l\\x0b\\x00\\x0018PK\\x01\\x02\\x14\\x00' \\\n      b'\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05\\xcb\\xe2\\xf1x\\x03k\\x00\\x00aZM\\x01\\x02\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x91\\x0b\\x00\\x0019PK\\x01\\x02\\x14\\x00\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05~\\xe2|\\x13\\xdej\\x00' \\\n      b'\\x00AZM\\x01\\x02\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\xb6\\x0b\\x00\\x001APK\\x01\\x02\\x14\\x00\\x14' \\\n      b'\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05?!\\x19,' \\\n      b'\\xb9j\\x00\\x00!ZM\\x01\\x02\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\xdb\\x0b\\x00\\x001BPK\\x01\\x02\\x14' \\\n      b'\\x00\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05\\n=$\\xcd\\x94j\\x00\\x00\\x01ZM\\x01\\x02\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x0c\\x00\\x001CPK\\x01\\x02\\x14\\x00\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05\\xaa\\x8f\\xedQoj\\x00\\x00' \\\n      b'\\xe1YM\\x01\\x02\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00%\\x0c\\x00\\x001DPK\\x01\\x02\\x14\\x00\\x14\\x00' \\\n      b'\\x00\\x00\\x08\\x00\\xa0lH\\x05\\xa5h\\x16\\xe2Jj\\x00\\x00\\xc1YM\\x01\\x02\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00J\\x0c\\x00\\x001EPK\\x01\\x02\\x14\\x00\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05\\xb6\\x87\"\\xfb%j\\x00\\x00\\xa1YM\\x01' \\\n      b'\\x02\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00o\\x0c\\x00\\x001FPK\\x01\\x02\\x14\\x00\\x14\\x00\\x00\\x00\\x08' \\\n      b'\\x00\\xa0lH\\x05\\xec\\xc90\\xdc\\x00j\\x00\\x00\\x81YM\\x01\\x02\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x94\\x0c\\x00\\x001GPK\\x01\\x02\\x14\\x00\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05\\xbc\\xba\\xc0`\\xdbi\\x00\\x00aYM\\x01\\x02' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\xb9\\x0c\\x00\\x001HPK\\x01\\x02\\x14\\x00\\x14\\x00\\x00\\x00\\x08' \\\n      b'\\x00\\xa0lH\\x05\\xb8qU/\\xb6i\\x00\\x00AYM\\x01\\x02\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\xde\\x0c\\x00' \\\n      b'\\x001IPK\\x01\\x02\\x14\\x00\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05\\x83\\x82\\xe2{' \\\n      b'\\x91i\\x00\\x00!YM\\x01\\x02\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x03\\r\\x00\\x001JPK\\x01\\x02\\x14' \\\n      b'\\x00\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05\\xc8\\xb5\\x945li\\x00\\x00\\x01YM\\x01\\x02\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00(\\r\\x00\\x001KPK\\x01\\x02\\x14\\x00\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05\\xae6\\xae5Gi\\x00\\x00' \\\n      b'\\xe1XM\\x01\\x02\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00M\\r\\x00\\x001LPK\\x01\\x02\\x14\\x00\\x14\\x00\\x00' \\\n      b'\\x00\\x08\\x00\\xa0lH\\x05\\x0b\\x04\\x86D\"i\\x00\\x00\\xc1XM\\x01\\x02\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00r\\r\\x00\\x001MPK\\x01\\x02\\x14\\x00\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05\\x8bN\\xd9\\xdc\\xfdh\\x00\\x00\\xa1XM\\x01\\x02' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x97\\r\\x00\\x001NPK\\x01\\x02\\x14\\x00\\x14\\x00\\x00\\x00\\x08' \\\n      b'\\x00\\xa0lH\\x05\\x12\\'\\\\>\\xd8h\\x00\\x00\\x81XM\\x01\\x02\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\xbc\\r' \\\n      b'\\x00\\x001OPK\\x01\\x02\\x14\\x00\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05\\x92\\x96\\x8b\\x82\\xb3h\\x00\\x00aXM\\x01\\x02\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\xe1\\r\\x00\\x001PPK\\x01\\x02\\x14\\x00\\x14\\x00\\x00\\x00\\x08\\x00' \\\n      b'\\xa0lH\\x05\\xeex\\x88\\x98\\x8eh\\x00\\x00AXM\\x01\\x02\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x06\\x0e' \\\n      b'\\x00\\x001QPK\\x01\\x02\\x14\\x00\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05d!3\\x93ih\\x00\\x00!XM\\x01\\x02\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00+\\x0e\\x00\\x001RPK\\x01\\x02\\x14\\x00\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05\\xd2' \\\n      b'\\xf6\\toDh\\x00\\x00\\x01XM\\x01\\x02\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00P\\x0e\\x00\\x001SPK\\x01\\x02' \\\n      b'\\x14\\x00\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05\\x93\\xb7\\x1c1\\x1fh\\x00\\x00\\xe1WM\\x01\\x02\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00u\\x0e\\x00\\x001TPK\\x01\\x02\\x14\\x00\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05%\\xd4\\xc1\\x93' \\\n      b'\\xfag\\x00\\x00\\xc1WM\\x01\\x02\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x9a\\x0e\\x00\\x001UPK\\x01\\x02' \\\n      b'\\x14\\x00\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05\\xc5\\xec\\xda\\x08\\xd5g\\x00\\x00\\xa1WM\\x01\\x02\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\xbf\\x0e\\x00\\x001VPK\\x01\\x02\\x14\\x00\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05\\x14\\xc7' \\\n      b'\\x84>\\xb0g\\x00\\x00\\x81WM\\x01\\x02\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\xe4\\x0e\\x00\\x001WPK\\x01' \\\n      b'\\x02\\x14\\x00\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05N\\xc9c\\xab\\x8bg\\x00\\x00aWM\\x01\\x02\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\t\\x0f\\x00\\x001XPK\\x01\\x02\\x14\\x00\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05 ' \\\n      b'\\ru\\xaafg\\x00\\x00AWM\\x01\\x02\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00.\\x0f\\x00\\x001YPK\\x01\\x02\\x14' \\\n      b'\\x00\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05\\x94FbWAg\\x00\\x00!WM\\x01\\x02\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00S\\x0f\\x00\\x001ZPK\\x01\\x02\\x14\\x00\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05\\xf01\\xb1\\xdd\\x1cg\\x00\\x00' \\\n      b'\\x01WM\\x01\\x02\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00x\\x0f\\x00\\x0020PK\\x01\\x02\\x14\\x00\\x14\\x00' \\\n      b'\\x00\\x00\\x08\\x00\\xa0lH\\x05t\\x00n\\x0f\\xf7f\\x00\\x00\\xe1VM\\x01\\x02\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x9d\\x0f\\x00\\x0021PK\\x01\\x02\\x14\\x00\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05\\xaa\\x85i,' \\\n      b'\\xd2f\\x00\\x00\\xc1VM\\x01\\x02\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\xc2\\x0f\\x00\\x0022PK\\x01\\x02' \\\n      b'\\x14\\x00\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05\\xae\\x0fA\\xf9\\xadf\\x00\\x00\\xa1VM\\x01\\x02\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\xe7\\x0f\\x00\\x0023PK\\x01\\x02\\x14\\x00\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05\\xbc\\x1e' \\\n      b'\\xf9\\x84\\x88f\\x00\\x00\\x81VM\\x01\\x02\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x0c\\x10\\x00\\x0024PK' \\\n      b'\\x01\\x02\\x14\\x00\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05.\\x98jGcf\\x00\\x00aVM\\x01\\x02\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x001\\x10\\x00\\x0025PK\\x01\\x02\\x14\\x00\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05_}0\\x02>f\\x00' \\\n      b'\\x00AVM\\x01\\x02\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00V\\x10\\x00\\x0026PK\\x01\\x02\\x14\\x00\\x14\\x00' \\\n      b'\\x00\\x00\\x08\\x00\\xa0lH\\x05\\xac\\r\\xc5\\xae\\x19f\\x00\\x00!VM\\x01\\x02\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00{\\x10\\x00\\x0027PK\\x01\\x02\\x14\\x00\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x056\\x1c\\xacP\\xf4e\\x00\\x00\\x01VM\\x01' \\\n      b'\\x02\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\xa0\\x10\\x00\\x0028PK\\x01\\x02\\x14\\x00\\x14\\x00\\x00\\x00' \\\n      b'\\x08\\x00\\xa0lH\\x05s\\x1biZ\\xcfe\\x00\\x00\\xe1UM\\x01\\x02\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\xc5' \\\n      b'\\x10\\x00\\x0029PK\\x01\\x02\\x14\\x00\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05\\xaaw\\xad9\\xaae\\x00\\x00\\xc1UM\\x01\\x02\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\xea\\x10\\x00\\x002APK\\x01\\x02\\x14\\x00\\x14\\x00\\x00\\x00\\x08\\x00' \\\n      b'\\xa0lH\\x05\\x10\\xe0c\\x02\\x85e\\x00\\x00\\xa1UM\\x01\\x02\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x0f' \\\n      b'\\x11\\x00\\x002BPK\\x01\\x02\\x14\\x00\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05\\x9e\\x11\\xcb\\xf0`e\\x00\\x00\\x81UM\\x01\\x02' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x004\\x11\\x00\\x002CPK\\x01\\x02\\x14\\x00\\x14\\x00\\x00\\x00\\x08\\x00' \\\n      b'\\xa0lH\\x05\\x06\\xb4\\x06\\xc4;e\\x00\\x00aUM\\x01\\x02\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00Y\\x11\\x00' \\\n      b'\\x002DPK\\x01\\x02\\x14\\x00\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05@\\x92\\xd21\\x16e\\x00\\x00AUM\\x01\\x02\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00~\\x11\\x00\\x002EPK\\x01\\x02\\x14\\x00\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05\\x19' \\\n      b'\\x85F\\xad\\xf1d\\x00\\x00!UM\\x01\\x02\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\xa3\\x11\\x00\\x002FPK\\x01' \\\n      b'\\x02\\x14\\x00\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05\\xbd\\x8e\\x15\\xae\\xccd\\x00\\x00\\x01UM\\x01\\x02\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\xc8\\x11\\x00\\x002GPK\\x01\\x02\\x14\\x00\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05`]\\xdb' \\\n      b'\\x9a\\xa7d\\x00\\x00\\xe1TM\\x01\\x02\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\xed\\x11\\x00\\x002HPK\\x01' \\\n      b'\\x02\\x14\\x00\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05\\xd2\\xfd\\xea;\\x82d\\x00\\x00\\xc1TM\\x01\\x02\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x12\\x12\\x00\\x002IPK\\x01\\x02\\x14\\x00\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x051\\x14' \\\n      b'\\x89\\xd9]d\\x00\\x00\\xa1TM\\x01\\x02\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x007\\x12\\x00\\x002JPK\\x01\\x02' \\\n      b'\\x14\\x00\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05\\xda\\xb6a\\xe48d\\x00\\x00\\x81TM\\x01\\x02\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\\\\\x12\\x00\\x002KPK\\x01\\x02\\x14\\x00\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05V-w\\xf7\\x13d\\x00' \\\n      b'\\x00aTM\\x01\\x02\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x81\\x12\\x00\\x002LPK\\x01\\x02\\x14\\x00\\x14' \\\n      b'\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05\\xcc\\xe9%\\xb0\\xeec\\x00\\x00ATM\\x01\\x02\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\xa6\\x12\\x00\\x002MPK\\x01\\x02\\x14\\x00\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05TR\\xad\\xcc\\xc9c\\x00\\x00!TM' \\\n      b'\\x01\\x02\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\xcb\\x12\\x00\\x002NPK\\x01\\x02\\x14\\x00\\x14\\x00\\x00' \\\n      b'\\x00\\x08\\x00\\xa0lH\\x05bX\\xc6\\x00\\xa4c\\x00\\x00\\x01TM\\x01\\x02\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\xf0\\x12\\x00\\x002OPK\\x01\\x02\\x14\\x00\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05l\\x1b\\xd5\\x11\\x7fc\\x00\\x00\\xe1SM' \\\n      b'\\x01\\x02\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x15\\x13\\x00\\x002PPK\\x01\\x02\\x14\\x00\\x14\\x00\\x00' \\\n      b'\\x00\\x08\\x00\\xa0lH\\x05\\x1d\\'}\\xeaZc\\x00\\x00\\xc1SM\\x01\\x02\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b':\\x13\\x00\\x002QPK\\x01\\x02\\x14\\x00\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05\\xff\\xe2\\xcf\\xd75c\\x00\\x00\\xa1SM\\x01\\x02' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00_\\x13\\x00\\x002RPK\\x01\\x02\\x14\\x00\\x14\\x00\\x00\\x00\\x08\\x00' \\\n      b'\\xa0lH\\x05=\\xba\\xfd\\x9b\\x10c\\x00\\x00\\x81SM\\x01\\x02\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x84' \\\n      b'\\x13\\x00\\x002SPK\\x01\\x02\\x14\\x00\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05\\x96\\x11\\xe0\\x95\\xebb\\x00\\x00aSM\\x01\\x02' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\xa9\\x13\\x00\\x002TPK\\x01\\x02\\x14\\x00\\x14\\x00\\x00\\x00\\x08' \\\n      b'\\x00\\xa0lH\\x05\\x17\\x04\\xc6\\x04\\xc6b\\x00\\x00ASM\\x01\\x02\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\xce\\x13\\x00\\x002UPK\\x01\\x02\\x14\\x00\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05\\xbd\\x15\\xcc(' \\\n      b'\\xa1b\\x00\\x00!SM\\x01\\x02\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\xf3\\x13\\x00\\x002VPK\\x01\\x02\\x14' \\\n      b'\\x00\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05`\\xf6O\\xfb|b\\x00\\x00\\x01SM\\x01\\x02\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x18\\x14\\x00\\x002WPK\\x01\\x02\\x14\\x00\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05i@\\xe1\\xc5Wb\\x00\\x00' \\\n      b'\\xe1RM\\x01\\x02\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00=\\x14\\x00\\x002XPK\\x01\\x02\\x14\\x00\\x14\\x00' \\\n      b'\\x00\\x00\\x08\\x00\\xa0lH\\x05r\\xb0\\xd6\\xf52b\\x00\\x00\\xc1RM\\x01\\x02\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00b\\x14\\x00\\x002YPK\\x01\\x02\\x14\\x00\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05\\x1e\\xd2\\xa0\\xfb\\rb\\x00\\x00\\xa1RM' \\\n      b'\\x01\\x02\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x87\\x14\\x00\\x002ZPK\\x01\\x02\\x14\\x00\\x14\\x00\\x00' \\\n      b'\\x00\\x08\\x00\\xa0lH\\x05\\xd1\\xcb\\xdb\\xe2\\xe8a\\x00\\x00\\x81RM\\x01\\x02\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\xac\\x14\\x00\\x0030PK\\x01\\x02\\x14\\x00\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05\\xf9.\\xeeu\\xc3a\\x00\\x00aRM\\x01' \\\n      b'\\x02\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\xd1\\x14\\x00\\x0031PK\\x01\\x02\\x14\\x00\\x14\\x00\\x00\\x00' \\\n      b'\\x08\\x00\\xa0lH\\x053\\xb4\\xc8\\xa1\\x9ea\\x00\\x00ARM\\x01\\x02\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\xf6\\x14\\x00\\x0032PK\\x01\\x02\\x14\\x00\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05\\xb5\\xc1\\xefZya\\x00\\x00!RM\\x01\\x02\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x1b\\x15\\x00\\x0033PK\\x01\\x02\\x14\\x00\\x14\\x00\\x00\\x00\\x08\\x00' \\\n      b'\\xa0lH\\x05@\\x02Q\\x9dTa\\x00\\x00\\x01RM\\x01\\x02\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00@\\x15\\x00' \\\n      b'\\x0034PK\\x01\\x02\\x14\\x00\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x059\\xd2\\xc4&/a\\x00\\x00\\xe1QM\\x01\\x02\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00e\\x15\\x00\\x0035PK\\x01\\x02\\x14\\x00\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05\\xfaw' \\\n      b'\\r\\x08\\na\\x00\\x00\\xc1QM\\x01\\x02\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x8a\\x15\\x00\\x0036PK\\x01' \\\n      b'\\x02\\x14\\x00\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05\\xed\\xb4\\xb4k\\xe5`\\x00\\x00\\xa1QM\\x01\\x02\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\xaf\\x15\\x00\\x0037PK\\x01\\x02\\x14\\x00\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x056\\x8f' \\\n      b'\\x10\\xd3\\xc0`\\x00\\x00\\x81QM\\x01\\x02\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\xd4\\x15\\x00\\x0038PK' \\\n      b'\\x01\\x02\\x14\\x00\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05_\\x82R\\xcc\\x9b`\\x00\\x00aQM\\x01\\x02\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\xf9\\x15\\x00\\x0039PK\\x01\\x02\\x14\\x00\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05\\xd7m\\xc4' \\\n      b'\\xc9v`\\x00\\x00AQM\\x01\\x02\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x1e\\x16\\x00\\x003APK\\x01\\x02\\x14' \\\n      b'\\x00\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05\\xf6uy\\x8aQ`\\x00\\x00!QM\\x01\\x02\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00C\\x16\\x00\\x003BPK\\x01\\x02\\x14\\x00\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05\\xb8p1\\xcf,' \\\n      b'`\\x00\\x00\\x01QM\\x01\\x02\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00h\\x16\\x00\\x003CPK\\x01\\x02\\x14\\x00' \\\n      b'\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05Up\\xc0@\\x07`\\x00\\x00\\xe1PM\\x01\\x02\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x8d\\x16\\x00\\x003DPK\\x01\\x02\\x14\\x00\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05\\xecO\\x00\\xb3\\xe2_\\x00\\x00' \\\n      b'\\xc1PM\\x01\\x02\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\xb2\\x16\\x00\\x003EPK\\x01\\x02\\x14\\x00\\x14' \\\n      b'\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05\\x10\\x9f\\x12\\x91\\xbd_\\x00\\x00\\xa1PM\\x01\\x02\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\xd7\\x16\\x00\\x003FPK\\x01\\x02\\x14\\x00\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05+\\xbc\\xa3\\x88\\x98_\\x00' \\\n      b'\\x00\\x81PM\\x01\\x02\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\xfc\\x16\\x00\\x003GPK\\x01\\x02\\x14\\x00' \\\n      b'\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05a\\x9dM\\xe9s_\\x00\\x00aPM\\x01\\x02\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00!\\x17\\x00\\x003HPK\\x01\\x02\\x14\\x00\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05\\xe98\\x02/N_\\x00\\x00APM\\x01\\x02' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00F\\x17\\x00\\x003IPK\\x01\\x02\\x14\\x00\\x14\\x00\\x00\\x00\\x08\\x00' \\\n      b'\\xa0lH\\x05w\\x14\\x8c\\xe6)_\\x00\\x00!PM\\x01\\x02\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00k\\x17\\x00' \\\n      b'\\x003JPK\\x01\\x02\\x14\\x00\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05\\xd0E\\x03l\\x04_\\x00\\x00\\x01PM\\x01\\x02\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x90\\x17\\x00\\x003KPK\\x01\\x02\\x14\\x00\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH' \\\n      b'\\x05\\xf1\\xb4\\xeb\\xae\\xdf^\\x00\\x00\\xe1OM\\x01\\x02\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\xb5\\x17' \\\n      b'\\x00\\x003LPK\\x01\\x02\\x14\\x00\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05\\xd4\\xa0\\'F\\xba^\\x00\\x00\\xc1OM\\x01\\x02\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\xda\\x17\\x00\\x003MPK\\x01\\x02\\x14\\x00\\x14\\x00\\x00\\x00\\x08\\x00' \\\n      b'\\xa0lH\\x05pR}\\xf1\\x95^\\x00\\x00\\xa1OM\\x01\\x02\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\xff\\x17\\x00' \\\n      b'\\x003NPK\\x01\\x02\\x14\\x00\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05M\\xde\\xa4\\xecp^\\x00\\x00\\x81OM\\x01\\x02\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00$\\x18\\x00\\x003OPK\\x01\\x02\\x14\\x00\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05' \\\n      b'&\\xf7\\xeb\\xb6K^\\x00\\x00aOM\\x01\\x02\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00I\\x18\\x00\\x003PPK\\x01' \\\n      b'\\x02\\x14\\x00\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05\\x00\\xf8\\xcd|&^\\x00\\x00AOM\\x01\\x02\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00n\\x18\\x00\\x003QPK\\x01\\x02\\x14\\x00\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05\\x7f(' \\\n      b'\\xfb^\\x01^\\x00\\x00!OM\\x01\\x02\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x93\\x18\\x00\\x003RPK\\x01\\x02' \\\n      b'\\x14\\x00\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05R\\x1b\\x94z\\xdc]\\x00\\x00\\x01OM\\x01\\x02\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\xb8\\x18\\x00\\x003SPK\\x01\\x02\\x14\\x00\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05g\\xebI4\\xb7' \\\n      b']\\x00\\x00\\xe1NM\\x01\\x02\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\xdd\\x18\\x00\\x003TPK\\x01\\x02\\x14' \\\n      b'\\x00\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05\\xbf\\xdd\\x1d\\xcf\\x92]\\x00\\x00\\xc1NM\\x01\\x02\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x02\\x19\\x00\\x003UPK\\x01\\x02\\x14\\x00\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05\\xcb\\xb2Q*m' \\\n      b']\\x00\\x00\\xa1NM\\x01\\x02\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\'\\x19\\x00\\x003VPK\\x01\\x02\\x14\\x00' \\\n      b'\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05\\xb6\\x04\\xa8\\xd5H]\\x00\\x00\\x81NM\\x01\\x02\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00L\\x19\\x00\\x003WPK\\x01\\x02\\x14\\x00\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x051\\x00\\xa7\\xd1#]\\x00' \\\n      b'\\x00aNM\\x01\\x02\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00q\\x19\\x00\\x003XPK\\x01\\x02\\x14\\x00\\x14\\x00' \\\n      b'\\x00\\x00\\x08\\x00\\xa0lH\\x05\\x1e\\x8eJ]\\xfe\\\\\\x00\\x00ANM\\x01\\x02\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x96\\x19\\x00\\x003YPK\\x01\\x02\\x14\\x00\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05\\xfd\\x11\\xc8\\xaf\\xd9\\\\\\x00\\x00!NM' \\\n      b'\\x01\\x02\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\xbb\\x19\\x00\\x003ZPK\\x01\\x02\\x14\\x00\\x14\\x00\\x00' \\\n      b'\\x00\\x08\\x00\\xa0lH\\x05CiG\\x90\\xb4\\\\\\x00\\x00\\x01NM\\x01\\x02\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\xe0\\x19\\x00\\x0040PK\\x01\\x02\\x14\\x00\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05\\xcb\\t\\x95K\\x8f\\\\\\x00\\x00\\xe1MM\\x01\\x02' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x05\\x1a\\x00\\x0041PK\\x01\\x02\\x14\\x00\\x14\\x00\\x00\\x00\\x08' \\\n      b'\\x00\\xa0lH\\x05\\xab\\xd2\\xd0\\x9cj\\\\\\x00\\x00\\xc1MM\\x01\\x02\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'*\\x1a\\x00\\x0042PK\\x01\\x02\\x14\\x00\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05\\x10\\x1a\\x18\\xd3E\\\\\\x00\\x00\\xa1MM\\x01\\x02' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00O\\x1a\\x00\\x0043PK\\x01\\x02\\x14\\x00\\x14\\x00\\x00\\x00\\x08\\x00' \\\n      b'\\xa0lH\\x05\\x90\\xb5\\x86\\xc6 \\\\\\x00\\x00\\x81MM\\x01\\x02\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00t\\x1a' \\\n      b'\\x00\\x0044PK\\x01\\x02\\x14\\x00\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05\\xc5\\x99,' \\\n      b'/\\xfb[\\x00\\x00aMM\\x01\\x02\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x99\\x1a\\x00\\x0045PK\\x01\\x02\\x14' \\\n      b'\\x00\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05\\xbd0\\xfej\\xd6[' \\\n      b'\\x00\\x00AMM\\x01\\x02\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\xbe\\x1a\\x00\\x0046PK\\x01\\x02\\x14\\x00' \\\n      b'\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05S\\xe8\\xd4\\x86\\xb1[' \\\n      b'\\x00\\x00!MM\\x01\\x02\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\xe3\\x1a\\x00\\x0047PK\\x01\\x02\\x14\\x00' \\\n      b'\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05\\xad\\r]>\\x8c[' \\\n      b'\\x00\\x00\\x01MM\\x01\\x02\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x08\\x1b\\x00\\x0048PK\\x01\\x02\\x14' \\\n      b'\\x00\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05:\\xe8\\xf8\\x97g[' \\\n      b'\\x00\\x00\\xe1LM\\x01\\x02\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00-\\x1b\\x00\\x0049PK\\x01\\x02\\x14\\x00' \\\n      b'\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05n[?\\xeaB[' \\\n      b'\\x00\\x00\\xc1LM\\x01\\x02\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00R\\x1b\\x00\\x004APK\\x01\\x02\\x14\\x00' \\\n      b'\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05)*m\\x97\\x1d[' \\\n      b'\\x00\\x00\\xa1LM\\x01\\x02\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00w\\x1b\\x00\\x004BPK\\x01\\x02\\x14\\x00' \\\n      b'\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x055\\xccS\\xc6\\xf8Z\\x00\\x00\\x81LM\\x01\\x02\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x9c\\x1b\\x00\\x004CPK\\x01\\x02\\x14\\x00\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05\\xb3\\x1d5?\\xd3Z\\x00' \\\n      b'\\x00aLM\\x01\\x02\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\xc1\\x1b\\x00\\x004DPK\\x01\\x02\\x14\\x00\\x14' \\\n      b'\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05\\xf7\\x16\\x95\\xe6\\xaeZ\\x00\\x00ALM\\x01\\x02\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\xe6\\x1b\\x00\\x004EPK\\x01\\x02\\x14\\x00\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05\\x9ck\\xcf\\xf4\\x89Z\\x00' \\\n      b'\\x00!LM\\x01\\x02\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x0b\\x1c\\x00\\x004FPK\\x01\\x02\\x14\\x00\\x14' \\\n      b'\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05}\\xf4\\x07\\x95dZ\\x00\\x00\\x01LM\\x01\\x02\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x000\\x1c\\x00\\x004GPK\\x01\\x02\\x14\\x00\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05\\xe0\\xa1\\x8fJ?Z\\x00\\x00\\xe1KM' \\\n      b'\\x01\\x02\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00U\\x1c\\x00\\x004HPK\\x01\\x02\\x14\\x00\\x14\\x00\\x00\\x00' \\\n      b'\\x08\\x00\\xa0lH\\x05\\x18\\xeb\\x1c\\xc2\\x1aZ\\x00\\x00\\xc1KM\\x01\\x02\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00z\\x1c\\x00\\x004IPK\\x01\\x02\\x14\\x00\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05D\\x91Y\\xbc\\xf5Y\\x00\\x00\\xa1KM\\x01\\x02' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x9f\\x1c\\x00\\x004JPK\\x01\\x02\\x14\\x00\\x14\\x00\\x00\\x00\\x08' \\\n      b'\\x00\\xa0lH\\x05\\x94\\xe2\\xcd\\xba\\xd0Y\\x00\\x00\\x81KM\\x01\\x02\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\xc4\\x1c\\x00\\x004KPK\\x01\\x02\\x14\\x00\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05\\x16\\x13\\x88q\\xabY\\x00\\x00aKM\\x01\\x02' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\xe9\\x1c\\x00\\x004LPK\\x01\\x02\\x14\\x00\\x14\\x00\\x00\\x00\\x08' \\\n      b'\\x00\\xa0lH\\x05\\xbf\\x13\\xfc\\xa2\\x86Y\\x00\\x00AKM\\x01\\x02\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x0e\\x1d\\x00\\x004MPK\\x01\\x02\\x14\\x00\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05l8\\x93BaY\\x00\\x00!KM\\x01\\x02\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x003\\x1d\\x00\\x004NPK\\x01\\x02\\x14\\x00\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH' \\\n      b'\\x05A\\xc2\\x1d\\x80<Y\\x00\\x00\\x01KM\\x01\\x02\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00X\\x1d\\x00' \\\n      b'\\x004OPK\\x01\\x02\\x14\\x00\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05\\xa8e\\xb9D\\x17Y\\x00\\x00\\xe1JM\\x01\\x02\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00}\\x1d\\x00\\x004PPK\\x01\\x02\\x14\\x00\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05*W' \\\n      b'\\xff\\x8d\\xf2X\\x00\\x00\\xc1JM\\x01\\x02\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\xa2\\x1d\\x00\\x004QPK' \\\n      b'\\x01\\x02\\x14\\x00\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05ST}\\x95\\xcdX\\x00\\x00\\xa1JM\\x01\\x02\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\xc7\\x1d\\x00\\x004RPK\\x01\\x02\\x14\\x00\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x057\\xe9\\x8e' \\\n      b'.\\xa8X\\x00\\x00\\x81JM\\x01\\x02\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\xec\\x1d\\x00\\x004SPK\\x01\\x02' \\\n      b'\\x14\\x00\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05\\xb9\\xb2>\\xb0\\x83X\\x00\\x00aJM\\x01\\x02\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x11\\x1e\\x00\\x004TPK\\x01\\x02\\x14\\x00\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05\\xf5\\x05\\xc9' \\\n      b'\\xb4^X\\x00\\x00AJM\\x01\\x02\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x006\\x1e\\x00\\x004UPK\\x01\\x02\\x14' \\\n      b'\\x00\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05\\xfb\\xa9\\xec\\xe09X\\x00\\x00!JM\\x01\\x02\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00[\\x1e\\x00\\x004VPK\\x01\\x02\\x14\\x00\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05s6\\x0cw\\x14X\\x00\\x00' \\\n      b'\\x01JM\\x01\\x02\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x80\\x1e\\x00\\x004WPK\\x01\\x02\\x14\\x00\\x14' \\\n      b'\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05\\xc5d\\xe9r\\xefW\\x00\\x00\\xe1IM\\x01\\x02\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\xa5\\x1e\\x00\\x004XPK\\x01\\x02\\x14\\x00\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05\\x82{' \\\n      b'\\xb6*\\xcaW\\x00\\x00\\xc1IM\\x01\\x02\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\xca\\x1e\\x00\\x004YPK\\x01' \\\n      b'\\x02\\x14\\x00\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05C\\xfe\\xcd\\x10\\xa5W\\x00\\x00\\xa1IM\\x01\\x02\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\xef\\x1e\\x00\\x004ZPK\\x01\\x02\\x14\\x00\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05j*\\x1d' \\\n      b'\\x8f\\x80W\\x00\\x00\\x81IM\\x01\\x02\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x14\\x1f\\x00\\x0050PK\\x01' \\\n      b'\\x02\\x14\\x00\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05\\xe3\\xad\\xf0\\x83[' \\\n      b'W\\x00\\x00aIM\\x01\\x02\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x009\\x1f\\x00\\x0051PK\\x01\\x02\\x14\\x00\\x14' \\\n      b'\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05\\x85\\x90\\xbb\\xe36W\\x00\\x00AIM\\x01\\x02\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00^\\x1f\\x00\\x0052PK\\x01\\x02\\x14\\x00\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05\\xe7\\x14\\xda\\xa7\\x11W\\x00\\x00' \\\n      b'!IM\\x01\\x02\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x83\\x1f\\x00\\x0053PK\\x01\\x02\\x14\\x00\\x14\\x00' \\\n      b'\\x00\\x00\\x08\\x00\\xa0lH\\x05\\xdd\\xde\\x83\\xe8\\xecV\\x00\\x00\\x01IM\\x01\\x02\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\xa8\\x1f\\x00\\x0054PK\\x01\\x02\\x14\\x00\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05\\xfcfm\\x8c\\xc7V\\x00\\x00' \\\n      b'\\xe1HM\\x01\\x02\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\xcd\\x1f\\x00\\x0055PK\\x01\\x02\\x14\\x00\\x14' \\\n      b'\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05\\xed\\xadFp\\xa2V\\x00\\x00\\xc1HM\\x01\\x02\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\xf2\\x1f\\x00\\x0056PK\\x01\\x02\\x14\\x00\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05\\x9dh0\\x9a}V\\x00\\x00\\xa1HM' \\\n      b'\\x01\\x02\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x17 ' \\\n      b'\\x00\\x0057PK\\x01\\x02\\x14\\x00\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05\\xd6\\xcdd\\x91XV\\x00\\x00\\x81HM\\x01\\x02\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00< ' \\\n      b'\\x00\\x0058PK\\x01\\x02\\x14\\x00\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05\\x99\\xe6\\x86\\xe93V\\x00\\x00aHM\\x01\\x02\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00a ' \\\n      b'\\x00\\x0059PK\\x01\\x02\\x14\\x00\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05\\xb6\\xff\\x82B\\x0eV\\x00\\x00AHM\\x01\\x02\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x86 ' \\\n      b'\\x00\\x005APK\\x01\\x02\\x14\\x00\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05\\xc1R\\xd7+\\xe9U\\x00\\x00!HM\\x01\\x02\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\xab ' \\\n      b'\\x00\\x005BPK\\x01\\x02\\x14\\x00\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05\\x19\\r)\\xcb\\xc4U\\x00\\x00\\x01HM\\x01\\x02\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\xd0 ' \\\n      b'\\x00\\x005CPK\\x01\\x02\\x14\\x00\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05\\xaa\\x07\\xd1+\\x9fU\\x00\\x00\\xe1GM\\x01\\x02\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\xf5 ' \\\n      b'\\x00\\x005DPK\\x01\\x02\\x14\\x00\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05]4\\x8f\\xadzU\\x00\\x00\\xc1GM\\x01\\x02\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x1a!\\x00\\x005EPK\\x01\\x02\\x14\\x00\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05' \\\n      b'\\xb7\\xf4;\\xc8UU\\x00\\x00\\xa1GM\\x01\\x02\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00?!\\x00\\x005FPK\\x01' \\\n      b'\\x02\\x14\\x00\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05\\xeaN\\xedc0U\\x00\\x00\\x81GM\\x01\\x02\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00d!\\x00\\x005GPK\\x01\\x02\\x14\\x00\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05\\xb7\\xd9\\x99?\\x0bU' \\\n      b'\\x00\\x00aGM\\x01\\x02\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x89!\\x00\\x005HPK\\x01\\x02\\x14\\x00\\x14' \\\n      b'\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05\\x9a\\xec\\x13\\xef\\xe6T\\x00\\x00AGM\\x01\\x02\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\xae!\\x00\\x005IPK\\x01\\x02\\x14\\x00\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05~\\x94\\x0e\\xf1\\xc1T\\x00\\x00' \\\n      b'!GM\\x01\\x02\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\xd3!\\x00\\x005JPK\\x01\\x02\\x14\\x00\\x14\\x00\\x00' \\\n      b'\\x00\\x08\\x00\\xa0lH\\x05\\x08\\x99\\xd0\\xf7\\x9cT\\x00\\x00\\x01GM\\x01\\x02\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\xf8!\\x00\\x005KPK\\x01\\x02\\x14\\x00\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05\\x8e\\x14\\xb2bwT\\x00\\x00\\xe1FM\\x01' \\\n      b'\\x02\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x1d\"\\x00\\x005LPK\\x01\\x02\\x14\\x00\\x14\\x00\\x00\\x00\\x08' \\\n      b'\\x00\\xa0lH\\x05\\xa11\\x03\\xa6RT\\x00\\x00\\xc1FM\\x01\\x02\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00B\"\\x00' \\\n      b'\\x005MPK\\x01\\x02\\x14\\x00\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05\\x8aS\\xa4\\xcd-T\\x00\\x00\\xa1FM\\x01\\x02\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00g\"\\x00\\x005NPK\\x01\\x02\\x14\\x00\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05\\x9d' \\\n      b'\\x0e\\xe9\\xdf\\x08T\\x00\\x00\\x81FM\\x01\\x02\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x8c\"\\x00\\x005OPK' \\\n      b'\\x01\\x02\\x14\\x00\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05\\x1b\\rI\\xaa\\xe3S\\x00\\x00aFM\\x01\\x02\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\xb1\"\\x00\\x005PPK\\x01\\x02\\x14\\x00\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05k\\x03Gz\\xbeS' \\\n      b'\\x00\\x00AFM\\x01\\x02\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\xd6\"\\x00\\x005QPK\\x01\\x02\\x14\\x00\\x14' \\\n      b'\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05\\xca0\\xb4\\xa5\\x99S\\x00\\x00!FM\\x01\\x02\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\xfb\"\\x00\\x005RPK\\x01\\x02\\x14\\x00\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05,' \\\n      b'^\\xb9JtS\\x00\\x00\\x01FM\\x01\\x02\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00 ' \\\n      b'#\\x00\\x005SPK\\x01\\x02\\x14\\x00\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05\\xf3\\x1e\\x07\\xfcOS\\x00\\x00\\xe1EM\\x01\\x02\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00E#\\x00\\x005TPK\\x01\\x02\\x14\\x00\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH' \\\n      b'\\x05Oo\\x8c\\x8a*S\\x00\\x00\\xc1EM\\x01\\x02\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00j#\\x00\\x005UPK\\x01' \\\n      b'\\x02\\x14\\x00\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05\\xcb?~\\x93\\x05S\\x00\\x00\\xa1EM\\x01\\x02\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x8f#\\x00\\x005VPK\\x01\\x02\\x14\\x00\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05\\xf4,' \\\n      b'\\x82\\xf1\\xe0R\\x00\\x00\\x81EM\\x01\\x02\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\xb4#\\x00\\x005WPK\\x01' \\\n      b'\\x02\\x14\\x00\\x14\\x00\\x00\\x00\\x08\\x00\\xa0lH\\x05Q\\xbaZ\\x17\\xbbR\\x00\\x00aEM\\x01\\x02\\x00\\x00\\x00\\x00\\x00\\x00\\x00' \\\n      b'\\x00\\x00\\x00\\x00\\x00\\x00\\xd9#\\x00\\x005XPK\\x05\\x06\\x00\\x00\\x00\\x00\\xfa\\x00\\xfa\\x00\\xbc.\\x00\\x00\\xb4v\\x00\\x00' \\\n      b'\\x00\\x00 '\n"
  },
  {
    "path": "tests/filters/__init__.py",
    "content": ""
  },
  {
    "path": "tests/filters/conftest.py",
    "content": "import re\n\nimport pytest\n\nfrom credsweeper.common.keyword_pattern import KeywordPattern\nfrom credsweeper.file_handler.analysis_target import AnalysisTarget\nfrom credsweeper.file_handler.descriptor import Descriptor\n\nsuccess_line_list = [  #\n    \"\\\"passwd\\\": \\\"Crackle4421\\\"\",  #\n    \"passwd = Crackle4421\",  #\n    \"passwd = 'Crackle4421'\",  #\n    \"passwd='''MyP@5$word''';\",  #\n    'passwd=\"\"\"MyP@5$word\"\"\";',  #\n    \"passwd = 'Crackle4421'\",  #\n    \"export passwd=Crackle4421;\",  #\n    \"// passwd = Crackle4421\",  #\n    \"/* passwd = Crackle4421\",  #\n    \" * passwd = Crackle4421\",  #\n    \"# passwd = Crackle4421\",  #\n]\n\n\n@pytest.fixture(params=success_line_list)\ndef success_line(request) -> str:\n    return request.param\n\n\nKEYWORD_PASSWORD_PATTERN = KeywordPattern.get_keyword_pattern(\n    r\"(?<!by)pass(?!e[dns]|ing|ion|age|\\s+[a-z]{3,80})|pw(d|\\b)\")\n\nLINE_VALUE_PATTERN = re.compile(r\"^(?P<value>.*)$\")\n\nLINE_VARIABLE_PATTERN = re.compile(r\"^(?P<variable>.*)$\")\n\nDUMMY_DESCRIPTOR = Descriptor(\"\", \"\", \"\")\n\nDUMMY_ANALYSIS_TARGET = AnalysisTarget(line_pos=0, lines=[\"\"], line_nums=[1], descriptor=DUMMY_DESCRIPTOR)\n"
  },
  {
    "path": "tests/filters/test_line_git_binary_check.py",
    "content": "import pytest\n\nfrom credsweeper.file_handler.analysis_target import AnalysisTarget\nfrom credsweeper.filters import LineGitBinaryCheck\nfrom tests.filters.conftest import LINE_VALUE_PATTERN, DUMMY_DESCRIPTOR\nfrom tests.test_utils.dummy_line_data import get_line_data\n\n\nclass TestLineGitBinaryCheck:\n\n    @pytest.mark.parametrize(\"line\",\n                             ['{\"test\":1,\"pw\":\"sn2e8dgWwW\",\"payload\":\"EYlS}b+C(YT)lWLGxNdj7Pw=w\"}', 'XcmV?d00001'])\n    def test_line_specific_key_check_p(self, file_path: pytest.fixture, line: str) -> None:\n        cred_candidate = get_line_data(file_path, line=line, pattern=LINE_VALUE_PATTERN)\n        target = AnalysisTarget(line_pos=0, lines=[line], line_nums=[1], descriptor=DUMMY_DESCRIPTOR)\n        assert LineGitBinaryCheck().run(cred_candidate, target) is False\n\n    @pytest.mark.parametrize(\"line\",\n                             ['zxNdj)EYlS}b8JGyg7Pw=wujtWvwg9)mv+;vvr}dADtX-(^(6N+C(YT)lWLG7tdu$7', 'HcmV?d00001'])\n    def test_line_specific_key_check_n(self, file_path: pytest.fixture, line: str) -> None:\n        cred_candidate = get_line_data(file_path, line=line, pattern=LINE_VALUE_PATTERN)\n        target = AnalysisTarget(line_pos=0, lines=[line], line_nums=[1], descriptor=DUMMY_DESCRIPTOR)\n        assert LineGitBinaryCheck().run(cred_candidate, target) is True\n"
  },
  {
    "path": "tests/filters/test_line_specific_key_check.py",
    "content": "import pytest\n\nfrom credsweeper.file_handler.analysis_target import AnalysisTarget\nfrom credsweeper.filters import LineSpecificKeyCheck\nfrom tests.filters.conftest import LINE_VALUE_PATTERN, DUMMY_DESCRIPTOR\nfrom tests.test_utils.dummy_line_data import get_line_data\n\n\nclass TestLineSpecificKeyCheck:\n\n    @pytest.mark.parametrize(\"line\", [\n        '\"AwsAccessKey\": \"AKIAGIREOGIAWSKEY123,',\n    ])\n    def test_line_specific_key_check_p(self, file_path: pytest.fixture, line: str) -> None:\n        cred_candidate = get_line_data(file_path, line=line, pattern=LINE_VALUE_PATTERN)\n        target = AnalysisTarget(line_pos=0, lines=[line], line_nums=[1], descriptor=DUMMY_DESCRIPTOR)\n        assert LineSpecificKeyCheck().run(cred_candidate, target) is False\n\n    @pytest.mark.parametrize(\"line\", [\n        '\"AwsAccessKey\": enc(\"AKIAGIREOGIAWSKEY123\"),',\n        '\"AwsAccessKey as example\": \"AKIAGIREXAMPLEKEY123\"',\n    ])\n    def test_line_specific_key_check_n(self, file_path: pytest.fixture, line: str) -> None:\n        cred_candidate = get_line_data(file_path, line=line, pattern=LINE_VALUE_PATTERN)\n        # LINE_VALUE_PATTERN does not detect a value position\n        cred_candidate.value_start = line.find(\"AKIA\")\n        target = AnalysisTarget(line_pos=0, lines=[line], line_nums=[1], descriptor=DUMMY_DESCRIPTOR)\n        assert LineSpecificKeyCheck().run(cred_candidate, target) is True\n"
  },
  {
    "path": "tests/filters/test_line_uue_part_check.py",
    "content": "from unittest import TestCase\n\nfrom credsweeper.file_handler.analysis_target import AnalysisTarget\nfrom credsweeper.filters.line_uue_part_check import LineUUEPartCheck\nfrom tests.filters.conftest import LINE_VALUE_PATTERN, DUMMY_DESCRIPTOR\nfrom tests.test_utils.dummy_line_data import get_line_data\n\n\nclass TestLineUUEPartCheck(TestCase):\n\n    def test_line_uue_part_check_short_n(self):\n        line = \"\"\"#````\"\"\"\n        cred_candidate = get_line_data(line=line, pattern=LINE_VALUE_PATTERN)\n        target = AnalysisTarget(line_pos=0, lines=[line, line], line_nums=[1, 2], descriptor=DUMMY_DESCRIPTOR)\n        self.assertFalse(LineUUEPartCheck().run(cred_candidate, target))\n\n    def test_line_uue_part_check_uue__n(self):\n        line = \"\"\"M[@%]PW:2Z.Q?2M^S;`4G?E0C.@V&?0KY]]\"H3Y@6$#I4V*R^\"+B,2P6`A)UL\"\"\"\n        cred_candidate = get_line_data(line=line, pattern=LINE_VALUE_PATTERN)\n        cred_candidate.line_pos = 1\n        target = AnalysisTarget(line_pos=1,\n                                lines=[\"begin 644 x3wo.bin\", line, \"#````\", \"`\", \"end\"],\n                                line_nums=[1, 2, 3, 4, 5],\n                                descriptor=DUMMY_DESCRIPTOR)\n        self.assertFalse(LineUUEPartCheck().run(cred_candidate, target))\n\n    def test_line_uue_part_single_n(self):\n        line = \"\"\"M[@%]PW:2Z.Q?2M^S;`4G?E0C.@V&?0KY]]\"H3Y@6$#I4V*R^\"+B,2P6`A)UL\"\"\"\n        cred_candidate = get_line_data(line=line, pattern=LINE_VALUE_PATTERN)\n        target = AnalysisTarget(line_pos=0, lines=[line], line_nums=[1], descriptor=DUMMY_DESCRIPTOR)\n        self.assertFalse(LineUUEPartCheck().run(cred_candidate, target))\n\n    def test_line_uue_part_check_n(self):\n        line = \"\"\"M[@%]PW:2Z.Q?2M^S;`4G?E0C.@V&?0KY]]\"H3Y@6$#I4V*R^\"D+lowercase\"\"\"\n        cred_candidate = get_line_data(line=line, pattern=LINE_VALUE_PATTERN)\n        target = AnalysisTarget(line_pos=0, lines=[line, line], line_nums=[1, 2], descriptor=DUMMY_DESCRIPTOR)\n        self.assertFalse(LineUUEPartCheck().run(cred_candidate, target))\n\n    def test_line_uue_part_check_p(self):\n        line = \"\"\"M[@%]PW:2Z.Q?2M^S;`4G?E0C.@V&?0KY]]\"H3Y@6$#I4V*R^\"+B,2P6`A)UL\"\"\"\n        cred_candidate = get_line_data(line=line, pattern=LINE_VALUE_PATTERN)\n        target = AnalysisTarget(line_pos=0, lines=[line, line], line_nums=[1, 2], descriptor=DUMMY_DESCRIPTOR)\n        self.assertTrue(LineUUEPartCheck().run(cred_candidate, target))\n        # check for empty line\n        cred_candidate.line = ''\n        self.assertTrue(LineUUEPartCheck().run(cred_candidate, target))\n"
  },
  {
    "path": "tests/filters/test_value_allowlist_check.py",
    "content": "import pytest\n\nfrom credsweeper.filters import ValueAllowlistCheck\nfrom tests.filters.conftest import DUMMY_ANALYSIS_TARGET, KEYWORD_PASSWORD_PATTERN\nfrom tests.test_utils.dummy_line_data import get_line_data\n\n\nclass TestValueAllowlistCheck:\n\n    @pytest.mark.parametrize(\n        \"line\",\n        [  #\n            \"password = $4eCr3t\",  #\n            \"pass=$((0394584039))\",  #\n            \"password = 'F(b7)]DAS^iCv0vqIJOvGg<5<F(lwQ'\",  #\n            \"password = P@s$w0Rd\",  #\n            \"password = ENCrackle123)\",  #\n            \"password = ENC[Crackle123\",  #\n            \"password = ${@35%1\",  #\n            \"password = $?$Cr3t\",  #\n            \"password = #{PA13\",  #\n            \"password = #{{{{\",  #\n            \"password = !t->(pass);\",  #\n            \"password = ***test***\",  #\n            \"password = .*@@@@@@\",  #\n            \"pass=get->pass('''ARGS\",  #\n            \"password = '$34%4reGE_'\",  #\n            \"password = '$D34%4reGE_'\",  #\n        ])\n    def test_value_allowlist_check_p(self, file_path: pytest.fixture, line: str) -> None:\n        line_data = get_line_data(file_path=file_path, line=line, pattern=KEYWORD_PASSWORD_PATTERN)\n        assert ValueAllowlistCheck().run(line_data, DUMMY_ANALYSIS_TARGET) is False\n\n    @pytest.mark.parametrize(\n        \"line\",\n        [  #\n            '$passwordLabel = $sourceLabel.SelectItem(\"password\")',  #\n            'password=$this->cryptCore->getPw()',  #\n            'password=$this::cryptCore',  #\n            'pass=$(a-tool-invocation --arg 1)',  # ???\n            'pass=\"$(a-tool-invocation | pipe-processing)\"',  #\n            \"pass=get->pass(arg\",  #\n            \"PASS:@@@hl@@@PASS@@@endhl@@@\",  #\n            \"pass:='ENC(Crackle123)'\",  #\n            \"pass:'ENC[Crackle123]'\",  #\n            \"pass=${REMOVE_PREFIX#prefix}\",  #\n            \"pass=$PASSWORD\",  #\n            \"pass===#{PASSWORD}\",  #\n            \"pass=>#{{PASSWORD}}\",  #\n            \"pass:test*****\",  #\n            'PASS=\"${*}\"',  #\n            'PASS=\"$123\"',  #\n            'PASS=\"$A1B2C3D\"',  #\n        ])\n    def test_value_allowlist_check_n(self, file_path: pytest.fixture, line: str) -> None:\n        line_data = get_line_data(file_path=file_path, line=line, pattern=KEYWORD_PASSWORD_PATTERN)\n        assert ValueAllowlistCheck().run(line_data, DUMMY_ANALYSIS_TARGET) is True\n"
  },
  {
    "path": "tests/filters/test_value_array_dictionary_check.py",
    "content": "import pytest\n\nfrom credsweeper.filters import ValueArrayDictionaryCheck\nfrom credsweeper.rules.rule import Rule\nfrom tests.filters.conftest import DUMMY_ANALYSIS_TARGET\nfrom tests.test_utils.dummy_line_data import get_line_data\n\n\nclass TestValueArrayDictionaryCheck:\n\n    @pytest.fixture\n    def token_rule(self, config) -> Rule:\n        token_rule_without_filters = {\n            \"name\": \"Password\",\n            \"severity\": \"medium\",\n            \"confidence\": \"moderate\",\n            \"type\": \"keyword\",\n            \"values\": [\"pass\"],\n            \"filter_type\": [ValueArrayDictionaryCheck.__name__],\n            \"use_ml\": True,\n            \"min_line_len\": 0,\n            \"target\": [\"code\", \"doc\"],\n        }\n        rule = Rule(config, token_rule_without_filters)\n        return rule\n\n    def test_value_array_dictionary_p(self, token_rule: Rule, file_path: pytest.fixture,\n                                      success_line: pytest.fixture) -> None:\n        line_data = get_line_data(file_path, line=success_line, pattern=token_rule.patterns[0])\n        assert ValueArrayDictionaryCheck().run(line_data, DUMMY_ANALYSIS_TARGET) is False\n\n    @pytest.mark.parametrize(\"line\", [\n        \"passwd = values[k+1:j]\",\n        \"passwd = values[i]\",\n        \"passwd = values[145]\",\n        \"passwd = values[token_id]\",\n    ])\n    def test_value_array_dictionary_n(self, token_rule: Rule, file_path: pytest.fixture, line: str) -> None:\n        \"\"\"Evaluate that filter do remove calls to arrays and arrays declarations\"\"\"\n        line_data = get_line_data(file_path, line=line, pattern=token_rule.patterns[0])\n        assert ValueArrayDictionaryCheck().run(line_data, DUMMY_ANALYSIS_TARGET) is True\n\n    @pytest.mark.parametrize(\"line\", [\n        '{\"password\":[{\"id\":\"09b51f37-8583-17ae-2a50-246c1b63150e\",\"use\":\"alg\",\"k\":\"XcFt0hJ4kA-1D9L37ZGu2_P\"},{\"kty\"',\n        \"password = passwords['user1']\",\n        \"password = passwords('user1')\",\n        \"passwd[i] = 'root'\",\n        \"users[i] = {passwd: 'root'}\",\n        \"user = {passwd: 'root'}\",\n        \"passwd = {'root'}\",\n        \"user = get_user_data(passwd='root', user=users[i])\",\n        \"user = get_user_data(user=users[i], passwd='root')\",\n    ])\n    def test_array_assignment_n(self, token_rule: Rule, file_path: pytest.fixture, line: str) -> None:\n        \"\"\"Evaluate that filter do not remove assignments to array or dictionary declaration\"\"\"\n        line_data = get_line_data(file_path, line=line, pattern=token_rule.patterns[0])\n        assert ValueArrayDictionaryCheck().run(line_data, DUMMY_ANALYSIS_TARGET) is False\n"
  },
  {
    "path": "tests/filters/test_value_atlassian_token_check.py",
    "content": "import base64\nimport binascii\n\nimport pytest\n\nfrom credsweeper.common.constants import LATIN_1\nfrom credsweeper.filters import ValueAtlassianTokenCheck\nfrom tests.filters.conftest import LINE_VALUE_PATTERN, DUMMY_ANALYSIS_TARGET\nfrom tests.test_utils.dummy_line_data import get_line_data\n\n\nclass TestValueAtlassianTokenCheck:\n\n    @pytest.mark.parametrize(\"line\", [\"12345:«VÏel\\tSpÁß¡»q¾ä×^0÷ÕJür°eÆ\\r\"])\n    def test_value_structured_token_check_p(self, file_path: pytest.fixture, line: str) -> None:\n        encoded_line = base64.b64encode(line.encode(LATIN_1)).decode('ascii')\n        line_data = get_line_data(file_path, line=encoded_line, pattern=LINE_VALUE_PATTERN)\n        assert ValueAtlassianTokenCheck().run(line_data, DUMMY_ANALYSIS_TARGET) is False\n        bbdc_line_data = get_line_data(file_path, line=f\"BBDC-{encoded_line}\", pattern=LINE_VALUE_PATTERN)\n        assert ValueAtlassianTokenCheck().run(bbdc_line_data, DUMMY_ANALYSIS_TARGET) is False\n        payload = f\"ATBB{encoded_line}\"[:28]\n        crc32 = f\"{binascii.crc32(payload.encode('ascii')):08x}\".upper()\n        bbdc_line_data = get_line_data(file_path, line=f\"{payload}{crc32}\", pattern=LINE_VALUE_PATTERN)\n        assert ValueAtlassianTokenCheck().run(bbdc_line_data, DUMMY_ANALYSIS_TARGET) is False\n\n    @pytest.mark.parametrize(\"line\",\n                             [\"12x45:asbdsa:28yd\", \"12345:bsskwjdsfskjdhrebewr\", \"022:OrganizationInvitation6080804\"])\n    def test_value_structured_token_check_n(self, file_path: pytest.fixture, line: str) -> None:\n        encoded_line = base64.b64encode(line.encode('ascii')).decode('ascii')\n        line_data = get_line_data(file_path, line=encoded_line, pattern=LINE_VALUE_PATTERN)\n        assert ValueAtlassianTokenCheck().run(line_data, DUMMY_ANALYSIS_TARGET) is True\n        bbdc_line_data = get_line_data(file_path, line=f\"BBDC-{encoded_line}\", pattern=LINE_VALUE_PATTERN)\n        assert ValueAtlassianTokenCheck().run(bbdc_line_data, DUMMY_ANALYSIS_TARGET) is True\n        bbdc_line_data = get_line_data(file_path, line=f\"ATBB{encoded_line[:28]}012345678\", pattern=LINE_VALUE_PATTERN)\n        assert ValueAtlassianTokenCheck().run(bbdc_line_data, DUMMY_ANALYSIS_TARGET) is True\n"
  },
  {
    "path": "tests/filters/test_value_azure_token_check.py",
    "content": "import unittest\n\nfrom credsweeper.filters import ValueAzureTokenCheck\nfrom tests.filters.conftest import LINE_VALUE_PATTERN, DUMMY_ANALYSIS_TARGET\nfrom tests.test_utils.dummy_line_data import get_line_data\n\n\nclass TestValueAzureTokenCheck(unittest.TestCase):\n\n    def test_value_AzureToken_check_p(self):\n        self.assertTrue(ValueAzureTokenCheck().run(get_line_data(line=\"eyJungle\", pattern=LINE_VALUE_PATTERN),\n                                                   DUMMY_ANALYSIS_TARGET))\n        self.assertTrue(ValueAzureTokenCheck().run(\n            get_line_data(line=\"eyJhbGciOjEsInR5cCI6Miwia2lkIjozfQo\", pattern=LINE_VALUE_PATTERN),\n            DUMMY_ANALYSIS_TARGET))\n        self.assertTrue(ValueAzureTokenCheck().run(\n            get_line_data(line=\"eyJhbGciOjEsInR5cCI6Miwia2lkIjozfQo.eyJhbGciOjEsInR5cCI6Miwia2lkIjozfQo\"\n                          \".eyJhbGciOjEsInR5cCI6Miwia2lkIjozfQo\",\n                          pattern=LINE_VALUE_PATTERN), DUMMY_ANALYSIS_TARGET))\n\n    def test_value_AzureToken_check_n(self):\n        self.assertFalse(ValueAzureTokenCheck().run(\n            get_line_data(line=\"eyJhbGciOjEsInR5cCI6Miwia2lkIjozfQo.eyJpc3MiOjEsImV4cCI6MiwiaWF0IjozfQo\"\n                          \".1234567890qwertyuiopasdfghjklzxc\",\n                          pattern=LINE_VALUE_PATTERN), DUMMY_ANALYSIS_TARGET))\n"
  },
  {
    "path": "tests/filters/test_value_base32_data_check.py",
    "content": "import pytest\n\nfrom credsweeper.filters import ValueBase32DataCheck\nfrom tests.filters.conftest import LINE_VALUE_PATTERN, DUMMY_ANALYSIS_TARGET\nfrom tests.test_utils.dummy_line_data import get_line_data\n\n\nclass TestValueBase32DataCheck:\n\n    @pytest.mark.parametrize(\"line\", [\"SUAML2GCZ7IK7E7UD4VZ7ELPZW7DK2ZNL35WSMW3IORHC3BWBSDQXUQRBU\", \"WXFES7QNTET5DQYC\"])\n    def test_value_entropy_check_p(self, file_path: pytest.fixture, line: str) -> None:\n        line_data = get_line_data(file_path, line=line, pattern=LINE_VALUE_PATTERN)\n        assert ValueBase32DataCheck().run(line_data, DUMMY_ANALYSIS_TARGET) is False\n\n    @pytest.mark.parametrize(\"line\", [\"PMRGSZBCHIYTEM35\", \"ABCDEFGHIJKLMNOP\", \"5555555555555555\", \"GAYDAMBQGAYDAMBQ\"])\n    def test_value_entropy_check_n(self, file_path: pytest.fixture, line: str) -> None:\n        line_data = get_line_data(file_path, line=line, pattern=LINE_VALUE_PATTERN)\n        assert ValueBase32DataCheck().run(line_data, DUMMY_ANALYSIS_TARGET) is True\n"
  },
  {
    "path": "tests/filters/test_value_base64_data_check.py",
    "content": "import pytest\n\nfrom credsweeper.filters import ValueBase64DataCheck\nfrom tests.filters.conftest import LINE_VALUE_PATTERN, DUMMY_ANALYSIS_TARGET\nfrom tests.test_utils.dummy_line_data import get_line_data\n\n\nclass TestValueBase64DataCheck:\n\n    @pytest.mark.parametrize(\"line\", [\"0DiwN2M1NTeGd6S6jU\", \"o9LN618aEaH32KhF7e_L\"])\n    def test_value_entropy_check_p(self, file_path: pytest.fixture, line: str) -> None:\n        line_data = get_line_data(file_path, line=line, pattern=LINE_VALUE_PATTERN)\n        assert ValueBase64DataCheck().run(line_data, DUMMY_ANALYSIS_TARGET) is False\n\n    @pytest.mark.parametrize(\"line\", [\"eyJ0eXAiOiJKV1QiLC\", \"2AA219GG746F88F6DDA0D852A0FD3211\", \"!@#$%^&*(_)0aA\"])\n    def test_value_entropy_check_n(self, file_path: pytest.fixture, line: str) -> None:\n        line_data = get_line_data(file_path, line=line, pattern=LINE_VALUE_PATTERN)\n        assert ValueBase64DataCheck().run(line_data, DUMMY_ANALYSIS_TARGET) is True\n"
  },
  {
    "path": "tests/filters/test_value_base64_key_check.py",
    "content": "import re\nimport unittest\n\nfrom credsweeper.credentials.line_data import LineData\nfrom credsweeper.filters import ValueBase64KeyCheck\nfrom tests.filters.conftest import DUMMY_ANALYSIS_TARGET\n\n\nclass TestValueBase64KeyCheck(unittest.TestCase):\n    ALL_LINE_PATTERN = re.compile(\n        r\"(?P<value>\\bMII[A-Za-f][0-9A-Za-z/+]{8}(?s:[^!#$&()*\\-.:;<=>?@\\[\\]^_{|}~]{8,8000}))\")\n\n    def test_value_check_n(self) -> None:\n        line_data = LineData(config=None,\n                             path=\"dummy\",\n                             file_type=\"\",\n                             line=\"MIIXXXXX\",\n                             info=\"\",\n                             line_num=1,\n                             line_pos=0,\n                             pattern=TestValueBase64KeyCheck.ALL_LINE_PATTERN)\n        self.assertTrue(ValueBase64KeyCheck().run(line_data, DUMMY_ANALYSIS_TARGET))\n\n    def test_value_check_p(self) -> None:\n        line = (\"'''MIICXAIBAAKBgQDFgQqUYexFziVtw\\\\n\\\\rnEz9XaYjmGdpGVWAqL1NX41LIxRAy1tbo1hCBUppqWGfn\"\n                \"\\nWHwZE5k4sYt5cE6n4hcdEPj9kdrDaeF7Te9JZg1eDE9RwWColxC+5neCBCmQY2LmWJa6+HDgDKq+DJIpx8PCDb\"\n                \"+i3oeOwHn00H/4T9JczK/XJzhQIDAQABAoGBALbGxu2u\"\n                \"+aNYNZcv/Odi4FAqY/gprYY9hmV7DcNT6L8IO8AsMTZ87mjPShv/Z\"\n                \"/Esl6M7Adzr+hyYjgWReTH3o6qMBdHyJhU28Ngsrt8EIaSYpE\"\n                \"/O 2 h d p 6 l Z vSWVt/KD+HJMRIDVqj39DphuU8f0cqJkpLoP5xcetOH\"\n                \"       /XVnIVQXm5AkEA4gc5HjeggbJkj4bJg/ROmKlLgMKalg0LS7Z3\"\n                \"\\tYXIhIGJcwE27ERB5DjqMJp38Yvz8WqUchNFqF4fxSEYTWVIiMwJBAN\"\n                \"\\t\\t\\t+xiNpJtX3qWI4T5iOQM7pE8Ngx+olpOpZkwQ6jBzNyTfaZZT\\\"\"\n                \"XpmvzvBZKWgkvxAE3BaeHjuXKlRYp7dVTXi2cCQEeKL7rvsl66nveKmueoAO \\\\\\\\\"\n                \"\\nRy2RH1Bkat9EBPjXOLUw7T8zVupOHey+IEB+4FHSgb\"\n                \"\\r\\n\\tmKf8EI29Vo4CGg1dGKyxwV8CQAqZ/\"\n                \"\\r   WRrDeDz1FKXetbApNL1JXz5kWglxpMOH2A0NckoZ62CQ5u0gJXwNhFmdLJor5z\"\n                \"/x6bfBhD66DrR8xOcS40CQBoGNvyzjHXUdx64Yxmtz2FXq0fYI8J8ChgNfTe6l6d1nzEQ7i0SspM45L\"\n                \"/n5tgyrBBGcqzQ/WBL1C8Ny5K+RxY='''\\n  -----END\")\n        line_data = LineData(config=None,\n                             path=\"dummy\",\n                             file_type=\"\",\n                             line=line,\n                             info=\"\",\n                             line_num=1,\n                             line_pos=0,\n                             pattern=TestValueBase64KeyCheck.ALL_LINE_PATTERN)\n        self.assertFalse(ValueBase64KeyCheck().run(line_data, DUMMY_ANALYSIS_TARGET))\n"
  },
  {
    "path": "tests/filters/test_value_base64_part_check.py",
    "content": "import re\nimport unittest\n\nfrom credsweeper.credentials.line_data import LineData\nfrom credsweeper.filters import ValueBase64PartCheck\nfrom tests.filters.conftest import DUMMY_ANALYSIS_TARGET\n\n\nclass TestValueBase64PartCheck(unittest.TestCase):\n\n    def test_value_check_n(self) -> None:\n        for prefix, value, suffix in [\n            (\"fp: zza0dxVlt0/\", \"TijfkIXPhSdtdakk9G\", \"\\\\nCIpPqrtaOxOx0sEXzS/MuYT4rE3363cXp1yCxqF3dhUP\"),\n            (\"sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/\", \"gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB\", \"/sbNop0Kszm0jsaWU4A==\"),\n                # left and right boundaries\n            (\"qcE81rS+FJHGy7KedoQ4juvg3FZ9lz4T/\", \"EAACEb00Kse0BAlGy7KeQ5YnaCEd09Eo\",\n             \"+se0cBAlGy7KeQ5Yna9CoDsup39tiYdoQ4jH9Coup39tiYdWoQ4jHFZD\"),\n                # only left\n            (\"qcE81rS+FJHGy7KedoQ4juvg3FZ9lz4T/\", \"EAACEb00Kse0BAlGy7KeQ5YnaCEd09Eo\", \"\"),\n                # only right\n            (\"\", \"EAACEb00Kse0BAlGy7KeQ5YnaCEd09Eo\", \"/qcE81rS+FJHGy7KedoQ4juvg3FZ9lz4T\"),\n            (\"hj4Ov3rIwAAdHIIAC7ARR4daWuDXZoA41Bk6QJC\\\\nLwgikiCrNulUp0VYmrLoEE/\", \"sBY3YlVbQdYgS9ulYJcKyInd8hWQ31TG\",\n             \"/SSyz1SRd\\\\ncp8SD9bAu8SbqX4DWa6tV2XxopsabwQgWqGtJWzYIyuVFvdSuXGaZ\"),\n            (\"aWrnS3VQGR0j4mLkKC1NUeljjA77zYyhVbIE0dR%2By7fmaHq7U%2BdegXWGpAZ+/\", \"4pR32luBFTAtWgUcCv56\",\n             \"/p5y30X87Yz1khTIycdgpUW9kY7WdsC9zxoXTvMvWuVV98YyMnSGH2SYE5pwALBIr9QKi\"),\n            (\"04MjE2MGFkOTFhYzgiLCJlbmMiOiJBMTlwIj+\", \"GgzlFDwPikM5vUkIT2WOtQxKWceQ4wzV\",\n             \"/p9Y0jfEpUq6XHZIlai1oYHbDtx2Nc1k3z7\"),\n            (\"GuBdjqFPQXaaOcxuJ5oLRDC7IxtkpNz1P9CByI/\", \"eEZQFtJDUtShrP0tTC\",\n             \"\\\\nztg1zgkXhaz7IMxm4SgeuOUFy4mEcAGjQxs7qays\"),\n            (\"sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/\", \"gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB\", \"/sbNop0Kszm0jsaWU4A==\"),\n            (\"sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/\", \"gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB\", \"/sbNop0Kszm0jsaWU4A==\"),\n            (\"<DP>FklyR1uZ/\", \"wPJjj611cdBcztlPdqoxssQGnh85BzCj\",\n             \"/u3WqBpE2vjvyyvyI5kX6zk7S0ljKtt2jny2+00VsBerQ==</DP>\"),\n            (\"sha512-h7fJ/\", \"5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ\", \"/Bib/KVPmanaCtOhA==\"),\n        ]:\n            line = ''.join([prefix, value, suffix])\n            line_data = LineData(config=None,\n                                 path=\"dummy\",\n                                 file_type=\"\",\n                                 line=line,\n                                 info=\"\",\n                                 line_num=1,\n                                 line_pos=0,\n                                 pattern=re.compile(fr\"(?P<value>{value})\"))\n            self.assertTrue(ValueBase64PartCheck().run(line_data, DUMMY_ANALYSIS_TARGET), line)\n\n    def test_value_check_p(self) -> None:\n        for prefix, value, suffix in [\n            (\" http://localhost:8888/v1/api/get?token=\", \"zUkITxodk63bDVUMwIymb3zKTxICz85zC00cv0Geline80\", \"\"),\n            (\"http://example.com/api/v3/\", \"T1029384756B102984756\", \"\"),\n                # part of jwt\n            (\"04MjE2MGFkOTFhYzgiLCJlbmMiOiJBMTlwIj.\", \"GgzlFDwPikM5vUkIT2WOtQxKWceQ4wzV\",\n             \".p9Y0jfEpUq6XHZIlai1oYHbDtx2Nc1k3z7\"),\n            (\"https://yourInstance.salesforce.com/services/Soap/m/{version}/\", \"00Dx0000006Y0xy\", \"\")\n        ]:\n            line = ''.join([prefix, value, suffix])\n            line_data = LineData(config=None,\n                                 path=\"dummy\",\n                                 file_type=\"\",\n                                 line=line,\n                                 info=\"\",\n                                 line_num=1,\n                                 line_pos=0,\n                                 pattern=re.compile(fr\"(?P<value>{value})\"))\n            self.assertFalse(ValueBase64PartCheck().run(line_data, DUMMY_ANALYSIS_TARGET), line)\n"
  },
  {
    "path": "tests/filters/test_value_basic_auth_check.py",
    "content": "import re\nimport unittest\n\nfrom credsweeper.credentials.line_data import LineData\nfrom credsweeper.filters.value_basic_auth_check import ValueBasicAuthCheck\nfrom tests.filters.conftest import DUMMY_ANALYSIS_TARGET\n\n\nclass TestValueBasicAuthCheck(unittest.TestCase):\n\n    def test_value_check_n(self) -> None:\n        for value in [\n                \"VGhlVXNlcjtUaGVQYXM1dzByZA==\",  #\n                \"Programming_Language\",  #\n                \"OjEyMzQ1Njc4\",  #\n                \"MTIzNDU6Njc4\",  #\n        ]:\n            line_data = LineData(config=None,\n                                 path=\"dummy\",\n                                 file_type=\"\",\n                                 line=value,\n                                 info=\"\",\n                                 line_num=1,\n                                 line_pos=0,\n                                 pattern=re.compile(fr\"(?P<value>{value})\"))\n            self.assertTrue(ValueBasicAuthCheck().run(line_data, DUMMY_ANALYSIS_TARGET), value)\n\n    def test_value_check_p(self) -> None:\n        for value in [\n                \"MToxMjM0NTY3\",  #\n                \"VGhlVXNlcjpUaGVQYXM1dzByZA==\",  #\n        ]:\n            line_data = LineData(config=None,\n                                 path=\"dummy\",\n                                 file_type=\"\",\n                                 line=value,\n                                 info=\"\",\n                                 line_num=1,\n                                 line_pos=0,\n                                 pattern=re.compile(fr\"(?P<value>{value})\"))\n            self.assertFalse(ValueBasicAuthCheck().run(line_data, DUMMY_ANALYSIS_TARGET), value)\n"
  },
  {
    "path": "tests/filters/test_value_blocklist_check.py",
    "content": "import pytest\n\nfrom credsweeper.filters import ValueBlocklistCheck\nfrom tests.filters.conftest import LINE_VALUE_PATTERN, DUMMY_ANALYSIS_TARGET\nfrom tests.test_utils.dummy_line_data import get_line_data\n\n\nclass TestValueBlocklistCheck:\n\n    def test_value_blocklist_p(self, file_path: pytest.fixture, success_line: pytest.fixture) -> None:\n        line_data = get_line_data(file_path, line=success_line, pattern=LINE_VALUE_PATTERN)\n        assert ValueBlocklistCheck().run(line_data, DUMMY_ANALYSIS_TARGET) is False\n\n    @pytest.mark.parametrize(\"line\", [\"string12\", \"uuid5\"])\n    def test_value_blocklist_n(self, file_path: pytest.fixture, line: str) -> None:\n        line_data = get_line_data(file_path, line=line, pattern=LINE_VALUE_PATTERN)\n        assert ValueBlocklistCheck().run(line_data, DUMMY_ANALYSIS_TARGET) is True\n"
  },
  {
    "path": "tests/filters/test_value_camel_case_check.py",
    "content": "import pytest\n\nfrom credsweeper.filters import ValueCamelCaseCheck\nfrom tests.filters.conftest import KEYWORD_PASSWORD_PATTERN, DUMMY_ANALYSIS_TARGET\nfrom tests.test_utils.dummy_line_data import get_line_data\n\n\nclass TestValueCamelCaseCheck:\n\n    def test_value_camelcase_p(self, file_path: pytest.fixture, success_line: pytest.fixture) -> None:\n        line_data = get_line_data(file_path, line=success_line, pattern=KEYWORD_PASSWORD_PATTERN)\n        assert ValueCamelCaseCheck().run(line_data, DUMMY_ANALYSIS_TARGET) is False\n\n    @pytest.mark.parametrize(\"line\", [\"password = CamelCase\", \"password = camelCase\"])\n    def test_value_camelcase_n(self, file_path: pytest.fixture, line: str) -> None:\n        line_data = get_line_data(file_path, line=line, pattern=KEYWORD_PASSWORD_PATTERN)\n        assert ValueCamelCaseCheck().run(line_data, DUMMY_ANALYSIS_TARGET) is True\n"
  },
  {
    "path": "tests/filters/test_value_dictionary_keyword_check.py",
    "content": "import pytest\n\nfrom credsweeper.filters import ValueDictionaryKeywordCheck\nfrom tests.filters.conftest import LINE_VALUE_PATTERN, DUMMY_ANALYSIS_TARGET\nfrom tests.test_utils.dummy_line_data import get_line_data\n\n\nclass TestValueDictionaryKeywordCheck:\n\n    def test_value_dictionary_keyword_check_p(self, file_path: pytest.fixture, success_line: pytest.fixture) -> None:\n        line_data = get_line_data(file_path, line=success_line, pattern=LINE_VALUE_PATTERN)\n        assert ValueDictionaryKeywordCheck().run(line_data, DUMMY_ANALYSIS_TARGET) is False\n\n    @pytest.mark.parametrize(\"line\", [\"abstract123\"])\n    def test_value_dictionary_keyword_check_n(self, file_path: pytest.fixture, line: str) -> None:\n        line_data = get_line_data(file_path, line=line, pattern=LINE_VALUE_PATTERN)\n        assert ValueDictionaryKeywordCheck().run(line_data, DUMMY_ANALYSIS_TARGET) is True\n"
  },
  {
    "path": "tests/filters/test_value_entropy_base32_check.py",
    "content": "import sys\n\nimport pytest\n\nfrom credsweeper.filters import ValueEntropyBase32Check\nfrom tests.filters.conftest import LINE_VALUE_PATTERN, DUMMY_ANALYSIS_TARGET\nfrom tests.test_utils.dummy_line_data import get_line_data\n\n\nclass TestValueEntropyBase32Check:\n\n    @pytest.mark.parametrize(\"line\", [\"WXFES7QNTET5DQYC\"])\n    def test_value_entropy_check_p(self, file_path: pytest.fixture, line: str) -> None:\n        line_data = get_line_data(file_path, line=line, pattern=LINE_VALUE_PATTERN)\n        assert ValueEntropyBase32Check().run(line_data, DUMMY_ANALYSIS_TARGET) is False\n\n    @pytest.mark.parametrize(\"line\", [\"200X300X4000X123\"])\n    def test_value_entropy_check_n(self, file_path: pytest.fixture, line: str) -> None:\n        line_data = get_line_data(file_path, line=line, pattern=LINE_VALUE_PATTERN)\n        assert ValueEntropyBase32Check().run(line_data, DUMMY_ANALYSIS_TARGET) is True\n\n    @pytest.mark.parametrize((\"size\", \"entropy\", \"deviation\"), [\n        (16, 3.553197207016156, 0.20104579535116426),\n        (32, 4.175560617601108, 0.15800526502749024),\n        (33, 4.1969606087810565, 0.15484387204591749),\n        (sys.maxsize, 4.04, 0),\n    ])\n    def test_get_min_data_entropy_p(self, size: int, entropy: float, deviation: float) -> None:\n        min_entropy = ValueEntropyBase32Check.get_min_data_entropy(size)\n        diff = abs(min_entropy - (entropy - deviation))\n        max_diff = deviation / 4\n        assert 0 <= diff\n        assert diff <= max_diff\n\n    @pytest.mark.parametrize(\"size\", [0, 1, -1, -sys.maxsize])\n    def test_get_min_data_entropy_n(self, size: int) -> None:\n        assert 0 == ValueEntropyBase32Check.get_min_data_entropy(size) == 0\n"
  },
  {
    "path": "tests/filters/test_value_entropy_base36_check.py",
    "content": "import sys\n\nimport pytest\n\nfrom credsweeper.filters import ValueEntropyBase36Check\nfrom tests.filters.conftest import LINE_VALUE_PATTERN, DUMMY_ANALYSIS_TARGET\nfrom tests.test_utils.dummy_line_data import get_line_data\n\n\nclass TestValueEntropyBase36Check:\n\n    @pytest.mark.parametrize(\"line\", [\"2wp3v1jq9x1wa87n0bn5n46e\", \"snck3id95hab1jfnvlp109fs8\"])\n    def test_value_entropy_check_p(self, file_path: pytest.fixture, line: str) -> None:\n        line_data = get_line_data(file_path, line=line, pattern=LINE_VALUE_PATTERN)\n        assert ValueEntropyBase36Check().run(line_data, DUMMY_ANALYSIS_TARGET) is False\n\n    @pytest.mark.parametrize(\"line\", [\"testtesttest\", \"noncenoncenoncenoncenonce\"])\n    def test_value_entropy_check_n(self, file_path: pytest.fixture, line: str) -> None:\n        line_data = get_line_data(file_path, line=line, pattern=LINE_VALUE_PATTERN)\n        assert ValueEntropyBase36Check().run(line_data, DUMMY_ANALYSIS_TARGET) is True\n\n    @pytest.mark.parametrize((\"size\", \"entropy\", \"deviation\"), [\n        (15, 3.374, 0.0),\n        (16, 3.593320328115991, 0.19663735985864308),\n        (24, 4.0019667180259315, 0.1767051932594335),\n        (25, 4.039642026714182, 0.1731145889575481),\n        (sys.maxsize, 3.9, 0),\n    ])\n    def test_get_min_data_entropy_p(self, size: int, entropy: float, deviation: float) -> None:\n        min_entropy = ValueEntropyBase36Check.get_min_data_entropy(size)\n        diff = abs(min_entropy - (entropy - deviation))\n        max_diff = deviation / 4\n        assert 0 <= diff\n        assert diff <= max_diff\n\n    @pytest.mark.parametrize(\"size\", [0, 1, -1, -sys.maxsize])\n    def test_get_min_data_entropy_n(self, size: int) -> None:\n        assert 0 == ValueEntropyBase36Check.get_min_data_entropy(size) == 0\n"
  },
  {
    "path": "tests/filters/test_value_entropy_base64_check.py",
    "content": "import sys\n\nimport pytest\n\nfrom credsweeper.filters import ValueEntropyBase64Check\nfrom tests.filters.conftest import LINE_VALUE_PATTERN, DUMMY_ANALYSIS_TARGET\nfrom tests.test_utils.dummy_line_data import get_line_data\n\n\nclass TestValueEntropyBase64Check:\n\n    @pytest.mark.parametrize(\"line\", [\"0wz92+C275sfJHb2r5tS5o/u9y862lR4\"])\n    def test_value_entropy_check_p(self, file_path: pytest.fixture, line: str) -> None:\n        line_data = get_line_data(file_path, line=line, pattern=LINE_VALUE_PATTERN)\n        assert ValueEntropyBase64Check().run(line_data, DUMMY_ANALYSIS_TARGET) is False\n\n    @pytest.mark.parametrize(\"line\", [\"D6018D91B502C475E8FC27D5F05387558A002B9283DA7E252896950917476ECE\"])\n    def test_value_entropy_check_n(self, file_path: pytest.fixture, line: str) -> None:\n        line_data = get_line_data(file_path, line=line, pattern=LINE_VALUE_PATTERN)\n        assert ValueEntropyBase64Check().run(line_data, DUMMY_ANALYSIS_TARGET) is True\n\n    @pytest.mark.parametrize((\"size\", \"entropy\", \"deviation\"), [\n        (12, 3.402832674668131, 0.16390772966021167),\n        (18, 3.901894088228036, 0.1507035617252249),\n        (20, 4.027133655487158, 0.14789802297157817),\n        (25, 4.2799509786429715, 0.1469939952270194),\n        (35, 4.636189424519627, 0.1325272934890342),\n        (45, 4.877311178212475, 0.11797362443045391),\n        (65, 5.183120734812424, 0.10823342697093974),\n        (80, 5.329761693425697, 0.09159231726044716),\n        (100, 5.4658131564512376, 0.08210420023521858),\n        (256, 5.77, 0.02),\n        (512, 5.89, 0.015),\n        (1024, 5.94, 0.003),\n        (sys.maxsize, 6.0, 0.0000000000000001),\n    ])\n    def test_get_min_data_entropy_p(self, size: int, entropy: float, deviation: float) -> None:\n        min_entropy = ValueEntropyBase64Check.get_min_data_entropy(size)\n        diff = abs(min_entropy - (entropy - deviation))\n        max_diff = deviation / 4\n        assert 0 <= diff\n        assert diff <= max_diff\n\n    @pytest.mark.parametrize(\"size\", [0, 1, -1, -sys.maxsize])\n    def test_get_min_data_entropy_n(self, size: int) -> None:\n        assert 0 == ValueEntropyBase64Check.get_min_data_entropy(size) == 0\n"
  },
  {
    "path": "tests/filters/test_value_file_path_check.py",
    "content": "import pytest\n\nfrom credsweeper.filters import ValueFilePathCheck\nfrom tests.filters.conftest import LINE_VALUE_PATTERN, DUMMY_ANALYSIS_TARGET\nfrom tests.test_utils.dummy_line_data import get_line_data\n\n\nclass TestValueFilePathCheck:\n\n    @pytest.mark.parametrize(\"line\", [\n        \"/u5r/d3v/f1le\",\n        \"5//0KCPafDhZvtCwqrsyiKFeDGT_0ZGHiI-E0ClIWrLC7tZ1WE5vHc4-Y2qi1IhPy3Pz5fmCe9OPIxEZUONUg7SWJF9nwQ_j2lIdXU0\",\n        \"SDF;4s]dDe\"\n    ])\n    def test_value_file_path_check_p(self, file_path: pytest.fixture, line: str) -> None:\n        line_data = get_line_data(file_path, line=line, pattern=LINE_VALUE_PATTERN)\n        assert ValueFilePathCheck().run(line_data, DUMMY_ANALYSIS_TARGET) is False\n\n    @pytest.mark.parametrize(\n        \"line\",\n        [\n            \"[DEPOT]/${path}/$(date)/config/credentials\",  #\n            \"/mnt/x\",  #\n            \"/srv/x\",  #\n            \"/var/lib/\",  # path\n            \"~/.ssh/id_rsa\",  # path\n            \"../key\",  # path\n            \"../../log\",  # path\n            \"/home/user/.ssh/id_rsa\",  # path\n            \"../.ssh/id_rsa\",  # path\n            \"crackle/filepath.txt\",\n            \"/home/user/tmp\",  # simple path\n            \"file:///Crackle/filepath/\",  # path from browser url\n            \"~/.custompass\",  # path with synonym\n            \"./sshpass.sh\",  # path with synonym\n            \"crackle/file.path\",  #\n            \"C:\\\\Crackle\\\\filepath\",  #\n        ])\n    def test_value_file_path_check_n(self, file_path: pytest.fixture, line: str) -> None:\n        line_data = get_line_data(file_path, line=line, pattern=LINE_VALUE_PATTERN)\n        assert ValueFilePathCheck().run(line_data, DUMMY_ANALYSIS_TARGET) is True\n"
  },
  {
    "path": "tests/filters/test_value_github_check.py",
    "content": "import pytest\n\nfrom credsweeper.filters import ValueGitHubCheck\nfrom tests.filters.conftest import LINE_VALUE_PATTERN, DUMMY_ANALYSIS_TARGET\nfrom tests.test_utils.dummy_line_data import get_line_data\n\n\nclass TestValueGitHubCheck:\n\n    @pytest.mark.parametrize(\"line\",\n                             [\"gh?_00000000000000000000000000000004WZ4EQ\", \"npm_00000000000000000000000000000004WZ4EQ\"])\n    def test_value_github_p(self, file_path: pytest.fixture, line: str) -> None:\n        line_data = get_line_data(file_path, line=line, pattern=LINE_VALUE_PATTERN)\n        assert ValueGitHubCheck().run(line_data, DUMMY_ANALYSIS_TARGET) is False\n\n    @pytest.mark.parametrize(\"line\",\n                             [\"hhh_00000000000000000000000000000004WZ4EQ\", \"npm_00000000000000000000000000000004WZAEQ\"])\n    def test_value_github_n(self, file_path: pytest.fixture, line: str) -> None:\n        line_data = get_line_data(file_path, line=line, pattern=LINE_VALUE_PATTERN)\n        assert ValueGitHubCheck().run(line_data, DUMMY_ANALYSIS_TARGET) is True\n"
  },
  {
    "path": "tests/filters/test_value_grafana_check.py",
    "content": "import base64\n\nimport pytest\n\nfrom credsweeper.filters import ValueGrafanaCheck\nfrom tests.filters.conftest import LINE_VALUE_PATTERN, DUMMY_ANALYSIS_TARGET\nfrom tests.test_utils.dummy_line_data import get_line_data\n\n\nclass TestValueGrafanaCheck:\n\n    @pytest.mark.parametrize(\"line\", ['{\"o\":\"O\",\"n\":\"N\",\"k\":\"K\",\"m\":{\"r\":\"0\"}}'])\n    def test_value_grafana_token_p(self, file_path: pytest.fixture, line: str) -> None:\n        payload = base64.b64encode(line.encode('ascii')).decode('ascii')\n        line_data = get_line_data(file_path, line=f\"glc_{payload}\", pattern=LINE_VALUE_PATTERN)\n        assert ValueGrafanaCheck().run(line_data, DUMMY_ANALYSIS_TARGET) is False\n\n    @pytest.mark.parametrize(\"line\", ['{\"k\":\"K\",\"n\":\"N\",\"id\":1}'])\n    def test_value_grafana_key_p(self, file_path: pytest.fixture, line: str) -> None:\n        payload = base64.b64encode(line.encode('ascii')).decode('ascii')\n        line_data = get_line_data(file_path, line=f\"{payload}\", pattern=LINE_VALUE_PATTERN)\n        assert ValueGrafanaCheck().run(line_data, DUMMY_ANALYSIS_TARGET) is False\n\n    @pytest.mark.parametrize(\"line\", ['{\"K\":\"K\",\"n\":\"N\",\"id\":1}', '{\"0\":\"O\",\"W\":\"N\",\"Y\":\"K\",\"X\":{\"r\":\"0\"}}'])\n    def test_value_grafana_n(self, file_path: pytest.fixture, line: str) -> None:\n        payload = base64.b64encode(line.encode('ascii')).decode('ascii')\n        line_data = get_line_data(file_path, line=f\"{payload}\", pattern=LINE_VALUE_PATTERN)\n        assert ValueGrafanaCheck().run(line_data, DUMMY_ANALYSIS_TARGET) is True\n        line_data = get_line_data(file_path, line=f\"glc_{payload}\", pattern=LINE_VALUE_PATTERN)\n        assert ValueGrafanaCheck().run(line_data, DUMMY_ANALYSIS_TARGET) is True\n"
  },
  {
    "path": "tests/filters/test_value_grafana_service_check.py",
    "content": "import pytest\n\nfrom credsweeper.filters import ValueGrafanaServiceCheck\nfrom tests.filters.conftest import LINE_VALUE_PATTERN, DUMMY_ANALYSIS_TARGET\nfrom tests.test_utils.dummy_line_data import get_line_data\n\n\nclass TestValueGrafanaServiceCheck:\n\n    @pytest.mark.parametrize(\"line\", [\"glsa_DuMmY-T0K3N-f0R-tHe-Te5t-CRC32Ok_770c8cda\"])\n    def test_value_sgrafana_service_check_p(self, file_path: pytest.fixture, line: str) -> None:\n        glsa_line_data = get_line_data(file_path, line=line, pattern=LINE_VALUE_PATTERN)\n        assert ValueGrafanaServiceCheck().run(glsa_line_data, DUMMY_ANALYSIS_TARGET) is False\n\n    @pytest.mark.parametrize(\"line\", [\"glpl_DuMmY-T0K3N-f0R-tHe-Te5t-CRC32Ok_770c8CdA\"])\n    def test_value_sgrafana_service_check_n(self, file_path: pytest.fixture, line: str) -> None:\n        glsa_line_data = get_line_data(file_path, line=line, pattern=LINE_VALUE_PATTERN)\n        assert ValueGrafanaServiceCheck().run(glsa_line_data, DUMMY_ANALYSIS_TARGET) is True\n"
  },
  {
    "path": "tests/filters/test_value_hex_number_check.py",
    "content": "import pytest\n\nfrom credsweeper.filters import ValueHexNumberCheck\nfrom tests.filters.conftest import LINE_VALUE_PATTERN, DUMMY_ANALYSIS_TARGET\nfrom tests.test_utils.dummy_line_data import get_line_data\n\n\nclass TestValueHexNumberCheck:\n\n    @pytest.mark.parametrize(\"line\", [\"0xabcdI234\", \"0xabcd0987654321371\"])\n    def test_value_number_check_p(self, file_path: pytest.fixture, line: str) -> None:\n        line_data = get_line_data(file_path, line=line, pattern=LINE_VALUE_PATTERN)\n        assert ValueHexNumberCheck().run(line_data, DUMMY_ANALYSIS_TARGET) is False\n\n    @pytest.mark.parametrize(\"line\", [\"0xaBcd1234\", \"0xAbCd098765432137\"])\n    def test_value_number_check_n(self, file_path: pytest.fixture, line: str) -> None:\n        line_data = get_line_data(file_path, line=line, pattern=LINE_VALUE_PATTERN)\n        assert ValueHexNumberCheck().run(line_data, DUMMY_ANALYSIS_TARGET) is True\n"
  },
  {
    "path": "tests/filters/test_value_json_web_key_check.py",
    "content": "import base64\nimport unittest\n\nfrom credsweeper.filters.value_json_web_key_check import ValueJsonWebKeyCheck\nfrom tests.filters.conftest import LINE_VALUE_PATTERN, DUMMY_ANALYSIS_TARGET\nfrom tests.test_utils.dummy_line_data import get_line_data\n\n\nclass TestValueJsonWebKeyCheck(unittest.TestCase):\n\n    def test_value_jwk_check_n(self):\n        self.assertTrue(ValueJsonWebKeyCheck().run(get_line_data(line=\".\", pattern=LINE_VALUE_PATTERN),\n                                                   DUMMY_ANALYSIS_TARGET))\n        self.assertTrue(ValueJsonWebKeyCheck().run(get_line_data(line=\"eyJungle\", pattern=LINE_VALUE_PATTERN),\n                                                   DUMMY_ANALYSIS_TARGET))\n        self.assertTrue(ValueJsonWebKeyCheck().run(\n            get_line_data(line=\"eyJ1234567890qwertyu#@$^$^&iopasdfghjklzxc\", pattern=LINE_VALUE_PATTERN),\n            DUMMY_ANALYSIS_TARGET))\n        self.assertTrue(ValueJsonWebKeyCheck().run(\n            get_line_data(line=base64.b64encode(b'{\"kty\": \"oct\",\"x\": \"WrMwQfoNaHTgXU5fZvRGAD\"}').decode(),\n                          pattern=LINE_VALUE_PATTERN), DUMMY_ANALYSIS_TARGET))\n\n    def test_value_jwt_check_p(self):\n        self.assertFalse(ValueJsonWebKeyCheck().run(\n            get_line_data(line=base64.b64encode(b'{\"kty\": \"oct\",\"k\": \"WrMwQfoNaHTgXU5fZvRGAD\"}').decode(),\n                          pattern=LINE_VALUE_PATTERN), DUMMY_ANALYSIS_TARGET))\n"
  },
  {
    "path": "tests/filters/test_value_json_web_token_check.py",
    "content": "import unittest\n\nfrom credsweeper.filters import ValueJsonWebTokenCheck\nfrom tests.filters.conftest import LINE_VALUE_PATTERN, DUMMY_ANALYSIS_TARGET\nfrom tests.test_utils.dummy_line_data import get_line_data\n\n\nclass TestValueJsonWebTokenCheck(unittest.TestCase):\n\n    def test_value_jwt_check_p(self):\n        self.assertTrue(ValueJsonWebTokenCheck().run(get_line_data(line=\".\", pattern=LINE_VALUE_PATTERN),\n                                                     DUMMY_ANALYSIS_TARGET))\n        self.assertTrue(ValueJsonWebTokenCheck().run(get_line_data(line=\"eyJungle\", pattern=LINE_VALUE_PATTERN),\n                                                     DUMMY_ANALYSIS_TARGET))\n        self.assertTrue(ValueJsonWebTokenCheck().run(\n            get_line_data(line=\"1234567890qwertyuiopasdfghjklzxc\", pattern=LINE_VALUE_PATTERN), DUMMY_ANALYSIS_TARGET))\n        self.assertTrue(ValueJsonWebTokenCheck().run(\n            get_line_data(line=\"eyJhbGciOiJSUzI1NiJ9Cg.eyJleHAiOjY1NTM2fQo.eyJleHAiOjY1NTM2fQo\",\n                          pattern=LINE_VALUE_PATTERN), DUMMY_ANALYSIS_TARGET))\n        self.assertTrue(ValueJsonWebTokenCheck().run(\n            get_line_data(line=\"eyJhbGciOiJSUzI1NiJ9Cg.eyJleHAiOjY1NTM2fQo.AAAAAAAAAAAAAAAAAAAAAAA\",\n                          pattern=LINE_VALUE_PATTERN), DUMMY_ANALYSIS_TARGET))\n        self.assertTrue(ValueJsonWebTokenCheck().run(\n            get_line_data(line=\"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.x3.GFsFyGiCUIP5VHI9CEJL9thWsGjSZf1fJfarNk-LGTM\",\n                          pattern=LINE_VALUE_PATTERN), DUMMY_ANALYSIS_TARGET))\n\n    def test_value_jwt_check_n(self):\n        self.assertFalse(ValueJsonWebTokenCheck().run(\n            get_line_data(line=\"eyJhbGciOiJQUzM4NCJ9.eyJkdW1teSI6bnVsbH0.eyJpc3MiOiJqb2UifQ.\" \\\n                               \"_VP9ZxcPkOptWScOUMXriLH31bTcrg0YhlYL-A7TTHLX7LTDKjggtVq3Nmdl4GIS\" \\\n                               \"gJdM7GHHZOJHckUjgD-T3X6oHQanKqjpWjU-GxcnOkM86e0joZgJUL7CpHUt7e3W\" \\\n                               \"MhbUrOCyCFRrxOXtuTvGr2m_LdS7I5OyZ4xEP4JRcsOgOnGq-MEWmLqrRvc4zy5m\" \\\n                               \"pM6tJwJXI8fr1tF4pcAZxXR17ITCrocVSRC6NuWOVzh_XyyEVRUfqlDbJnU2Z_I0\" \\\n                               \"dfEQIcC6K5hAgQGSZQC_pQDA51RUoUHa9KfNskerI681fJ8mbjIlbf68CFdXZnjE\" \\\n                               \"zobUhMn5Z544PF9DjW1BVtsQgXtHlSDFxl6MIMVdvM8oLRbrjlf6BYCRnCxuTA_y\" \\\n                               \"Ui1o9ndy7ckISHQVhuYFKu78l7nqC4heghK_Gw4h7EB7s8eEuUC-D6JjVtX10IyS\" \\\n                               \"vCRkRo7f8dWQTjFLs7mlPowjRz0cP5J-MmCoegKHYagOHZ_ArXOR91_u8jMdwmOf\",\n                          pattern=LINE_VALUE_PATTERN), DUMMY_ANALYSIS_TARGET))\n        self.assertFalse(ValueJsonWebTokenCheck().run(\n            get_line_data(line=\"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.\" \\\n                               \"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.\" \\\n                               \".e30.GFsFyGiCUIP5VHI9CEJL9thWsGjSZf1fJfarNk-LGTM\",\n                          pattern=LINE_VALUE_PATTERN), DUMMY_ANALYSIS_TARGET))\n"
  },
  {
    "path": "tests/filters/test_value_last_word_check.py",
    "content": "import pytest\n\nfrom credsweeper.filters import ValueLastWordCheck\nfrom tests.filters.conftest import DUMMY_ANALYSIS_TARGET, KEYWORD_PASSWORD_PATTERN\nfrom tests.test_utils.dummy_line_data import get_line_data\n\n\nclass TestValueLastWordCheck:\n\n    def test_value_last_word_check_p(self, file_path: pytest.fixture, success_line: pytest.fixture) -> None:\n        line_data = get_line_data(file_path, line=success_line, pattern=KEYWORD_PASSWORD_PATTERN)\n        assert ValueLastWordCheck().run(line_data, DUMMY_ANALYSIS_TARGET) is False\n\n    @pytest.mark.parametrize(\"line\", [\"password = value:\"])\n    def test_value_last_word_check_n(self, file_path: pytest.fixture, line: str) -> None:\n        line_data = get_line_data(file_path, line=line, pattern=KEYWORD_PASSWORD_PATTERN)\n        assert ValueLastWordCheck().run(line_data, DUMMY_ANALYSIS_TARGET) is True\n"
  },
  {
    "path": "tests/filters/test_value_length_check.py",
    "content": "import pytest\n\nfrom credsweeper.filters import ValueLengthCheck\nfrom tests.filters.conftest import LINE_VALUE_PATTERN, DUMMY_ANALYSIS_TARGET\nfrom tests.test_utils.dummy_line_data import get_line_data\n\n\nclass TestValueLengthCheck:\n\n    def test_value_length_check_p(self, file_path: pytest.fixture, success_line: pytest.fixture) -> None:\n        line_data = get_line_data(file_path, line=success_line, pattern=LINE_VALUE_PATTERN)\n        assert ValueLengthCheck().run(line_data, DUMMY_ANALYSIS_TARGET) is False\n\n    @pytest.mark.parametrize(\"line\", [\"Cra\", \"CrackleCrackleCrackleCrackleCrackleCrackle123\"])\n    def test_value_length_check_n(self, file_path: pytest.fixture, line: str) -> None:\n        line_data = get_line_data(file_path, line=line, pattern=LINE_VALUE_PATTERN)\n        assert ValueLengthCheck(max_len=42).run(line_data, DUMMY_ANALYSIS_TARGET) is True\n"
  },
  {
    "path": "tests/filters/test_value_method_check.py",
    "content": "import pytest\n\nfrom credsweeper.filters import ValueMethodCheck\nfrom tests.filters.conftest import DUMMY_ANALYSIS_TARGET, KEYWORD_PASSWORD_PATTERN\nfrom tests.test_utils.dummy_line_data import get_line_data\n\n\nclass TestValueMethodCheck:\n\n    def test_value_method_check_p(self, file_path: pytest.fixture, success_line: pytest.fixture) -> None:\n        line_data = get_line_data(file_path, line=success_line, pattern=KEYWORD_PASSWORD_PATTERN)\n        assert ValueMethodCheck().run(line_data, DUMMY_ANALYSIS_TARGET) is False\n\n    @pytest.mark.parametrize(\"line\", [\"pass=Crac.method()\", \"pass=Crac_function\"])\n    def test_value_method_check_n(self, file_path: pytest.fixture, line: str) -> None:\n        line_data = get_line_data(file_path, line=line, pattern=KEYWORD_PASSWORD_PATTERN)\n        assert ValueMethodCheck().run(line_data, DUMMY_ANALYSIS_TARGET) is True\n"
  },
  {
    "path": "tests/filters/test_value_morphemes_check.py",
    "content": "import math\nimport unittest\nfrom unittest.mock import MagicMock\n\nimport pytest\n\nfrom credsweeper.config.config import Config\nfrom credsweeper.filters import ValueMorphemesCheck\nfrom tests import AZ_STRING\nfrom tests.filters.conftest import LINE_VALUE_PATTERN, DUMMY_ANALYSIS_TARGET\nfrom tests.test_utils.dummy_line_data import get_line_data\n\n\nclass TestValueMorphemesCheck(unittest.TestCase):\n\n    def setUp(self) -> None:\n        self.config = MagicMock(spec=Config)\n\n    def test_min_patter_len_n(self) -> None:\n        with self.assertRaises(ValueError):\n            ValueMorphemesCheck(self.config, -1)\n\n    def test_init_n(self) -> None:\n        test_filter = ValueMorphemesCheck(self.config)\n        self.assertListEqual([1, 1, 1, 1, 1, 1, 2, 3, 4, 5, 6, 7, 8], test_filter.thresholds)\n\n    def test_init_p(self) -> None:\n        test_filter = ValueMorphemesCheck(self.config, 7)\n        self.assertListEqual([7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7], test_filter.thresholds)\n\n    def test_run_small_n(self) -> None:\n        line_data = get_line_data(self.config, file_path=\"file_path\", line='*', pattern=LINE_VALUE_PATTERN)\n        self.assertFalse(ValueMorphemesCheck().run(line_data, DUMMY_ANALYSIS_TARGET))\n\n    def test_run_oversize_n(self) -> None:\n        line_data = get_line_data(self.config, file_path=\"file_path\", line='*', pattern=LINE_VALUE_PATTERN)\n        line_data.value = '*' * (2**16)\n        value_morpheme_check = ValueMorphemesCheck()\n        self.assertGreater(len(line_data.value).bit_length(), len(value_morpheme_check.thresholds))\n        self.assertFalse(value_morpheme_check.run(line_data, DUMMY_ANALYSIS_TARGET))\n\n    def test_run_true_p(self) -> None:\n        line_data = get_line_data(self.config, file_path=\"file_path\", line='tizen', pattern=LINE_VALUE_PATTERN)\n        self.assertTrue(ValueMorphemesCheck(None, 0).run(line_data, DUMMY_ANALYSIS_TARGET))\n\n    def test_run_false_p(self) -> None:\n        line_data = get_line_data(self.config, file_path=\"file_path\", line='tizen', pattern=LINE_VALUE_PATTERN)\n        self.assertFalse(ValueMorphemesCheck(None, 1).run(line_data, DUMMY_ANALYSIS_TARGET))\n\n\nclass TestValueMorphemesCheckFixture:\n\n    @pytest.mark.parametrize(\n        \"line\",\n        [\n            \"the 0ne l1ne\",\n            \"ani dammi lwnes\",\n            \"burito\",\n            \"31415926535897932384626433832795\",  # first 32 symbols from https://oeis.org/A000796\n            \"27182818284590452353602874713526\",  # first 32 symbols from https://oeis.org/A001113\n        ])\n    def test_value_couple_keyword_check_p(self, file_path: pytest.fixture, line: str) -> None:\n        line_data = get_line_data(file_path, line=line, pattern=LINE_VALUE_PATTERN)\n        assert ValueMorphemesCheck().run(line_data, DUMMY_ANALYSIS_TARGET) is False\n\n    @pytest.mark.parametrize(\n        \"line\",\n        [\n            \"deadbeefdeadbeefdeadbeefdeadbeef\",\n            str(math.pi),\n            str(math.e),\n            \"3141592653589793238462643383279\",  # first 31 symbols from https://oeis.org/A000796\n            \"2718281828459045235360287471352\",  # first 31 symbols from https://oeis.org/A001113\n            \"crack\",\n            \"example\",\n            \"motorcyclingend\",\n            \"mulicrashprocid\",\n            \"rgb195DiscretVideo\",\n            \"GetSet\",\n            \"GetDummyValue\",\n            \"SetAnyString\",\n            \"handleDeleteFriend\",\n            \"acknowledgments\",\n            \"somethingelse\",\n        ])\n    def test_value_couple_keyword_check_n(self, file_path: pytest.fixture, line: str) -> None:\n        line_data = get_line_data(file_path, line=line, pattern=LINE_VALUE_PATTERN)\n        assert ValueMorphemesCheck().run(line_data, DUMMY_ANALYSIS_TARGET) is True\n\n    @pytest.mark.parametrize(\"line\", [AZ_STRING])\n    def test_value_couple_keyword_check_arg_n(self, file_path: pytest.fixture, line: str) -> None:\n        line_data = get_line_data(file_path, line=line, pattern=LINE_VALUE_PATTERN)\n        assert ValueMorphemesCheck(threshold=9).run(line_data, DUMMY_ANALYSIS_TARGET) is False\n\n    @pytest.mark.parametrize(\"line\", [AZ_STRING])\n    def test_value_couple_keyword_check_arg_p(self, file_path: pytest.fixture, line: str) -> None:\n        line_data = get_line_data(file_path, line=line, pattern=LINE_VALUE_PATTERN)\n        assert ValueMorphemesCheck(threshold=8).run(line_data, DUMMY_ANALYSIS_TARGET) is True\n"
  },
  {
    "path": "tests/filters/test_value_not_allowed_pattern.py",
    "content": "import pytest\n\nfrom credsweeper.filters import ValueNotAllowedPatternCheck\nfrom tests.filters.conftest import DUMMY_ANALYSIS_TARGET, LINE_VALUE_PATTERN, KEYWORD_PASSWORD_PATTERN\nfrom tests.test_utils.dummy_line_data import get_line_data\n\n\nclass TestValueLastWordCheck:\n\n    def test_value_last_word_check_p(self, file_path: pytest.fixture, success_line: pytest.fixture) -> None:\n        line_data = get_line_data(file_path, line=success_line, pattern=KEYWORD_PASSWORD_PATTERN)\n        assert ValueNotAllowedPatternCheck().run(line_data, DUMMY_ANALYSIS_TARGET) is False\n\n    @pytest.mark.parametrize(\"line\", [\"[{ \", \"\\\\n\", \"\\t\\t\\t\\\\\", \"\\t \\\\n\\t \\t\"])\n    def test_value_last_word_check_n(self, file_path: pytest.fixture, line: str) -> None:\n        line_data = get_line_data(file_path, line=line, pattern=LINE_VALUE_PATTERN)\n        assert ValueNotAllowedPatternCheck().run(line_data, DUMMY_ANALYSIS_TARGET) is True\n"
  },
  {
    "path": "tests/filters/test_value_not_part_encoded.py",
    "content": "import pytest\n\nfrom credsweeper.common.constants import Chars\nfrom credsweeper.credentials.line_data import LineData\nfrom credsweeper.file_handler.analysis_target import AnalysisTarget\nfrom credsweeper.filters import ValueNotPartEncodedCheck\nfrom tests.filters.conftest import LINE_VALUE_PATTERN, DUMMY_DESCRIPTOR\n\n\nclass TestValueNotPartEncodedCheck:\n\n    def test_value_not_part_encoded_p(self, config: pytest.fixture) -> None:\n        val = 'Q' * 64\n        target = AnalysisTarget(0, [val, '/usr/local/host/'], [1, 2], DUMMY_DESCRIPTOR)\n        line_data = LineData(config, val, 0, 1, \"\", \"\", \"\", LINE_VALUE_PATTERN)\n        assert ValueNotPartEncodedCheck().run(line_data, target) is False\n        target = AnalysisTarget(0, [\"AAA\", \"BBB\"], [1, 2], DUMMY_DESCRIPTOR)\n        line_data = LineData(config, \"XXX\", 0, 1, \"\", \"\", \"\", LINE_VALUE_PATTERN)\n        assert ValueNotPartEncodedCheck().run(line_data, target) is False\n\n    def test_value_not_part_encoded_n(self, config: pytest.fixture) -> None:\n        val = 'Q' * 64\n        target = AnalysisTarget(0, [val, '/etc/localhost=='], [1, 2], DUMMY_DESCRIPTOR)\n        line_data = LineData(config, val, 0, 1, \"\", \"\", \"\", LINE_VALUE_PATTERN)\n        assert ValueNotPartEncodedCheck().run(line_data, target) is True\n        val = 'Q' * 64\n        target = AnalysisTarget(0, [val, '0123456789ABCDEF'], [1, 2], DUMMY_DESCRIPTOR)\n        line_data = LineData(config, val, 0, 1, \"\", \"\", \"\", LINE_VALUE_PATTERN)\n        assert ValueNotPartEncodedCheck().run(line_data, target) is True\n        val = \"/123\" + 'Q' * 64\n        target = AnalysisTarget(0, [val, '/123456789ABCDE='], [1, 2], DUMMY_DESCRIPTOR)\n        line_data = LineData(config, val, 0, 1, \"\", \"\", \"\", LINE_VALUE_PATTERN)\n        assert ValueNotPartEncodedCheck().run(line_data, target) is True\n        target = AnalysisTarget(1, ['Q' * 64, val, \"1234\"], [1, 2, 3], DUMMY_DESCRIPTOR)\n        line_data = LineData(config, val, 1, 2, \"\", \"\", \"\", LINE_VALUE_PATTERN)\n        assert ValueNotPartEncodedCheck().run(line_data, target) is True\n        target = AnalysisTarget(1, [Chars.BASE64STD_CHARS.value, \"XXX\"], [1, 2], DUMMY_DESCRIPTOR)\n        line_data = LineData(config, \"XXX\", 1, 2, \"\", \"\", \"\", LINE_VALUE_PATTERN)\n        assert ValueNotPartEncodedCheck().run(line_data, target) is True\n        target = AnalysisTarget(0, [\"XXX\", Chars.BASE64STD_CHARS.value], [1, 2], DUMMY_DESCRIPTOR)\n        line_data = LineData(config, \"XXX\", 0, 1, \"\", \"\", \"\", LINE_VALUE_PATTERN)\n        assert ValueNotPartEncodedCheck().run(line_data, target) is True\n        target = AnalysisTarget(1, [Chars.BASE64STD_CHARS.value, \"XXX\"], [1, 2], DUMMY_DESCRIPTOR)\n        line_data = LineData(config, \"XXX\", 1, 333, \"\", \"\", \"\", LINE_VALUE_PATTERN)\n        assert ValueNotPartEncodedCheck().run(line_data, target) is True\n"
  },
  {
    "path": "tests/filters/test_value_number_check.py",
    "content": "import pytest\n\nfrom credsweeper.filters import ValueNumberCheck\nfrom tests.filters.conftest import LINE_VALUE_PATTERN, DUMMY_ANALYSIS_TARGET\nfrom tests.test_utils.dummy_line_data import get_line_data\n\n\nclass TestValueNumberCheck:\n\n    @pytest.mark.parametrize(\"line\", [\"0123423423x\", \"abcdefg\", \"0123456789abcdef012345\"])\n    def test_value_number_check_p(self, file_path: pytest.fixture, line: str) -> None:\n        line_data = get_line_data(file_path, line=line, pattern=LINE_VALUE_PATTERN)\n        assert ValueNumberCheck().run(line_data, DUMMY_ANALYSIS_TARGET) is False\n\n    @pytest.mark.parametrize(\"line\", [\n        \"0123456789abcdef01234\", \"0123456789abcdef0123U\", \"0x0123456789abcdefULL\", \"555\", \"314ULL\", \"0xabcdefU\", \"0xfL\",\n        \"010101010101\", \"-201760\", \"-1ULL\"\n    ])\n    def test_value_number_check_n(self, file_path: pytest.fixture, line: str) -> None:\n        line_data = get_line_data(file_path, line=line, pattern=LINE_VALUE_PATTERN)\n        assert ValueNumberCheck().run(line_data, DUMMY_ANALYSIS_TARGET) is True\n"
  },
  {
    "path": "tests/filters/test_value_pattern_check.py",
    "content": "import unittest\nfrom unittest.mock import MagicMock\n\nimport pytest\n\nfrom credsweeper.common.constants import DEFAULT_PATTERN_LEN\nfrom credsweeper.config.config import Config\nfrom credsweeper.filters import ValuePatternCheck\nfrom tests.filters.conftest import LINE_VALUE_PATTERN, DUMMY_ANALYSIS_TARGET\nfrom tests.test_utils.dummy_line_data import get_line_data\n\n\nclass TestValuePatternCheck(unittest.TestCase):\n\n    def setUp(self) -> None:\n        self.config = MagicMock(spec=Config)\n\n    def test_min_patter_len_n(self) -> None:\n        with self.assertRaises(ValueError):\n            ValuePatternCheck(self.config, DEFAULT_PATTERN_LEN - 1)\n\n    def test_init_n(self) -> None:\n        test_filter = ValuePatternCheck(self.config)\n        self.assertEqual(-1, test_filter.pattern_len)\n        self.assertListEqual([4, 4, 4, 4, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13], test_filter.pattern_lengths)\n\n    def test_init_p(self) -> None:\n        test_filter = ValuePatternCheck(self.config, DEFAULT_PATTERN_LEN)\n        self.assertEqual(DEFAULT_PATTERN_LEN, test_filter.pattern_len)\n        self.assertListEqual([4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4], test_filter.pattern_lengths)\n\n    def test_duple_pattern_check_n(self) -> None:\n        self.assertFalse(ValuePatternCheck(self.config).duple_pattern_check(\"20201030\", DEFAULT_PATTERN_LEN))\n        self.assertFalse(ValuePatternCheck(self.config).duple_pattern_check(\"01000101\", DEFAULT_PATTERN_LEN))\n        self.assertFalse(ValuePatternCheck(self.config).duple_pattern_check(\"10305070\", DEFAULT_PATTERN_LEN))\n        self.assertFalse(ValuePatternCheck(self.config).duple_pattern_check(\"11224433\", DEFAULT_PATTERN_LEN))\n        self.assertFalse(ValuePatternCheck(self.config).duple_pattern_check(\"11000000\", DEFAULT_PATTERN_LEN))\n\n    def test_duple_pattern_check_p(self) -> None:\n        self.assertTrue(ValuePatternCheck(self.config).duple_pattern_check(\"11223344\", DEFAULT_PATTERN_LEN))\n        self.assertTrue(ValuePatternCheck(self.config).duple_pattern_check(\"010101010\", DEFAULT_PATTERN_LEN))\n        self.assertTrue(ValuePatternCheck(self.config).duple_pattern_check(\"40302010\", DEFAULT_PATTERN_LEN))\n\n    def test_equal_pattern_check_n(self) -> None:\n        self.assertFalse(ValuePatternCheck(self.config).equal_pattern_check(\"Crackle123\", DEFAULT_PATTERN_LEN))\n        self.assertFalse(ValuePatternCheck(self.config).equal_pattern_check(\"IEEE32441\", DEFAULT_PATTERN_LEN))\n        self.assertFalse(ValuePatternCheck(self.config).equal_pattern_check(\"Pass...\", DEFAULT_PATTERN_LEN))\n        self.assertFalse(ValuePatternCheck(pattern_len=4).equal_pattern_check(\"Pass:\\\\n        Crackle123\", 5))\n\n    def test_equal_pattern_check_p(self) -> None:\n        self.assertTrue(ValuePatternCheck(self.config).equal_pattern_check(\"AAAABCD\", DEFAULT_PATTERN_LEN))\n        self.assertTrue(ValuePatternCheck(pattern_len=4).equal_pattern_check(\"-------BEGIN\", DEFAULT_PATTERN_LEN))\n        self.assertFalse(ValuePatternCheck(pattern_len=8).equal_pattern_check(\"-------BEGIN\", DEFAULT_PATTERN_LEN))\n\n    def test_ascending_pattern_check_n(self) -> None:\n        self.assertFalse(ValuePatternCheck(self.config).ascending_pattern_check(\"Crackle123\", DEFAULT_PATTERN_LEN))\n        self.assertFalse(\n            ValuePatternCheck(pattern_len=4).ascending_pattern_check(\"Crackle987654321\", DEFAULT_PATTERN_LEN))\n\n    def test_ascending_pattern_check_p(self) -> None:\n        self.assertTrue(ValuePatternCheck(self.config).ascending_pattern_check(\"Crackle1234\", DEFAULT_PATTERN_LEN))\n        self.assertTrue(ValuePatternCheck(pattern_len=4).ascending_pattern_check(\"Cracklefgh\", DEFAULT_PATTERN_LEN))\n\n    def test_descending_pattern_check_n(self) -> None:\n        self.assertFalse(ValuePatternCheck(self.config).descending_pattern_check(\"Crackle321\", DEFAULT_PATTERN_LEN))\n        self.assertFalse(ValuePatternCheck(pattern_len=4).descending_pattern_check(\"Crackle123456789\", 5))\n\n    def test_descending_pattern_check_p(self) -> None:\n        self.assertTrue(ValuePatternCheck(self.config).descending_pattern_check(\"Crackle4321\", DEFAULT_PATTERN_LEN))\n        self.assertTrue(ValuePatternCheck(pattern_len=4).descending_pattern_check(\"Crackledcba\", DEFAULT_PATTERN_LEN))\n\n\nclass TestValuePatternCheckFixture:\n\n    def test_value_similarity_check_p(self, file_path: pytest.fixture, config: Config,\n                                      success_line: pytest.fixture) -> None:\n        line_data = get_line_data(file_path, line=success_line, pattern=LINE_VALUE_PATTERN)\n        assert ValuePatternCheck().run(line_data, DUMMY_ANALYSIS_TARGET) is False\n\n    @pytest.mark.parametrize(\"line\", [\n        \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f20212223242526\",\n        \"c0ffeecc-dead-beef-cafe-1a2b3c4d5e6f\", \"123456ff-dead-beef-cafe-7a24ca6a903c\",\n        \"ffffff00-dead-beef-cafe-4a25c06a902d\", \"Crackle4444\", \"Crackle1234\", \"Crackle4321\", \"@$%\", \"a5\", \"_\"\n    ])\n    def test_value_similarity_check_n(self, file_path: pytest.fixture, config: Config, line: str) -> None:\n        line_data = get_line_data(file_path, line=line, pattern=LINE_VALUE_PATTERN)\n        assert ValuePatternCheck().run(line_data, DUMMY_ANALYSIS_TARGET) is True\n"
  },
  {
    "path": "tests/filters/test_value_sealed_secret_check.py",
    "content": "import re\nimport unittest\n\nfrom credsweeper.common.constants import MAX_LINE_LENGTH\nfrom credsweeper.file_handler.analysis_target import AnalysisTarget\nfrom credsweeper.filters import ValueSealedSecretCheck\nfrom tests import AZ_STRING\nfrom tests.filters.conftest import LINE_VALUE_PATTERN, DUMMY_ANALYSIS_TARGET\nfrom tests.test_utils.dummy_line_data import get_line_data\n\n\nclass TestValueSealedSecretCheck(unittest.TestCase):\n\n    def test_value_search_check_n(self):\n        line_data = get_line_data(line=AZ_STRING, pattern=LINE_VALUE_PATTERN)\n        self.assertFalse(ValueSealedSecretCheck().run(line_data, DUMMY_ANALYSIS_TARGET))\n        line_data = get_line_data(line=\"AQA\", pattern=LINE_VALUE_PATTERN)\n        self.assertFalse(ValueSealedSecretCheck().run(line_data, DUMMY_ANALYSIS_TARGET))\n        line_data = get_line_data(line=f\"AgA{'A' * MAX_LINE_LENGTH}\", pattern=LINE_VALUE_PATTERN)\n        self.assertFalse(ValueSealedSecretCheck().run(line_data, DUMMY_ANALYSIS_TARGET))\n\n    def test_value_search_check_p(self):\n        line = f\"AgA{'A' * 1000}\\nbitnami\\nSealedSecret\\nencryptedData\\n\"\n        line_data = get_line_data(line=line, pattern=re.compile(r\"(?P<value>\\S+)\"))\n        target = AnalysisTarget(line_pos=0, lines=[line], line_nums=[1], descriptor=None)\n        self.assertTrue(ValueSealedSecretCheck().run(line_data, target))\n"
  },
  {
    "path": "tests/filters/test_value_search_check.py",
    "content": "import re\nimport unittest\n\nfrom credsweeper.common.constants import MAX_LINE_LENGTH\nfrom credsweeper.filters import ValueSearchCheck\nfrom tests import AZ_STRING\nfrom tests.filters.conftest import LINE_VALUE_PATTERN, DUMMY_ANALYSIS_TARGET\nfrom tests.test_utils.dummy_line_data import get_line_data\n\n\nclass TestValueSearchCheck(unittest.TestCase):\n\n    def test_value_search_check_n(self):\n        line_data = get_line_data(line=AZ_STRING, pattern=LINE_VALUE_PATTERN)\n        # None in constructor returns False always\n        self.assertFalse(ValueSearchCheck().run(line_data, DUMMY_ANALYSIS_TARGET))\n        # empty pattern - too\n        self.assertFalse(ValueSearchCheck(pattern='').run(line_data, DUMMY_ANALYSIS_TARGET))\n        # smallest pattern does not exist in value\n        self.assertFalse(ValueSearchCheck(pattern=\"zyzzyva\").run(line_data, DUMMY_ANALYSIS_TARGET))\n        # smallest value does not exist in pattern\n        self.assertFalse(ValueSearchCheck(pattern='_' * MAX_LINE_LENGTH).run(line_data, DUMMY_ANALYSIS_TARGET))\n\n    def test_value_search_check_p(self):\n        line_data = get_line_data(line=AZ_STRING, pattern=LINE_VALUE_PATTERN)\n        # a word in value\n        self.assertTrue(ValueSearchCheck(pattern=\"lazy\").run(line_data, DUMMY_ANALYSIS_TARGET))\n        line_data = get_line_data(line=AZ_STRING, pattern=re.compile(r\"(?P<value>lazy)\"))\n        # a word in value\n        self.assertTrue(ValueSearchCheck(pattern=\"over lazy dog\").run(line_data, DUMMY_ANALYSIS_TARGET))\n"
  },
  {
    "path": "tests/filters/test_value_similarity_check.py",
    "content": "import pytest\n\nfrom credsweeper.filters import ValueSimilarityCheck\nfrom credsweeper.rules.rule import Rule\nfrom tests.filters.conftest import DUMMY_ANALYSIS_TARGET\nfrom tests.test_utils.dummy_line_data import get_line_data\n\n\nclass TestValueSimilarityCheck:\n\n    @pytest.fixture\n    def password_rule(self, config) -> Rule:\n        pass_rule_without_filters = {\n            \"name\": \"Password\",\n            \"severity\": \"medium\",\n            \"confidence\": \"moderate\",\n            \"type\": \"keyword\",\n            \"values\": [\"password|passwd|pwd\"],\n            \"use_ml\": True,\n            \"min_line_len\": 0,\n            \"target\": [\"code\", \"doc\"],\n        }\n        rule = Rule(config, pass_rule_without_filters)\n        return rule\n\n    def test_value_similarity_check_p(self, password_rule: Rule, file_path: str, success_line: pytest.fixture) -> None:\n        line_data = get_line_data(file_path=file_path, line=success_line, pattern=password_rule.patterns[0])\n        assert ValueSimilarityCheck().run(line_data, DUMMY_ANALYSIS_TARGET) is False\n\n    @pytest.mark.parametrize(\n        \"line\",\n        [\"password = 'password1'\", \"password = 'password123'\", \"pwd=$PWD\", '\"password\": \"password=`$vc1rQ5eBW*S`\"'])\n    def test_value_similarity_check_n(self, password_rule: Rule, file_path: str, line: str) -> None:\n        line_data = get_line_data(file_path=file_path, line=line, pattern=password_rule.patterns[0])\n        assert ValueSimilarityCheck().run(line_data, DUMMY_ANALYSIS_TARGET) is True\n"
  },
  {
    "path": "tests/filters/test_value_split_keyword_check.py",
    "content": "import pytest\n\nfrom credsweeper.filters import ValueSplitKeywordCheck\nfrom tests.filters.conftest import LINE_VALUE_PATTERN, DUMMY_ANALYSIS_TARGET\nfrom tests.test_utils.dummy_line_data import get_line_data\n\n\nclass TestValueSplitKeywordCheck:\n\n    @pytest.mark.parametrize(\"line\", [\"abstract,and_so_on\", \"ani dammi lwnes\", \"unique#string\"])\n    def test_value_split_keyword_check_p(self, file_path: pytest.fixture, line: str) -> None:\n        line_data = get_line_data(file_path, line=line, pattern=LINE_VALUE_PATTERN)\n        assert ValueSplitKeywordCheck().run(line_data, DUMMY_ANALYSIS_TARGET) is False\n\n    @pytest.mark.parametrize(\"line\", [\"abstract and so on\", \"Any dummy lines\", \"unique string\"])\n    def test_value_split_keyword_check_n(self, file_path: pytest.fixture, line: str) -> None:\n        line_data = get_line_data(file_path, line=line, pattern=LINE_VALUE_PATTERN)\n        assert ValueSplitKeywordCheck().run(line_data, DUMMY_ANALYSIS_TARGET) is True\n"
  },
  {
    "path": "tests/filters/test_value_string_type_check.py",
    "content": "import pytest\n\nfrom credsweeper.config.config import Config\nfrom credsweeper.filters import ValueStringTypeCheck\nfrom tests.filters.conftest import DUMMY_ANALYSIS_TARGET, KEYWORD_PASSWORD_PATTERN\nfrom tests.test_utils.dummy_line_data import get_line_data\n\n\nclass TestValueStringTypeCheck:\n\n    def test_value_string_type_check_p(self, config: Config, success_line: pytest.fixture) -> None:\n        file_path = \"path.txt\"\n        line_data = get_line_data(config, file_path, line=success_line, pattern=KEYWORD_PASSWORD_PATTERN)\n        assert ValueStringTypeCheck(config).run(line_data, DUMMY_ANALYSIS_TARGET) is False\n\n    @pytest.mark.parametrize(\"line\", [\"pass = DEAD314BEEF0CAFE\"])\n    def test_value_string_type_check_n(self, config: Config, line: str) -> None:\n        file_path = \"path.py\"\n        line_data = get_line_data(config, file_path, line=line, pattern=KEYWORD_PASSWORD_PATTERN)\n        assert ValueStringTypeCheck(config).run(line_data, DUMMY_ANALYSIS_TARGET) is True\n\n    def test_value_string_type_check_none_path_n(self, config: Config, success_line: pytest.fixture) -> None:\n        # even file_path is None it means \"\" - no extension\n        file_path = None\n        line_data = get_line_data(config, file_path, line=success_line, pattern=KEYWORD_PASSWORD_PATTERN)\n        assert ValueStringTypeCheck(config).run(line_data, DUMMY_ANALYSIS_TARGET) is False\n\n    @pytest.mark.parametrize(\"line\", [\"pass = 314DEADBEEF0CAFE\"])\n    def test_value_string_type_check_not_quoted_source_file_n(self, line: str, config: Config) -> None:\n        file_path = \"path.py\"\n        # guess, the keyword is TOKEN\n        line_data = get_line_data(config, file_path, line=line, pattern=KEYWORD_PASSWORD_PATTERN)\n        assert ValueStringTypeCheck(config).run(line_data, DUMMY_ANALYSIS_TARGET) is False\n"
  },
  {
    "path": "tests/filters/test_value_token_base32_check.py",
    "content": "import pytest\n\nfrom credsweeper.filters import ValueTokenBase32Check\nfrom tests.filters.conftest import LINE_VALUE_PATTERN, DUMMY_ANALYSIS_TARGET\nfrom tests.test_utils.dummy_line_data import get_line_data\n\n\nclass TestValueTokenBase32Check:\n\n    @pytest.mark.parametrize(\"line\", [\"4K26IPW7VBHMFT4D\", \"NAQ4BVWT\", \"WXFES7QNTET5DQYC\"])\n    def test_value_token_base32_check_p(self, line: str) -> None:\n        # import string;import random;print(''.join(random.choices(string.ascii_uppercase+'234567', k=16)))\n        line_data = get_line_data(line=line, pattern=LINE_VALUE_PATTERN)\n        assert ValueTokenBase32Check().run(line_data, DUMMY_ANALYSIS_TARGET) is False\n\n    @pytest.mark.parametrize(\"line\", [\"OOOOOOMMMMMMMMMM\", \"1MZ0A9L2\", \"QAZXSWEDCVFRTGBN\"])\n    def test_value_token_base32_check_n(self, line: str) -> None:\n        line_data = get_line_data(line=line, pattern=LINE_VALUE_PATTERN)\n        assert ValueTokenBase32Check().run(line_data, DUMMY_ANALYSIS_TARGET) is True\n"
  },
  {
    "path": "tests/filters/test_value_token_base36_check.py",
    "content": "import pytest\n\nfrom credsweeper.filters import ValueTokenBase36Check\nfrom tests.filters.conftest import LINE_VALUE_PATTERN, DUMMY_ANALYSIS_TARGET\nfrom tests.test_utils.dummy_line_data import get_line_data\n\n\nclass TestValueTokenBase36Check:\n\n    @pytest.mark.parametrize(\n        \"line\",\n        [\n            \"jvzec4y51fkrrd39czz1nfbw\",  # 24\n            \"nf6lqy74gp53f7w08gn4l0vrk\",  # 25\n            \"wpv1jq9xwanbn3n\",  # 15\n            \"123456789\",  # 9 - not calculated\n        ])\n    def test_value_token_base36_check_p(self, line: str) -> None:\n        # import string;import random;print(''.join(random.choices(string.digits+string.ascii_lowercase, k=15)))\n        line_data = get_line_data(line=line, pattern=LINE_VALUE_PATTERN)\n        assert ValueTokenBase36Check().run(line_data, DUMMY_ANALYSIS_TARGET) is False\n\n    @pytest.mark.parametrize(\n        \"line\",\n        [\n            \"100x200x300x400\",  # 15\n            \"qwertyui\",  # 8\n            \"0o9i8u7y6t5r4e3\",  # 15\n            \"0k9j8h7g6f5d4s3a\",  # 16\n            \"gfkjjhgy7r457y54jfhhgvcnf\",  # 25\n        ])\n    def test_value_token_base36_check_n(self, line: str) -> None:\n        line_data = get_line_data(line=line, pattern=LINE_VALUE_PATTERN)\n        assert ValueTokenBase36Check().run(line_data, DUMMY_ANALYSIS_TARGET) is True\n"
  },
  {
    "path": "tests/filters/test_value_token_base64_check.py",
    "content": "import pytest\n\nfrom credsweeper.filters import ValueTokenBase64Check\nfrom tests.filters.conftest import LINE_VALUE_PATTERN, DUMMY_ANALYSIS_TARGET\nfrom tests.test_utils.dummy_line_data import get_line_data\n\n\nclass TestValueTokenBase64Check:\n\n    @pytest.mark.parametrize(\n        \"line\",\n        [\n            \"oXIO7p2R4Sx5UcHmUacu0-ojM8ELvCeskmyPuu4yaexoh5ExL4AFOWWI08G-IBVZ\",  # 64\n            \"9BlYTo-Fcthl_75PKfKQIWlYA6alA2uy\",  # 32\n            \"23OY2aMY4U3ubsQwBPvdyfYr\",  # 24\n            \"wSpv1jq9xwaXbn3n\",  # 16\n        ])\n    def test_value_token_base64_check_p(self, line: str) -> None:\n        # import string;import random;print(''.join(random.choices(string.digits+string.ascii_letters+'-_', k=64)))\n        line_data = get_line_data(line=line, pattern=LINE_VALUE_PATTERN)\n        assert ValueTokenBase64Check().run(line_data, DUMMY_ANALYSIS_TARGET) is False\n\n    @pytest.mark.parametrize(\n        \"line\",\n        [\n            \"0oKiLoKkjUIhbYygVfcrTt6Dree3dSsBnJjiJKklLpMbV71X1QaSwDe23-9O_o01\",  # 64\n            \"09uulkjhbmnbvft565d4ddxvcvswq232\",  # 32\n            \"21WEasdVCfGGyrY6Ui8LkLpO\",  # 24\n            \"100x200x3S00x400\",  # 16\n        ])\n    def test_value_token_base64_check_n(self, line: str) -> None:\n        line_data = get_line_data(line=line, pattern=LINE_VALUE_PATTERN)\n        assert ValueTokenBase64Check().run(line_data, DUMMY_ANALYSIS_TARGET) is True\n"
  },
  {
    "path": "tests/filters/test_value_token_check.py",
    "content": "import pytest\n\nfrom credsweeper.filters import ValueTokenCheck\nfrom tests.filters.conftest import DUMMY_ANALYSIS_TARGET, KEYWORD_PASSWORD_PATTERN\nfrom tests.test_utils.dummy_line_data import get_line_data\n\n\nclass TestValueTokenCheck:\n\n    def test_value_token_check_p(self, file_path: pytest.fixture, success_line: pytest.fixture) -> None:\n        line_data = get_line_data(file_path, line=success_line, pattern=KEYWORD_PASSWORD_PATTERN)\n        assert ValueTokenCheck().run(line_data, DUMMY_ANALYSIS_TARGET) is False\n\n    @pytest.mark.parametrize(\"line\", [\"pass=Crac>crackle1\", \"pass=my<password\", \"pass=my)password\"])\n    def test_value_token_check_n(self, file_path: pytest.fixture, line: str) -> None:\n        line_data = get_line_data(file_path, line=line, pattern=KEYWORD_PASSWORD_PATTERN)\n        assert ValueTokenCheck().run(line_data, DUMMY_ANALYSIS_TARGET) is True\n"
  },
  {
    "path": "tests/ml_model/__init__.py",
    "content": ""
  },
  {
    "path": "tests/ml_model/test_features.py",
    "content": "import re\nfrom unittest import TestCase\n\nfrom credsweeper.app import APP_PATH\nfrom credsweeper.common.constants import Severity, MAX_LINE_LENGTH\nfrom credsweeper.credentials.candidate import Candidate, LineData\nfrom credsweeper.ml_model.features.entropy_evaluation import EntropyEvaluation\nfrom credsweeper.ml_model.features.file_extension import FileExtension\nfrom credsweeper.ml_model.features.has_html_tag import HasHtmlTag\nfrom credsweeper.ml_model.features.is_secret_numeric import IsSecretNumeric\nfrom credsweeper.ml_model.features.length_of_attribute import LengthOfAttribute\nfrom credsweeper.ml_model.features.morpheme_dense import MorphemeDense\nfrom credsweeper.ml_model.features.rule_name import RuleName\nfrom credsweeper.ml_model.features.rule_severity import RuleSeverity\nfrom credsweeper.ml_model.features.search_in_attribute import SearchInAttribute\nfrom credsweeper.ml_model.features.word_in_path import WordInPath\nfrom credsweeper.ml_model.features.word_in_postamble import WordInPostamble\nfrom credsweeper.ml_model.features.word_in_preamble import WordInPreamble\nfrom credsweeper.ml_model.features.word_in_transition import WordInTransition\nfrom credsweeper.ml_model.features.word_in_value import WordInValue\nfrom credsweeper.ml_model.features.word_in_variable import WordInVariable\nfrom credsweeper.utils.util import Util\nfrom tests import AZ_STRING\n\nRE_TEST_PATTERN = re.compile(r\"quick (?P<variable>brown fox) jumps (?P<separator>over) (?P<value>the lazy) dog\")\n\n\nclass TestFeatures(TestCase):\n\n    @staticmethod\n    def init_feature_search_comment(comment: str) -> SearchInAttribute:\n        feature = None\n        model_config = Util.json_load(APP_PATH / \"ml_model\" / \"ml_config.json\")\n        for feat in model_config[\"features\"]:\n            if \"SearchInAttribute\" == feat[\"type\"] and comment == feat.get(\"comment\", ''):\n                assert feature is None, f\"check duplication of '{comment}'\"\n                feature = SearchInAttribute(**feat[\"kwargs\"])\n        else:\n            assert feature is not None, f\"missed SearchInAttribute for '{comment}'\"\n        return feature\n\n    def setUp(self):\n        self.maxDiff = None\n        self.model_config = Util.json_load(APP_PATH / \"ml_model\" / \"ml_config.json\")\n        self.line_data = LineData(\n            config=None,\n            line=AZ_STRING,\n            line_pos=0,\n            line_num=1,\n            path=\"src/path.ext\",  # looks like after glob\n            file_type=\".ext\",\n            info=\"info\",\n            pattern=RE_TEST_PATTERN)\n        self.candidate = Candidate(line_data_list=[self.line_data],\n                                   patterns=[],\n                                   rule_name=\"rule\",\n                                   severity=Severity.MEDIUM)\n\n    def test_entropy_evaluation_n(self):\n        feature = EntropyEvaluation()\n        candidate = self.candidate\n        self.line_data.value = \"\\0\\0\\0\"\n        self.assertListEqual([0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0],\n                             feature.extract(candidate).tolist())\n\n    def test_entropy_evaluation_p(self):\n        feature = EntropyEvaluation()\n        candidate = self.candidate\n        extracted1 = feature.extract(candidate).tolist()\n        self.assertListEqual([1.0, 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0],\n                             extracted1)\n        self.line_data.value = \"bace4d19-fa7e-beef-cafe-9129474bcd81\"\n        extracted2 = feature.extract(candidate).tolist()\n        self.assertListEqual([\n            0.7041769027709961, 0.6943118572235107, 0.6783386468887329, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0,\n            1.0, 0.0, 0.0, 1.0, 1.0\n        ], extracted2)\n\n    def test_file_extension_n(self):\n        self.assertListEqual([[0, 0, 0]], FileExtension([\".txt\", \".doc\", \".exe\"])([self.candidate]).tolist())\n\n    def test_file_extension_p(self):\n        self.assertListEqual([[0, 0, 1]], FileExtension([\".0\", \".abc\", \".ext\"])([self.candidate]).tolist())\n\n    def test_length_attribute_unsupported_n(self):\n        with self.assertRaises(Exception):\n            LengthOfAttribute(\"separator\")\n\n    def test_length_attribute_empty_n(self):\n        feature = LengthOfAttribute(\"line\")\n        candidate = self.candidate\n        self.line_data.line = ''\n        self.assertListEqual([0.0], feature.extract(candidate).tolist())\n\n    def test_length_attribute_oversize_n(self):\n        feature = LengthOfAttribute(\"line\")\n        candidate = self.candidate\n        self.line_data.line = ' ' * MAX_LINE_LENGTH\n        self.assertListEqual([1.0], feature.extract(candidate).tolist())\n\n    def test_length_attribute_p(self):\n        feature = LengthOfAttribute(\"value\")\n        candidate = self.candidate\n        self.assertListEqual([0.12307692307692308], feature.extract(candidate).tolist())\n\n    def test_word_in_path_empty_n(self):\n        self.line_data.path = \"\"\n        self.assertListEqual([[0, 0, 0, 0]], WordInPath([\"dog\", \"lazy\", \"small\", \"the\"])([self.candidate]).tolist())\n\n    def test_word_in_path_n(self):\n        self.assertListEqual([[0, 0, 0, 0]], WordInPath([\"dog\", \"lazy\", \"small\", \"the\"])([self.candidate]).tolist())\n\n    def test_word_in_path_p(self):\n        self.assertListEqual([[1, 1, 0, 0]], WordInPath([\"/src\", \"/path\", \"small\", \"the\"])([self.candidate]).tolist())\n\n    def test_word_in_value_empty_n(self):\n        self.line_data.value = None\n        self.assertListEqual([[0, 0, 0, 0]], WordInValue([\"aaa\", \"bbb\", \"ccc\", \"ddd\"]).extract(self.candidate).tolist())\n\n    def test_word_in_value_n(self):\n        self.assertListEqual([[0, 0, 0, 0]], WordInValue([\"aaa\", \"bbb\", \"ccc\", \"ddd\"]).extract(self.candidate).tolist())\n\n    def test_word_in_value_p(self):\n        self.assertListEqual([[0, 1, 0, 1]],\n                             WordInValue([\"the\", \"small\", \"lazy\", \"dog\"]).extract(self.candidate).tolist())\n\n    def test_word_in_variable_empty_n(self):\n        self.line_data.variable = None\n        self.assertListEqual([[0, 0, 0, 0]],\n                             WordInVariable([\"aaa\", \"bbb\", \"ccc\", \"ddd\"]).extract(self.candidate).tolist())\n\n    def test_word_in_variable_n(self):\n        self.assertListEqual([[0, 0, 0, 0]],\n                             WordInVariable([\"aaa\", \"bbb\", \"ccc\", \"ddd\"]).extract(self.candidate).tolist())\n\n    def test_word_in_variable_p(self):\n        self.assertListEqual([[1, 1, 0, 0]],\n                             WordInVariable([\"brown\", \"fox\", \"lazy\", \"the\"]).extract(self.candidate).tolist())\n\n    def test_word_in_preamble_dup_n(self):\n        with self.assertRaises(Exception):\n            WordInPreamble([\"fox\", \"fox\"])\n\n    def test_word_in_preamble_empty_n(self):\n        self.line_data.line = \"\"\n        self.line_data.value_start = 0\n        test = WordInPreamble([\"dummy\", \"text\"])\n        self.assertListEqual([[0, 0]], test.extract(self.candidate).tolist())\n\n    def test_word_in_preamble_n(self):\n        test = WordInPreamble([\"dummy\", \"text\"])\n        self.assertListEqual([[0, 0]], test.extract(self.candidate).tolist())\n\n    def test_word_in_preamble_p(self):\n        test = WordInPreamble([\"dog\", \"the\"])\n        self.assertListEqual([[0, 1]], test.extract(self.candidate).tolist())\n\n    def test_word_in_transition_dup_n(self):\n        with self.assertRaises(Exception):\n            WordInTransition([\"fox\", \"fox\"])\n\n    def test_word_in_transition_empty_n(self):\n        self.line_data.line = \"\"\n        self.line_data.value_start = 0\n        test = WordInTransition([\"dummy\", \"text\"])\n        self.assertListEqual([[0, 0]], test.extract(self.candidate).tolist())\n\n    def test_word_in_transition_n(self):\n        test = WordInTransition([\"dummy\", \"text\"])\n        self.assertListEqual([[0, 0]], test.extract(self.candidate).tolist())\n\n    def test_word_in_transition_p(self):\n        test = WordInTransition([\"fox\", \"jumps\"])\n        self.assertListEqual([[0, 1]], test.extract(self.candidate).tolist())\n\n    def test_word_in_postamble_dup_n(self):\n        with self.assertRaises(Exception):\n            WordInPostamble([\"dog\", \"dog\"])\n\n    def test_word_in_postamble_empty_n(self):\n        self.line_data.line = \"\"\n        self.line_data.value_start = 0\n        test = WordInPostamble([\"dummy\", \"text\"])\n        self.assertListEqual([[0, 0]], test.extract(self.candidate).tolist())\n\n    def test_word_in_postamble_n(self):\n        test = WordInPostamble([\"dummy\", \"text\"])\n        self.assertListEqual([[0, 0]], test.extract(self.candidate).tolist())\n\n    def test_word_in_postamble_p(self):\n        test = WordInPostamble([\"dog\", \"fox\"])\n        self.assertListEqual([[1, 0]], test.extract(self.candidate).tolist())\n\n    def test_has_html_tag_empty_n(self):\n        self.line_data.line = \"\"\n        self.line_data.value_start = 0\n        test = HasHtmlTag()\n        self.assertEqual(-1.0, test.extract(self.candidate))\n\n    def test_has_html_tag_n(self):\n        test = HasHtmlTag()\n        self.assertEqual(-1.0, test.extract(self.candidate))\n\n    def test_has_html_tag_p(self):\n        test = HasHtmlTag()\n        self.line_data.line = f\"</br>{self.line_data.line}\"\n        self.assertEqual(1.0, test.extract(self.candidate))\n        self.line_data.line = f\"<p>{self.line_data.line}</p>\"\n        self.assertEqual(1.0, test.extract(self.candidate))\n\n    def test_is_secret_numeric_empty_n(self):\n        self.line_data.value = \"\"\n        test = IsSecretNumeric()\n        self.assertEqual(-1.0, test.extract(self.candidate))\n\n    def test_is_secret_numeric_n(self):\n        test = IsSecretNumeric()\n        self.assertEqual(-1.0, test.extract(self.candidate))\n\n    def test_is_secret_numeric_p(self):\n        test = IsSecretNumeric()\n        self.line_data.value = \"2e+64\"\n        self.assertEqual(1.0, test.extract(self.candidate))\n        self.line_data.value = \"2.718281828\"\n        self.assertEqual(1.0, test.extract(self.candidate))\n        self.line_data.value = \"-0.5\"\n        self.assertEqual(1.0, test.extract(self.candidate))\n        self.line_data.value = \".33\"\n        self.assertEqual(1.0, test.extract(self.candidate))\n        self.line_data.value = \"+.33e-2\"\n\n    def test_search_in_attribute_line_empty_n(self):\n        self.line_data.line = \"\"\n        self.assertEqual(-1.0, SearchInAttribute(\"^the lazy dog$\", \"line\").extract(self.candidate))\n\n    def test_search_in_attribute_variable_empty_n(self):\n        self.line_data.variable = \"\"\n        self.assertEqual(-1.0, SearchInAttribute(\".*dog\", \"variable\").extract(self.candidate))\n        self.line_data.variable = None\n        self.assertEqual(-1.0, SearchInAttribute(\".*dog\", \"variable\").extract(self.candidate))\n\n    def test_search_in_attribute_value_empty_n(self):\n        self.line_data.value = \"\"\n        self.assertEqual(-1.0, SearchInAttribute(\"fox\", \"value\").extract(self.candidate))\n\n    def test_search_in_attribute_n(self):\n        self.assertEqual(-1.0, SearchInAttribute(\"^the lazy dog$\", \"line\").extract(self.candidate))\n        self.assertEqual(-1.0, SearchInAttribute(\".*dog\", \"variable\").extract(self.candidate))\n        self.assertEqual(-1.0, SearchInAttribute(\"fox\", \"value\").extract(self.candidate))\n\n    def test_search_in_attribute_p(self):\n        self.assertEqual(1.0, SearchInAttribute(\".*the lazy dog$\", \"line\").extract(self.candidate))\n        self.assertEqual(1.0, SearchInAttribute(\".*fox\", \"variable\").extract(self.candidate))\n        self.assertEqual(1.0, SearchInAttribute(\"over\", \"separator\").extract(self.candidate))\n        self.assertEqual(1.0, SearchInAttribute(\"^the lazy$\", \"value\").extract(self.candidate))\n\n    def test_morpheme_dense_n(self):\n        self.line_data.value = \"5A1T\"\n        self.assertEqual(0, MorphemeDense().extract(self.candidate))\n        self.line_data.value = \"ZaQ1@wSxCdE3$rFvbGt56yhNmJu7*ik\"\n        self.assertEqual(0, MorphemeDense().extract(self.candidate))\n\n    def test_morpheme_dense_p(self):\n        self.assertEqual(0.875, MorphemeDense().extract(self.candidate))\n        self.line_data.value = \"KeyApiPasswordToken\"\n        self.assertEqual(1.0, MorphemeDense().extract(self.candidate))\n        self.line_data.value = \"salt:saltSALTsalt\"\n        self.assertEqual(0.9411764705882353, MorphemeDense().extract(self.candidate))\n        self.line_data.value = \"deadbeefdeadbeefdeadbeefdeadbeefdeadbeef\"\n        self.assertEqual(1.0, MorphemeDense().extract(self.candidate))\n\n    def test_rule_name_n(self):\n        self.assertListEqual([[0, 0]], RuleName([\"dummy\", \"test\"])([self.candidate]).tolist())\n\n    def test_rule_name_p(self):\n        self.assertListEqual([[0, 1]], RuleName([\"mock\", \"rule\"])([self.candidate]).tolist())\n\n    COMMENT_STYLES = [\n        \"camelStyle naming detection\",\n        \"PascalStyle naming detection\",\n        \"UPPERCASE naming detection\",\n        \"lowercase naming detection\",\n    ]\n    STYLES_MAP = {\n        \"\": None,  #\n        \"iii111oooXoooXoo\": None,  #\n        \"n0tCamlStyle23\": None,  #\n        \"notCam3lStyle23\": None,  #\n        \"NotPa5calStyle\": None,  #\n        \"__n0t_example_some_name_in_code_4__example\": None,  #\n        \"_N0T_EXAMPLE_WR0NG_\": None,  #\n        \"__MAIN__\": None,  #\n        \"___SLAVE\": None,  #\n        \"NOTEXAMPLE\": None,  #\n        \"4_EXAMPLE_NOT_VAR\": None,  #\n        \"PascalStyle\": \"PascalStyle naming detection\",  #\n        \"Pascal33Style\": \"PascalStyle naming detection\",  #\n        \"PascalX86Style\": \"PascalStyle naming detection\",  #\n        \"camelStyle\": \"camelStyle naming detection\",  #\n        \"testCamelStyle1\": \"camelStyle naming detection\",  #\n        \"test23Camel43Style65\": \"camelStyle naming detection\",  #\n        \"camelX86Style\": \"camelStyle naming detection\",  #\n        \"_MY_X86_DEMO_VAR\": \"UPPERCASE naming detection\",  #\n        \"_42_YOU_VAR\": \"UPPERCASE naming detection\",  #\n        \"_4_YOU_\": \"UPPERCASE naming detection\",  #\n        \"_H204__U_\": \"UPPERCASE naming detection\",  #\n        \"_AARCH64_X86_FLUCTUATOR\": \"UPPERCASE naming detection\",  #\n        \"EXAMPLE_IS_VAR\": \"UPPERCASE naming detection\",  #\n        \"EXAMPLE__VAR\": \"UPPERCASE naming detection\",  #\n        \"some_name_in_code\": \"lowercase naming detection\",  #\n        \"___some_name_in_code_4__example\": \"lowercase naming detection\",  #\n    }\n\n    def test_style_n(self):\n        candidate = self.candidate\n        for comment in self.COMMENT_STYLES:\n            feature = self.init_feature_search_comment(comment)\n            for val, typ in self.STYLES_MAP.items():\n                if typ is None or typ != comment:\n                    candidate.line_data_list[0].value = val\n                    self.assertEqual(-1.0, feature.extract(candidate), (comment, typ, val))\n\n    def test_style_p(self):\n        candidate = self.candidate\n        for comment in self.COMMENT_STYLES:\n            feature = self.init_feature_search_comment(comment)\n            for val, typ in self.STYLES_MAP.items():\n                if typ == comment:\n                    candidate.line_data_list[0].value = val\n                    self.assertEqual(1.0, feature.extract(candidate), (comment, typ, val))\n\n    def test_rule_severity_n(self):\n        self.candidate.severity = Severity.INFO\n        self.assertEqual(0.0, RuleSeverity().extract(self.candidate))\n        self.candidate.severity = None\n        with self.assertRaises(ValueError):\n            RuleSeverity().extract(self.candidate)\n\n    def test_rule_severity_p(self):\n        self.line_data.value = \"\"\n        self.assertEqual(0.5, RuleSeverity().extract(self.candidate))\n        self.candidate.severity = Severity.CRITICAL\n        self.assertEqual(1.0, RuleSeverity().extract(self.candidate))\n"
  },
  {
    "path": "tests/ml_model/test_ml_validator.py",
    "content": "import copy\nimport re\nimport unittest\nfrom typing import Tuple\n\nimport numpy as np\n\nfrom credsweeper.app import APP_PATH\nfrom credsweeper.common.constants import Severity, MAX_LINE_LENGTH, MIN_DATA_LEN, ThresholdPreset\nfrom credsweeper.config.config import Config\nfrom credsweeper.credentials.candidate import Candidate\nfrom credsweeper.credentials.candidate_key import CandidateKey\nfrom credsweeper.credentials.line_data import LineData\nfrom credsweeper.ml_model.ml_validator import MlValidator\nfrom credsweeper.utils.util import Util\nfrom tests import AZ_STRING, ML_DELTA\n\n\nclass TestMlValidator(unittest.TestCase):\n\n    def setUp(self):\n        self.maxDiff = None\n        self.ml_validator = MlValidator(threshold=ThresholdPreset.medium)\n        assert self.ml_validator is not None\n        file_name = APP_PATH / \"secret\" / \"config.json\"\n        config_dict = Util.json_load(file_name)\n        config_dict[\"use_filters\"] = True\n        config_dict[\"find_by_ext\"] = False\n        config_dict[\"pedantic\"] = False\n        config_dict[\"depth\"] = 0\n        config_dict[\"doc\"] = False\n        config_dict[\"find_by_ext_list\"] = []\n        config_dict[\"size_limit\"] = None\n        self.config = Config(config_dict)\n\n    def validate(self, _candidate: Candidate) -> Tuple[bool, float]:\n        \"\"\"Validate single credential candidate.\"\"\"\n        candidate_key = CandidateKey(_candidate.line_data_list[0])\n        sample_as_batch = [(candidate_key, [_candidate])]\n        is_cred_batch, probability_batch = self.ml_validator.validate_groups(sample_as_batch, 1)\n        return is_cred_batch[0], probability_batch[0]\n\n    def test_ml_validator_simple_n(self):\n        candidate = Candidate.get_dummy_candidate(self.config, \"main.py\", \".py\", \"info\", \"Password\")\n        candidate.line_data_list[0].line = 'password=\"Ahga%$FiQ@Ei8\"'\n        candidate.line_data_list[0].variable = \"password\"\n        candidate.line_data_list[0].value_start = 16\n        candidate.line_data_list[0].value_end = 25\n        candidate.line_data_list[0].value = \"Ahga%$FiQ@Ei8\"\n\n        decision, probability = self.validate(candidate)\n        self.assertAlmostEqual(0.9873854517936707, probability, delta=ML_DELTA)\n\n        candidate.line_data_list[0].path = \"main.yaml\"\n        candidate.line_data_list[0].file_type = \".yaml\"\n        decision, probability = self.validate(candidate)\n        self.assertAlmostEqual(0.9031195044517517, probability, delta=ML_DELTA)\n\n        candidate.line_data_list[0].path = \"main.zip\"\n        candidate.line_data_list[0].file_type = \".zip\"\n        decision, probability = self.validate(candidate)\n        self.assertAlmostEqual(0.8412226438522339, probability, delta=ML_DELTA)\n\n        candidate.line_data_list[0].path = \"main.txt\"\n        candidate.line_data_list[0].file_type = \".txt\"\n        decision, probability = self.validate(candidate)\n        self.assertAlmostEqual(0.8234410285949707, probability, delta=ML_DELTA)\n\n    def test_ml_validator_auxiliary_p(self):\n        candidate = Candidate.get_dummy_candidate(self.config, \"mycred\", \"\", \"\", \"Secret\")\n        candidate.line_data_list[0].line = \"secret=238475614782\"\n        candidate.line_data_list[0].variable = \"secret\"\n        candidate.line_data_list[0].value_start = 7\n        candidate.line_data_list[0].value_end = 43\n        candidate.line_data_list[0].value = \"238475614782\"\n        # auxiliary candidate for a pattern rule - without variable\n        aux_candidate = copy.deepcopy(candidate)\n        aux_candidate.line_data_list[0].variable = None\n\n        # todo: the scores are low for current ML model - will be changed after train\n\n        candidate_key = CandidateKey(candidate.line_data_list[0])\n        sample_as_batch = [(candidate_key, [candidate])]\n        is_cred_batch, probability_batch = self.ml_validator.validate_groups(sample_as_batch, 2)\n        self.assertAlmostEqual(0.591613233089447, probability_batch[0], delta=ML_DELTA)\n\n        # auxiliary rule which was not trained - keeps the same ML probability\n        aux_candidate.rule_name = \"PASSWD_PAIR\"\n        sample_as_batch = [(candidate_key, [candidate, aux_candidate])]\n        is_cred_batch, probability_batch = self.ml_validator.validate_groups(sample_as_batch, 2)\n        self.assertAlmostEqual(0.591613233089447, probability_batch[0], delta=ML_DELTA)\n\n        # auxiliary rule in train increases ML probability\n        aux_candidate.rule_name = \"Token\"\n        is_cred_batch, probability_batch = self.ml_validator.validate_groups(sample_as_batch, 2)\n        self.assertAlmostEqual(0.6740559339523315, probability_batch[0], delta=ML_DELTA)\n\n        # which real line may be\n        candidate.line_data_list[0].line = \"secret=func(token=238475614782)\"\n        aux_candidate.line_data_list[0].line = \"secret=func(token=238475614782)\"\n        aux_candidate.line_data_list[0].variable = \"token\"\n        is_cred_batch, probability_batch = self.ml_validator.validate_groups(sample_as_batch, 2)\n        self.assertAlmostEqual(0.5733864307403564, probability_batch[0], delta=ML_DELTA)\n\n    def test_ml_validator_auxiliary_n(self):\n        candidate = Candidate.get_dummy_candidate(self.config, \"secret\", \"\", \"\", \"Secret\")\n        candidate.line_data_list[0].line = \"secret=bace4d19-dead-beef-cafe-9129474bcd81\"\n        candidate.line_data_list[0].variable = \"secret\"\n        candidate.line_data_list[0].value_start = 7\n        candidate.line_data_list[0].value_end = 43\n        candidate.line_data_list[0].value = \"bace4d19-dead-beef-cafe-9129474bcd81\"\n        # auxiliary candidate for a pattern rule - without variable\n        aux_candidate = copy.deepcopy(candidate)\n        aux_candidate.line_data_list[0].variable = None\n\n        # todo: the scores are low for current ML model - will be changed after train\n\n        candidate_key = CandidateKey(candidate.line_data_list[0])\n        sample_as_batch = [(candidate_key, [candidate])]\n        is_cred_batch, probability_batch = self.ml_validator.validate_groups(sample_as_batch, 2)\n        self.assertAlmostEqual(0.9984369277954102, probability_batch[0], delta=ML_DELTA)\n\n        # auxiliary rule in train does not increase ML probability yet - will be used after next train\n\n        aux_candidate.rule_name = \"UUID\"\n        sample_as_batch = [(candidate_key, [candidate, aux_candidate])]\n        is_cred_batch, probability_batch = self.ml_validator.validate_groups(sample_as_batch, 2)\n        self.assertAlmostEqual(0.9984369277954102, probability_batch[0], delta=ML_DELTA)\n\n    def test_extract_features_n(self):\n        candidate1 = Candidate.get_dummy_candidate(self.config, \"___.x3\", \".x3\", \"\", \"\")\n        candidate1.line_data_list[0].line = ''\n        candidate1.line_data_list[0].variable = ''\n        candidate1.line_data_list[0].value_start = 0\n        candidate1.line_data_list[0].value_end = 0\n        candidate1.line_data_list[0].value = ''\n        features1 = self.ml_validator.extract_features([candidate1])\n        self.assertEqual(20, np.count_nonzero(features1))\n\n    def test_extract_features_p(self):\n        candidate1 = Candidate.get_dummy_candidate(self.config, \"???.py\", \".py\", \"\", \"???????\")\n        candidate1.line_data_list[0].line = '??????????????????????????'\n        candidate1.line_data_list[0].variable = \"???????\"\n        candidate1.line_data_list[0].value_start = 2\n        candidate1.line_data_list[0].value_end = 6\n        candidate1.line_data_list[0].value = \"???????????????????\"\n        features1_0 = self.ml_validator.extract_features([candidate1])\n        self.assertEqual(28, np.count_nonzero(features1_0))\n        candidate1.rule_name = \"Password\"\n        features1_1 = self.ml_validator.extract_features([candidate1])\n        self.assertEqual(29, np.count_nonzero(features1_1))\n        candidate1.line_data_list[0].value = \"example/\"\n        features1_2 = self.ml_validator.extract_features([candidate1])\n        self.assertEqual(36, np.count_nonzero(features1_2))\n        candidate1.line_data_list[0].value = \"undefined/\"\n        features1_3 = self.ml_validator.extract_features([candidate1])\n        self.assertEqual(35, np.count_nonzero(features1_3))\n        candidate1.line_data_list[0].value = \"undefined/example\"\n        features1_4 = self.ml_validator.extract_features([candidate1])\n        self.assertEqual(36, np.count_nonzero(features1_4))\n\n        candidate2 = copy.deepcopy(candidate1)\n        candidate2.rule_name = \"UNKNOWN RULE\"\n        features2 = self.ml_validator.extract_features([candidate1, candidate2])\n        self.assertEqual(36, np.count_nonzero(features2))\n        candidate2.rule_name = \"Secret\"\n        features3 = self.ml_validator.extract_features([candidate1, candidate2])\n        self.assertEqual(37, np.count_nonzero(features3))\n\n    def testVariableNotAllowedPatternCheck_n(self):\n        candidate1 = Candidate.get_dummy_candidate(self.config, \"???.py\", \".py\", \"\", \"##########\")\n        candidate1.line_data_list[0].line = '?????????????:!!!!!!!!!!!!!'\n        candidate1.line_data_list[0].variable = \"?????????????\"\n        candidate1.line_data_list[0].value_start = 14\n        candidate1.line_data_list[0].value_end = 27\n        candidate1.line_data_list[0].value = \"!!!!!!!!!!!!!\"\n        features1_1 = self.ml_validator.extract_features([candidate1])\n\n        self.assertEqual(27, np.count_nonzero(features1_1))\n        candidate1.line_data_list[0].variable = \"pub_key\"\n        features1_2 = self.ml_validator.extract_features([candidate1])\n        self.assertEqual(27, np.count_nonzero(features1_2))\n\n    def test_extract_features_normalized_n(self):\n        line_data = LineData(config=self.config,\n                             line=AZ_STRING,\n                             line_pos=0,\n                             line_num=1,\n                             path=\"path.ext\",\n                             file_type=\"type\",\n                             info=\"info\",\n                             pattern=re.compile(r\"(?P<variable>.*) (?P<separator>over) (?P<value>.+)\"))\n        candidate = Candidate([line_data], [], \"rule\", Severity.MEDIUM)\n        features = self.ml_validator.extract_features([candidate])\n        self.assertLess(0, np.count_nonzero(features))\n        for i in features.tolist()[0]:\n            self.assertLessEqual(-1.0, i)\n            self.assertGreaterEqual(1.0, i)\n\n    def test_encode_n(self):\n        self.assertEqual(0, np.count_nonzero(self.ml_validator.encode(None, 0)))\n        self.assertEqual(0, np.count_nonzero(self.ml_validator.encode(\"\", 10)))\n        self.assertEqual(0, np.count_nonzero(self.ml_validator.encode(\"AAA\", 0)))\n\n    def test_encode_p(self):\n        self.assertEqual(MIN_DATA_LEN, np.count_nonzero(self.ml_validator.encode(AZ_STRING, MIN_DATA_LEN)))\n        self.assertEqual(len(AZ_STRING), np.count_nonzero(self.ml_validator.encode(AZ_STRING, MAX_LINE_LENGTH)))\n        self.assertEqual(7, np.count_nonzero(self.ml_validator.encode(\"\\xFE\\xFF \\n\\t`\\0\", MIN_DATA_LEN)))\n        self.assertEqual(\n            [[\n                0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,\n                0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,\n                0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,\n                0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,\n                0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0\n            ],\n             [\n                 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,\n                 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,\n                 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,\n                 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,\n                 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0\n             ],\n             [\n                 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,\n                 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,\n                 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,\n                 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,\n                 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0\n             ],\n             [\n                 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,\n                 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,\n                 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,\n                 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,\n                 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0\n             ],\n             [\n                 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,\n                 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,\n                 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,\n                 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,\n                 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0\n             ],\n             [\n                 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,\n                 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,\n                 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,\n                 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,\n                 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0\n             ],\n             [\n                 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,\n                 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,\n                 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,\n                 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,\n                 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0\n             ],\n             [\n                 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,\n                 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,\n                 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,\n                 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,\n                 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0\n             ]],\n            self.ml_validator.encode(\"\\xFE\\xFF \\n\\t`\\0\", MIN_DATA_LEN).tolist())\n"
  },
  {
    "path": "tests/rules/__init__.py",
    "content": ""
  },
  {
    "path": "tests/rules/common.py",
    "content": "from typing import List\n\nimport pytest\n\nfrom credsweeper.file_handler.string_content_provider import StringContentProvider\n\n\nclass BaseTestRule:\n\n    def test_scan_p(self, file_path: pytest.fixture, lines: pytest.fixture,\n                    scanner_without_filters: pytest.fixture) -> None:\n        provider = StringContentProvider(lines, file_path=file_path)\n        scan_result = scanner_without_filters.scan(provider)\n        assert len(scan_result) == 1, (lines, scan_result)\n\n    @pytest.mark.parametrize(\"lines\",\n                             [[\"\"], [\"String secret = new String('p****');\"], [\"SZa6TWGF2XuWdl7c2s2xB1iSlnZJLbvH\"]])\n    def test_scan_n(self, file_path: pytest.fixture, lines: List[str], scanner: pytest.fixture) -> None:\n        provider = StringContentProvider(lines, file_path=file_path)\n        scan_result = scanner.scan(provider)\n        assert len(scan_result) == 0, scan_result[0]\n\n\nclass BaseTestNoQuotesRule:\n    \"\"\"\n    If secret declared in a code file (\".cpp\", \".py\", etc) in should be escaped with quotes. Otherwise it cannot be a\n     string secret, as no string literal declared.\n    Exceptions: comments. In comment secret can be unquoted\n\n    This test checks if unquoted password is not comment and declared in code file.\n    \"\"\"\n\n    def test_scan_quote_p(self, file_path: pytest.fixture, lines: pytest.fixture, scanner: pytest.fixture) -> None:\n        provider = StringContentProvider(lines, file_path=file_path)\n        scan_result = scanner.scan(provider)\n        assert len(scan_result) == 1, (lines, scan_result)\n\n    def test_scan_quote_n(self, python_file_path: pytest.fixture, lines: pytest.fixture,\n                          scanner: pytest.fixture) -> None:\n        provider = StringContentProvider(lines, file_path=python_file_path)\n        scan_result = scanner.scan(provider)\n        assert len(scan_result) == 0, scan_result\n\n\nclass BaseTestCommentRule:\n    \"\"\"\n    If secret declared in a code file (\".cpp\", \".py\", etc) in should be escaped with quotes. Otherwise it cannot be a\n     string secret, as no string literal declared.\n    Exceptions: comments. In comment secret can be unquoted\n\n    This test checks if unquoted password is comment in code file\n    \"\"\"\n\n    def test_scan_comment_p(self, python_file_path: pytest.fixture, lines: pytest.fixture,\n                            scanner: pytest.fixture) -> None:\n        provider = StringContentProvider(lines, file_path=python_file_path)\n        scan_result = scanner.scan(provider)\n        assert len(scan_result) == 1, (lines, scan_result)\n\n    def test_scan_comment_n(self, python_file_path: pytest.fixture, lines: pytest.fixture,\n                            scanner: pytest.fixture) -> None:\n        lines = [line[1:] for line in lines]\n        provider = StringContentProvider(lines, file_path=python_file_path)\n        scan_result = scanner.scan(provider)\n        assert len(scan_result) == 0, scan_result\n\n\nclass BaseTestMultiRule:\n\n    def test_scan_line_data_p(self, file_path: pytest.fixture, lines: pytest.fixture, scanner: pytest.fixture) -> None:\n        provider = StringContentProvider(lines)\n        scan_result = scanner.scan(provider)\n        assert len(scan_result) != 0\n        assert len(scan_result[0].line_data_list) == 2\n\n    def test_scan_line_data_n(self, file_path: pytest.fixture, scanner: pytest.fixture) -> None:\n        lines = [\"\"]\n        provider = StringContentProvider(lines)\n        scan_result = scanner.scan(provider)\n        assert len(scan_result) == 0\n"
  },
  {
    "path": "tests/rules/test_api.py",
    "content": "from typing import List\n\nimport pytest\n\nfrom .common import BaseTestRule\n\n\nclass TestApi(BaseTestRule):\n\n    @pytest.fixture(params=[[\"gi_reo_gi_api = \\\"@@cacklecackle_gi_reo_gi@@\\\"\"]])\n    def lines(self, request) -> List[str]:\n        return request.param\n\n    @pytest.fixture\n    def rule_name(self) -> str:\n        return \"API\"\n"
  },
  {
    "path": "tests/rules/test_auth.py",
    "content": "from typing import List\n\nimport pytest\n\nfrom .common import BaseTestRule\n\n\nclass TestAuth(BaseTestRule):\n\n    @pytest.fixture(params=[[\"oauth_nonce: '1gZG4eh6qR6Ul2pqbKc5PwKjNlKadCwW7VW4uSyi9',\"], [\"authold = 'gigigi'\"]])\n    def lines(self, request) -> List[str]:\n        return request.param\n\n    @pytest.fixture(params=[\"\", \"author='bob'\"])\n    def empty_line(self, request) -> List[str]:\n        return request.param\n\n    @pytest.fixture\n    def rule_name(self) -> str:\n        return \"Auth\"\n"
  },
  {
    "path": "tests/rules/test_aws_key.py",
    "content": "from typing import List\n\nimport pytest\n\nfrom .common import BaseTestRule\n\n\nclass TestAwsKey(BaseTestRule):\n\n    @pytest.fixture(params=[[\"\\\"AwsAccessKey\\\": \\\"AKIAGIREOGIAWSKEY123\\\",\"]])\n    def lines(self, request) -> List[str]:\n        return request.param\n\n    @pytest.fixture\n    def rule_name(self) -> str:\n        return \"AWS Client ID\"\n"
  },
  {
    "path": "tests/rules/test_aws_multi.py",
    "content": "from typing import List\n\nimport pytest\n\nfrom .common import BaseTestMultiRule, BaseTestRule\n\n\nclass TestAwsMulti(BaseTestRule, BaseTestMultiRule):\n\n    @pytest.fixture(params=[[\n        \"\\\"AwsAccessKey\\\": \\\"AKIAGIREOGIAWSKEY123\\\",\", \"\\\"AwsSecretKey\\\": \\\"exA3p1E42db9bbba8f7ea0f9e47b287de5fc7E57\\\"\"\n    ]])\n    def lines(self, request) -> List[str]:\n        return request.param\n\n    @pytest.fixture\n    def rule_name(self) -> str:\n        return \"AWS Multi\"\n"
  },
  {
    "path": "tests/rules/test_aws_mws_key.py",
    "content": "from typing import List\n\nimport pytest\n\nfrom .common import BaseTestRule\n\n\nclass TestAwsMwsKey(BaseTestRule):\n\n    @pytest.fixture(params=[[\"AWS_MWS_KEY = \\\"amzn.mws.abcaef12-1231-5671-1231-abadea123156\\\"\\n\"]])\n    def lines(self, request) -> List[str]:\n        return request.param\n\n    @pytest.fixture\n    def rule_name(self) -> str:\n        return \"AWS MWS Key\"\n"
  },
  {
    "path": "tests/rules/test_credential.py",
    "content": "from typing import List\n\nimport pytest\n\nfrom .common import BaseTestRule\n\n\nclass TestCredential(BaseTestRule):\n\n    @pytest.fixture(params=[[\"gi_reo_gi_credential = \\\"cracklecrackle\\\"\"]])\n    def lines(self, request) -> List[str]:\n        return request.param\n\n    @pytest.fixture\n    def rule_name(self) -> str:\n        return \"Credential\"\n"
  },
  {
    "path": "tests/rules/test_dynatrace_api_token.py",
    "content": "from typing import List\n\nimport pytest\n\nfrom .common import BaseTestRule\n\n\nclass TestStripeApiKey(BaseTestRule):\n    # Example from official site\n    # https://www.dynatrace.com/support/help/dynatrace-api/basics/dynatrace-api-authentication/\n    @pytest.fixture(\n        params=[[\"dt0c01.ST2EY72KQINMH574WMNVI7YN.G3DFPBEJYMODIDAEX454M7YWBUVEFOWKPRVMWFASS64NFH52PX6BNDVFFM572RZM\"]])\n    def lines(self, request) -> List[str]:\n        return request.param\n\n    @pytest.fixture\n    def rule_name(self) -> str:\n        return \"Dynatrace API Token\"\n"
  },
  {
    "path": "tests/rules/test_facebook_key.py",
    "content": "from typing import List\n\nimport pytest\n\nfrom .common import BaseTestRule\n\n\nclass TestFacebookKey(BaseTestRule):\n\n    @pytest.fixture(params=[[\n        'FACEBOOK_T0KEN = '\n        '\"EAACEb00Kse0BAlGy7KeQ5YnaCEd09Eose0cBAlGy7KeQ5Yna9CoDsup39tiYdoQ4jH9Coup39tiYdWoQ4jHFZD\"'\n    ]])\n    def lines(self, request) -> List[str]:\n        return request.param\n\n    @pytest.fixture\n    def rule_name(self) -> str:\n        return \"Facebook Access Token\"\n"
  },
  {
    "path": "tests/rules/test_firebase_domain.py",
    "content": "from typing import List\n\nimport pytest\n\nfrom .common import BaseTestRule\n\n\nclass TestFirebasDomain(BaseTestRule):\n\n    @pytest.fixture(params=[  #\n        [\"api-project-615509201590.firebaseio.com\"],  #\n        [\"api-project-615509201590.firebaseapp.com\"]  #\n    ])\n    def lines(self, request) -> List[str]:\n        return request.param\n\n    @pytest.fixture\n    def rule_name(self) -> str:\n        return \"Firebase Domain\"\n"
  },
  {
    "path": "tests/rules/test_github_classic_token.py",
    "content": "from typing import List\n\nimport pytest\n\nfrom .common import BaseTestRule\n\n\nclass TestClassicToken(BaseTestRule):\n\n    @pytest.fixture(params=[  #\n        [\"ghu_00000000000000000000000000000004WZ4EQ\"]  #\n    ])\n    def lines(self, request) -> List[str]:\n        return request.param\n\n    @pytest.fixture\n    def rule_name(self) -> str:\n        return \"Github Classic Token\"\n"
  },
  {
    "path": "tests/rules/test_github_fine_granted_token.py",
    "content": "from typing import List\n\nimport pytest\n\nfrom .common import BaseTestRule\n\n\nclass TestGithubFineGrantedToken(BaseTestRule):\n\n    @pytest.fixture(params=[\n        [\"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Q\"],  #\n    ])\n    def lines(self, request) -> List[str]:\n        return request.param\n\n    @pytest.fixture\n    def rule_name(self) -> str:\n        return \"Github Fine-granted Token\"\n"
  },
  {
    "path": "tests/rules/test_google_api_key.py",
    "content": "from typing import List\n\nimport pytest\n\nfrom .common import BaseTestRule\n\n\nclass TestGoogleApiKey(BaseTestRule):\n\n    @pytest.fixture(params=[[\"AIzaGiReoGiCrackleCrackle12315618112315\"]])\n    def lines(self, request) -> List[str]:\n        return request.param\n\n    @pytest.fixture\n    def rule_name(self) -> str:\n        return \"Google API Key\"\n"
  },
  {
    "path": "tests/rules/test_google_multi.py",
    "content": "from typing import List\n\nimport pytest\n\nfrom .common import BaseTestMultiRule, BaseTestRule\n\n\nclass TestGoogleMulti(BaseTestRule, BaseTestMultiRule):\n\n    @pytest.fixture(\n        params=[[\"012-gireogigireogigireogigireogi1230.apps.googleusercontent.com\\n\", \"4L2QMyTm6Rr0o46ytGiReoG1\"]])\n    def lines(self, request) -> List[str]:\n        return request.param\n\n    @pytest.fixture\n    def rule_name(self) -> str:\n        return \"Google Multi\"\n"
  },
  {
    "path": "tests/rules/test_google_oauth_key.py",
    "content": "from typing import List\n\nimport pytest\n\nfrom .common import BaseTestRule\n\n\nclass TestGoogleOAuthKey(BaseTestRule):\n\n    @pytest.fixture(params=[[\"google_oauth = \\\"ya29.gi_reo_gi_crackle_ln22\\\"\"]])\n    def lines(self, request) -> List[str]:\n        return request.param\n\n    @pytest.fixture\n    def rule_name(self) -> str:\n        return \"Google OAuth Access Token\"\n"
  },
  {
    "path": "tests/rules/test_instagram_access_token.py",
    "content": "import random\nimport string\nfrom typing import List\n\nimport pytest\n\nfrom .common import BaseTestRule\n\n\nclass TestInstagramAccessToken(BaseTestRule):\n\n    @pytest.fixture(\n        params=[[\"IGQVJ\" + ''.join(random.choice(string.ascii_letters + string.digits) for i in range(157))]])\n    def lines(self, request) -> List[str]:\n        return request.param\n\n    @pytest.fixture\n    def rule_name(self) -> str:\n        return \"Instagram Access Token\"\n"
  },
  {
    "path": "tests/rules/test_jwt.py",
    "content": "from typing import List\n\nimport pytest\n\nfrom .common import BaseTestRule\n\n\nclass TestJwt(BaseTestRule):\n\n    @pytest.fixture(params=[[\n        \"jwt: 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxN\"\n        \"TE2MjM5MDIyLCJ0ZXN0IjoiSSBuZWVkIHJlYWxseSByZWFsbHkgbG9uZyBsb25nIGxvbmcgbG9uZyBsb25nIGxvbmcgbG9uZyBsb25nI\"\n        \"GxvbmcgbG9uZyBsb25nIGxvbmcgbG9uZyBsb25nIGxvbmcgbG9uZyBsb25nIGxvbmcgbG9uZyBsb25nIGxvbmcgbG9uZyBsb25nIGxvb\"\n        \"mcgbG9uZyBsb25nIGxvbmcgbG9uZyBsb25nIGxvbmcgbG9uZyBsb25nIGxvbmcgbG9uZyBsb25nIGxvbmcgbG9uZyBsb25nIGxvbmcgb\"\n        \"G9uZyBsb25nIGxvbmcgbG9uZyBsb25nIGxvbmcgbG9uZyBsb25nIGxvbmcgbG9uZyBsb25nIGxvbmcgbG9uZyBsb25nIGxvbmcgbG9uZ\"\n        \"yBsb25nIGxvbmcgbG9uZyBsb25nIGxvbmcgbG9uZyBqd3QgdG9rZW4ifQ.4pWgA4mthx4FPPh1AZQY0luTKTQ7VOj6PGwwiANvtqg'\"\n    ]])\n    def lines(self, request) -> List[str]:\n        return request.param\n\n    @pytest.fixture\n    def rule_name(self) -> str:\n        return \"JSON Web Token\"\n"
  },
  {
    "path": "tests/rules/test_key.py",
    "content": "from typing import List\n\nimport pytest\n\nfrom .common import BaseTestRule\n\n\nclass TestKey(BaseTestRule):\n\n    @pytest.fixture(params=[[\"hmac_key = 'zdosafhzwhpelghs';\"], [\"keydocker = 'gigigi'\"]])\n    def lines(self, request) -> List[str]:\n        return request.param\n\n    @pytest.fixture(params=[\"\", \"keyword='hamming'\"])\n    def empty_line(self, request) -> List[str]:\n        return request.param\n\n    @pytest.fixture\n    def rule_name(self) -> str:\n        return \"Key\"\n"
  },
  {
    "path": "tests/rules/test_mailchimp_key.py",
    "content": "from typing import List\n\nimport pytest\n\nfrom .common import BaseTestRule\n\n\nclass TestMailChimpKey(BaseTestRule):\n\n    @pytest.fixture(params=[[\"mailchimp_key = \\\"abcaefaacdaf01214561891121451781-us12\\\"\"]])\n    def lines(self, request) -> List[str]:\n        return request.param\n\n    @pytest.fixture\n    def rule_name(self) -> str:\n        return \"MailChimp API Key\"\n"
  },
  {
    "path": "tests/rules/test_nonce.py",
    "content": "from typing import List\n\nimport pytest\n\nfrom .common import BaseTestRule\n\n\nclass TestNone(BaseTestRule):\n\n    @pytest.fixture(params=[[\"nonce = '0vXb8c1vXzgU5m2591'\"], [\"nonce = 'a1L28lmUiLnOUVJRVl'\"]])\n    def lines(self, request) -> List[str]:\n        return request.param\n\n    @pytest.fixture(params=[\"\", \"keyword='hamming'\"])\n    def empty_line(self, request) -> List[str]:\n        return request.param\n\n    @pytest.fixture\n    def rule_name(self) -> str:\n        return \"Nonce\"\n"
  },
  {
    "path": "tests/rules/test_password.py",
    "content": "from typing import List\n\nimport pytest\n\nfrom .common import BaseTestCommentRule, BaseTestNoQuotesRule, BaseTestRule\n\n\nclass TestPassword(BaseTestRule):\n\n    @pytest.fixture(params=[[\"password = \\\"cackle!\\\"\"], [\"gi_reo_gi_passwd = \\\"cackle!\\\"\"], [\"pwd = \\\"cackle!\\\"\"],\n                            [\"data[\\\"pwd\\\"] = \\\"cackle!\\\"\"]])\n    def lines(self, request) -> List[str]:\n        return request.param\n\n    @pytest.fixture\n    def rule_name(self) -> str:\n        return \"Password\"\n\n\nclass TestPasswordNoQuotes(BaseTestNoQuotesRule):\n\n    @pytest.fixture(params=[[\"password = cackle!\"], [\"gi_reo_gi_passwd = cackle!\"], [\"pwd = cackle!\"]])\n    def lines(self, request) -> List[str]:\n        return request.param\n\n    @pytest.fixture\n    def rule_name(self) -> str:\n        return \"Password\"\n\n\nclass TestPasswordComment(BaseTestCommentRule):\n\n    @pytest.fixture(params=[[\"# password = cackle!\"], [\"# gi_reo_gi_passwd = cackle!\"], [\"# pwd = cackle!\"]])\n    def lines(self, request) -> List[str]:\n        return request.param\n\n    @pytest.fixture\n    def rule_name(self) -> str:\n        return \"Password\"\n"
  },
  {
    "path": "tests/rules/test_paypal_key.py",
    "content": "from typing import List\n\nimport pytest\n\nfrom .common import BaseTestRule\n\n\nclass TestPayPalKey(BaseTestRule):\n\n    @pytest.fixture(params=[[\"access_token$production$gireogi121451781$abcaeaabadef01134517891121451781\"]])\n    def lines(self, request) -> List[str]:\n        return request.param\n\n    @pytest.fixture\n    def rule_name(self) -> str:\n        return \"PayPal Braintree Access Token\"\n"
  },
  {
    "path": "tests/rules/test_pem_key.py",
    "content": "from typing import List\n\nimport pytest\n\nfrom credsweeper.file_handler.string_content_provider import StringContentProvider\nfrom .common import BaseTestRule\n\n\nclass TestPemKey(BaseTestRule):\n\n    @pytest.fixture(params=[\n        [\n            \"-----BEGIN RSA PRIVATE KEY-----\",  #\n            \"MIICXAIBAAKBgQCqGKukO1De7zhZj6+H0qtjTkVxwTCpvKe4eCZ0FPqri0cb2JZfXJ/DgYSF6vUp\",  #\n            \"wmJG8wVQZKjeGcjDOL5UlsuusFncCzWBQ7RKNUSesmQRMSGkVb1/3j+skZ6UtW+5u09lHNsj6tQ5\",  #\n            \"1s1SPrCBkedbNf0Tp0GbMJDyR4e9T04ZZwIDAQABAoGAFijko56+qGyN8M0RVyaRAXz++xTqHBLh\",  #\n            \"3tx4VgMtrQ+WEgCjhoTwo23KMBAuJGSYnRmoBZM3lMfTKevIkAidPExvYCdm5dYq3XToLkkLv5L2\",  #\n            \"pIIVOFMDG+KESnAFV7l2c+cnzRMW0+b6f8mR1CJzZuxVLL6Q02fvLi55/mbSYxECQQDeAw6fiIQX\",  #\n            \"GukBI4eMZZt4nscy2o12KyYner3VpoeE+Np2q+Z3pvAMd/aNzQ/W9WaI+NRfcxUJrmfPwIGm63il\",  #\n            \"AkEAxCL5HQb2bQr4ByorcMWm/hEP2MZzROV73yF41hPsRC9m66KrheO9HPTJuo3/9s5p+sqGxOlF\",  #\n            \"L0NDt4SkosjgGwJAFklyR1uZ/wPJjj611cdBcztlPdqoxssQGnh85BzCj/u3WqBpE2vjvyyvyI5k\",  #\n            \"X6zk7S0ljKtt2jny2+00VsBerQJBAJGC1Mg5Oydo5NwD6BiROrPxGo2bpTbu/fhrT8ebHkTz2epl\",  #\n            \"U9VQQSQzY1oZMVX8i1m5WUTLPz2yLJIBQVdXqhMCQBGoiuSoSjafUhV7i1cEGpb88h5NBYZzWXGZ\",  #\n            \"37sJ5QsW+sJyoNde3xH8vdXhzU7eT82D6X/scw9RZz+/6rCJ4p0=\",  #\n            \"-----END RSA PRIVATE KEY-----\"  #\n        ],\n        [\n            \"-----BEGIN RSA PRIVATE KEY-----\",  #\n            \"Proc-Type: 4,ENCRYPTED\",  #\n            \"DEK-Info: AES-256-CBC,2AA219GG746F88F6DDA0D852A0FD3211\",  #\n            \"MIICXAIBAAKBgQCqGKukO1De7zhZj6+H0qtjTkVxwTCpvKe4eCZ0FPqri0cb2JZfXJ/DgYSF6vUp\",  #\n            \"wmJG8wVQZKjeGcjDOL5UlsuusFncCzWBQ7RKNUSesmQRMSGkVb1/3j+skZ6UtW+5u09lHNsj6tQ5\",  #\n            \"1s1SPrCBkedbNf0Tp0GbMJDyR4e9T04ZZwIDAQABAoGAFijko56+qGyN8M0RVyaRAXz++xTqHBLh\",  #\n            \"3tx4VgMtrQ+WEgCjhoTwo23KMBAuJGSYnRmoBZM3lMfTKevIkAidPExvYCdm5dYq3XToLkkLv5L2\",  #\n            \"pIIVOFMDG+KESnAFV7l2c+cnzRMW0+b6f8mR1CJzZuxVLL6Q02fvLi55/mbSYxECQQDeAw6fiIQX\",  #\n            \"GukBI4eMZZt4nscy2o12KyYner3VpoeE+Np2q+Z3pvAMd/aNzQ/W9WaI+NRfcxUJrmfPwIGm63il\",  #\n            \"AkEAxCL5HQb2bQr4ByorcMWm/hEP2MZzROV73yF41hPsRC9m66KrheO9HPTJuo3/9s5p+sqGxOlF\",  #\n            \"L0NDt4SkosjgGwJAFklyR1uZ/wPJjj611cdBcztlPdqoxssQGnh85BzCj/u3WqBpE2vjvyyvyI5k\",  #\n            \"X6zk7S0ljKtt2jny2+00VsBerQJBAJGC1Mg5Oydo5NwD6BiROrPxGo2bpTbu/fhrT8ebHkTz2epl\",  #\n            \"U9VQQSQzY1oZMVX8i1m5WUTLPz2yLJIBQVdXqhMCQBGoiuSoSjafUhV7i1cEGpb88h5NBYZzWXGZ\",  #\n            \"37sJ5QsW+sJyoNde3xH8vdXhzU7eT82D6X/scw9RZz+/6rCJ4p0=\",  #\n            \"-----END RSA PRIVATE KEY-----\"  #\n        ],\n        [\n            '[\"-----BEGIN RSA PRIVATE KEY-----\",',  #\n            '\"Proc-Type: 4,ENCRYPTED\",',  #\n            '\"DEK-Info: AES-256-CBC,2AA219GG746F88F6DDA0D852A0FD3211\",',  #\n            '\"MIICXAIBAAKBgQCqGKukO1De7zhZj6+H0qtjTkVxwTCpvKe4eCZ0FPqri0cb2JZfXJ/DgYSF6vUp\",',  #\n            '\"wmJG8wVQZKjeGcjDOL5UlsuusFncCzWBQ7RKNUSesmQRMSGkVb1/3j+skZ6UtW+5u09lHNsj6tQ5\",',  #\n            '\"1s1SPrCBkedbNf0Tp0GbMJDyR4e9T04ZZwIDAQABAoGAFijko56+qGyN8M0RVyaRAXz++xTqHBLh\",',  #\n            '\"3tx4VgMtrQ+WEgCjhoTwo23KMBAuJGSYnRmoBZM3lMfTKevIkAidPExvYCdm5dYq3XToLkkLv5L2\",',  #\n            '\"pIIVOFMDG+KESnAFV7l2c+cnzRMW0+b6f8mR1CJzZuxVLL6Q02fvLi55/mbSYxECQQDeAw6fiIQX\",',  #\n            '\"GukBI4eMZZt4nscy2o12KyYner3VpoeE+Np2q+Z3pvAMd/aNzQ/W9WaI+NRfcxUJrmfPwIGm63il\",',  #\n            '\"AkEAxCL5HQb2bQr4ByorcMWm/hEP2MZzROV73yF41hPsRC9m66KrheO9HPTJuo3/9s5p+sqGxOlF\",',  #\n            '\"L0NDt4SkosjgGwJAFklyR1uZ/wPJjj611cdBcztlPdqoxssQGnh85BzCj/u3WqBpE2vjvyyvyI5k\",',  #\n            '\"X6zk7S0ljKtt2jny2+00VsBerQJBAJGC1Mg5Oydo5NwD6BiROrPxGo2bpTbu/fhrT8ebHkTz2epl\",',  #\n            '\"U9VQQSQzY1oZMVX8i1m5WUTLPz2yLJIBQVdXqhMCQBGoiuSoSjafUhV7i1cEGpb88h5NBYZzWXGZ\",',  #\n            '\"37sJ5QsW+sJyoNde3xH8vdXhzU7eT82D6X/scw9RZz+/6rCJ4p0=\",',  #\n            '\"-----END RSA PRIVATE KEY-----\"]'  #\n        ]\n    ])\n    def lines(self, request) -> List[str]:\n        return request.param\n\n    @pytest.fixture\n    def rule_name(self) -> str:\n        return \"PEM Private Key\"\n\n\nclass TestEmptyPemKey:\n\n    @pytest.fixture(params=[\n        [\"-----BEGIN RSA PRIVATE KEY-----\", \"-----END RSA PRIVATE KEY-----\"],\n        [\n            \"-----BEGIN RSA PRIVATE KEY-----\",  #\n            \"Proc-Type: 4,ENCRYPTED\",  #\n            \"DEK-Info: AES-256-CBC,2AA219GG746F88F6DDA0D852A0FD3211\",  #\n            \"-----END RSA PRIVATE KEY-----\"  #\n        ],\n        [\"-----BEGIN RSA PRIVATE KEY-----\", \"...\", \"-----END RSA PRIVATE KEY-----\"],\n    ])\n    def lines(self, request) -> List[str]:\n        return request.param\n\n    @pytest.fixture\n    def rule_name(self) -> str:\n        return \"PEM Private Key\"\n\n    def test_scan_no_division_by_zero_exception_n(self, file_path: pytest.fixture, lines: pytest.fixture,\n                                                  scanner: pytest.fixture) -> None:\n        provider = StringContentProvider(lines, file_path=file_path)\n        scan_result = scanner.scan(provider)\n        assert len(scan_result) == 0\n"
  },
  {
    "path": "tests/rules/test_picatic_key.py",
    "content": "from typing import List\n\nimport pytest\n\nfrom .common import BaseTestRule\n\n\nclass TestPicaticKey(BaseTestRule):\n\n    @pytest.fixture(params=[[\"sk_live_gireogicracklegireogicrackle1231\"]])\n    def lines(self, request) -> List[str]:\n        return request.param\n\n    @pytest.fixture\n    def rule_name(self) -> str:\n        return \"Picatic API Key\"\n"
  },
  {
    "path": "tests/rules/test_pypi_api_token.py",
    "content": "from typing import List\n\nimport pytest\n\nfrom .common import BaseTestRule\n\n\nclass TestPyPiApiToken(BaseTestRule):\n\n    @pytest.fixture(params=[\n        [\n            \"pypi-AgEIcHlwaS5vcmc\"  #\n            \"CJGE3ZjdlNzVmLTRhOGEtNGY1MC1iMzEwLWQzZTQ1NmJiYzMzMQ\"  #\n            \"ACJXsicGVybWlzc2lvbnMiOiAidXNlciIsICJ2ZXJzaW9uIjogM\"  #\n            \"X0AAAYgdUBLuCnfvl7n3ZIgLjCvIDuk9GQxDbw4PHxRUAwPvIk\"  #\n        ],\n        [\n            \"pypi-AgENdGVzdC5weXB\"  #\n            \"CJDc5ZThjYzc4LWViY2YtNGFiZS1iOTNiLTQ3ZWVjOGFmYjIxNQ\"  #\n            \"ACJXsicGVybWlzc2lvbnMiOiAidXNlciIsICJ2ZXJzaW9uIjogM\"  #\n            \"X0AAAYgNJxF-my_lC6DUayAYu3KhiASbVvQA8FLI7wo-OkXoLs\"  #\n        ]\n    ])\n    def lines(self, request) -> List[str]:\n        return request.param\n\n    @pytest.fixture\n    def rule_name(self) -> str:\n        return \"PyPi API Token\"\n"
  },
  {
    "path": "tests/rules/test_rule.py",
    "content": "from copy import deepcopy\nfrom typing import Any\n\nimport pytest\n\nfrom credsweeper.common.constants import Severity, RuleType\nfrom credsweeper.config.config import Config\nfrom credsweeper.filters.group import GeneralPattern\nfrom credsweeper.rules.rule import Rule\n\n\nclass TestRuleConfigParsing:\n\n    @pytest.fixture(params=[\n        # Check proper config\n        {\n            \"name\": \"Twilio API Key\",\n            \"severity\": \"high\",\n            \"confidence\": \"moderate\",\n            \"type\": \"pattern\",\n            \"values\": [\"(?P<value>SK[0-9a-fA-F]{32})\"],\n            \"filter_type\": GeneralPattern.__name__,\n            \"min_line_len\": 32,\n            \"use_ml\": False,\n            \"target\": [\"code\", \"doc\"],\n        },\n        # Check proper config with no filters\n        {\n            \"name\": \"Twilio API Key\",\n            \"severity\": \"high\",\n            \"confidence\": \"moderate\",\n            \"type\": \"pattern\",\n            \"values\": [\"(?P<value>SK[0-9a-fA-F]{32})\"],\n            \"filter_type\": [],\n            \"min_line_len\": 32,\n            \"use_ml\": False,\n            \"target\": [\"code\", \"doc\"],\n        },\n    ])\n    def rule_config(self, request: str) -> Any:\n        return deepcopy(request.param)\n\n    def test_create_from_config_p(self, config: Config, rule_config: pytest.fixture) -> None:\n        rule = Rule(config, rule_config)\n        assert rule.rule_type == RuleType.PATTERN\n        assert rule.patterns[0].pattern == \"(?P<value>SK[0-9a-fA-F]{32})\"\n        assert rule.rule_name == \"Twilio API Key\"\n        assert rule.severity == Severity.HIGH\n\n    @pytest.mark.parametrize(\"field, error\", [[\"severity\", \"none\"], [\"type\", \"none\"], [\"filter_type\", \"none\"]])\n    def test_create_from_malformed_config_n(self, config: Config, rule_config: pytest.fixture, field: str,\n                                            error: str) -> None:\n        rule_config[field] = error\n        with pytest.raises(ValueError, match=r\"Malformed .*\"):\n            Rule(config, rule_config)\n\n    def test_create_from_missing_fields_n(self, config: Config) -> None:\n        with pytest.raises(ValueError, match=r\"Malformed rule config file. Contain rule with missing fields:.*\"):\n            Rule(config, {})\n"
  },
  {
    "path": "tests/rules/test_salt.py",
    "content": "from typing import List\n\nimport pytest\n\nfrom .common import BaseTestRule\n\n\nclass TestSalt(BaseTestRule):\n\n    @pytest.fixture(params=[[\"salt_data = '^S4lt$'\"], [\"salt = '1L1SziaanR3sdPz51cHA'\"]])\n    def lines(self, request) -> List[str]:\n        return request.param\n\n    @pytest.fixture(params=[\"\", \"keyword='hamming'\"])\n    def empty_line(self, request) -> List[str]:\n        return request.param\n\n    @pytest.fixture\n    def rule_name(self) -> str:\n        return \"Salt\"\n"
  },
  {
    "path": "tests/rules/test_secret.py",
    "content": "from typing import List\n\nimport pytest\n\nfrom .common import BaseTestCommentRule, BaseTestNoQuotesRule, BaseTestRule\n\n\nclass TestSecret(BaseTestRule):\n\n    @pytest.fixture(params=[[\"secret = \\\"cackle!\\\"\"]])\n    def lines(self, request) -> List[str]:\n        return request.param\n\n    @pytest.fixture\n    def rule_name(self) -> str:\n        return \"Secret\"\n\n\nclass TestSecretNoQuotes(BaseTestNoQuotesRule):\n\n    @pytest.fixture(params=[[\"secret = cackle!\"]])\n    def lines(self, request) -> List[str]:\n        return request.param\n\n    @pytest.fixture\n    def rule_name(self) -> str:\n        return \"Secret\"\n\n\nclass TestSecretComment(BaseTestCommentRule):\n\n    @pytest.fixture(params=[[\"# secret = cackle!\"]])\n    def lines(self, request) -> List[str]:\n        return request.param\n\n    @pytest.fixture\n    def rule_name(self) -> str:\n        return \"Secret\"\n"
  },
  {
    "path": "tests/rules/test_sendgrid_api_key_token.py",
    "content": "from typing import List\n\nimport pytest\n\nfrom .common import BaseTestRule\n\n\nclass TestSendGridApiKey(BaseTestRule):\n\n    @pytest.fixture(params=[[\"SG.gireogigireogigi.gireogigireogigi\"]])\n    def lines(self, request) -> List[str]:\n        return request.param\n\n    @pytest.fixture\n    def rule_name(self) -> str:\n        return \"SendGrid API Key\"\n"
  },
  {
    "path": "tests/rules/test_shopify_token.py",
    "content": "from typing import List\n\nimport pytest\n\nfrom .common import BaseTestRule\n\n\nclass TestShopifyToken(BaseTestRule):\n\n    @pytest.fixture(params=[[\"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\"]])\n    def lines(self, request) -> List[str]:\n        return request.param\n\n    @pytest.fixture\n    def rule_name(self) -> str:\n        return \"Shopify Token\"\n"
  },
  {
    "path": "tests/rules/test_slack_token.py",
    "content": "from typing import List\n\nimport pytest\n\nfrom .common import BaseTestRule\n\n\nclass TestSlackToken(BaseTestRule):\n\n    @pytest.fixture(params=[[\"xoxa-FLYLIKEAGIREOGI-9d8cfc0f59\"]])\n    def lines(self, request) -> List[str]:\n        return request.param\n\n    @pytest.fixture\n    def rule_name(self) -> str:\n        return \"Slack Token\"\n"
  },
  {
    "path": "tests/rules/test_slack_webhook.py",
    "content": "from typing import List\n\nimport pytest\n\nfrom .common import BaseTestRule\n\n\nclass TestSlackToken(BaseTestRule):\n\n    @pytest.fixture(params=[[\"https://hooks.slack.com/services/TGIREOGIT/BEEFLYING/Slack1webhook2teststring\"]])\n    def lines(self, request) -> List[str]:\n        return request.param\n\n    @pytest.fixture\n    def rule_name(self) -> str:\n        return \"Slack Webhook\"\n"
  },
  {
    "path": "tests/rules/test_square_access_token.py",
    "content": "from typing import List\n\nimport pytest\n\nfrom .common import BaseTestRule\n\n\nclass TestSquareAccessToken(BaseTestRule):\n\n    @pytest.fixture(params=[[\"EAAAEEPtuW9FnP_CuCV-GIREOGIGIREOGIGIREOGIGIREOGIGIREOGIGIREOGIGI\"]])\n    def lines(self, request) -> List[str]:\n        return request.param\n\n    @pytest.fixture\n    def rule_name(self) -> str:\n        return \"Square Access Token\"\n"
  },
  {
    "path": "tests/rules/test_telegram_bot_api_token.py",
    "content": "from typing import List\n\nimport pytest\n\nfrom .common import BaseTestRule\n\n\nclass TestTelegramBotApiToken(BaseTestRule):\n\n    @pytest.fixture(params=[\n        [\"4603348066:AAFMepdNauS475gWKEpuDt9NpytDegUz4-o\"],  #\n        [\"3039734276:AAHp--rsrIsieHSGWMPMQ8xAzztmgCp009c\"]\n    ])\n    def lines(self, request) -> List[str]:\n        return request.param\n\n    @pytest.fixture\n    def rule_name(self) -> str:\n        return \"Telegram Bot API Token\"\n"
  },
  {
    "path": "tests/rules/test_token.py",
    "content": "from typing import List\n\nimport pytest\n\nfrom credsweeper.file_handler.string_content_provider import StringContentProvider\nfrom .common import BaseTestCommentRule, BaseTestNoQuotesRule, BaseTestRule\n\n\nclass TestToken(BaseTestRule):\n\n    @pytest.fixture(params=[[\"gi_reo_gi_token = \\\"@@cacklecackle_gi_reo_gi@@\\\"\"]])\n    def lines(self, request) -> List[str]:\n        return request.param\n\n    @pytest.fixture\n    def rule_name(self) -> str:\n        return \"Token\"\n\n\nclass TestTokenNoQuotes(BaseTestNoQuotesRule):\n\n    @pytest.fixture(params=[[\"gi_reo_gi_token = @@cacklecackle_gi_reo_gi@@\"]])\n    def lines(self, request) -> List[str]:\n        return request.param\n\n    @pytest.fixture\n    def rule_name(self) -> str:\n        return \"Token\"\n\n\nclass TestTokenComment(BaseTestCommentRule):\n\n    @pytest.fixture(params=[[\"# gi_reo_gi_token = @@cacklecackle_gi_reo_gi@@\"]])\n    def lines(self, request) -> List[str]:\n        return request.param\n\n    @pytest.fixture\n    def rule_name(self) -> str:\n        return \"Token\"\n\n\nclass TestTokenWhitespaceBeforeQuote:\n\n    @pytest.fixture\n    def lines(self) -> List[str]:\n        lines = \"    \\\"gi_reo_gi_token\\\": \\\"@@cacklecackle_gi_reo_gi@@\\\"\".splitlines()\n        return lines\n\n    @pytest.fixture\n    def rule_name(self) -> str:\n        return \"Token\"\n\n    def test_scan_whitespace_before_quote_p(self, file_path: pytest.fixture, lines: pytest.fixture,\n                                            scanner: pytest.fixture) -> None:\n        provider = StringContentProvider(lines)\n        assert len(scanner.scan(provider)) == 1\n"
  },
  {
    "path": "tests/rules/test_url_credentials.py",
    "content": "from typing import List\n\nimport pytest\n\nfrom .common import BaseTestRule\n\n\nclass TestUrlCredentials(BaseTestRule):\n\n    @pytest.fixture(params=[\n        [\"https://user:pass12AB@your.domain.com/path\"],  #\n        [\"url='https://user:pass12AB@your.domain.com/path'\"]\n    ])\n    def lines(self, request) -> List[str]:\n        return request.param\n\n    @pytest.fixture\n    def rule_name(self) -> str:\n        return \"URL Credentials\"\n"
  },
  {
    "path": "tests/scanner/__init__.py",
    "content": ""
  },
  {
    "path": "tests/scanner/scan_type/__init__.py",
    "content": ""
  },
  {
    "path": "tests/scanner/scan_type/test_multipattern.py",
    "content": "import unittest\nfrom unittest.mock import MagicMock\n\nfrom credsweeper.common.constants import MAX_LINE_LENGTH, CHUNK_STEP_SIZE\nfrom credsweeper.config.config import Config\nfrom credsweeper.file_handler.analysis_target import AnalysisTarget\nfrom credsweeper.rules.rule import Rule\nfrom credsweeper.scanner.scan_type.multi_pattern import MultiPattern\nfrom tests import AZ_STRING\nfrom tests.filters.conftest import DUMMY_DESCRIPTOR\n\n\nclass TestMultiPattern(unittest.TestCase):\n\n    def setUp(self) -> None:\n        self.maxDiff = None\n        self.config = MagicMock(spec=Config)\n        self.config.exclude_lines = []\n        self.config.exclude_values = []\n        self.config.use_filters = True\n        self.rule = Rule(\n            self.config, {\n                \"name\": \"MULTI_PATTERN_RULE\",\n                \"severity\": \"info\",\n                \"confidence\": \"moderate\",\n                \"type\": \"multi\",\n                \"values\": [\"(?P<value>a)\", \"(?P<value>b)\"],\n                \"filter_type\": [],\n                \"min_line_len\": 0,\n                \"target\": [\"code\"],\n            })\n\n    def test_oversize_line_n(self) -> None:\n        long_line_a: str = 'x' * CHUNK_STEP_SIZE + ' a ' + 'x' * CHUNK_STEP_SIZE\n        long_line_b: str = 'x' * CHUNK_STEP_SIZE + ' b ' + 'x' * CHUNK_STEP_SIZE\n        self.assertEqual(2 * CHUNK_STEP_SIZE + 3, len(long_line_a))\n        target = AnalysisTarget(0, [long_line_a, long_line_b], [1, 2], DUMMY_DESCRIPTOR)\n        result = MultiPattern.run(self.config, self.rule, target)\n        self.assertEqual(1, len(result))\n\n    def test_oversize_line_p(self) -> None:\n        long_line: str = 'x' * MAX_LINE_LENGTH\n        self.assertEqual(MAX_LINE_LENGTH, len(long_line))\n        target = AnalysisTarget(0, [long_line + ' a', long_line + ' b'], [1, 2], DUMMY_DESCRIPTOR)\n        result = MultiPattern.run(self.config, self.rule, target)\n        self.assertEqual(1, len(result))\n\n    def test_get_line_positions_n(self):\n        target = AnalysisTarget(0, [AZ_STRING], [1], DUMMY_DESCRIPTOR)\n        self.assertListEqual([0], MultiPattern.get_line_positions(0, target))\n        target = AnalysisTarget(-1, [AZ_STRING], [1], DUMMY_DESCRIPTOR)\n        self.assertListEqual([], MultiPattern.get_line_positions(-1, target))\n\n    def test_get_line_positions_p(self):\n        lines = [str(1 + x) for x in range(42)]\n        line_nums = [1 + x for x in range(42)]\n        target = AnalysisTarget(0, lines, line_nums, DUMMY_DESCRIPTOR)\n        self.assertListEqual(list(range(11)), MultiPattern.get_line_positions(0, target))\n        self.assertListEqual([41 - x for x in range(11)], MultiPattern.get_line_positions(41, target))\n        self.assertListEqual([21, 22, 20, 23, 19, 24, 18, 25, 17, 26, 16, 27, 15, 28, 14, 29, 13, 30, 12, 31, 11],\n                             MultiPattern.get_line_positions(21, target))\n        lines[20] = '{'\n        target = AnalysisTarget(0, lines, line_nums, DUMMY_DESCRIPTOR)\n        self.assertListEqual([21, 22, 23, 20, 24, 19, 25, 18, 26, 17, 27, 16, 28, 15, 29, 14, 30, 13, 31, 12, 11],\n                             MultiPattern.get_line_positions(21, target))\n        lines[22] = '}'\n        target = AnalysisTarget(0, lines, line_nums, DUMMY_DESCRIPTOR)\n        self.assertListEqual([21, 22, 20, 23, 19, 24, 18, 25, 17, 26, 16, 27, 15, 28, 14, 29, 13, 30, 12, 31, 11],\n                             MultiPattern.get_line_positions(21, target))\n        lines[16] = '{' * 10000\n        target = AnalysisTarget(0, lines, line_nums, DUMMY_DESCRIPTOR)\n        self.assertListEqual([21, 22, 20, 23, 19, 24, 18, 25, 17, 26, 27, 28, 29, 30, 31, 16, 15, 14, 13, 12, 11],\n                             MultiPattern.get_line_positions(21, target))\n"
  },
  {
    "path": "tests/scanner/scan_type/test_pem_key_pattern.py",
    "content": "import unittest\n\nfrom credsweeper.utils.pem_key_detector import PemKeyDetector\n\n\nclass TestPemKeyPattern(unittest.TestCase):\n\n    def test_remove_leading_config_lines_p(self):\n        lines = [\"Proc-Type: 4,ENCRYPTED\", \"DEK-Info: DES-EDE3-CBC,BA2D3F11273F6I7A\", \"\"]\n        for line in lines:\n            self.assertTrue(PemKeyDetector.is_leading_config_line(line), line)\n\n    def test_remove_leading_config_lines_n(self):\n        lines = [\n            \"MIICXAIBAAKBgQCqGKukO1De7zhZj6+H0qtjTkVxwTCpvKe4eCZ0FPqri0cb2JZfXJ/DgYSF6vUp\",\n            \"wmJG8wVQZKjeGcjDOL5UlsuusFncCzWBQ7RKNUSesmQRMSGkVb1/3j+skZ6UtW+5u09lHNsj6tQ5\",\n            \"1s1SPrCBkedbNf0Tp0GbMJDyR4e9T04ZZwIDAQABAoGAFijko56+qGyN8M0RVyaRAXz++xTqHBLh\"\n        ]\n        for line in lines:\n            self.assertFalse(PemKeyDetector.is_leading_config_line(line), line)\n\n    def test_sanitize_line_p(self):\n        lines = [\n            \"    MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQDCqx5mEeaMNCqr\",\n            \"  \\\" hNtDzrYypSREYpBHTUKoa+y0rRy74nLA1Z4+nKVOTdXNuMGLp9KxHqwIlDk8QK5n\\n' +\",\n            \"#    //tDzrYypSREYpBHTUKoa+y0rRy74nLA1Z4+nKVOTdXNuMGLp9KxHqwIlDk8QK5n\"\n        ]\n        should_be = [\n            \"MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQDCqx5mEeaMNCqr\",\n            \"hNtDzrYypSREYpBHTUKoa+y0rRy74nLA1Z4+nKVOTdXNuMGLp9KxHqwIlDk8QK5n\",\n            \"//tDzrYypSREYpBHTUKoa+y0rRy74nLA1Z4+nKVOTdXNuMGLp9KxHqwIlDk8QK5n\"\n        ]\n        for expect_line, line in zip(should_be, lines):\n            self.assertEqual(expect_line, PemKeyDetector.sanitize_line(line), line)\n\n    def test_sanitize_line_n(self):\n        \"\"\"Check that valid PEM lines will not be changed\"\"\"\n        lines = [\n            \"MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQDCqx5mEeaMNCqr\",\n            \"hNtDzrYypSREYpBHTUKoa+y0rRy74nLA1Z4+nKVOTdXNuMGLp9KxHqwIlDk8QK5n\"\n        ]\n        for line in lines:\n            self.assertEqual(line, PemKeyDetector.sanitize_line(line), line)\n"
  },
  {
    "path": "tests/test_app.py",
    "content": "import binascii\nimport datetime\nimport hashlib\nimport json\nimport os\nimport re\nimport shutil\nimport subprocess\nimport sys\nimport tempfile\nimport time\nfrom typing import AnyStr, Tuple\nfrom unittest import TestCase\n\nimport deepdiff\nimport numpy as np\nimport pandas as pd\nimport pytest\nimport yaml\n\nfrom credsweeper.app import APP_PATH\nfrom credsweeper.scanner.scanner import RULES_PATH\nfrom credsweeper.utils.util import Util\nfrom tests import AZ_STRING, SAMPLES_POST_CRED_COUNT, SAMPLES_IN_DEEP_3, SAMPLES_PATH, \\\n    TESTS_PATH, SAMPLES_FILTERED_COUNT, SAMPLES_IN_DOC, ZERO_ML_THRESHOLD, SAMPLE_ZIP\n\nCHECK_WORKFLOW_PATH = TESTS_PATH.parent / \".github\" / \"workflows\" / \"check.yml\"\n\n\nclass TestApp(TestCase):\n\n    def setUp(self):\n        self.maxDiff = None\n\n    @staticmethod\n    def _m_credsweeper(args) -> Tuple[str, str]:\n        with subprocess.Popen(\n                args=[sys.executable, \"-m\", \"credsweeper\", *args],  #\n                cwd=APP_PATH.parent,  #\n                stdout=subprocess.PIPE,  #\n                stderr=subprocess.PIPE) as proc:\n            _stdout, _stderr = proc.communicate()\n\n        def transform(x: AnyStr) -> str:\n            if isinstance(x, bytes):\n                return x.decode(errors='replace')\n            elif isinstance(x, str):\n                return x\n            else:\n                raise ValueError(f\"Unknown type: {type(x)}\")\n\n        return transform(_stdout), transform(_stderr)\n\n    def test_it_works_p(self) -> None:\n        target_path = str(SAMPLES_PATH / \"uuid\")\n        _stdout, _stderr = self._m_credsweeper([\"--path\", target_path, \"--log\", \"silence\"])\n        output = \" \".join(_stdout.split()[:-1])\n\n        expected = f\"\"\"\n                    rule: UUID\n                    | severity: info\n                    | confidence: strong\n                    | ml_probability: None\n                    | line_data_list:\n                        [path: {target_path}\n                        | line_num: 1\n                        | value: 'bace4d19-fa7e-beef-cafe-9129474bcd81'\n                        | line: 'bace4d19-fa7e-beef-cafe-9129474bcd81 # tp']\n                    Detected Credentials: 1\n                    Time Elapsed:\n                    \"\"\"\n        expected = \" \".join(expected.split())\n        self.assertEqual(expected, output)\n\n    # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #\n\n    def test_huge_diff_p(self) -> None:\n        # verifies issue when huge patch is parsed very slow\n        # https://github.com/Samsung/CredSweeper/issues/242\n        text = \"\"\"diff --git a/huge.file b/huge.file\n                index 0000000..1111111 100644\n                --- a/huge.file\n                +++ a/huge.file\n                @@ -3,13 +3,1000007 @@\n                 00000000\n                 11111111\n                 22222222\n                -33333333\n                -44444444\n                +55555555\n                +66666666\n                \"\"\"\n        for n in range(0, 1000000):\n            text += \"+\" + hex(n) + \"\\n\"\n        with tempfile.TemporaryDirectory() as tmp_dir:\n            target_path = os.path.join(tmp_dir, f\"{__name__}.diff\")\n            start_time = datetime.datetime.now()\n            _stdout, _stderr = self._m_credsweeper([\"--path\", target_path, \"--ml_threshold\", \"0\", \"--log\", \"silence\"])\n            self.assertGreater(datetime.timedelta(seconds=100), datetime.datetime.now() - start_time)\n\n    # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #\n\n    def test_it_works_with_patch_p(self) -> None:\n        target_path = str(SAMPLES_PATH / \"uuid-update.patch\")\n        _stdout, _stderr = self._m_credsweeper([\"--diff\", target_path, \"--log\", \"silence\"])\n        output = \" \".join(_stdout.split()[:-1])\n\n        expected = \"\"\"\n                    rule: UUID\n                    | severity: info\n                    | confidence: strong\n                    | ml_probability: None\n                    | line_data_list:\n                    [path: uuid\n                        | line_num: 1\n                        | value: 'bace4d19-fa7e-dead-beef-9129474bcd81'\n                        | line: 'bace4d19-fa7e-dead-beef-9129474bcd81']\n                    rule: UUID\n                    | severity: info\n                    | confidence: strong\n                    | ml_probability: None\n                    | line_data_list:\n                    [path: uuid\n                        | line_num: 1\n                        | value: 'bace4d19-fa7e-beef-cafe-9129474bcd81'\n                        | line: 'bace4d19-fa7e-beef-cafe-9129474bcd81']\n                    Added File Credentials: 1\n                    Deleted File Credentials: 1\n                    Time Elapsed:\n                    \"\"\"\n        expected = \" \".join(expected.split())\n        self.assertEqual(expected, output)\n\n    # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #\n\n    def test_it_works_with_multiline_in_patch_p(self) -> None:\n        target_path = str(SAMPLES_PATH / \"multiline.patch\")\n        _stdout, _stderr = self._m_credsweeper([\"--diff_path\", target_path, \"--log\", \"silence\"])\n        output = \" \".join(_stdout.split()[:-1])\n\n        expected = \"\"\"\n                    rule: AWS Client ID\n                        | severity: high\n                        | confidence: moderate\n                        | ml_probability: None\n                        | line_data_list:\n                            [path: creds.py\n                            | line_num: 4\n                            | value: 'AKIAQWADE5R42RDZ4JEM'\n                            | line: ' clid = \"AKIAQWADE5R42RDZ4JEM\"']\n                    rule: AWS Multi\n                        | severity: high\n                        | confidence: moderate\n                        | ml_probability: None\n                        | line_data_list:\n                            [path: creds.py\n                            | line_num: 4\n                            | value: 'AKIAQWADE5R42RDZ4JEM'\n                            | line: ' clid = \"AKIAQWADE5R42RDZ4JEM\"',\n                            path: creds.py\n                            | line_num: 5\n                            | value: 'V84C7sDU001tFFodKU95USNy97TkqXymnvsFmYhQ'\n                            | line: ' token = \"V84C7sDU001tFFodKU95USNy97TkqXymnvsFmYhQ\"']\n                    rule: Token\n                        | severity: high\n                        | confidence: moderate\n                        | ml_probability: 0.9998588562011719\n                        | line_data_list:\n                            [path: creds.py\n                            | line_num: 5\n                            | value: 'V84C7sDU001tFFodKU95USNy97TkqXymnvsFmYhQ'\n                            | line: ' token = \"V84C7sDU001tFFodKU95USNy97TkqXymnvsFmYhQ\"']\n                    Added File Credentials: 3\n                    Deleted File Credentials: 0\n                    Time Elapsed:\n                    \"\"\"\n        expected = \" \".join(expected.split())\n        self.assertEqual(expected, output)\n\n    # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #\n\n    def test_it_works_with_patch_color_p(self) -> None:\n        target_path = str(SAMPLES_PATH / \"uuid-update.patch\")\n        _stdout, _stderr = self._m_credsweeper(\n            [\"--diff_path\", target_path, \"--log\", \"silence\", \"--color\", \"--no-stdout\"])\n        output = \" \".join(_stdout.split()[:-1])\n        expected = \"\"\"\n                   \\x1b[1mUUID uuid:added:1\\x1b[0m\n                   \\x1b[93mbace4d19-fa7e-dead-beef-9129474bcd81\\x1b[0m\n                   \\x1b[1mUUID uuid:deleted:1\\x1b[0m\n                   \\x1b[93mbace4d19-fa7e-beef-cafe-9129474bcd81\\x1b[0m\n                   Added File Credentials: 1 Deleted File Credentials: 1 Time Elapsed:\n                   \"\"\"\n        expected = \" \".join(expected.split())\n        self.assertEqual(expected, output)\n\n    # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #\n\n    def test_it_works_n(self) -> None:\n        _stdout, _stderr = self._m_credsweeper([])\n\n        # Merge more than two whitespaces into one because _stdout and _stderr are changed based on the terminal size\n        output = \" \".join(_stderr.split())\n\n        expected = \"usage: python -m credsweeper [-h]\" \\\n                   \" (--path PATH [PATH ...]\" \\\n                   \" | --diff_path PATH [PATH ...]\" \\\n                   \" | --export_config [PATH]\" \\\n                   \" | --export_log_config [PATH]\" \\\n                   \" | --git PATH\" \\\n                   \")\" \\\n                   \" [--ref REF]\" \\\n                   \" [--rules PATH]\" \\\n                   \" [--severity SEVERITY]\" \\\n                   \" [--config PATH]\" \\\n                   \" [--log_config PATH]\" \\\n                   \" [--denylist PATH]\" \\\n                   \" [--find-by-ext]\" \\\n                   \" [--pedantic | --no-pedantic]\" \\\n                   \" [--depth POSITIVE_INT]\" \\\n                   \" [--no-filters]\" \\\n                   \" [--doc]\" \\\n                   \" [--ml_threshold THRESHOLD_OR_FLOAT_OR_ZERO]\" \\\n                   \" [--ml_batch_size POSITIVE_INT]\" \\\n                   \" [--ml_config PATH]\" \\\n                   \" [--ml_model PATH]\" \\\n                   \" [--ml_providers STR] \" \\\n                   \" [--jobs POSITIVE_INT]\" \\\n                   \" [--thrifty | --no-thrifty]\" \\\n                   \" [--skip_ignored]\" \\\n                   \" [--error | --no-error]\" \\\n                   \" [--save-json [PATH]]\" \\\n                   \" [--save-xlsx [PATH]]\" \\\n                   \" [--stdout | --no-stdout]\" \\\n                   \" [--color | --no-color]\" \\\n                   \" [--hashed | --no-hashed]\" \\\n                   \" [--subtext | --no-subtext]\" \\\n                   \" [--sort | --no-sort]\" \\\n                   \" [--log LOG_LEVEL]\" \\\n                   \" [--size_limit SIZE_LIMIT]\" \\\n                   \" [--banner] \" \\\n                   \" [--version] \" \\\n                   \"python -m credsweeper: error: one of the arguments\" \\\n                   \" --path\" \\\n                   \" --diff_path\" \\\n                   \" --export_config\" \\\n                   \" --export_log_config\" \\\n                   \" --git\" \\\n                   \" is required \"\n        expected = \" \".join(expected.split())\n        self.assertEqual(expected, output)\n\n    # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #\n\n    def test_log_p(self) -> None:\n        _stdout, _stderr = self._m_credsweeper(\n            [\"--log\", \"Debug\", \"--depth\", \"7\", \"--ml_threshold\", \"0\", \"--path\",\n             str(SAMPLE_ZIP), \"not_existed_path\"])\n        self.assertEqual(0, len(_stderr))\n\n        self.assertIn(\"DEBUG\", _stdout)\n        self.assertIn(\"INFO\", _stdout)\n        self.assertIn(\"WARNING\", _stdout)\n        self.assertNotIn(\"ERROR\", _stdout)\n        self.assertNotIn(\"CRITICAL\", _stdout)\n\n        for line in _stdout.splitlines():\n            if 5 <= len(line) and \"rule:\" == line[0:5]:\n                self.assertRegex(line, r\"rule: \\.*\")\n            elif 21 <= len(line) and \"Detected Credentials:\" == line[0:21]:\n                self.assertRegex(line, r\"Detected Credentials: \\d+\")\n            elif 13 <= len(line) and \"Time Elapsed:\" == line[0:13]:\n                self.assertRegex(line, r\"Time Elapsed: \\d+\\.\\d+\")\n            else:\n                self.assertRegex(\n                    line,\n                    r\"\\d{4}-\\d\\d-\\d\\d \\d\\d:\\d\\d:\\d\\d,\\d+ \\| (DEBUG|INFO|WARNING|ERROR) \\| \\w+:\\d+ \\| .*\",\n                )\n\n    # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #\n\n    def test_log_n(self) -> None:\n        _stdout, _stderr = self._m_credsweeper([\"--log\", \"CriTicaL\", \"--rule\", \"NOT_EXISTED_PATH\", \"--path\", \".\"])\n        self.assertEqual(0, len(_stderr))\n\n        self.assertNotIn(\"DEBUG\", _stdout)\n        self.assertNotIn(\"INFO\", _stdout)\n        self.assertNotIn(\"WARNING\", _stdout)\n        self.assertNotIn(\"ERROR\", _stdout)\n        self.assertIn(\"CRITICAL\", _stdout)\n\n        self.assertTrue(\n            any(\n                re.match(r\"\\d{4}-\\d\\d-\\d\\d \\d\\d:\\d\\d:\\d\\d,\\d+ \\| (CRITICAL) \\| \\w+:\\d+ \\| .*\", line)\n                for line in _stdout.splitlines()), _stdout)\n\n    # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #\n\n    # todo: fix when python 3.10 support ends\n    @pytest.mark.skipif(10 < sys.version_info.minor, reason=\"argparse default was changed in 3.11\")\n    def test_help_p(self) -> None:\n        _stdout, _stderr = self._m_credsweeper([\"--help\"])\n        output = \" \".join(_stdout.split())\n        help_path = os.path.join(TESTS_PATH, \"..\", \"docs\", \"source\", \"guide.rst\")\n        with open(help_path, \"r\") as f:\n            text = \"\"\n            started = False\n            for line in f.read().splitlines():\n                if \".. note::\" == line:\n                    break\n                if \".. code-block:: text\" == line:\n                    started = True\n                    continue\n                if started:\n                    text = ' '.join([text, line])\n            expected = \" \".join(text.split())\n            self.assertEqual(expected, output)\n\n    # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #\n\n    def test_version_p(self) -> None:\n        _stdout, _stderr = self._m_credsweeper([\"--version\"])\n        # Merge more than two whitespaces into one because _stdout and _stderr are changed based on the terminal size\n        output = \" \".join(_stdout.split())\n        self.assertRegex(output, r\"CredSweeper \\d+\\.\\d+\\.\\d+\")\n\n    # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #\n\n    @pytest.mark.skipif(not CHECK_WORKFLOW_PATH.exists(), reason=\"Only for GitHub repo\")\n    def test_banner_p(self) -> None:\n        _stdout, _stderr = self._m_credsweeper([\"--banner\"])\n        output = \" \".join(_stdout.split())\n        banner_regex = re.compile(r\"^CredSweeper \\d+\\.\\d+\\.\\d+ crc32:[0-9a-f]{8}$\")\n        banner_text = ''\n        self.assertRegex(output, banner_regex, _stderr or _stdout)\n        # check and fix the hash in .github action\n        with open(CHECK_WORKFLOW_PATH, \"r\") as f:\n            check_wf_lines = f.readlines()\n        new_lines = []\n        for line in check_wf_lines:\n            env_banner_start = line.find('CREDSWEEPER_BANNER: \"CredSweeper')\n            if 0 < env_banner_start:\n                banner_text = line[env_banner_start + 21:-2]\n                new_line = f'{line[:env_banner_start]}CREDSWEEPER_BANNER: \"{output}\"\\n'\n                new_lines.append(new_line)\n            else:\n                new_lines.append(line)\n        if output != banner_text:\n            with open(CHECK_WORKFLOW_PATH, \"w\") as f:\n                f.write(''.join(new_lines))\n            self.fail(f\"The banner check was updated with '{output}'. Rerun the test.\")\n        elif not banner_regex.fullmatch(banner_text) and not banner_text:\n            self.fail(f\"Check output: '{_stdout}' or '{_stderr}'\")\n        else:\n            self.assertRegex(banner_text, banner_regex, _stderr or _stdout)\n\n    # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #\n\n    def test_patch_save_json_p(self) -> None:\n        target_path = str(SAMPLES_PATH / \"password.patch\")\n        with tempfile.TemporaryDirectory() as tmp_dir:\n            json_filename = os.path.join(tmp_dir, f\"{__name__}.json\")\n            _stdout, _stderr = self._m_credsweeper(\n                [\"--diff_path\", target_path, \"--no-stdout\", \"--save-json\", json_filename, \"--log\", \"silence\"])\n            self.assertTrue(os.path.exists(os.path.join(tmp_dir, f\"{__name__}.added.json\")))\n            self.assertTrue(os.path.exists(os.path.join(tmp_dir, f\"{__name__}.deleted.json\")))\n\n    # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #\n\n    def test_patch_save_json_n(self) -> None:\n        start_time = time.time()\n        target_path = str(SAMPLES_PATH / \"password.patch\")\n        _stdout, _stderr = self._m_credsweeper([\"--diff_path\", target_path, \"--log\", \"silence\"])\n        for root, dirs, files in os.walk(APP_PATH.parent):\n            self.assertIn(\"credsweeper\", dirs)\n            for file in files:\n                # check whether the report was created AFTER test launch to avoid failures during development\n                self.assertFalse(file.endswith(\".json\") and os.stat(os.path.join(root, file)).st_mtime > start_time)\n            dirs.clear()\n\n    # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #\n\n    def test_export_config_p(self) -> None:\n        with tempfile.TemporaryDirectory() as tmp_dir:\n            json_filename = os.path.join(tmp_dir, f\"{__name__}.json\")\n            _stdout, _stderr = self._m_credsweeper([\"--export_config\", json_filename, \"--log\", \"silence\"])\n            self.assertTrue(os.path.exists(json_filename))\n\n    # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #\n\n    def test_import_config_p(self) -> None:\n        with tempfile.TemporaryDirectory() as tmp_dir:\n            custom_config = os.path.join(tmp_dir, f\"{__name__}.json\")\n            shutil.copyfile(APP_PATH / \"secret\" / \"config.json\", custom_config)\n            args = [\"--config\", custom_config, \"--path\", str(APP_PATH), \"--find-by-ext\", \"--log\", \"CRITICAL\"]\n            _stdout, _stderr = self._m_credsweeper(args)\n            self.assertEqual(\"\", _stderr)\n            self.assertNotIn(\"CRITICAL\", _stdout)\n            self.assertIn(\"Time Elapsed:\", _stdout)\n            self.assertIn(\"Detected Credentials: 0\", _stdout)\n            self.assertEqual(2, len(_stdout.splitlines()))\n            # add .py to find by extension\n            modified_config = Util.json_load(custom_config)\n            self.assertIn(\"find_by_ext_list\", modified_config.keys())\n            self.assertIsInstance(modified_config[\"find_by_ext_list\"], list)\n            modified_config[\"find_by_ext_list\"].append(\".py\")\n            Util.json_dump(modified_config, custom_config)\n            _stdout, _stderr = self._m_credsweeper(args)\n            self.assertEqual(\"\", _stderr)\n            self.assertNotIn(\"CRITICAL\", _stdout)\n            self.assertIn(\"Time Elapsed:\", _stdout)\n            self.assertNotIn(\"Detected Credentials: 0\", _stdout)\n            self.assertLess(5, len(_stdout.splitlines()))\n\n    # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #\n\n    def test_import_config_n(self) -> None:\n        # not existed file\n        _stdout, _stderr = self._m_credsweeper(\n            [\"--config\", \"not_existed_file\", \"--path\",\n             str(APP_PATH), \"--log\", \"CRITICAL\"])\n        self.assertEqual(0, len(_stderr))\n        self.assertIn(\"CRITICAL\", _stdout)\n        # wrong config\n        with tempfile.TemporaryDirectory() as tmp_dir:\n            json_filename = os.path.join(tmp_dir, f\"{__name__}.json\")\n            with open(json_filename, \"w\") as f:\n                f.write('{}')\n            _stdout, _stderr = self._m_credsweeper(\n                [\"--config\", json_filename, \"--path\",\n                 str(APP_PATH), \"--log\", \"CRITICAL\"])\n            self.assertEqual(0, len(_stderr))\n            self.assertIn(\"CRITICAL\", _stdout)\n\n    # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #\n\n    def test_export_log_config_p(self) -> None:\n        with tempfile.TemporaryDirectory() as tmp_dir:\n            test_filename = os.path.join(tmp_dir, f\"{__name__}.yaml\")\n            _stdout, _stderr = self._m_credsweeper([\"--export_log_config\", test_filename, \"--log\", \"silence\"])\n            self.assertTrue(os.path.exists(test_filename))\n\n    # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #\n\n    def test_import_log_config_p(self) -> None:\n        with tempfile.TemporaryDirectory() as tmp_dir:\n            test_filename = os.path.join(tmp_dir, f\"{__name__}.yaml\")\n            _o, _e = self._m_credsweeper([\"--export_log_config\", test_filename, \"--log\", \"silence\"])\n            self.assertFalse(os.path.exists(os.path.join(tmp_dir, \"log\")))\n            with open(test_filename, 'r') as f:\n                text = f.read().replace(\"filename: ./log\", f\"filename: {tmp_dir}/log\")\n            with open(test_filename, 'w') as f:\n                f.write(text)\n            _stdout, _stderr = self._m_credsweeper([\"--log_config\", test_filename, \"--log\", \"silence\", \"--path\", \"X3\"])\n            self.assertTrue(os.path.exists(os.path.join(tmp_dir, \"log\")))\n            self.assertTrue(os.path.exists(os.path.join(tmp_dir, \"log\", \"error.log\")))\n\n    # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #\n\n    def test_find_by_ext_p(self) -> None:\n        with tempfile.TemporaryDirectory() as tmp_dir:\n            # .deR will be found also!\n            for f in [\".pem\", \".cer\", \".csr\", \".deR\"]:\n                file_path = os.path.join(tmp_dir, f\"dummy{f}\")\n                self.assertFalse(os.path.exists(file_path))\n                open(file_path, \"w\").write(AZ_STRING)\n\n            # not of all will be found due they are empty\n            for f in [\".jks\", \".KeY\"]:\n                file_path = os.path.join(tmp_dir, f\"dummy{f}\")\n                self.assertFalse(os.path.exists(file_path))\n                open(file_path, \"w\").close()\n\n            # the directory hides all files\n            ignored_dir = os.path.join(tmp_dir, \"target\")\n            os.mkdir(ignored_dir)\n            for f in [\".pfx\", \".p12\"]:\n                file_path = os.path.join(ignored_dir, f\"dummy{f}\")\n                self.assertFalse(os.path.exists(file_path))\n                open(file_path, \"w\").write(AZ_STRING)\n\n            json_filename = os.path.join(tmp_dir, f\"{__name__}.json\")\n            _stdout, _stderr = self._m_credsweeper(\n                [\"--path\", tmp_dir, \"--find-by-ext\", \"--no-stdout\", \"--save-json\", json_filename, \"--log\", \"silence\"])\n            self.assertTrue(os.path.exists(json_filename))\n            with open(json_filename, \"r\") as json_file:\n                report = json.load(json_file)\n                self.assertEqual(4, len(report), report)\n                for t in report:\n                    self.assertEqual(0, t[\"line_data_list\"][0][\"line_num\"])\n                    self.assertIn(str(t[\"line_data_list\"][0][\"path\"][-4:]), [\".pem\", \".cer\", \".csr\", \".deR\"])\n\n    # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #\n\n    def test_find_by_ext_n(self) -> None:\n        with tempfile.TemporaryDirectory() as tmp_dir:\n            for f in [\".pem\", \".cer\", \".csr\", \".der\", \".pfx\", \".p12\", \".key\", \".jks\"]:\n                file_path = os.path.join(tmp_dir, f\"dummy{f}\")\n                self.assertFalse(os.path.exists(file_path))\n                open(file_path, \"w\").write(AZ_STRING)\n            json_filename = os.path.join(tmp_dir, f\"{__name__}.json\")\n            _stdout, _stderr = self._m_credsweeper(\n                [\"--path\", tmp_dir, \"--no-stdout\", \"--save-json\", json_filename, \"--log\", \"silence\"])\n            self.assertTrue(os.path.exists(json_filename))\n            with open(json_filename, \"r\") as json_file:\n                report = json.load(json_file)\n                self.assertEqual(0, len(report))\n\n    # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #\n\n    def test_depth_p(self) -> None:\n        # check data samples integrity\n        checksum = hashlib.md5(b'').digest()\n        for root, dirs, files in os.walk(SAMPLES_PATH):\n            for file in files:\n                with open(os.path.join(root, file), \"rb\") as f:\n                    cvs_checksum = hashlib.md5(f.read()).digest()\n                checksum = bytes(a ^ b for a, b in zip(checksum, cvs_checksum))\n        # update the checksum manually and keep line endings in the samples as is (git config core.autocrlf false)\n        self.assertEqual(\"31a7141e4dda9e99aaef688fc41c2ac3\", binascii.hexlify(checksum).decode())\n        normal_report = []\n        sorted_report = []\n        with tempfile.TemporaryDirectory() as tmp_dir:\n            json_filename = os.path.join(tmp_dir, f\"{__name__}.json\")\n            # depth = 3\n            _stdout, _stderr = self._m_credsweeper([\n                \"--log\", \"silence\", \"--path\",\n                str(SAMPLES_PATH), \"--no-stdout\", \"--save-json\", json_filename, \"--depth\", \"3\"\n            ])\n            self.assertTrue(os.path.exists(json_filename))\n            with open(json_filename, \"r\") as json_file:\n                normal_report.extend(json.load(json_file))\n                self.assertEqual(SAMPLES_IN_DEEP_3, len(normal_report))\n            sorted_json_filename = os.path.join(tmp_dir, f\"{__name__}.json\")\n            _stdout, _stderr = self._m_credsweeper([\n                \"--log\", \"silence\", \"--path\",\n                str(SAMPLES_PATH), \"--sort\", \"--no-stdout\", \"--save-json\", sorted_json_filename, \"--depth\", \"3\"\n            ])\n            self.assertTrue(os.path.exists(sorted_json_filename))\n            with open(sorted_json_filename, \"r\") as json_file:\n                sorted_report.extend(json.load(json_file))\n                self.assertEqual(SAMPLES_IN_DEEP_3, len(sorted_report))\n        self.assertTrue(deepdiff.DeepDiff(sorted_report, normal_report))\n        # exclude equal items of dict instead custom __lt__ realization\n        for n in range(len(normal_report) - 1, -1, -1):\n            for i in sorted_report:\n                if i == normal_report[n]:\n                    del normal_report[n]\n                    break\n        # 0 - means all items were matched\n        self.assertEqual(0, len(normal_report))\n\n    # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #\n\n    def test_depth_n(self) -> None:\n        with tempfile.TemporaryDirectory() as tmp_dir:\n            json_filename = os.path.join(tmp_dir, f\"{__name__}.json\")\n            # depth is not set\n            _stdout, _stderr = self._m_credsweeper(\n                [\"--log\", \"silence\", \"--path\",\n                 str(SAMPLES_PATH), \"--no-stdout\", \"--save-json\", json_filename])\n            self.assertTrue(os.path.exists(json_filename))\n            with open(json_filename, \"r\") as json_file:\n                report = json.load(json_file)\n                self.assertEqual(SAMPLES_POST_CRED_COUNT, len(report))\n\n    # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #\n\n    def test_denylist_p(self) -> None:\n        target_path = str(SAMPLES_PATH / \"github_classic_token\")\n        with tempfile.TemporaryDirectory() as tmp_dir:\n            json_filename = os.path.join(tmp_dir, f\"{__name__}.json\")\n            denylist_filename = os.path.join(tmp_dir, \"list.txt\")\n            with open(denylist_filename, \"w\") as f:\n                f.write('ghp_00000000000000000000000000000004WZ4EQ # classic')  # full line\n            _stdout, _stderr = self._m_credsweeper([\n                \"--path\", target_path, \"--denylist\", denylist_filename, \"--no-stdout\", \"--save-json\", json_filename,\n                \"--log\", \"silence\"\n            ])\n            with open(json_filename, \"r\") as json_file:\n                report = json.load(json_file)\n                self.assertEqual(0, len(report))\n            with open(denylist_filename, \"w\") as f:\n                f.write('ghp_00000000000000000000000000000004WZ4EQ')  # value only\n            _stdout, _stderr = self._m_credsweeper([\n                \"--path\", target_path, \"--denylist\", denylist_filename, \"--no-stdout\", \"--save-json\", json_filename,\n                \"--log\", \"silence\"\n            ])\n            with open(json_filename, \"r\") as json_file:\n                report = json.load(json_file)\n                self.assertEqual(0, len(report))\n\n    # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #\n\n    def test_denylist_n(self) -> None:\n        target_path = str(SAMPLES_PATH / \"github_classic_token\")\n        with tempfile.TemporaryDirectory() as tmp_dir:\n            json_filename = os.path.join(tmp_dir, f\"{__name__}.json\")\n            denylist_filename = os.path.join(tmp_dir, \"list.txt\")\n            with open(denylist_filename, \"w\") as f:\n                f.write('4WZ4EQ # classic')  # part of line - will not exclude\n            _stdout, _stderr = self._m_credsweeper([\n                \"--path\", target_path, \"--denylist\", denylist_filename, \"--no-stdout\", \"--save-json\", json_filename,\n                \"--log\", \"silence\"\n            ])\n            with open(json_filename, \"r\") as json_file:\n                report = json.load(json_file)\n                self.assertEqual(1, len(report))\n\n    # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #\n\n    def test_rules_ml_p(self) -> None:\n        # checks whether all rules have positive test samples with almost the same arguments during benchmark\n        with tempfile.TemporaryDirectory() as tmp_dir:\n            json_filename = os.path.join(tmp_dir, f\"{__name__}.json\")\n            _stdout, _stderr = self._m_credsweeper([\n                \"--path\",\n                str(SAMPLES_PATH),\n                \"--save-json\",\n                json_filename,\n            ])\n            self.assertEqual(0, len(_stderr))\n            report = Util.json_load(json_filename)\n            report_set = set([i[\"rule\"] for i in report])\n            rules = Util.yaml_load(RULES_PATH)\n            # test rules integrity\n            rules.sort(key=lambda x: x[\"name\"])\n            rules_text = yaml.dump_all(rules, sort_keys=True)\n            checksum = hashlib.md5(rules_text.encode()).hexdigest()\n            # update the expected value manually if some changes\n            self.assertEqual(\"c794796c4e2cb69b89f968a674919243\", checksum)\n            rules_set = set([i[\"name\"] for i in rules if \"code\" in i[\"target\"]])\n            self.assertSetEqual(rules_set, report_set)\n            self.assertEqual(SAMPLES_POST_CRED_COUNT, len(report))\n\n    # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #\n\n    def test_rules_ml_n(self) -> None:\n        # checks whether all rules have test samples which detected without ML\n        with tempfile.TemporaryDirectory() as tmp_dir:\n            json_filename = os.path.join(tmp_dir, f\"{__name__}.json\")\n            _stdout, _stderr = self._m_credsweeper([\n                \"--path\",\n                str(SAMPLES_PATH),\n                \"--ml_threshold\",\n                \"0\",\n                \"--save-json\",\n                json_filename,\n            ])\n            self.assertEqual(0, len(_stderr))\n            report = Util.json_load(json_filename)\n            report_set = set([i[\"rule\"] for i in report])\n            rules = Util.yaml_load(RULES_PATH)\n            rules_set = set([i[\"name\"] for i in rules if \"code\" in i[\"target\"]])\n            self.assertSetEqual(rules_set, report_set)\n            self.assertEqual(SAMPLES_FILTERED_COUNT, len(report))\n\n    # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #\n\n    def test_no_filters_p(self) -> None:\n        # checks with disabled ML and filtering\n        with tempfile.TemporaryDirectory() as tmp_dir:\n            json_filename = os.path.join(tmp_dir, f\"{__name__}.json\")\n            _stdout, _stderr = self._m_credsweeper([\n                \"--path\",\n                str(SAMPLES_PATH),\n                \"--ml_threshold\",\n                \"0\",\n                \"--no-filters\",\n                \"--save-json\",\n                json_filename,\n            ])\n            self.assertEqual(0, len(_stderr))\n            report = Util.json_load(json_filename)\n            # the number of reported items should increase\n            self.assertLess(SAMPLES_FILTERED_COUNT, len(report))\n\n    # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #\n\n    def test_severity_patch_xlsx_n(self) -> None:\n        # uuid is info level - no report\n        with tempfile.TemporaryDirectory() as tmp_dir:\n            _stdout, _stderr = self._m_credsweeper([  #\n                \"--severity\",\n                \"low\",\n                \"--diff\",\n                str(SAMPLES_PATH / \"uuid-update.patch\"),\n                \"--save-xlsx\",\n                os.path.join(tmp_dir, f\"{__name__}.xlsx\"),\n                \"--save-json\",\n                os.path.join(tmp_dir, f\"{__name__}.json\"),\n            ])\n            # reports are created\n            self.assertEqual(3, len(os.listdir(tmp_dir)))\n            # but empty\n            self.assertListEqual([], Util.json_load(os.path.join(tmp_dir, f\"{__name__}.deleted.json\")))\n            self.assertListEqual([], Util.json_load(os.path.join(tmp_dir, f\"{__name__}.added.json\")))\n            self.assertEqual(0, len(pd.read_excel(os.path.join(tmp_dir, f\"{__name__}.xlsx\"))))\n\n    # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #\n\n    def test_severity_patch_xlsx_p(self) -> None:\n        # info level produces xlsx file with \"added\" and \"deleted\" sheets and two json files\n        with tempfile.TemporaryDirectory() as tmp_dir:\n            xlsx_filename = os.path.join(tmp_dir, f\"{__name__}.xlsx\")\n            _stdout, _stderr = self._m_credsweeper([  #\n                \"--severity\",\n                \"info\",\n                \"--diff\",\n                str(SAMPLES_PATH / \"uuid-update.patch\"),\n                \"--save-xlsx\",\n                xlsx_filename,\n                \"--save-json\",\n                os.path.join(tmp_dir, f\"{__name__}.json\"),\n            ])\n            deleted_report_file = os.path.join(tmp_dir, f\"{__name__}.deleted.json\")\n            deleted_report = Util.json_load(deleted_report_file)\n            self.assertEqual(\"UUID\", deleted_report[0][\"rule\"])\n            added_report_file = os.path.join(tmp_dir, f\"{__name__}.added.json\")\n            added_report = Util.json_load(added_report_file)\n            self.assertEqual(\"UUID\", added_report[0][\"rule\"])\n            book = pd.read_excel(xlsx_filename, sheet_name=None, header=None)\n            # two sheets should be created\n            self.assertSetEqual({\"deleted\", \"added\"}, set(book.keys()))\n            # values in xlsx are wrapped to double quotes\n            deleted_value = f'\"{deleted_report[0][\"line_data_list\"][0][\"value\"]}\"'\n            self.assertTrue(np.isin(deleted_value, book[\"deleted\"].values))\n            added_value = f'\"{added_report[0][\"line_data_list\"][0][\"value\"]}\"'\n            self.assertTrue(np.isin(added_value, book[\"added\"].values))\n\n    # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #\n\n    def test_doc_n(self) -> None:\n        with tempfile.TemporaryDirectory() as tmp_dir:\n            json_filename = os.path.join(tmp_dir, f\"{__name__}.json\")\n            _stdout, _stderr = self._m_credsweeper([\n                \"--doc\",\n                \"--path\",\n                str(SAMPLES_PATH),\n                \"--no-stdout\",\n                \"--ml_threshold\",\n                str(ZERO_ML_THRESHOLD),\n                \"--save-json\",\n                json_filename,\n            ])\n            report = Util.json_load(json_filename)\n            self.assertEqual(SAMPLES_IN_DOC, len(report))\n\n    # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #\n\n    def test_external_ml_n(self) -> None:\n        # not existed ml_config\n        _stdout, _stderr = self._m_credsweeper(\n            [\"--ml_config\", \"not_existed_file\", \"--path\",\n             str(APP_PATH), \"--log\", \"CRITICAL\"])\n        self.assertEqual(0, len(_stderr))\n        self.assertIn(\"CRITICAL\", _stdout)\n        # not existed ml_model\n        _stdout, _stderr = self._m_credsweeper(\n            [\"--ml_model\", \"not_existed_file\", \"--path\",\n             str(APP_PATH), \"--log\", \"CRITICAL\"])\n        self.assertEqual(0, len(_stderr))\n        self.assertIn(\"CRITICAL\", _stdout)\n        # wrong config\n        with tempfile.TemporaryDirectory() as tmp_dir:\n            json_filename = os.path.join(tmp_dir, f\"{__name__}.json\")\n            with open(json_filename, \"w\") as f:\n                f.write('{}')\n            _stdout, _stderr = self._m_credsweeper(\n                [\"--ml_config\", json_filename, \"--path\",\n                 str(APP_PATH), \"--log\", \"CRITICAL\"])\n            self.assertEqual(0, len(_stderr))\n            self.assertIn(\"CRITICAL\", _stdout)\n\n    # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #\n\n    def test_external_ml_p(self) -> None:\n        log_pattern = re.compile(r\".*Init ML validator with providers: \\S+ ;\"\n                                 r\" model:'.+' md5:([0-9a-f]{32}) ;\"\n                                 r\" config:'.+' md5:([0-9a-f]{32}).*\")\n        _stdout, _stderr = self._m_credsweeper([\"--path\", str(APP_PATH), \"--log\", \"INFO\"])\n        self.assertEqual(0, len(_stderr))\n        self.assertNotIn(\"CRITICAL\", _stdout)\n        for i in _stdout.splitlines():\n            if log_match := re.match(log_pattern, i):\n                md5_config = log_match.group(1)\n                md5_model = log_match.group(2)\n                break\n        else:\n            self.fail(f\"'Init ML validator' not found in {_stdout}\")\n        with tempfile.TemporaryDirectory() as tmp_dir:\n            custom_ml_config = os.path.join(tmp_dir, f\"{__name__}.json\")\n            shutil.copyfile(APP_PATH / \"ml_model\" / \"ml_config.json\", custom_ml_config)\n            custom_ml_model = os.path.join(tmp_dir, f\"{__name__}.onnx\")\n            shutil.copyfile(APP_PATH / \"ml_model\" / \"ml_model.onnx\", custom_ml_model)\n            with open(custom_ml_config, \"a\") as f:\n                f.write(\"\\n\\n\\n\")\n            args = [\n                \"--ml_config\", custom_ml_config, \"--ml_model\", custom_ml_model, \"--path\",\n                str(APP_PATH), \"--log\", \"INFO\"\n            ]\n            _stdout, _stderr = self._m_credsweeper(args)\n            self.assertEqual(\"\", _stderr)\n            self.assertNotIn(\"CRITICAL\", _stdout)\n            # model hash is the same\n            self.assertIn(md5_model, _stdout)\n            # hash of ml config will be different\n            self.assertNotIn(md5_config, _stdout)\n\n    # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #\n"
  },
  {
    "path": "tests/test_doc.py",
    "content": "import unittest\n\nimport deepdiff  # type: ignore\n\nfrom credsweeper.app import CredSweeper\nfrom credsweeper.file_handler.abstract_provider import AbstractProvider\nfrom credsweeper.file_handler.files_provider import FilesProvider\nfrom tests import SAMPLES_PATH\n\n\nclass TestDoc(unittest.TestCase):\n\n    def setUp(self) -> None:\n        self.cred_sweeper = CredSweeper(doc=True, ml_threshold=0)\n\n    # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #\n\n    def test_secret_pair_p(self) -> None:\n        content_provider: AbstractProvider = FilesProvider([SAMPLES_PATH / \"doc_secret_pair\"])\n        self.cred_sweeper.run(content_provider=content_provider)\n        found_credentials = self.cred_sweeper.credential_manager.get_credentials()\n        self.assertEqual(40, len(found_credentials))\n\n    # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #\n\n    def test_passwd_pair_p(self) -> None:\n        content_provider: AbstractProvider = FilesProvider([SAMPLES_PATH / \"doc_passwd_pair\"])\n        self.cred_sweeper.run(content_provider=content_provider)\n        found_credentials = self.cred_sweeper.credential_manager.get_credentials()\n        self.assertEqual(76, len(found_credentials))\n\n    # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #\n\n    def test_ip_id_passwd_triple_p(self) -> None:\n        content_provider: AbstractProvider = FilesProvider([SAMPLES_PATH / \"doc_ip_id_password_triple\"])\n        self.cred_sweeper.run(content_provider=content_provider)\n        found_credentials = self.cred_sweeper.credential_manager.get_credentials()\n        self.assertEqual(5, len(found_credentials))\n\n    # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #\n\n    def test_id_pair_passwd_pair_p(self) -> None:\n        content_provider: AbstractProvider = FilesProvider([SAMPLES_PATH / \"doc_id_pair_passwd_pair\"])\n        self.cred_sweeper.run(content_provider=content_provider)\n        found_credentials = self.cred_sweeper.credential_manager.get_credentials()\n        self.assertEqual(248, len(found_credentials), found_credentials)\n\n    # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #\n\n    def test_id_passwd_pair_p(self) -> None:\n        content_provider: AbstractProvider = FilesProvider([SAMPLES_PATH / \"doc_id_passwd_pair\"])\n        self.cred_sweeper.run(content_provider=content_provider)\n        found_credentials = self.cred_sweeper.credential_manager.get_credentials()\n        self.assertEqual(44, len(found_credentials), found_credentials)\n\n    # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #\n"
  },
  {
    "path": "tests/test_git.py",
    "content": "import base64\nimport gzip\nimport io\nimport os\nimport shutil\nimport sys\nimport tempfile\nimport time\nimport unittest\nfrom tarfile import TarFile\nfrom unittest import mock\nfrom unittest.mock import Mock\n\nfrom credsweeper.common.constants import Severity\nfrom credsweeper.main import EXIT_SUCCESS, main\nfrom credsweeper.utils.util import Util\n\n\nclass TestGit(unittest.TestCase):\n\n    def setUp(self):\n        self.maxDiff = None\n        # * commit b7b09c8cdec2904dbb6f77eec2aa6abaef975252 (HEAD -> master)\n        # | Author: Your Name <you@example.com>\n        # | Date:   Sun Jun 8 16:56:48 2025 +0300\n        # |\n        # |     Key removed\n        # |\n        # * commit 9d3df94e8257240aa2b98dee47dc17992c0b7476\n        #   Author: Your Name <you@example.com>\n        #   Date:   Sun Jun 8 16:56:25 2025 +0300\n        #\n        #       Key added\n        git_repo_tar_gz_base64 = \"\"\"\n            H4sICCSlRWgAA3NhbXBsZS50YXIA7DwNcBzVeTYMBC00Mb/JNIU+Vopl2drT/eok2ZYxko1F/SP8\n            Uwi2EXu77+7Wuts974+kA+OZFiZDYICQAAmEv1APNGQwGXcYCE06odRAan4LIWVaMiWpEwqmnQAB\n            p1Do9733dm/vJFkSls9kuDcwvtt773vf//t+3iqSM9yOOUd2RGGk0yn8N5ZORcP/+mNOLBWNxxKx\n            RDwJz2OxJPxMUkcYLzY8x1VtQuZk1Aw16fCk86b6/Y90RFD+VmYb1VznSOnBzOWfiEVjDfnXY1TJ\n            P5M+IirwCeSfjDXkX5dRK/9MtFvr0nSqxbujST2T6cym0xS+qWqnmlFptjudiqfiM9sDBZxMJieV\n            fzyRrJZ/PBYHlSDRI0Ny9fiMy39s7s3X/710TGzenAfeOf3fTtzzswcGzug/cNzl+5a8Nxj9zQnd\n            v/volx/+9VvRY7+1re25z698cXf65LtffybW+hfzVyy68diLb2re+0pu3xMfdF8zr/n7X0mWR/9j\n            yf5bB1buP0k9Yf6e5x7f3m08WThl5XnP3v/D984rlh4cvnLzgmPue2D3F//wtT0//s9vbOu+cuSf\n            Th3u/8Llt8/7+d3a7n133froPx+/5vz/W/WXy275fd/JR5s3n4VRZf+p2FH3/7F0HP1/IhFv+P96\n            jFr5J2lWSyaSnVoyFk9k4l3JqJoEcSXj8F8mBVJLZFLx2Mz2mMr/d8ZTNfIHbels+P96jLG5xRsf\n            vuW7g6fN2frO6W+8f/CE/nk3fXFsyVnyqqu2DrbeEx24+ulfPPiTh+67I3PN19+M9JZO+eDN95fp\n            V339itLSri1b327q7dky+K624Np5r7RdfdKlT12679RfPnfsXV/a9sauRw9mn/C6HrpAPv75XTc8\n            8bnHnyy88fy1N+9+Zef9dy29ueN2eeu/FIzv/uDOg6XMxYtuSSr/O5icbw0e3H3aRfN++pb105Nu\n            0246oO57W3/xxI82nb/xnJdjO49/+R/c25Rr771JfXr02/TegVfW7hi+5O17HzzuhYt/t//1V+dK\n            //NnK4tnv/Q3V94YHdz8V6fZG254f/vr+0b37np/53M/7rrtOz96dezX1629iz6ya/iSnaUzvze6\n            /ex1P/z5w7eUDpx63Tnb5z/7wXeuz7+5b9FZw088uiN13WvRvY9884J3Pnf+V3sXfvCjh27/0+9f\n            /PQjyd/2n3fhfcWuLxzof+Hgs9K8TXd+/K83fbnttI96v3J//LXXUk8+b91/lrTjnV9d9IP/Kl70\n            rUU3frj/xGV3uvfM65e2nXLGq7veKe85sPrzLS/8dljb/eaB7+19OLJ53ddaVy7fO+f3iT955Y2P\n            czuP3bXsjm/UUf5V9l9SteEjcALMwP/HOyHwB3cTjTfy/7qMKvmnPwX5H5M/nP/JhvzrMWrl35XK\n            dqXSiWgqG83Eo5CNxbuz3fFOqsd0molBApjN6smume0x1fkf7UxUyz8eTaUa+V9dxtjcRW3nr9kU\n            7aRRiPMSsQueWvvAS4tWPUNPePeDXx8Y6X/q4sfVpiuvvufFl9f/5oFr5pz62EkfHm2UG2MWR5X9\n            G2bW+pSc/4lUw//XY1TJv1v/tJz/yViiIf96jFr5J/Rsd5J2xVNpOPtVNZ7p7tIpTaZ1LZbu7o5r\n            0Uw6me6c2R5Tnf+Q7o87/7H+3zj/j/wYm3vzM2ukf4zOO0f9RffeA8fd+mGq6Wq345HRW0eyg9H+\n            c4957723Tv/33oNjw8r+V5ev+++Xvpy4at5P+v+8/bLH9t69Pf/NlkTM+NWK3Bkn2xfsf2Hoocf+\n            7vrjb9jypd2bz0x8bP9h58E9L9vHnrllT9OGd0srr/3b6y97uufjn710R/qp/tXbPpe8IVk62uR/\n            5keV/SczR9//i/5ftLPh/+sxauUPnl/XOpNxLdNJM91qtDNKU8lMtkvv7I53dWUzcBZ0R5Mz22PK\n            /C+Wrun/QUaYbPj/egw//7t0zhyp/Zi5RxudxqjzYPaft6zhI3b755PkfxB+Nup/dRkh+aulUqFc\n            Ul0trxSdXMRRi6UCnY09ppJ/OtFZI//OdLIR/9dlNJ/dkTHMDicvNUvNZLlJ6BiTO0GdII5mGyWX\n            uBbR8lQbJm6eEs0qFg2XFKwcKVLHUXOUuOowNUmmDBAqSkSytlUkKkBUiqpR8CdH2EYb8/4Oecsr\n            6LArgBw13DwxLVO5jNoWAbm4nkPUrEttYjiOZ5g5AMf3sK2SbaguDVAwsgQhqKbrILqOa5VC2EZI\n            ZUfDQRCFgjVKdZxKdVgYIsyHmDUKPrIwyVQzwBQ3bzgMSjux4VFRPMGpCEquNiE5IkkRAgamOHnF\n            oa5Xkvge8NtSuWUB/AJgRpSSajuUKArOhMV5wu2Rz0VAbbLkUsclyhiRWwIQMpk/HxhHteqHLZfH\n            Fskt58hXSD3S1PIP2X/JpkrJc/KzaPl8TGH/8dQ4+0+lUomG/ddjVOz/kOY/Qm0jWyajedUFAyJq\n            xvLY8wwlqDJUBwvrA6MCk8qUiQxKBeDwF9k3YJfkVYe7EbQ7sDebFi2wYG7n7SQDEDM0a9kUrLwM\n            dgXmjksg5TAFMLbNQJYbnUAOPYfDXYc6znmYFoczahQKIVyFCxK2jARpHHcGBnHLWuggcCkYJ9g5\n            kOD0sGUtMbBUshZt38qG6QBujOYNja/HjRBuhiIM3TIpLo3j0k3rV089F2YDnfgLR9/NI8M9h/lA\n            gp5HD/bNW+A9VDvnFanJWMFppds9tcBJHTCBrUXVNSzTF13g7xyBiQp85xhwJiFGjgf+zIDPIIaC\n            YVJ0rQAOFwODTV21YZpZAniGKdhmFzmbCFlSsICrgGW21/9sGTp8FnjzH8QX/KUiFe6A8GwYRRGN\n            Ir/AO40AfZxbwPkK9tSmbPPwiYRG7aKjZxKVLxwYlMmCUcseRkzh9MjZMLEN/DPfH7xxTJY8uwAf\n            4rIkoQ4t5Q4aVDCv8AQZpOe4OgBY0qHTkQ7TA0bvIK5NWjdHlW5VyW5tJa3R1jZJApYWkEJVJ4zy\n            ISBWfAJKheTYQ/ERnkq6JTXBMcY8vdwSzJbJUviKGMlSE9BpSk1NzWQVsB+20GkBdBOe9EhNtODg\n            pwqICuwqGD4QgLKWjpKMrZpavp1ZPsgYj0afuTgJfs0hfyr4wFOxFUDYVNJVrvxgiI6L+lML0IRN\n            JgBYwS4SqYaeNSRGYx+LOUCnCMhPgIAf+IellfOzYODZaBK0TBBsibReAgtakQO4l9wW4gpM80/L\n            MCuolrdI7/w4kVdanqmHNkSFaQmE2I4uxbdLma3EyCXGscb/mf1K7Gl0Gufv0R41538lgKlj/N+Z\n            qs3/OtON+k99xnTj/0MEANxOXKoDADj8P6UZwAwj+WpjmCCShwnCEU0dySMwPrkqkg9AhCP50MOZ\n            RfKfbITs32OufNaj/yntPx2Lxmvj/3hnw/7rMqZr/xk4AoeJZ6omHICgJhDCqzmHWziEZeAdzBzY\n            WE0SAEahUWME8kpVG5ZFlO5Hqj0YAjLTc/JqTLHACbAPEC/M0Fi55srcxvssM2vk4IPCBnxg6h1h\n            KX+IABaksnAzY1kFCm4KDJvFk+A17PGk+nG1XzowTNgapjI4EHVYjuFadhkylHPLEJdlVa/A4mxw\n            mpbZirlNpBoXHrsB7CkwYfPQ9U2CxmEhUbR08OtTI6Hi7qSolnFvtojlBcw1axDoYm4RCW3KwKE/\n            PhTtPFKcLvl8Np1NFujULDPsp4cKD1kLZUHxRDgBREPolsiJJkcJtsGjlFOBysuVFjS4WITwnqVc\n            krARnqGAjcAxw5MUMBP+OSH7CzeoWeqWeZItwXm4mSiXwZFy3sDGof6B9TLZupjwgJeFu3I/44ft\n            mVUJNTNp/+D00YjIGB37C8kCAF62PHbatrNPGjvEWcJYJmJDthnCr15MWqKY92H2x+mBD5yY3jZ/\n            Jg+qMRGokCE4IRPF4g/46sp3DmQcmR6GBz2H2HX8pr4cmCepdRwi89DYrzDRLZfoUtSXSRxNmzRO\n            5acFIrygTapV1alA1M6vwgJseQYowGyxOvAW01odzG5DjmpBNmdaYARc28BrQCRlYXaNjwCsAwat\n            UNIa295aUd2O0HxI5zQVoiwMlYKFMlibJG8y/cqIb3LyQsjQZcwAuS4sXLiQDPJlYRz4UQKpPncQ\n            lNl9tVo0LV4sUUfVAuXgBXGgG8sMoKVC/dCkMaqJRCL4Tzs4wVYwcj+bdC2Rs8Mj0MbI4ZYamHlU\n            VD9I8ytGwH8aYhIS5QKevod/EOJUXYVxQnF9ctqYPQiG+xbY7m/IFjPeN8FvTgeeUB0L20Wsy5J4\n            z1SqDlJ4CBG/7Q75jq3lcvGpubkC4wqesiNpteYkk7OBStf2aIjIppB8MbOo3bWdtFTt2o5iwlS+\n            6gyBZyHV4eIPQ94EXGhFRuFZCF5JBZkoDgFZoFqz49n3irxkZZXUHMbUFVjhagGqVBXfuHg434SW\n            cI6FWRHY5JSM6PdPTn54z4DiQ2LJDBpRrJVrGMvA9quwxDynOlfydYr0koqmx3vnx2qLM1y0QEar\n            v6QVSMESW5mXnpzIBBJbw9CYAQ+mFFUedqzVcRE8BBzwD6aKNYKqyC21LplNOIT8+vwoQxU7HL4I\n            fewn0LRaIsadQTPRt9nCl0dctfx2bUgnKuHXxAsmMqZx62aD1hqoh0X0Qo7vcr8Bgp4aoi0HMQg3\n            RvD5Mpwbck68Eovnbw/4v2HTGjXZ+YTVci8o02LROTA67GDgjGp3zrELkKs5+FYapoENgj+eGmdj\n            TD7C9V8Pwg/XUligZnnurFWCpqj/pBKJdE39Jx2PNeo/dRnT7P8K/6H6DVyFlX9tCi7EhKd4prOr\n            A+M7q4Y5Yg3zihBWRcMFoQWxNkytTcIiAlXjhdtK75hg9sl3RveZBQ9oanSB04Y+FXt/FZfazuYy\n            YH5LFRuVtsF6loH7y/vHHHzkhWzNswGqWygHrWmkDIHxkoLAl6VTfXzuuRwCz308m7dVR1TbYLUq\n            TKSpyxulfNsB03Hh2OW8qRQA2iFbxr5r0P8FCj3MfgzeVsZuJav6IJcFQkC4TscATHXrucIH1jGH\n            U4JA2CP4FUrofVr9bExQy4/WxZx9GUu0wCffnxSxJi4awQKoANLOKy3YTObEsys2bD6bDecMsFp0\n            mF2jVCGFyyVSrTy8wcC4Ah+tEWrbhs7lWKkzZWheHTEsz16MvWIKk0T5QseONhzCwB8DlZr3x0OL\n            K0uxp4BZGusbsya4ZQBRGNaDnEewqANfed1L48Wu6i6G0BMnfJOIlTsrfX4g1ydWME1qDsUMOYtx\n            m1PMedcj+b3OGJrnAGZoZqhTMv7CAz/ggWGVmwULfBPTLZaqOhbmpKQIjo/FKTxSD0nXssfJvy0i\n            6QYEIm3kcinUK21ZKAf58RWI4Tp20QORLKrDLFwBiWvYoLHRwLAby3CcWL/8cipHAzlhswl5WvQX\n            Qc5u2KANSC6t2PsUrA2polDCQF1x4zBDQ8zkEl4J7BBOkSk3FzeS6KBSlVn9jOc0qq4wYhSPKEWy\n            asXyfsKqdkgRcFVHxbQILXoFRB7XZKkb8kUIKSgaghqDFHWgVmNVEnGVwfe07aivjPRRi++Kdy+Q\n            CRPhwu68gRiAMQbEpVzaDkaAAAUXOAAcMAFaWR1ARAAcM/4b051KuZNdcBimtCQkxG83BDIWZFTJ\n            mAHT0S+i2hnYNEAXVbl0E/JZGeqOUiFcf9OIJAyOGzWWTkF5bapYtlIA4lBMGp5KqukUuFfGPmCe\n            QkYplKOPeQUAkxVKPs4RsF9yrGZTGw9xycMKw2RhvXCAOG3ItYZ0WipYZTCRrGcykSETMp5RAH/S\n            ET72IhrXrLX89o7qVtQquLszRjUPNTbw3SEXz3UCDz3BymBSmN1wvFgkVKZlBQngONMS+MAY5BDL\n            J6N6LVuFyABbWNqg6ipEAmXkEHOsqqaBRsOCApy9NMJ6P9j81fEZkTWdRCCVBl7yO0s2RYkAKOyK\n            oiQBs7OZrnHbVLjNK9shxTByJkrV8TLgmjyQLDwDp2ZTONN5Ioa+SN5UQuGwc12UFlXQSV32q8Yc\n            POoUq2khlO2eQd1JdgiDvlDwIuA0O1Y9OMfVHAhFKLksSsUb/UI+sS0vl69SQCvrX4fCzHsIwAzB\n            bAQJirKMyOgkZNJDVqwZ3PjVoY3rV6wY2rBqeWxo1YqLkIbqohzlPiXeG1RKBNIIeyn+Jip77PsE\n            NUURso2vLbZNwDQhkYBpmqrhoT0R91pww2nxcCIOBtvWeq3KRZ0Q3D7WaEC1F0FdtY+xmHdnbEXg\n            Rzu8/tSPmvs/RWrn/LsK9cr/op3J2vs/6Vjj/m99xmze/5mg/8/0Sfbv9VR6/+EL+fwCEAYo074C\n            NOEFIJZygWeDJGHSy0AMn8O4EhS2jwkuBVXu9viNq9oLQHjVRyJiiCs/k849gvd+/FFj/7Ns+XxM\n            Yf8JNPaa+3/Rzsbf/6nLOML27yt9XRyAkcVUa3bvAFZM3cjWtK4URTCFRWW9Ne0rHrKoOdWAsDEc\n            nOF1fAPTMIFVDwu3iJjJrksWS25ZVNdY5FaBM3lQVxPLsfcHwrE/a0cwvi7f0DcwwKhEmkW5CgkP\n            aliYJ9sejfCmP6xRHc0wptXz9yezlv96yqM/rDKVuL5w/xyRmOuLYacBlca2IH0rQczM0hPR1wcR\n            Ul4WUEfw1vwEuC/2XwvgSUyRp0L8NQZIRSopf/gSzoWYX0GuJl77yrKkUaRhWHm0ITVlbGC3x8Wr\n            BESkaQ5kcJhwqDYsw3tRWD8wdfEGimsUdGBbuKvkM6S2D4qKUJ0BYtUG8tQMtpPw1pFqs6vo2GAS\n            qICMwFywE9ROFmCOikCQfqAPwnSb6u0sfy1ZNlBgFAxUI4tssAogWYfEopDVdniOzUzetdsgRzQg\n            20YojLbtHnsLhCMANox11zxYGmWZdBbfDBCJPdZhciYrqjDUIlITO/u4ijCFDmUMKCvFMgtl+Own\n            ZMC8pcvx3k6Lr/k7pCZCVvcNLV+9emkfEq3opHUzUXZu3RJtJTvIqEYUrQ3ZGBXWBakRWbJky4p1\n            K6UVtm3ZPWQ5+KEi91ggf1EgqygNe3MGbJmlbFjD0VTkOigcyLvo1ObL7IURJtgStdApYkbHboL5\n            uoqp7Eb+GhTjORaAuYPURwzHN6bAu/hvFUrCOLFJx30qfkPm66wKyG5UAXq6D4Phy7Jclk/3SBBD\n            hIxxAgNkFiwha6ovNrHXp1gvEUsveQPExlSaIgOddq7+DFUrmwXNRnQC1jlM3zHRFhY8LlvkSAay\n            D4QLyeHRPuoaY4IRjv8sx1WOxCXwqfK/eDpVG//FG/lffcZ04z84Z0voMVSCJcyqO3bsyGGHF8RD\n            AET3ihleBEOf6Mw46qqoIYZdgZsRhUKH2rCNgn+qsOFRDn9U538oYqXy3vksuYGp3v9Ox5O19Z9U\n            LN2w/3qMmdr/xH8BYqrMj3XdQq9Mc2PHuCfP21jYka768wvt4hVsDlGEnMF1Xb/Xx18JbfYXQXjr\n            WJ6t0VB2yRo5dgnfkeYN5Zq/91BZzWMz8YK5YACGOpO9Xd7ud8DFe6IsK7bd4P3ymeSZNYYnR4LG\n            Am+Fm1rB01l3GXM9ISMnwqjMGjYEWJbJrwOIHjQsl5vJYIHizV32gk4YV19s2KPJ00Jp/Kt5DoXQ\n            Ug9vTP0sDpgvh6J8FtyLNF2xebdTZF2BLLdhs1m83I8/sPV8jSzAIuNd3qhEJBFlED3lAbroXuPt\n            bM0qiZahosDOgCOcPuw7pi/sYpqvS06FHGC4rQe6DakBtms2QAqDV1kgfAUdw9ccSC3iTEc19s6h\n            4/rNOVAg9pcI/MaPDcKD3EYlOcsClulUBfH1rVuzZmDj0JoN5w2tHFi9Alv44tGGdZvW98GDuISt\n            nqUtCUkKkrIStQtEMSL/397V7LaRbOeLIBvyCZJd3bYCkjL/RUkWacljS54ZXXskw5bjybUkukk2\n            5R6T3TSbtKx4NIsACbLOEwRZJY+QF8gmQHYJsg6QbYDsAmST81fdxW5KlGYkOhizAP2wWV11qurU\n            qVOnzvmqZYMSDfRkWB0fe3jAme2XjouzxrRULEK2O0ulHPrPx6igSBFx5p6gJr+EtFh8qqnyP+Iu\n            Ck+p8zk6vFLTCYSRyPD3kJhS69CzVFG9uXAbGHLKG3gzhTsuoLaEjsFLxMh376pN2OFNI141Gljb\n            co7/0U6JL/YfiWniA0hyNKbyiwePnzd3dx7vHcDekaIKPJUJSseH2eLy1mGuuLxUmmCAujqslAYZ\n            bPCJK+fTMDNHBVBlYKYO8ZDQ9QrQLW20/chTIBPqt6Z1NUUFsEX4z+P9bbHsoN6+pHONPsVTMu6h\n            JnLq3btTh/eOuuahl7H+BzCZHAzULXywe+4NbgNmrP+1Wjm5/i/iv+eTror/IhxB+j96imRtr1NC\n            UxN9AqXcdYKciHgUlmI5wEnp2orY6pfGfZs2X2PVjh31aJwQlIxULfoLGmZB9IG57gKdnBlW0puP\n            moGuJp52JoxMe9RLWewhtOpg6KIAq5CPCvouiS6h/VHGg2A0dOy+dmLSCDBo7+m5aBt10e+SV2l0\n            rkJTFdqBi+ohdhsUJ6SiupQNxm30wuqOe4rir0Y5rUL1bJBPPIjwxJaRzIcuIVgm+R7p8Eb0ke9E\n            QxkB5YgpShuRA91U9oaUI/+JRor3InASOVpqVBjuNnIhFMc/CsSPOhLNUGxW0s4V4QAV9QA95+Ky\n            Ulcd2u2euF7u0uzPofLoDbTZ56iC5w5LfaTgYH9nX9HHt36vg8sCa4fGeQQNfhC5yGATztjJ0HOc\n            DtoMdb3NNm6am9CpyOvsX4dsx+GeqTtUXT0k4KKqsuiBo4IBujrRI6g1hzZZtAGeG9XJ5E3W89gL\n            xkMnxrHCpkGS/aBsXCSBQQsrsA5hUZb68UcYvtF46F2dcPbDgrlG9eF73BT6mnFIBr2pLWFGlaZc\n            rzq0e/qIL0RFRJW+H7swadFlq5NHLycSF6Oznn49r5xRu2hSA1II+FAizW8g0SmToPegIvPi8d7O\n            4+8e7j6l5R30mpd7oNVg3JA+YBL8otjRjJ5hzPQISAGT8CKuz9FpBEy8i0qh863Ly4CZw8VomQFl\n            9d+hFomqUn/QccmcP0XF+J4Tv31CEeNcAhnwC92ONioj/1lL+lvQuCbifQROCP92rbCssClDZowC\n            HmEk2/BKV2mUL6d1RnsmCpzeGbogPIPD6aC9ZaesIHW2uNfFbc3cY0dtNANQgd3GHgpTHV2Nf1/t\n            P39CbmPpdmeid6AH6MQS4ZAK75V1LMo4NsJit1RmoJhooG+46dNlFGWA1kkFV2LWqd8f7B88fKqp\n            mOhbauasocIhBh18wAGZIdPwFhj4pmt2R0Y9/n73gN6JCZAv3UnM0P9v3O6n0wz9v7KWwP9dKy/s\n            //NJN4H/Osv6h6Yp7fiRn2oLJO03sgbGzVQJX5Epuway0FzHV2Sqp0hoO5pEjL0tvNi4xe+lJ7Yv\n            dnwnP/fwKHumuQrHYYejSMgyhTuEsAGqZbNtCp+fACsP7R6DbpK6lzBBCkYKvotO9gp6U0IotCNN\n            0u7y8OXBt/s/2+jCS1UAa5U2qVRIp+QVlJ9tbfECpK2jmlvbsi/ojEFhbeNAJ3sL9W5ernhNygpW\n            YIygjFScTqnAH46gHWPPfa8Kbd0iR2VKx69V6mi5gr9LnUzOMhd7DI3ZuZyOaE3/3PPfkP/doO97\n            eKJXOMXe7NveXOw/lUplLY7/u75WXZz/zCWB/Detj6BjBujyNIRNXoP+P7WHHoiUgD/tPtuu1/cH\n            jldtXG4wQvPpyRAnwCthJsiefTsaDYJ6qdQFXbwFLyD3vR23iq5f0jxXykWBTiiYB7BjVuOB6jgj\n            jITyTmgXfUqOKCEOFQV4xOxLtKkMcMba6L0YkCEkCves5qgIsn+E0fHvyCLLYLkjxr21qTdoIenI\n            UYWsGB2KFCVizALEnoHqK8edyMr2wWFkmZBo8r1izy/j9aJ6hiEyFJ9HwY1R7Iz2ZfP9kV48E0F0\n            Acpx8svCaBys4wQGZ+/l0+suTe/HzvAslASWFI4kZQxlvQ1LQzEUHMqQJpPvZ6D2/pnKLslI5NUS\n            9nyTW96kludAKn/18Pk3f9qYXApx095xWuOTEx59Noq/ONh5/Pw5yOqy0oVOKfPQs6i07VB9kfM0\n            DD5DS4G8iluZkDgYUmSPTzrQyENYKzrZU9yqqMFUmn4towvIFOkUBP3ZlLK+BlYgeAgbSQDOadse\n            TqlisUjkwcYOumYJuq6Jw9mksdyENZo/Q84mbJ+zuQbnGzqj4RlaAOTzD4HvNQfvThppB/Y2SLU4\n            A6rfvdjfq9e/f9FIp8JcuPLp51B3Cko5R5tgx0+++ezZ9DefPUOqofqePfbab5t6kInEYNxSsedY\n            MlLqQxH6WZN6Et9ADI6sG0Rt5/ecTnbJz9EopHjaNYdOMO6N4HFh61Mb8QjP8+qrT/SRZtr5ORZ3\n            jh2KVEy8JTRkl+hFtwNv0jvEdE2gO3Uhy4U0S4mY1UefyCw2qvs2r6wtC34R8+u8BTnVhD8WUgUz\n            2fX6GDnHb9THo+49i75gfobHGPDE1B16TB3xB2SBxwG9iYTqgmAG7L88MMuSkqSQ8IF1WMZvOUJz\n            KY8DyU/4a66qobstHCEqRo8d9OLAh305vPz+Y9hKxXmsSea1Sg2ZOl+Htg20l3Bml6zemclXwhmT\n            mjFdCGnrATmBYl+wvTGaBIUtEMeFLeyQwlbHwVDFbEh7LtlG4kLdxgGQtklDW80eLm9/+3SnSR0s\n            /+/u5VUmbHnhBzzR9At4RDg6Aw02hTyDjeYCcmLYqaul30rbZkoCdg4nMcWEOR8HCFSOwoU3A6dO\n            Bp2wAhL6hKVGXpmwGkRrDTEMWdv1GpOUi6T4T8SOFikemUzaQOodsqn6ZMOG5d0N3tLykBcCOKiT\n            TvKpBkt2FCgSEW6B48+xDAx89dpnUUx34PTQIxxa3uETJc/viF+pBctirxNYmK3n9nmbRbMtdB83\n            PFHxnIUcILwkUVG/QWHOEMPHsZzueEjeu7B4BXh+q2OtUUCgVo5MYHYV7bFgtlgipYB14L1ssjvz\n            qpxXlZxy3sOezmKhNaXTceJZUxYpqiA1rer3718DZ3Af16eMY/6IJB5Rziyzqe7ft1KP93aozNe8\n            jqN4is3RvPqUqBAxifQg1NVri8DejvL02OhS+sofQRGvLViZGBKO5Z91dAS5z+EXUHCpUCXtRU8m\n            IvJqcpWyFnG+i1yNxCf3QFJgcg6Zw1EuziOPGwkxhyuiiMxSQ93X4mDr/PLFImyX0mVF7bqwUTrr\n            Be3SXyebxqG2Ukw9hOxksehgzIR2r7maDCLxGnYCsrPVmF2L65FVVaqqRyVcsVJ2bzF7/ydVOj78\n            VPoFIn6aRhEqAUyoXvtp5MkaDw/kO9Ap6Mm5TH1Ru7ZUmUSVZDf+BZL7pbEXufwHfu+DKOvFZSMM\n            OltczmmMMKGrJBKD6igUcOJesuaeiqE+uebGF10C4Yi9d+HCewVddWLxBXpFLm9efXDgpUs6Os5o\n            nPdaqgG90eD7I66sz/0chS4+E+Hzq7Cn8bTc7p3aZ4FMEmM76MtVKeS1xzI78Ol9ycpBSWinQhAQ\n            AXwDhgEWGp1ZqtuzTwQnifivw7ApEwRwseR1J7oXZMZTHG0zPUV0iFNHIJEH9hnj6pFVM6A7L2T/\n            3cMNDmy/HRuhVGDN/uB2xnZPrJ2ppF5PSl521lDf8FhfskHIWiUrl0usr3pBNvJSSbyHiu9gQJsj\n            /pQRKtOim5CLk024Vguk4EoovmK7P62iGo+0YDreR9mT6QdnQQbNkPpB++zk1PUyIlrMsjbVK9db\n            qdbr3zij7dOODNZEjp/UaFg6PCwdllCunDMO4SfqAd4hwnvJt/Bpvd6WIs8N4T1B9+e3ei6STrH4\n            76HTsoObvgNilv23Vovf/7BWXlnc/ziXNHn+t+0PzobuyduRyrZzqlour+Xx9z31u7Hn+mpbfWuD\n            pPNDQ6sV8YwVWl0Rxsp0+JaLIDiTRNNSmCNFawfqB7/FOFzoMGa672k9k/aoUKpH0pTgfkf6WjSC\n            QJrwG0yaga97uRubZMUBjwJj2dfo1CYPoneCy4THbXylW4RSJU6G3NqOyiJ4GEVzE1QZPdabBA2c\n            J/DsBnTiZdefjfyB245wuEJXOYFCJr/I4QmrfxnP+TjKaMqoF2FZGRkE5kMPe1t3CUVEnNIhq1jO\n            XINwjbg8GLd6hAKrBM6omE7Ls02sNY3FC1A9HdhFriJ38PStKn4f1JxNy8AmxqsN2P+EvyNP8uCs\n            3/J7bhtxoMgd6Q2sdHKKVlaNO6jKgB4U4ooNx4NRRHTHGbELOkXhG3jmVAM5vRsEPHhQQhTeRiON\n            fy6vgoKB0XJgYOTukZmGg3kdu6cZFeO4jbGbZBSEQdSeoKC1B1A+xkMEqLbtP+H9BGaEzw/SdMor\n            IRlcJIwJgroRDPaDNHUYsA11Fvr+6HbGziitPZ8hKIUiyTaJ6LcbSB3dMVYRMRdT+SANHdJ0vSZ/\n            5NGK7mQT69im7zlk0DjmbCFJb9ITLvITZWnXIANukCnBU4qpxDQQNm4k93R8wM4qhq2REeRrKhgL\n            AeH/5Px76PCOjGEfizpUWredMCWj2pDBH1CcUECOndopAXmDzmuE7/CgHK1UTXyhWYl1TtgXx3p8\n            lj7JFDrHo2Z/OHpjvF694PUoTXk9mnUGHXz6bZSse1q635h3YW0RkVztm+iqQnPkNAdxeVOHTksQ\n            2FPgXQiE4IXTQw966mcNmL6RUDCpEVBbLjlgwrChM5nT6MCIQVOx6AwMeeFtDzcJthB4ZvW6fKS3\n            7f2AzkqWdQ6691Ruq9Stj5iJqtRSoc4GfzJS/IlBOloq+vaANPBU6TirL4G4m1O0709lYeXa3FIV\n            UuXPVTDouaNs6dAr5YW8yhF9hRthsnb0nD5sd3WRsTLRRLHEBadec8lLVWrf1LKrR3JOQxuS3zIa\n            v1oy6P9EFRa2oJfOJStvXvByY/mcmjjXw2+YgNTY6yBmefjgPJ3IbSldQeVIupCywU8mkn+WSZKV\n            lDcmUML9+4c7+9tNsmKaizIfc9td52RsDzvB1PU4POtNR8ukEYEwdE4R2INgKPgEt4vcbQfBGC8v\n            EeZGiIdltY/m+9jKgSqI3LxlCen58D+aFiivEGRKuIzi8dBagE7zKuu4ZARnixSIUWAJ3NjzJ7wT\n            9YJ6Q7nb9gnRmU7gjRpCYtJ89ROaLCRcQGk0GvR/J9ggdLI21jw2NrT9IVKB7zv2sOei1AVest9h\n            RAKftMcp4vsU6LS7K2fhNhUQg4XVxBlheyiu2dOhZ8DUkoiRFqD9jNZgBwQ6o7ci5CnDYIriwzCw\n            DnfbK5B7tFiYbSUpiaEyzAwCommA4WKTsEbNRXmBKSNEG+5a5ljBSGbGYV+LvEa78SKU2rfAmW1f\n            R23qaqXP0FqfZuAmLpVlKo8X9MYHRCbStsPwoH88JMMmfJkO4crEBaDvYFvcAPTh9CtWsaEkzdYC\n            JUpSXMOqIOoJsDfCfxeLRTSExDgNJSZ1IztMhLKSCYYh/DOYQCcEoxabf7iFoOkXjMZ4nKfZx6Bi\n            aCP708ttuuILViLZqUhXQX/mBfEaPV+MSc0rPExsFZtdjAozQQZGigLbIEKw7AYkioJetrtddmfR\n            gDIEMIM3hGGELc4+HpFQghgdSQWw+Zg7FCSKi8G6sBCms9XLepU6NK49hXODCqYTtRCAhi/OIH/I\n            77CLgNkR6AZdaPIx3YfenjKxYYNktpEukdProLSAR0NHCFGnk9dLBODELbGDeAQQB9aQ7TqUhRHw\n            LU3B8NSPp1xeelZ0RakchYdRURYW+7f2IIg2jYSWjJMnB2OHWLTh0SnzIYuaqCvTTx0EESb7qS0A\n            WzJD62k2t/uFQmHmjzA9vVESTU//TfyPufCBDW/iT0s9nJqpFHs2JY/xFH/aUFr4ox4lc5aMnygd\n            JjKa+VpE4vZETslXUpcXWaJev0oHRh2p1/l0+mEemoAzfJv2aZNChEX5Q5ov6LrcdT/KOTp5DAd6\n            5rAGKzKJ3nlE73TlghSOaJ8+6+RdvWjT6TdLY2wXfqQLAXCKsKwOA++wnm0qlcDbY7IRWQ2UZRTF\n            Tkzqsg69LeWFBgCBi38oUOgeKNxD+8RJP0pUfIALdH8wxrC6Sg6ZeOqG5Jh7k6wA03NIohy8j4Be\n            d/iWgLyKlGajga5H2aPmmcRUk8TIHrrIa6tUwss+2WO0ELhYFKa1+ve5LXS3mxL2X77uYp74T5Vy\n            Av93rVpexH/MJV01/oPUQUEopGslfEJiQWsr2Vr1a3IpAu78HQqbmMjNqhTZgHllzWBGPCDbRCAJ\n            dipg7Ef9Kl02IDcBWPylZZZJ9zsEPwt0RXO7oHuyNcOTaLVnL19829x/drC7v8ehbNpK4m6W0ym+\n            /0BsK66lCr3Rxe+lOr4+WbTg19jZPExkhUIgj9glKRNfq5gKO4iuBpNwQvodum4ZTSnw9V9Ln6iI\n            O8ub5+FlYw0+wMQOzE1cPkaGS9iPby5ls666qyq5HJLsOV96bNyXkEj+a82ndDt1zML/Kyfi/1aq\n            K2u/Uau3Q85k+sLlP41/zz+5rbHHdI3xX6nS+Fdrlepi/OeRovHHw7HbqYPueFirXTj+tdW1aPxB\n            F4T5D88W+t88UvmKSW10VjrdjZpzr7q6DoNk29XWxr2O49TWO+3K+sZGtV1urdfW19A2N1R7qHDd\n            P/PHX4liWITd2paqrNc2VjbKG/dW1d3ySrmckhjarMuQ6Lm6euKcMXR3+so1ttZb5Y32vXbHaVc3\n            yrVOq7XWXV934JNtr9kt2+lurK9WV6tXIK2Czg4maUwQHyh2foXaUDT/6Qj8Vuq4vvxfWVmtLOT/\n            PFJs/NkF4obruP7412orq4vxn0eaOv5sBLuxOq6//q+urVUX6/880mL9X6z/JQNa+TbqmDX/KyDz\n            Y/v/9cri/qe5pJce2kZNOP+GRrjR1tKMwR4Z8n/Tl5kYt+r8CqfGF5Fo/t/e1p/SrPlfrq7H5n+1\n            vL7A/51LAq2vrhKq32I2fymJ5r/AiD/e2T347sU3N17HzPlfqcXtf6srC/1/LunXrd0u0qxE8//2\n            TH+UrmH/0et/DfX/hf3n9lM0/rdi+qN0Lfsfy//a+spi/OeR4uN/w6Y/SjPX/9VKbPxr6+XF+d9c\n            0lVtZwvl4NeZovk/sm/LCeT66//KSm3h/zOXROOPl2n+P9P/yrXF+M8jRePvfKSr/m6hjlnr/8pa\n            Yv6vry7wn+eS+LK7XlBgcKpCgSEN4B/hhwK6GW8m2CR9Rz1FLPOkR/edDMXUCPQWOYh/jVBpeMs6\n            Oh+rvh9gxKXrqe18DI+DI1bwfiy+SxGvO6G7saRWjP4C9dQLVHZsQuX34ze3CwJlP1eHl5eLr337\n            CP/5aaHGxJIMbMf5eHt1zDz/K8f1/2ptfWH/m0va2X2+DX/+AP/He4Tgzx//pqzK6Sd/cfRPj/7Z\n            +8e/ffOfT/7n3/7mr//3v3b/cPivDz6e/9U/VP/u93+5/i//sfbvf/T13//35yV/kX5hovnPkdy3\n            VsfM+b8Sv/+zurayWP/nkl4jgv8RAvXpo3y+/UBj2m8ymkrPIcjxTUU336VauMJvqq5NGCs9/8Tu\n            9TCQlLAVA53tc7dtkRZpkRZpkRZpkaan/wORQSDXAPAAAA==\n            \"\"\"\n        self.temp_dir_path = tempfile.mkdtemp(prefix=__name__)\n        git_repo_tar_gz = base64.b64decode(git_repo_tar_gz_base64)\n        with gzip.open(io.BytesIO(git_repo_tar_gz)) as gzipf:\n            with TarFile(fileobj=io.BytesIO(gzipf.read())) as tf:\n                for tfi in tf.getmembers():\n                    target = os.path.join(self.temp_dir_path, tfi.name)\n                    if tfi.isreg():\n                        with tf.extractfile(tfi) as tfd:\n                            with open(target, \"wb\") as f:\n                                f.write(tfd.read())\n                    else:\n                        os.mkdir(target)\n\n    def tearDown(self):\n        if 12 <= sys.version_info.minor and \"nt\" == os.name:\n            # workaround for the case\n            time.sleep(1)\n            shutil.rmtree(self.temp_dir_path, ignore_errors=True)\n        else:\n            # all others\n            shutil.rmtree(self.temp_dir_path)\n\n    @mock.patch(\"credsweeper.main.get_arguments\")\n    def test_git_n(self, mock_get_arguments) -> None:\n        with tempfile.TemporaryDirectory() as tmp_dir:\n            json_filename = os.path.join(tmp_dir, \"report.json\")\n            args_mock = Mock(log='warning',\n                             config_path=None,\n                             path=[self.temp_dir_path],\n                             git=None,\n                             ref=None,\n                             diff_path=None,\n                             error=False,\n                             json_filename=json_filename,\n                             xlsx_filename=None,\n                             subtext=False,\n                             hashed=False,\n                             sort_output=True,\n                             rule_path=None,\n                             jobs=1,\n                             no_filters=False,\n                             log_config_path=None,\n                             ml_threshold=0,\n                             ml_batch_size=16,\n                             ml_config=None,\n                             ml_model=None,\n                             ml_providers=None,\n                             pedantic=False,\n                             depth=0,\n                             doc=False,\n                             size_limit=\"1G\",\n                             find_by_ext=False,\n                             denylist_path=None,\n                             severity=Severity.INFO.value)\n            mock_get_arguments.return_value = args_mock\n            self.assertEqual(EXIT_SUCCESS, main())\n            # no files in last commit\n            self.assertFalse(os.path.exists(json_filename))\n\n    @mock.patch(\"credsweeper.main.get_arguments\")\n    def test_git_p(self, mock_get_arguments) -> None:\n        with tempfile.TemporaryDirectory() as tmp_dir:\n            json_filename = os.path.join(tmp_dir, \"report.json\")\n            args_mock = Mock(log='warning',\n                             config_path=None,\n                             path=None,\n                             git=self.temp_dir_path,\n                             ref=\"b7b09c8cdec2904dbb6f77eec2aa6abaef975252\",\n                             diff_path=None,\n                             error=False,\n                             json_filename=json_filename,\n                             xlsx_filename=None,\n                             subtext=False,\n                             hashed=False,\n                             sort_output=True,\n                             rule_path=None,\n                             jobs=1,\n                             no_filters=False,\n                             log_config_path=None,\n                             ml_threshold=0,\n                             ml_batch_size=16,\n                             ml_config=None,\n                             ml_model=None,\n                             ml_providers=None,\n                             pedantic=False,\n                             depth=0,\n                             doc=False,\n                             size_limit=\"1G\",\n                             find_by_ext=False,\n                             denylist_path=None,\n                             severity=Severity.INFO.value)\n            mock_get_arguments.return_value = args_mock\n            self.assertEqual(EXIT_SUCCESS, main())\n\n            empty_report_filename = os.path.join(tmp_dir, \"report.b7b09c8cdec2904dbb6f77eec2aa6abaef975252.json\")\n            self.assertFalse(os.path.exists(empty_report_filename))\n\n            full_report_filename = os.path.join(tmp_dir, \"report.9d3df94e8257240aa2b98dee47dc17992c0b7476.json\")\n            self.assertTrue(os.path.exists(full_report_filename))\n            full_report = Util.json_load(full_report_filename)\n            self.assertLessEqual(1, len(full_report))\n"
  },
  {
    "path": "tests/test_main.py",
    "content": "import io\nimport logging\nimport os\nimport random\nimport shutil\nimport string\nimport tempfile\nimport unittest\nimport uuid\nfrom argparse import ArgumentTypeError\nfrom pathlib import Path\nfrom tarfile import ReadError\nfrom typing import List, Any, Dict\nfrom unittest import mock\nfrom unittest.mock import Mock, patch, call, ANY\n\nimport deepdiff  # type: ignore\nimport pandas as pd\nimport pytest\n\nfrom credsweeper.app import APP_PATH, CredSweeper\nfrom credsweeper.common.constants import ThresholdPreset, Severity, MIN_DATA_LEN\nfrom credsweeper.file_handler.abstract_provider import AbstractProvider\nfrom credsweeper.file_handler.byte_content_provider import ByteContentProvider\nfrom credsweeper.file_handler.files_provider import FilesProvider\nfrom credsweeper.file_handler.string_content_provider import StringContentProvider\nfrom credsweeper.file_handler.text_content_provider import TextContentProvider\nfrom credsweeper.main import EXIT_FAILURE, main, EXIT_SUCCESS, get_arguments, positive_int, threshold_or_float_or_zero\nfrom credsweeper.utils.util import Util\nfrom tests import SAMPLES_FILTERED_COUNT, SAMPLES_POST_CRED_COUNT, SAMPLES_PATH, TESTS_PATH, SAMPLES_IN_DEEP_1, \\\n    SAMPLES_IN_DEEP_3, SAMPLES_IN_DEEP_2, ZERO_ML_THRESHOLD, AZ_DATA, SAMPLE_HTML, SAMPLE_DOCX, SAMPLE_TAR, \\\n    SAMPLE_PY, SAMPLES_FILES_COUNT\nfrom tests.data import DATA_TEST_CFG\n\n\nclass TestMain(unittest.TestCase):\n\n    def setUp(self):\n        self.maxDiff = None\n\n    def tearDown(self):\n        pass\n\n    def test_ml_validation_p(self) -> None:\n        cred_sweeper = CredSweeper()\n        self.assertEqual(ThresholdPreset.medium, cred_sweeper.ml_threshold)\n\n    # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #\n\n    def test_ml_validation_n(self) -> None:\n        cred_sweeper = CredSweeper(ml_threshold=0)\n        self.assertEqual(0, cred_sweeper.ml_threshold)\n\n    # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #\n\n    def test_use_filters_p(self) -> None:\n        cred_sweeper = CredSweeper(use_filters=True)\n        files_provider = [TextContentProvider(SAMPLES_PATH / \"password_FALSE\")]\n        cred_sweeper.scan(files_provider)\n        creds = cred_sweeper.credential_manager.get_credentials()\n        self.assertEqual(0, len(creds))\n\n    # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #\n\n    def test_use_filters_n(self) -> None:\n        cred_sweeper = CredSweeper(use_filters=False)\n        files_provider = [TextContentProvider(SAMPLES_PATH / \"password_FALSE\")]\n        cred_sweeper.scan(files_provider)\n        creds = cred_sweeper.credential_manager.get_credentials()\n        self.assertEqual(3, len(creds))\n\n    # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #\n\n    def test_rules_dub_n(self) -> None:\n        with self.assertRaisesRegex(RuntimeError, r\"Wrong rules 'None' were read from 'NotExistedPath'\"):\n            CredSweeper(rule_path=\"NotExistedPath\")\n        with tempfile.TemporaryDirectory() as tmp_dir:\n            test_rules_file = os.path.join(tmp_dir, \"test_rules.yaml\")\n            dub_rules = [{\n                \"name\": \"TestRuleNameDub\",\n                \"severity\": \"high\",\n                \"confidence\": \"moderate\",\n                \"type\": \"pattern\",\n                \"min_line_len\": 42,\n                \"values\": [\"(?P<value>.*)\"],\n                \"target\": [\"code\"],\n            }, {\n                \"name\": \"TestRuleNameDub\",\n                \"severity\": \"high\",\n                \"confidence\": \"moderate\",\n                \"type\": \"pattern\",\n                \"min_line_len\": 42,\n                \"values\": [\"(?P<value>.*)\"],\n                \"target\": [\"code\", \"doc\"],\n            }]\n            Util.yaml_dump(dub_rules, test_rules_file)\n            with self.assertRaisesRegex(RuntimeError, r\"Duplicated rule name TestRuleNameDub\"):\n                CredSweeper(rule_path=test_rules_file)\n\n    # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #\n\n    def test_rules_dub_p(self) -> None:\n        with tempfile.TemporaryDirectory() as tmp_dir:\n            test_rules_file = os.path.join(tmp_dir, \"test_rules.yaml\")\n            dub_rules = [{\n                \"name\": \"TestRuleNameDub\",\n                \"severity\": \"high\",\n                \"confidence\": \"moderate\",\n                \"type\": \"pattern\",\n                \"min_line_len\": 42,\n                \"values\": [\"(?P<value>.*)\"],\n                \"target\": [\"code\"],\n            }, {\n                \"name\": \"TestRuleNameDub\",\n                \"severity\": \"high\",\n                \"confidence\": \"moderate\",\n                \"type\": \"pattern\",\n                \"min_line_len\": 42,\n                \"values\": [\"(?P<value>.*)\"],\n                \"target\": [\"doc\"],\n            }]\n            Util.yaml_dump(dub_rules, test_rules_file)\n            self.assertIsNotNone(CredSweeper(rule_path=test_rules_file))\n\n    # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #\n\n    @mock.patch(\"credsweeper.main.scan\", return_value=1)\n    @mock.patch(\"credsweeper.main.get_arguments\")\n    def test_main_n(self, mock_get_arguments, mock_scan) -> None:\n        args_mock = Mock(log='debug',\n                         path=\"mocked-scan\",\n                         diff_path=None,\n                         error=True,\n                         json_filename=None,\n                         xlsx_filename=None,\n                         stdout=False,\n                         color=False,\n                         rule_path=None,\n                         jobs=1)\n        mock_get_arguments.return_value = args_mock\n        self.assertEqual(EXIT_FAILURE, main())\n        self.assertTrue(mock_scan.called)\n\n    # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #\n\n    @mock.patch(\"credsweeper.main.get_arguments\")\n    def test_main_path_p(self, mock_get_arguments) -> None:\n        target_path = SAMPLES_PATH / \"password.patch\"\n        with tempfile.TemporaryDirectory() as tmp_dir:\n            args_mock = Mock(log='warning',\n                             path=None,\n                             config_path=None,\n                             diff_path=[str(target_path)],\n                             error=False,\n                             json_filename=Path(os.path.join(tmp_dir, f\"{__name__}.json\")),\n                             xlsx_filename=Path(os.path.join(tmp_dir, f\"{__name__}.xlsx\")),\n                             color=False,\n                             subtext=False,\n                             hashed=False,\n                             rule_path=None,\n                             jobs=1,\n                             ml_threshold=0,\n                             ml_batch_size=1,\n                             depth=0,\n                             doc=False,\n                             severity=Severity.INFO.value,\n                             size_limit=\"1G\",\n                             denylist_path=None)\n            mock_get_arguments.return_value = args_mock\n            self.assertEqual(EXIT_SUCCESS, main())\n            self.assertTrue(os.path.exists(os.path.join(tmp_dir, f\"{__name__}.xlsx\")))\n            self.assertTrue(os.path.exists(os.path.join(tmp_dir, f\"{__name__}.deleted.json\")))\n            self.assertTrue(os.path.exists(os.path.join(tmp_dir, f\"{__name__}.added.json\")))\n            report = Util.json_load(os.path.join(tmp_dir, f\"{__name__}.added.json\"))\n            self.assertTrue(report)\n            self.assertEqual(3, report[0][\"line_data_list\"][0][\"line_num\"])\n            self.assertEqual(\"dkajco1\", report[0][\"line_data_list\"][0][\"value\"])\n\n    # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #\n\n    @mock.patch(\"credsweeper.main.get_arguments\")\n    def test_binary_patch_p(self, mock_get_arguments) -> None:\n        # test verifies case when binary diff might be scanned\n        target_path = SAMPLES_PATH / \"multifile.patch\"\n        with tempfile.TemporaryDirectory() as tmp_dir:\n            args_mock = Mock(log='warning',\n                             path=None,\n                             config_path=None,\n                             diff_path=[str(target_path)],\n                             error=False,\n                             json_filename=os.path.join(tmp_dir, f\"{__name__}.json\"),\n                             xlsx_filename=None,\n                             subtext=False,\n                             hashed=False,\n                             sort_output=False,\n                             rule_path=None,\n                             jobs=1,\n                             ml_threshold=0,\n                             ml_batch_size=1,\n                             depth=9,\n                             doc=False,\n                             severity=Severity.INFO.value,\n                             size_limit=\"1G\",\n                             denylist_path=None)\n            mock_get_arguments.return_value = args_mock\n            self.assertEqual(EXIT_SUCCESS, main())\n            self.assertTrue(os.path.exists(os.path.join(tmp_dir, f\"{__name__}.deleted.json\")))\n            self.assertTrue(os.path.exists(os.path.join(tmp_dir, f\"{__name__}.added.json\")))\n            report = Util.json_load(os.path.join(tmp_dir, f\"{__name__}.added.json\"))\n            self.assertTrue(report)\n            self.assertEqual(5, len(report))\n\n    # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #\n\n    @mock.patch(\"credsweeper.main.get_arguments\")\n    def test_report_p(self, mock_get_arguments) -> None:\n        # verifies reports creations\n        with tempfile.TemporaryDirectory() as tmp_dir:\n            json_filename = os.path.join(tmp_dir, \"report.json\")\n            xlsx_filename = os.path.join(tmp_dir, \"report.xlsx\")\n            args_mock = Mock(log='warning',\n                             config_path=None,\n                             path=[str(SAMPLES_PATH)],\n                             diff_path=None,\n                             error=False,\n                             json_filename=json_filename,\n                             xlsx_filename=xlsx_filename,\n                             subtext=False,\n                             hashed=False,\n                             sort_output=True,\n                             rule_path=None,\n                             jobs=1,\n                             ml_threshold=0,\n                             ml_batch_size=16,\n                             ml_config=None,\n                             ml_model=None,\n                             ml_providers=None,\n                             pedantic=False,\n                             depth=0,\n                             doc=False,\n                             size_limit=\"1G\",\n                             find_by_ext=False,\n                             denylist_path=None,\n                             severity=Severity.INFO)\n            mock_get_arguments.return_value = args_mock\n            self.assertEqual(EXIT_SUCCESS, main())\n            self.assertTrue(os.path.exists(xlsx_filename))\n            self.assertTrue(os.path.exists(json_filename))\n            report = Util.json_load(json_filename)\n            self.assertTrue(report)\n            self.assertEqual(SAMPLES_FILTERED_COUNT, len(report))\n            self.assertIn(str(SAMPLES_PATH), report[0][\"line_data_list\"][0][\"path\"])\n            self.assertTrue(\"info\", report[0][\"line_data_list\"][0].keys())\n            for cred in report:\n                for line_data in cred[\"line_data_list\"]:\n                    # check correctness start-end position\n                    line = line_data[\"line\"]\n                    value = line_data[\"value\"]\n                    value_start = line_data[\"value_start\"]\n                    value_end = line_data[\"value_end\"]\n                    if 0 <= value_start and 0 <= value_end:\n                        self.assertEqual(value, line[line_data[\"value_start\"]:line_data[\"value_end\"]], cred)\n            df = pd.read_excel(xlsx_filename)\n            excel_report_delta_rows = 288\n            self.assertEqual(SAMPLES_FILTERED_COUNT + excel_report_delta_rows, len(df))\n\n    # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #\n\n    @mock.patch(\"argparse.ArgumentParser.parse_args\")\n    def test_parse_args_n(self, mock_parse) -> None:\n        self.assertTrue(get_arguments())\n        self.assertTrue(mock_parse.called)\n\n    # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #\n\n    def test_positive_int_p(self):\n        i = random.randint(1, 100)\n        self.assertEqual(positive_int(i), i)\n\n    # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #\n\n    def test_positive_int_n(self):\n        i = random.randint(-100, 0)\n        with pytest.raises(ArgumentTypeError):\n            positive_int(i)\n\n    # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #\n\n    def test_threshold_or_float_or_zero_p(self):\n        f = random.random()\n        self.assertEqual(f, threshold_or_float_or_zero(str(f)))\n        self.assertIsInstance(threshold_or_float_or_zero('0'), int)\n\n    # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #\n\n    def test_threshold_or_float_or_zero_n(self):\n        with pytest.raises(ArgumentTypeError):\n            threshold_or_float_or_zero(\"DUMMY STRING\")\n\n    # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #\n\n    def test_wrong_severity_n(self) -> None:\n        with self.assertRaises(RuntimeError):\n            CredSweeper(severity=\"wrong\")\n\n    # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #\n\n    def test_scan_bytes_p(self) -> None:\n        to_scan = b\"line one\\npassword='in_line_2'\"\n        cred_sweeper = CredSweeper()\n        provider = ByteContentProvider(to_scan)\n        results = cred_sweeper.file_scan(provider)\n        self.assertEqual(1, len(results))\n        self.assertEqual(\"Password\", results[0].rule_name)\n        self.assertEqual(\"password\", results[0].line_data_list[0].variable)\n        self.assertEqual(\"in_line_2\", results[0].line_data_list[0].value)\n\n    # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #\n\n    def test_scan_bytes_n(self) -> None:\n        to_scan = \"line one\\npassword='in_line_2'\".encode('utf-32')  # unsupported\n        cred_sweeper = CredSweeper()\n        provider = ByteContentProvider(to_scan)\n        results = cred_sweeper.file_scan(provider)\n        self.assertEqual(0, len(results))\n\n    # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #\n\n    def test_colored_line_p(self) -> None:\n        cred_sweeper = CredSweeper()\n        for to_scan in (\n                \"토큰MTAwMDoxVKvgS4Y7K7UIXHqBmV50aWFs5sb2heWGb3dy사용\".encode(),\n                b'\\x1b[93mMTAwMDoxVKvgS4Y7K7UIXHqBmV50aWFs5sb2heWGb3dy\\x1b[0m',\n                b'\\r\\nMTAwMDoxVKvgS4Y7K7UIXHqBmV50aWFs5sb2heWGb3dy\\r\\n',\n                b'\\tMTAwMDoxVKvgS4Y7K7UIXHqBmV50aWFs5sb2heWGb3dy\\n',\n                b'%3DMTAwMDoxVKvgS4Y7K7UIXHqBmV50aWFs5sb2heWGb3dy%3B',\n        ):\n            provider = ByteContentProvider(to_scan)\n            results = cred_sweeper.file_scan(provider)\n            self.assertEqual(1, len(results), to_scan)\n            self.assertEqual(\"Jira / Confluence PAT token\", results[0].rule_name)\n            self.assertEqual(\"MTAwMDoxVKvgS4Y7K7UIXHqBmV50aWFs5sb2heWGb3dy\", results[0].line_data_list[0].value)\n\n    # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #\n\n    def test_string_content_provider_n(self) -> None:\n        random.seed(42)\n        ascii_chars = string.digits + string.ascii_letters + string.punctuation + ' '\n        text = ''.join(random.choice(ascii_chars) for _ in range(1 << 20))  # 1Mb dummy text\n        cred_sweeper = CredSweeper()\n        provider = StringContentProvider([text])\n        results = cred_sweeper.file_scan(provider)\n        self.assertAlmostEqual(14, len(results), delta=7)  # various lines may look like tokens\n\n    # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #\n\n    def test_find_by_ext_and_not_ignore_p(self) -> None:\n        # checks only exact match (may be wrong for windows)\n        config_dict = Util.json_load(APP_PATH / \"secret\" / \"config.json\")\n        self.assertTrue(config_dict)\n        find_by_ext_list_items = config_dict[\"find_by_ext_list\"]\n        self.assertTrue(isinstance(find_by_ext_list_items, list))\n        find_by_ext_list_set = set(find_by_ext_list_items)\n        self.assertTrue(len(find_by_ext_list_items) > 0)\n        # check whether ignored extension does not exist in find_by_ext_list\n        exclude_extension_items = config_dict[\"exclude\"][\"extension\"]\n        self.assertTrue(isinstance(exclude_extension_items, list))\n        extension_conflict = find_by_ext_list_set.intersection(exclude_extension_items)\n        self.assertSetEqual(set(), extension_conflict)\n        # check whether ignored container does not exist in find_by_ext_list\n        exclude_containers_items = config_dict[\"exclude\"][\"containers\"]\n        self.assertTrue(isinstance(exclude_containers_items, list))\n        containers_conflict = find_by_ext_list_set.intersection(exclude_containers_items)\n        self.assertSetEqual(set(), containers_conflict)\n        # check whether extension and containers have no duplicates\n        containers_extension_conflict = set(exclude_extension_items).intersection(exclude_containers_items)\n        self.assertSetEqual(set(), containers_extension_conflict)\n\n    # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #\n\n    def test_multi_jobs_n(self) -> None:\n        logging.getLogger().setLevel(level=logging.INFO)\n        with tempfile.TemporaryDirectory() as tmp_dir:\n            # one file will be sent to single job\n            content_provider: AbstractProvider = FilesProvider([tmp_dir])\n            cred_sweeper = CredSweeper(pool_count=7)\n            # empty dir returns nothing\n            with patch('logging.Logger.info') as mocked_logger:\n                cred_sweeper.run(content_provider=content_provider)\n                self.assertEqual(0, cred_sweeper.credential_manager.len_credentials())\n                mocked_logger.assert_called_with(\"No scannable targets for %s paths\", 1)\n            # one dummy file without credentials\n            with open(os.path.join(tmp_dir, \"dummy\"), \"wb\") as f:\n                f.write(AZ_DATA)\n            with patch('logging.Logger.info') as mocked_logger:\n                cred_sweeper.run(content_provider=content_provider)\n                self.assertEqual(0, cred_sweeper.credential_manager.len_credentials())\n                mocked_logger.assert_has_calls([\n                    call(\"Scan for %s providers\", 1),\n                    call(\"Completed: processed %s providers with %s candidates\", 1, 0),\n                    call(\"Skip ML validation because no candidates were found\"),\n                    call(\"Exporting %s credentials\", 0)\n                ])\n\n    # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #\n\n    def test_multi_jobs_p(self) -> None:\n        logging.getLogger().setLevel(level=logging.INFO)\n        # samples dir - many providers\n        cred_sweeper = CredSweeper(pool_count=3)\n        with patch('logging.Logger.info') as mocked_logger:\n            cred_sweeper.run(content_provider=FilesProvider([SAMPLES_PATH]))\n            mocked_logger.assert_has_calls([\n                call(\"Scan in %s processes for %s providers\", 3, SAMPLES_FILES_COUNT - 23),\n                call(\"Grouping %s candidates\", SAMPLES_FILTERED_COUNT),\n                ANY,  # Run ML Validation for \\d+ groups\n                ANY,  # initial ML with various arguments, cannot predict\n                call(\"Exporting %s credentials\", SAMPLES_POST_CRED_COUNT),\n            ])\n        self.assertEqual(SAMPLES_POST_CRED_COUNT, cred_sweeper.credential_manager.len_credentials())\n        cred_sweeper.credential_manager.clear_credentials()\n        self.assertEqual(0, cred_sweeper.credential_manager.len_credentials())\n        # each file as provider\n        content_provider = FilesProvider([x for x in SAMPLES_PATH.glob(\"**/*\")])\n        with patch('logging.Logger.info') as mocked_logger:\n            cred_sweeper.run(content_provider=content_provider)\n            mocked_logger.assert_has_calls([\n                call(f\"Scan in %s processes for %s providers\", 3, SAMPLES_FILES_COUNT - 23),\n                call(f\"Grouping %s candidates\", SAMPLES_FILTERED_COUNT),\n                ANY,  # Run ML Validation for \\d+ groups\n                # no init\n                call(f\"Exporting %s credentials\", SAMPLES_POST_CRED_COUNT),\n            ])\n        self.assertEqual(SAMPLES_POST_CRED_COUNT, cred_sweeper.credential_manager.len_credentials())\n\n    # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #\n\n    def test_find_by_ext_n(self) -> None:\n        # test for finding files by extension\n        with tempfile.TemporaryDirectory() as tmp_dir:\n            ext_list = [\".pem\", \".cer\", \".csr\", \".der\", \".pfx\", \".p12\", \".key\", \".jks\"]\n            for ext in ext_list:\n                with open(os.path.join(tmp_dir, f\"dummy{ext}\"), \"wb\") as f:\n                    f.write(b'\\x00' * MIN_DATA_LEN)\n                with open(os.path.join(tmp_dir, f\"short{ext}\"), \"wb\") as f:\n                    f.write(b'\\x00' * (MIN_DATA_LEN - 1))\n                with open(os.path.join(tmp_dir, f\"dummy{ext}.bak\"), \"wb\") as f:\n                    f.write(AZ_DATA)\n            content_provider: AbstractProvider = FilesProvider([tmp_dir])\n            cred_sweeper = CredSweeper(find_by_ext=True)\n            cred_sweeper.run(content_provider=content_provider)\n            credentials = cred_sweeper.credential_manager.get_credentials()\n            self.assertEqual(len(ext_list), len(credentials))\n            self.assertTrue(all(\"Suspicious File Extension\" == x.rule_name for x in credentials))\n            # aux checks - only 1/3 of all files will be found by extension\n            test_files_number = len(os.listdir(tmp_dir))\n            self.assertEqual(len(ext_list), test_files_number // 3)\n\n    # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #\n\n    def test_tar_n(self) -> None:\n        content_provider: AbstractProvider = FilesProvider([SAMPLE_TAR])\n        cred_sweeper = CredSweeper(depth=0)\n        cred_sweeper.run(content_provider=content_provider)\n        self.assertEqual(0, cred_sweeper.credential_manager.len_credentials())\n\n    # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #\n\n    def test_tar_p(self) -> None:\n        content_provider: AbstractProvider = FilesProvider([SAMPLE_TAR])\n        cred_sweeper = CredSweeper(depth=1)\n        cred_sweeper.run(content_provider=content_provider)\n        self.assertEqual(1, cred_sweeper.credential_manager.len_credentials())\n\n    # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #\n\n    def test_bad_tar_n(self) -> None:\n        # test for bad tar - throws exception\n        bad_tar_sample = SAMPLES_PATH / \"bad.tar.bz2\"\n        content_provider: AbstractProvider = FilesProvider([bad_tar_sample])\n        cred_sweeper = CredSweeper(depth=2)\n        with patch(\"logging.Logger.warning\") as mocked_logger:\n            cred_sweeper.run(content_provider=content_provider)\n            self.assertEqual(0, cred_sweeper.credential_manager.len_credentials())\n            mocked_logger.assert_called_with(\"%s:%s\", bad_tar_sample.as_posix()[:-4], ANY)\n            args, _ = mocked_logger.call_args\n            self.assertIsInstance(args[2], ReadError)\n            self.assertEqual(\"unexpected end of data\", str(args[2]))\n\n    # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #\n\n    def test_png_p(self) -> None:\n        content_provider: AbstractProvider = FilesProvider([SAMPLES_PATH / \"sample.png\"])\n        cred_sweeper = CredSweeper(depth=3, pedantic=True)\n        cred_sweeper.run(content_provider=content_provider)\n        self.assertEqual(4, cred_sweeper.credential_manager.len_credentials())\n\n    # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #\n\n    def test_aws_multi_p(self) -> None:\n        content_provider: AbstractProvider = FilesProvider([SAMPLES_PATH / \"aws_multi.md\"])\n        cred_sweeper = CredSweeper(ml_threshold=0, color=True, hashed=True)\n        cred_sweeper.run(content_provider=content_provider)\n        for i in cred_sweeper.credential_manager.get_credentials():\n            if \"AWS Multi\" == i.rule_name:\n                self.assertEqual(7, i.line_data_list[0].line_num)\n                self.assertEqual(8, i.line_data_list[1].line_num)\n                break\n        else:\n            self.fail(\"AWS Multi was not found\")\n\n    # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #\n\n    def test_depth_p(self) -> None:\n        # test for finding files with --depth\n        content_provider: AbstractProvider = FilesProvider([SAMPLES_PATH])\n        cred_sweeper = CredSweeper(depth=1)\n        cred_sweeper.run(content_provider=content_provider)\n        self.assertEqual(SAMPLES_IN_DEEP_1, cred_sweeper.credential_manager.len_credentials())\n        cred_sweeper.config.depth = 2\n        cred_sweeper.run(content_provider=content_provider)\n        self.assertEqual(SAMPLES_IN_DEEP_2, cred_sweeper.credential_manager.len_credentials())\n        cred_sweeper.config.depth = 3\n        cred_sweeper.run(content_provider=content_provider)\n        self.assertEqual(SAMPLES_IN_DEEP_3, cred_sweeper.credential_manager.len_credentials())\n\n    # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #\n\n    def test_depth_n(self) -> None:\n        content_provider: AbstractProvider = FilesProvider([SAMPLES_PATH])\n        cred_sweeper = CredSweeper(depth=0)\n        cred_sweeper.run(content_provider=content_provider)\n        self.assertEqual(SAMPLES_POST_CRED_COUNT, cred_sweeper.credential_manager.len_credentials())\n\n    # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #\n\n    def test_bzip2_p(self) -> None:\n        # test for finding files by extension\n        content_provider: AbstractProvider = FilesProvider([SAMPLES_PATH / \"pem_key.bz2\"])\n        cred_sweeper = CredSweeper(depth=1)\n        cred_sweeper.run(content_provider=content_provider)\n        self.assertEqual(1, cred_sweeper.credential_manager.len_credentials())\n\n    # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #\n\n    def test_bzip2_n(self) -> None:\n        with tempfile.TemporaryDirectory() as tmp_dir:\n            test_filename = os.path.join(tmp_dir, __name__)\n            self.assertFalse(os.path.exists(test_filename))\n            with open(test_filename, \"wb\") as f:\n                f.write(b\"\\x42\\x5A\\x68\\x35\\x31\\x41\\x59\\x26\\x53\\x59\")\n            content_provider: AbstractProvider = FilesProvider([test_filename])\n            cred_sweeper = CredSweeper(depth=1)\n            with patch('logging.Logger.warning') as mocked_logger:\n                cred_sweeper.run(content_provider=content_provider)\n                mocked_logger.assert_called_with(\"%s:%s\", test_filename, ANY)\n                args, _ = mocked_logger.call_args\n                self.assertIsInstance(args[2], ValueError)\n                self.assertEqual(\"Compressed data ended before the end-of-stream marker was reached\", str(args[2]))\n            self.assertEqual(0, cred_sweeper.credential_manager.len_credentials())\n\n    # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #\n\n    def test_eml_p(self) -> None:\n        content_provider: AbstractProvider = FilesProvider([SAMPLES_PATH / \"test.eml\"])\n        cred_sweeper = CredSweeper(doc=True, ml_threshold=ZERO_ML_THRESHOLD)\n        cred_sweeper.run(content_provider=content_provider)\n        found_credentials = cred_sweeper.credential_manager.get_credentials()\n        self.assertLessEqual(1, len(found_credentials), found_credentials)\n        self.assertEqual(\"PW: H1ddEn#ema1l\", found_credentials[0].line_data_list[0].line)\n\n    # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #\n\n    def test_pdf_p(self) -> None:\n        # may be tested with\n        # https://www.dcc.edu/documents/administration/offices/information-technology/password-examples.pdf\n        content_provider: AbstractProvider = FilesProvider([SAMPLES_PATH / \"sample.pdf\"])\n        cred_sweeper = CredSweeper(depth=7, ml_threshold=ZERO_ML_THRESHOLD)\n        cred_sweeper.run(content_provider=content_provider)\n        found_credentials = cred_sweeper.credential_manager.get_credentials()\n        self.assertSetEqual({\"Password\", \"Token\", \"Github Classic Token\"}, set(i.rule_name for i in found_credentials))\n        self.assertSetEqual(\n            {\"Xdj@jcN834b\", \"bace4d31-fa7e-beef-cafe-912947cbe28\", \"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\"},\n            set(i.line_data_list[0].value for i in found_credentials))\n\n    # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #\n\n    def test_pdf_n(self) -> None:\n        content_provider: AbstractProvider = FilesProvider([SAMPLES_PATH / \"sample.pdf\"])\n        cred_sweeper = CredSweeper()\n        cred_sweeper.run(content_provider=content_provider)\n        self.assertEqual(0, cred_sweeper.credential_manager.len_credentials())\n\n    # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #\n\n    def test_py_n(self) -> None:\n        content_provider: AbstractProvider = FilesProvider([SAMPLE_PY])\n        cred_sweeper = CredSweeper(severity=Severity.LOW, ml_threshold=0)\n        cred_sweeper.run(content_provider=content_provider)\n        self.assertEqual(0, cred_sweeper.credential_manager.len_credentials())\n\n    # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #\n\n    def test_py_p(self) -> None:\n        content_provider: AbstractProvider = FilesProvider([SAMPLE_PY])\n        cred_sweeper = CredSweeper(severity=Severity.LOW, ml_threshold=0, depth=1)\n        cred_sweeper.run(content_provider=content_provider)\n        found_credentials = cred_sweeper.credential_manager.get_credentials()\n        expected_credentials = [{\n            'rul': 'API',\n            'val': '223, 66, 216, 52, 221, 30, 216, 36, 216, 55, 216, 1, 216, 82, 223, 98',\n            'var': 'API_SECRET_KEY'\n        }, {\n            'rul': 'API',\n            'val': 'a3f1ef0ff53236141253c0372',\n            'var': 'SECRET_CREDENTIAL_API_KEY'\n        }, {\n            'rul': 'Auth',\n            'val': '223, 66, 216, 52, 221, 30, 216, 36, 216, 55, 216, 1, 216, 82, 223, 98',\n            'var': 'AUTH_SECRET_NONCE'\n        }, {\n            'rul': 'Auth',\n            'val': 'Hbr73gu7gdsr==',\n            'var': 'AUTH'\n        }, {\n            'rul': 'Auth',\n            'val': 'RlQ8MGlWH8Hn1TrHn6WBfy31EhIIJmBsuUBOU8H2AJ6KnJC0L3djWHaqhDTZTth',\n            'var': 'AUTH_CREDENTIAL_SECRET'\n        }, {\n            'rul': 'Auth',\n            'val': '\\\\t8ab20238fb3ef48823e75469b5712d3f0baf2e58\\\\r\\\\n',\n            'var': 'X_Auth_Tokens'\n        }, {\n            'rul': 'Credential',\n            'val': 'RlQ8MGlWH8Hn1TrHn6WBfy31EhIIJmBsuUBOU8H2AJ6KnJC0L3djWHaqhDTZTth',\n            'var': 'AUTH_CREDENTIAL_SECRET'\n        }, {\n            'rul': 'Credential',\n            'val': 'a3f1ef0ff53236141253c0372',\n            'var': 'SECRET_CREDENTIAL_API_KEY'\n        }, {\n            'rul': 'Key',\n            'val': '223, 66, 216, 52, 221, 30, 216, 36, 216, 55, 216, 1, 216, 82, 223, 98',\n            'var': 'API_SECRET_KEY'\n        }, {\n            'rul': 'Key',\n            'val': 'a3f1ef0ff53236141253c0372',\n            'var': 'SECRET_CREDENTIAL_API_KEY'\n        }, {\n            'rul': 'Nonce',\n            'val': '223, 66, 216, 52, 221, 30, 216, 36, 216, 55, 216, 1, 216, 82, 223, 98',\n            'var': 'AUTH_SECRET_NONCE'\n        }, {\n            'rul': 'Password',\n            'val': '\\\\udf42\\\\ud834\\\\udd1e\\\\ud824\\\\ud837\\\\ud801\\\\ud852\\\\udf62',\n            'var': 'PASSWORD'\n        }, {\n            'rul': 'Salt',\n            'val': '\\\\xdf42\\\\xd834\\\\xdd1E\\\\xd824\\\\xd837\\\\xd801\\\\xd852\\\\xdf62',\n            'var': 'SALT'\n        }, {\n            'rul': 'Secret',\n            'val': '223, 66, 216, 52, 221, 30, 216, 36, 216, 55, 216, 1, 216, 82, 223, 98',\n            'var': 'API_SECRET_KEY'\n        }, {\n            'rul': 'Secret',\n            'val': '223, 66, 216, 52, 221, 30, 216, 36, 216, 55, 216, 1, 216, 82, 223, 98',\n            'var': 'AUTH_SECRET_NONCE'\n        }, {\n            'rul': 'Secret',\n            'val': 'R15br4jtfcFbWh9G7EZTb6jR12c9We',\n            'var': 'SECRET'\n        }, {\n            'rul': 'Secret',\n            'val': 'RlQ8MGlWH8Hn1TrHn6WBfy31EhIIJmBsuUBOU8H2AJ6KnJC0L3djWHaqhDTZTth',\n            'var': 'AUTH_CREDENTIAL_SECRET'\n        }, {\n            'rul': 'Secret',\n            'val': 'a3f1ef0ff53236141253c0372',\n            'var': 'SECRET_CREDENTIAL_API_KEY'\n        }, {\n            'rul': 'Token',\n            'val': '1102181139266001652353292050',\n            'var': 'TOKEN'\n        }, {\n            'rul': 'Token',\n            'val': '\\\\t8ab20238fb3ef48823e75469b5712d3f0baf2e58\\\\r\\\\n',\n            'var': 'X_Auth_Tokens'\n        }]\n        expected_credentials.sort(key=lambda x: (x[\"rul\"], x[\"val\"], x[\"var\"]))\n        actual_credentials = [  #\n            {\n                \"rul\": i.rule_name,\n                \"val\": i.line_data_list[0].value,\n                \"var\": i.line_data_list[0].variable\n            }  #\n            for i in found_credentials\n        ]\n        actual_credentials.sort(key=lambda x: (x[\"rul\"], x[\"val\"], x[\"var\"]))\n        self.assertListEqual(expected_credentials, actual_credentials)\n\n    # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #\n\n    def test_json_p(self) -> None:\n        # test for finding credentials in JSON\n        content_provider: AbstractProvider = FilesProvider([SAMPLES_PATH / \"struct.json\"])\n        cred_sweeper = CredSweeper(depth=5)\n        cred_sweeper.run(content_provider=content_provider)\n        found_credentials = cred_sweeper.credential_manager.get_credentials()\n        self.assertEqual(1, len(found_credentials))\n        self.assertSetEqual({\"Password\"}, set(i.rule_name for i in found_credentials))\n        self.assertSetEqual({\"Axt4T0eO0lm9sS==\"}, set(i.line_data_list[0].value for i in found_credentials))\n\n    # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #\n\n    def test_json_n(self) -> None:\n        # test to prove that no credentials are found without depth\n        content_provider: AbstractProvider = FilesProvider([SAMPLES_PATH / \"struct.json\"])\n        cred_sweeper = CredSweeper()\n        cred_sweeper.run(content_provider=content_provider)\n        found_credentials = cred_sweeper.credential_manager.get_credentials()\n        self.assertEqual(0, len(found_credentials))\n\n    # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #\n\n    def test_yaml_p(self) -> None:\n        # test for finding credentials in YAML\n        content_provider: AbstractProvider = FilesProvider([SAMPLES_PATH / \"binary.yml\"])\n        cred_sweeper = CredSweeper(depth=5)\n        cred_sweeper.run(content_provider=content_provider)\n        found_credentials = cred_sweeper.credential_manager.get_credentials()\n        self.assertEqual(2, len(found_credentials))\n        self.assertSetEqual({\"Secret\", \"PEM Private Key\"}, set(i.rule_name for i in found_credentials))\n        self.assertSetEqual({\"we5345d0f3da48544z1t1e275y05i161x995q485\", \"-----BEGIN RSA PRIVATE KEY-----\"},\n                            set(i.line_data_list[0].value for i in found_credentials))\n\n    # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #\n\n    def test_yaml_n(self) -> None:\n        # test to prove that no credentials are found without depth\n        content_provider: AbstractProvider = FilesProvider([SAMPLES_PATH / \"binary.yml\"])\n        cred_sweeper = CredSweeper()\n        cred_sweeper.run(content_provider=content_provider)\n        found_credentials = cred_sweeper.credential_manager.get_credentials()\n        self.assertEqual(0, len(found_credentials))\n\n    # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #\n\n    def test_encoded_p(self) -> None:\n        # test for finding credentials in ENCODED data\n        content_provider: AbstractProvider = FilesProvider([SAMPLES_PATH / \"encoded_data\"])\n        cred_sweeper = CredSweeper(depth=5, ml_threshold=0, color=True, subtext=True)\n        cred_sweeper.run(content_provider=content_provider)\n        found_credentials = cred_sweeper.credential_manager.get_credentials()\n        self.assertEqual(1, len(found_credentials))\n        self.assertSetEqual({\"Token\"}, set(i.rule_name for i in found_credentials))\n        self.assertEqual(\"gireogicracklecrackle1231567190113413981\", found_credentials[0].line_data_list[0].value)\n\n    # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #\n\n    def test_docx_p(self) -> None:\n        # test for finding credentials in docx\n        content_provider: AbstractProvider = FilesProvider([SAMPLE_DOCX])\n        cred_sweeper = CredSweeper(doc=True)\n        cred_sweeper.run(content_provider=content_provider)\n        found_credentials = cred_sweeper.credential_manager.get_credentials()\n        expected_credential_lines = {\n            \"second line bace4d11-a002-be1a-c3fe-9829474b5d84\",\n            \"first_page_header bace4d11-f001-beea-c3fe-9829474b5d84\",\n            \"2 Second page header bace4d19-b002-beda-cafe-0929375bcd82\",\n            \"New page first line bace4d19-b001-b3e2-eac1-9129474bcd84\",\n            \"Next page section bace4d19-c001-b3e2-eac1-9129474bcd84\",\n            \"last page  bace4d11-a003-be2a-c3fe-9829474b5d84\",\n            \"First line bace4d11-a001-be1a-c3fe-9829474b5d84\",\n            \"Default footer bace4119-f002-bdef-dafe-9129474bcd89\",\n            \"next line in section bace4d19-c001-b3e2-eac1-9129474bcd84\",\n            \"Third page header bace4d19-b003-beda-cafe-0929375bcd82\",\n            \"Section R2C2 b5c6471d-a2b2-b4ef-ca5e-9121476bc881\",\n            \"Innner cell bace4d11-b003-be1a-c3fe-9829474b5d84\",\n        }\n        found_lines_set = set(x.line_data_list[0].line for x in found_credentials)\n        self.assertSetEqual(expected_credential_lines, found_lines_set)\n\n    # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #\n\n    def test_docx_n(self) -> None:\n        # test docx  - no credential should be found without 'doc'\n        content_provider: AbstractProvider = FilesProvider([SAMPLE_DOCX])\n        cred_sweeper = CredSweeper(doc=False)\n        cred_sweeper.run(content_provider=content_provider)\n        found_credentials = cred_sweeper.credential_manager.get_credentials()\n        self.assertEqual(0, len(found_credentials))\n\n    # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #\n\n    def test_html_p(self) -> None:\n        # test for finding credentials in html\n        content_provider: AbstractProvider = FilesProvider([SAMPLE_HTML])\n        cred_sweeper = CredSweeper(depth=5, ml_threshold=0, severity=Severity.LOW)\n        cred_sweeper.run(content_provider=content_provider)\n        found_credentials = cred_sweeper.credential_manager.get_credentials()\n        expected_credential_lines = {\n            \"508627689:AAEuLPKs-EhrjrYGnz60bnYNZqakf6HJxc0\",\n            \"secret : Ndjbwu88s22ygavsdhgt5454v3h1x\",\n            \"password : Cr3DeHTbIal\",\n            \"password : 0dm1nk0\",\n            \"password : p@$$w0Rd42\",\n            \"secret : BNbNbws73bdhss329ssakKhds120384\",\n            \"token : H72gsdv2dswPneHduwhfd\",\n            \"td : Password:            MU$T6Ef09#D!\",\n            \"# 94 ya29.dshMb48ehfXwydAj34D32J\",\n            \"# 95 dop_v1_425522a565f532bc6532d453422e50334a42f5242a3090fbe553b543b124259b\",\n            \"the line will be found twice # 100\"\n            \" EAACEb00Kse0BAlGy7KeQ5YnaCEd09Eose0cBAlGy7KeQ5Yna9CoDsup39tiYdoQ4jH9Coup39tiYdWoQ4jHFZD\",\n            \"ALTER\\tUSER\\tdetector\\tIDENTIFIED\\tBY\\tSqLpa5sW0rD4;\",\n        }\n        found_lines_set = set(x.line_data_list[0].line for x in found_credentials)\n        self.assertSetEqual(expected_credential_lines, found_lines_set)\n\n    # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #\n\n    def test_html_n(self) -> None:\n        # test_html  - no credential should be found without 'depth'\n        content_provider: AbstractProvider = FilesProvider([SAMPLE_HTML])\n        cred_sweeper = CredSweeper(severity=Severity.LOW)\n        cred_sweeper.run(content_provider=content_provider)\n        found_credentials = cred_sweeper.credential_manager.get_credentials()\n        self.assertListEqual([], found_credentials)\n\n    # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #\n    def test_exclude_value_p(self) -> None:\n        cred_sweeper = CredSweeper(use_filters=True, exclude_values=[\"cackle!\"])\n        files = [SAMPLES_PATH / \"password.gradle\"]\n        files_provider = [TextContentProvider(file_path) for file_path in files]\n        cred_sweeper.scan(files_provider)\n        self.assertEqual(0, cred_sweeper.credential_manager.len_credentials())\n\n    # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #\n\n    def test_exclude_value_n(self) -> None:\n        cred_sweeper = CredSweeper(use_filters=True, exclude_values=[\"abc\"])\n        files = [SAMPLES_PATH / \"password.gradle\"]\n        files_provider = [TextContentProvider(file_path) for file_path in files]\n        cred_sweeper.scan(files_provider)\n        self.assertEqual(1, cred_sweeper.credential_manager.len_credentials())\n\n    # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #\n\n    def test_exclude_line_p(self) -> None:\n        cred_sweeper = CredSweeper(use_filters=True, exclude_lines=['password = \"cackle!\"'])\n        files = [SAMPLES_PATH / \"password.gradle\"]\n        files_provider = [TextContentProvider(file_path) for file_path in files]\n        cred_sweeper.scan(files_provider)\n        self.assertEqual(0, cred_sweeper.credential_manager.len_credentials())\n\n    # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #\n\n    def test_exclude_line_n(self) -> None:\n        cred_sweeper = CredSweeper(use_filters=True, exclude_lines=[\"abc\"])\n        files = [SAMPLES_PATH / \"password.gradle\"]\n        files_provider = [TextContentProvider(file_path) for file_path in files]\n        cred_sweeper.scan(files_provider)\n        self.assertEqual(1, cred_sweeper.credential_manager.len_credentials())\n\n    # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #\n\n    def test_doc_p(self) -> None:\n        content_provider: AbstractProvider = FilesProvider([SAMPLE_HTML])\n        cred_sweeper = CredSweeper(doc=True, severity=Severity.LOW)\n        cred_sweeper.run(content_provider=content_provider)\n        found_credentials = cred_sweeper.credential_manager.get_credentials()\n        expected_credential_values = {\n            \"508627689:AAEuLPKs-EhrjrYGnz60bnYNZqakf6HJxc0\",\n            \"ya29.dshMb48ehfXwydAj34D32J\",\n            \"dop_v1_425522a565f532bc6532d453422e50334a42f5242a3090fbe553b543b124259b\",\n            \"EAACEb00Kse0BAlGy7KeQ5YnaCEd09Eose0cBAlGy7KeQ5Yna9CoDsup39tiYdoQ4jH9Coup39tiYdWoQ4jHFZD\",\n            \"MU$T6Ef09#D!\",\n            \"SqLpa5sW0rD4\",\n        }\n        self.assertSetEqual(expected_credential_values, set(x.line_data_list[0].value for x in found_credentials))\n\n    # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #\n\n    def test_doc_n(self) -> None:\n        content_provider: AbstractProvider = FilesProvider([SAMPLE_HTML])\n        cred_sweeper = CredSweeper(doc=False, severity=Severity.LOW)\n        cred_sweeper.run(content_provider=content_provider)\n        found_credentials = cred_sweeper.credential_manager.get_credentials()\n        self.assertListEqual([], found_credentials)\n\n    # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #\n\n    def test_fallback_n(self) -> None:\n        data_line = b'''<html><body>\n        <ac:link><ri:user ri:userkey=\"1234567890qwertyuiopasdfghjklzxc\" /></ac:link>\n        </body></html>'''\n        content_provider: AbstractProvider = FilesProvider([io.BytesIO(data_line)])\n        cred_sweeper = CredSweeper(doc=True, use_filters=False, ml_threshold=0, color=True)\n        cred_sweeper.run(content_provider=content_provider)\n        creds = cred_sweeper.credential_manager.get_credentials()\n        self.assertListEqual([], creds)\n\n    # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #\n\n    def test_data_p(self) -> None:\n        # the test modifies data/xxx.json with actual result - it discloses impact of changes obviously\n        # use git diff to review the changes\n        def prepare(report: List[Dict[str, Any]]):\n            for x in report:\n                # round ml_probability for macos\n                ml_probability = x[\"ml_probability\"]\n                if isinstance(ml_probability, float):\n                    x[\"ml_probability\"] = round(ml_probability, 3)\n                for y in x[\"line_data_list\"]:\n                    # update windows style path\n                    y[\"path\"] = str(y[\"path\"]).replace('\\\\', '/')\n                    y[\"info\"] = str(y[\"info\"]).replace('\\\\', '/')\n                    # use relative path to project\n                    y[\"path\"] = str(y[\"path\"]).replace(TESTS_PATH.as_posix(), './tests')\n                    y[\"info\"] = str(y[\"info\"]).replace(TESTS_PATH.as_posix(), './tests')\n                x[\"line_data_list\"].sort(key=lambda k: (\n                    k[\"path\"],\n                    k[\"line_num\"],\n                    k[\"value\"],\n                    k[\"info\"],\n                    k[\"line\"],\n                    k[\"value_start\"],\n                    k[\"value_end\"],\n                ))\n            report.sort(key=lambda k: (\n                k[\"line_data_list\"][0][\"path\"],\n                k[\"line_data_list\"][0][\"line_num\"],\n                k[\"line_data_list\"][0][\"value\"],\n                k[\"line_data_list\"][0][\"info\"],\n                k[\"line_data_list\"][0][\"value_start\"],\n                k[\"line_data_list\"][0][\"value_end\"],\n                k[\"severity\"],\n                k[\"rule\"],\n                k[\"ml_probability\"],\n            ))\n\n        # instead the config file is used\n        for cfg in DATA_TEST_CFG:\n            with tempfile.TemporaryDirectory() as tmp_dir:\n                expected_report = TESTS_PATH / \"data\" / cfg[\"json_filename\"]\n                expected_result = Util.json_load(expected_report)\n                # informative parameter, relative with other tests counters. CredSweeper does not know it and fails\n                cred_count = cfg.pop(\"__cred_count\")\n                prepare(expected_result)\n                tmp_file = Path(tmp_dir) / cfg[\"json_filename\"]\n                # apply the current path to keep equivalence in path\n                content_provider: AbstractProvider = FilesProvider([SAMPLES_PATH])\n                # replace output report file to place in tmp_dir\n                cfg[\"json_filename\"] = str(tmp_file)\n                cred_sweeper = CredSweeper(**cfg)\n                cred_sweeper.run(content_provider=content_provider)\n                test_result = Util.json_load(tmp_file)\n                prepare(test_result)\n                # use the same dump as in output\n                Util.json_dump(test_result, tmp_file)\n\n                diff = deepdiff.DeepDiff(test_result, expected_result)\n                if diff:\n                    # prints produced report to compare with present data in tests/data\n                    print(f\"Review updated {cfg['json_filename']} with git.\", flush=True)\n                    shutil.copy(tmp_file, expected_report)\n                # first run fails with the diff but next run will pass\n                self.assertDictEqual({}, diff, cfg)\n                # only count of items must be corrected manually\n                self.assertEqual(cred_count, len(expected_result), cfg[\"json_filename\"])\n                # check whether all files are real on disk\n                for i in test_result:\n                    for j in i[\"line_data_list\"]:\n                        f = SAMPLES_PATH / Path(j[\"path\"]).parts[-1]\n                        self.assertTrue(f.exists(), (f, j))\n\n    # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #\n\n    def test_param_n(self) -> None:\n        # internal parametrized tests for quick debug - no itms should be found\n        items = [  #\n            (\"x.json\", b'\"\": \"\\\\u0230n0tAdr0PbX\"'),\n            (\"any\", b'secret = \"mysecret\"'),\n            (\"t.h\", b'#define TOKEN \"q1111119-fade-1111-c3f0-9129474bcd81\"'),  #\n            (\"t.h\", b\"#define SECRET 0x0200\"),  #\n            ('test.m', b's password=$$getTextValue^%dmzAPI(\"pass\",sessid)'),\n            ('test.yaml', b'password: Fd[q#pX+@4*r`1]Io'),\n            ('enc.yaml', b'password: ENC[qGOpXrr1Iog1W+fjOiIDOT0C/dBjHyhy]'),\n            ('enc.yaml', b'password: \"ENC[qGOpXrr1Iog1W+fjOiIDOT0C/dBjHyhy]\"'),\n            ('enc.yml', b'password: ENC(qGOpXrr1Iog1W+fjOiIDOT0C/dBjHyhy)'),\n            ('enc.yml', b'password: \"ENC(qGOpXrr1Iog1W+fjOiIDOT0C/dBjHyhy)\"'),\n            ('x3.txt', b'passwd = values[token_id]'),\n            ('t.py', b'new_params = {\"dsn\": new_params[\"dsn\"], \"password\": new_params[\"password\"]}'),\n            ('t.m', b'@\"otpauth://host/port?set=VNMXQKAZFVOYOJCDNBIYXYIWX2&algorithm=F4KE\",'),\n            (\"test.c\", b\" *keylen = X448_KEYLEN;\"),\n            (\"test.php\", b\"$yourls_user_passwords = $copy;\"),\n            (\"\", b\"passwords = List<secret>\"),\n            (\"test.template\", b\" API_KEY_ID=00209332 \"),  #\n            (\"test.template\", b\" AUTH_API_KEY_NAME='temporally_secret_api' \"),  #\n            (\"pager.ts\", b\"pagerLimitKey: 'size',\"),  #\n            (\"pager.rs\", b'    this_circleci_pass_secret_id=\"buratino-circle-pass\"'),  #\n            (\"pager.rs\", b'      secret_type: \"odobo\".to_string(),'),  #\n            (\"pager.rs\", b\"   secret_key: impl AsRef<str>,   \"),  #\n            (\"pager.rs\", b\"token: impl AsRef<str>,\"),  #\n            (\"pager.rs\", b\"    let tokens = quote::quote! {\"),  #\n            (\"pager.rs\", b\"  let cert_chain = x509_rx\"),  #\n            (\"my.kt\", b'val password: String? = null'),  #\n        ]\n        content_provider: AbstractProvider = FilesProvider([(file_name, io.BytesIO(data_line))\n                                                            for file_name, data_line in items])\n        cred_sweeper = CredSweeper()\n        cred_sweeper.run(content_provider=content_provider)\n        creds = cred_sweeper.credential_manager.get_credentials()\n        self.assertEqual(0, len(creds), [x.to_json(False, False) for x in creds])\n\n    # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #\n\n    def test_param_p(self) -> None:\n        # internal parametrized tests for quick debug\n        items = [  #\n            (\"any\", b\"Authorization: token 944fb17dc1ca18eb2750b6238e5c5ad27b68aaab\", \"Authorization\",\n             \"944fb17dc1ca18eb2750b6238e5c5ad27b68aaab\"),\n            (\"any\",\n             b'Authorization: NTLM TlRMTVNTUAADAAAAGAAYAFYAAAAYABgAbgAAAAAAAABIAAAADgAOAEgAAAAAAAAAVgAAAAAAAACGAAAARmFLZURhVGEAAAAPQwByAGUAZABTAHcAZQBlAHCgZQBy3wAAAAAAAAAAAAAAAAAAAAAph0MQmDQmCVaJEmhiOGSYIXNJMoc2KLo=',\n             \"Authorization\",\n             \"TlRMTVNTUAADAAAAGAAYAFYAAAAYABgAbgAAAAAAAABIAAAADgAOAEgAAAAAAAAAVgAAAAAAAACGAAAARmFLZURhVGEAAAAPQwByAGUAZABTAHcAZQBlAHCgZQBy3wAAAAAAAAAAAAAAAAAAAAAph0MQmDQmCVaJEmhiOGSYIXNJMoc2KLo=\"\n             ),\n            (\"p.txt\", b'PASSWORD=$ADrn1N?', \"PASSWORD\", \"$ADrn1N?\"),\n            (\"x.x\", b\"'token' : 'access_token=1f3a1d0x579bedc83419f39c06a71L01'\", \"access_token\",\n             \"1f3a1d0x579bedc83419f39c06a71L01\"),\n            (\"ba.sh\", b'if [ \"$DB_URL\" != \"mi6://james:bond#007@localhost:32768/api\" ]; then', \"mi6://\", \"bond#007\"),\n            (\"t.h\", b'#define TOKEN \"q2d45d19-fade-1111-c3f0-9129474bcd81\"', \"TOKEN\",\n             \"q2d45d19-fade-1111-c3f0-9129474bcd81\"),  #\n            (\"k.java\",\n             b\"private static final long[] KEY = {0x9e37f3a21d0c18e9L, 0x579b9f39cc06a7c1L, 0x057f45cedc834108L, 0xf86c6a1276b27251L};\",\n             \"KEY\", \"0x9e37f3a21d0c18e9L, 0x579b9f39cc06a7c1L, 0x057f45cedc834108L, 0xf86c6a1276b27251L\"),\n            (\"k.c\", b'static const unsigned char key[] = {0,007, 0x65, 0x72, 0x73, 0x74, 999, 0x61   /* comment */};',\n             \"key[]\", \"0,007, 0x65, 0x72, 0x73, 0x74, 999, 0x61   /* comment */\"),\n            (\"c.go\", b'Credential: []byte{351, 266,    ,1,2,7,4,010, 100, 114, 157},', \"Credential\",\n             \"351, 266,    ,1,2,7,4,010, 100, 114, 157\"),\n            (\"pw.java\", b'\"--keystore-password\", \"WL3XSnGShS87KW\",', \"keystore-password\", \"WL3XSnGShS87KW\"),\n            (\"pw.py\", b'[\"--password\", \"XCl5oOtGO9SP\"]', \"password\", \"XCl5oOtGO9SP\"),\n            (\"pw.html\", b'user%3Dadmin;pw%3DjakC5df5G4WL;', \"pw\", \"jakC5df5G4WL\"),\n            (\"pw.py\", b'pw=env.get(\"PASSWORD\", \"Qj5lo7nYV\"))', \"pw\", \"Qj5lo7nYV\"),\n            (\"p.h\", b'.SetPassword(\"mHic7SmwL7lkn0\")', \"Password\", \"mHic7SmwL7lkn0\"),\n            (\"pw.h\", b'#define key {0x35, 0x34, 0x65, 0x9b, 0x72, 0x73, 0x1c, 0x2e}', \"key\",\n             \"0x35, 0x34, 0x65, 0x9b, 0x72, 0x73, 0x1c, 0x2e\"),\n            (\"scrts.cs\", b'Secrets = new[] { new Secret( \"be31IjWLD2rSh6D0H430hg3\".Sha256() ) },', \"Secrets\",\n             \"be31IjWLD2rSh6D0H430hg3\"),\n            (\"pw.md\", b\"The login password => skWu850\", \"password\", \"skWu850\"),  #\n            (\"log.txt\", b'Authorization: SSWS 00QEi8-WW0HmCjAl4MlVjFx-vbGPXMD8sWXsua', \"Authorization\",\n             \"00QEi8-WW0HmCjAl4MlVjFx-vbGPXMD8sWXsua\"),\n            ('test.yaml', b'code\\u003epassword: \"Fd[q#pX+@4*r`1]Io\"', 'password', 'Fd[q#pX+@4*r`1]Io'),\n            (\"any\", b'docker swarm join --token qii7t1m6423127xto389xc914l34451qz5135865564sg', 'token',\n             'qii7t1m6423127xto389xc914l34451qz5135865564sg'),\n            (\"win.log\", b'java -Password $(ConvertTo-SecureString \"P@5$w0rD!\" -AsPlainText -Force)',\n             \"ConvertTo-SecureString\", \"P@5$w0rD!\"),\n            ('tk.java',\n             b' final OAuth2AccessToken accessToken = new OAuth2AccessToken(\"7c9yp7.y513e1t629w7e8f3n1z4m856a05o\");',\n             \"OAuth2AccessToken accessToken\", \"7c9yp7.y513e1t629w7e8f3n1z4m856a05o\"),\n            ('my.toml', b'{nkey: XMIGDHSYNSJQ0XNR}', \"nkey\", \"XMIGDHSYNSJQ0XNR\"),\n            ('my.yaml', b'%3Epassword: \"3287#JQ0XX@IG}\"', \"password\", \"3287#JQ0XX@IG}\"),\n            (\"creds.py\", b'\"tokens\": [\"xabsjh1dbasu7d9g\", \"ashbjhd1ifufhsds\"]', \"tokens\", \"xabsjh1dbasu7d9g\"),\n            (\"slt.py\", b'\\\\t\\\\tsalt = \"\\\\x187bhgerjhqw\\\\n iKa\\\\tW_R~0/8\"', \"salt\", \"\\\\x187bhgerjhqw\\\\n iKa\\\\tW_R~0/8\"),\n            (\"log.txt\",\n             b'json\\\\nAuthorization: Basic jfhlksadjiu9813ryiuhdfskadjlkjh34\\\\n\\\\u003c/code\\\\u003e\\\\u003c/pre\\\\u003e\"',\n             \"Authorization\", \"jfhlksadjiu9813ryiuhdfskadjlkjh34\"),\n            (\"pwd.html\", b'password =&gt; \"ji3_8iKgaW_R~0/8\"', \"password\", \"ji3_8iKgaW_R~0/8\"),\n            (\"pwd.py\", b'password = \"/_tcTz<D8sWXsW<E\"', \"password\", \"/_tcTz<D8sWXsW<E\"),\n            (\"pwd.py\", b'password = \"I:FbCnXQc/9E02Il\"', \"password\", \"I:FbCnXQc/9E02Il\"),\n            (\"url_part.py\", b'39084?token=3487263-2384579834-234732875-345&kej=DnBeiGdgy6253fytfdDHGg&hasToBeFound=2',\n             'token', '3487263-2384579834-234732875-345'),\n            (\"prod.py\", b\"secret_api_key='Ahga%$FiQ@Ei8'\", \"secret_api_key\", \"Ahga%$FiQ@Ei8\"),  #\n            (\"x.sh\", b\"connect 'odbc:proto://localhost:3289/connectrfs;user=admin1;password=bdsi73hsa;super=true\",\n             \"password\", \"bdsi73hsa\"),  #\n            (\"main.sh\", b\" otpauth://totp/alice%40google.com?secretik=JK2XPEH0BYXA3DPP&digits=8  \", \"secretik\",\n             \"JK2XPEH0BYXA3DPP\"),  #\n            (\"test.template\", b\"    STP_PASSWORD=qbgomdtpqch \\\\\", \"STP_PASSWORD\", \"qbgomdtpqch\"),  #\n            (\"test.template\", b\" Authorization: OAuth qii7t1m6423127xto389xc914l34451qz5135865564sg\", \"Authorization\",\n             \"qii7t1m6423127xto389xc914l34451qz5135865564sg\"),  #\n            (\"accept.py\", b\"password='Ahga%$FiQ@Ei8'\", \"password\", \"Ahga%$FiQ@Ei8\"),  #\n            (\"test.template\", b\" NAMED_API_KEY=qii7t1m6423127xto389xc914l34451qz5135865564sg \", \"NAMED_API_KEY\",\n             \"qii7t1m6423127xto389xc914l34451qz5135865564sg\"),  #\n            (\"my.kt\", b'val password: String = \"Ahga%$FiQ@Ei8\"', \"password\", \"Ahga%$FiQ@Ei8\"),  #\n        ]\n        for file_name, data_line, variable, value in items:\n            content_provider: AbstractProvider = FilesProvider([\n                (file_name, io.BytesIO(data_line)),\n            ])\n            cred_sweeper = CredSweeper(ml_threshold=ZERO_ML_THRESHOLD, sort_output=True)\n            cred_sweeper.run(content_provider=content_provider)\n            creds = cred_sweeper.credential_manager.get_credentials()\n            self.assertLessEqual(1, len(creds), str(data_line))\n            self.assertEqual(variable, creds[0].line_data_list[0].variable, str(data_line))\n            self.assertEqual(value, creds[0].line_data_list[0].value, str(data_line))\n\n    # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #\n\n    def test_random_p(self) -> None:\n        # random generated value in well quoted value may be any (almost) chromium ... password_generator.cc\n        safe_chars = [x for x in string.digits + string.ascii_letters + string.punctuation if x not in '\"\\\\01OIol']\n        value = ''.join(random.choice(safe_chars) for _ in range(15))\n        line = f'password = \"{value}\"'\n        content_provider: AbstractProvider = FilesProvider([(\"cred.go\", io.BytesIO(line.encode()))])\n        cred_sweeper = CredSweeper(ml_threshold=0)\n        cred_sweeper.run(content_provider=content_provider)\n        creds = cred_sweeper.credential_manager.get_credentials()\n        self.assertEqual(1, len(creds), line)\n        self.assertEqual(\"password\", creds[0].line_data_list[0].variable)\n        self.assertEqual(value, creds[0].line_data_list[0].value)\n\n    # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #\n\n    def test_hashed_n(self) -> None:\n        # checks whether hashed hides raw data from report\n        test_values = list(str(uuid.uuid4()) for _ in range(7))\n        with tempfile.TemporaryDirectory() as tmp_dir:\n            test_filename = os.path.join(tmp_dir, f\"{__name__}.yaml\")\n            with open(test_filename, 'w') as f:\n                for x in test_values:\n                    f.write(f\"{x}\\n\")\n            json_filename = os.path.join(tmp_dir, f\"{__name__}.json\")\n            cred_sweeper = CredSweeper(json_filename=json_filename, hashed=True)\n            cred_sweeper.run(FilesProvider([test_filename]))\n            report = Util.json_load(json_filename)\n            # UUID is detected\n            self.assertAlmostEqual(len(report), 7, delta=3)  # random uuid may be filtered with a pattern\n            # but does not contain in report file\n            for x in test_values:\n                self.assertNotIn(x, str(report))\n"
  },
  {
    "path": "tests/test_utils/__init__.py",
    "content": ""
  },
  {
    "path": "tests/test_utils/dummy_line_data.py",
    "content": "import re\nfrom typing import Optional\n\nfrom credsweeper.app import APP_PATH\nfrom credsweeper.config.config import Config\nfrom credsweeper.credentials.line_data import LineData\nfrom credsweeper.utils.util import Util\nfrom tests.filters.conftest import LINE_VALUE_PATTERN\n\n\ndef config() -> Config:\n    config_dict = Util.json_load(APP_PATH / \"secret\" / \"config.json\")\n\n    config_dict[\"use_filters\"] = True\n    config_dict[\"find_by_ext\"] = False\n    config_dict[\"pedantic\"] = False\n    config_dict[\"depth\"] = 0\n    config_dict[\"doc\"] = False\n    config_dict[\"size_limit\"] = None\n    return Config(config_dict)\n\n\ndef get_line_data(test_config: Config = config(),\n                  file_path: str = \"\",\n                  line: str = \"\",\n                  pattern: Optional[re.Pattern] = None) -> LineData:\n    pattern = re.compile(pattern) if pattern else re.compile(LINE_VALUE_PATTERN)\n    line_data = LineData(test_config, line, 0, 1, file_path, Util.get_extension(file_path), \"info\", pattern)\n    assert line_data.value  # most important member for filters\n    return line_data\n"
  },
  {
    "path": "tests/utils/__init__.py",
    "content": ""
  },
  {
    "path": "tests/utils/test_hop_stat.py",
    "content": "import unittest\n\nfrom credsweeper.utils.hop_stat import HopStat\n\n\nclass TestHopStat(unittest.TestCase):\n\n    def test_hop_stat_n(self):\n        HopStat()\n        with self.assertRaises(ValueError):\n            HopStat().stat('34')\n        with self.assertRaises(ValueError):\n            HopStat().stat('1')\n        with self.assertRaises(ValueError):\n            HopStat().stat('1')\n\n    def test_hop_stat_p(self):\n        self.assertTupleEqual((1, 0), HopStat().stat(\"qwerty\"))\n"
  },
  {
    "path": "tests/utils/test_util.py",
    "content": "import binascii\nimport hashlib\nimport os\nimport random\nimport string\nimport tempfile\nimport unittest\nfrom pathlib import Path\nfrom xmlrpc.client import MAXINT\n\nfrom hypothesis import given, strategies\nfrom lxml.etree import XMLSyntaxError\n\nfrom credsweeper.common.constants import Chars, DEFAULT_ENCODING, UTF_8, MAX_LINE_LENGTH, CHUNK_STEP_SIZE, CHUNK_SIZE, \\\n    OVERLAP_SIZE, UTF_16_LE\nfrom credsweeper.utils.util import Util\nfrom tests import AZ_DATA, AZ_STRING, SAMPLES_PATH\n\n\nclass TestUtils(unittest.TestCase):\n    KOREAN_PANGRAM = \"키스의 고유조건은 입술끼리 만나야 하고 특별한 기술은 필요치 않다.\"\n    DEUTSCH_PANGRAM = \"Üben von Xylophon und Querflöte ist ja zweckmäßig\"\n\n    PKCS1 = \"\"\"\n    MIIBOgIBAAJBAL1/hJjtuMbjbVXo6wYT1SxiROOvwgffVSvOAk5aN2d4wYTC25k3\n    sklfpdwxvkjh4iGB6/qC+0RbmiLwaXaQT0ECAwEAAQJAeAlQyza6t3HVDnhud/kU\n    LftJvBjXhfkYkJj8qPlI40dn/Tnwe6mywfly6hOvAn4TRBsnB/Eln6hJLmCrDvZv\n    yQIhAPf7Uma4/Aqgoz3SfPyz9TaQXyD5JSC3ej7cOH7b3hgTAiEAw6AYhc/UKh8i\n    IAPYGK15ImVmXAlxmhFD6xCWx9bcTdsCIQDiqOayWZaWKCnNEh2H5PzW+LLasp9K\n    /ilQV32UBmdD3QIgbafQFzHoO7Q37Lo655pVzHIKbozcoQAMkjc6TcqiswECIBvX\n    LFj5jkNs4iSqphZo8eISUdol/9Zo/dkrHC41kbYJ\n    \"\"\"\n\n    PKCS8 = \"\"\"\n    MIIBVAIBADANBgkqhkiG9w0BAQEFAASCAT4wggE6AgEAAkEAvX+EmO24xuNtVejr\n    BhPVLGJE46/CB99VK84CTlo3Z3jBhMLbmTeySV+l3DG+SOHiIYHr+oL7RFuaIvBp\n    dpBPQQIDAQABAkB4CVDLNrq3cdUOeG53+RQt+0m8GNeF+RiQmPyo+UjjR2f9OfB7\n    qbLB+XLqE68CfhNEGycH8SWfqEkuYKsO9m/JAiEA9/tSZrj8CqCjPdJ8/LP1NpBf\n    IPklILd6Ptw4ftveGBMCIQDDoBiFz9QqHyIgA9gYrXkiZWZcCXGaEUPrEJbH1txN\n    2wIhAOKo5rJZlpYoKc0SHYfk/Nb4stqyn0r+KVBXfZQGZ0PdAiBtp9AXMeg7tDfs\n    ujrnmlXMcgpujNyhAAySNzpNyqKzAQIgG9csWPmOQ2ziJKqmFmjx4hJR2iX/1mj9\n    2SscLjWRtgk=\n    \"\"\"\n\n    PKCS8_CHANGEME = \"\"\"\n    MIIBvTBXBgkqhkiG9w0BBQ0wSjApBgkqhkiG9w0BBQwwHAQIT0gWHcAV1rACAggA\n    MAwGCCqGSIb3DQIJBQAwHQYJYIZIAWUDBAEqBBBaZ0qE6fJsz9rDPoa2esruBIIB\n    YF9QvKgDLA15MgXR8P73DRdrDJzEEoYe7bDtk+vnTzy6DNVwSfkgQLNLpKfnjPO3\n    b1szG5md06Fai6Tuuc9kKDhaCWfGgw/xAeb4OEjWupyCUvmyWYBNqCC+DDQZb7cc\n    ka4cuIRV7Ty0I/3AdGCZ/g4mDBozjtfLkLOvWzRuKXQYvGlPYd0HUWupKn2Sgduy\n    rwKt43zq0j+t9UXMMFVYv7RZOzZruVcUkBKHoYDkgOl9OQ5tGE+atfhLZUVUKj4Q\n    7F+o6mlTy0JHxv94oUadDXJCyzivdes2RxabPDJ+1gEfNW8ZRZtselC+Pdy+KBIt\n    Ln3f3FEWXpWbNPRzhElOUUaNgRNOQrmxoE09QxWLt8L3soArRfWe732Nw7N9izpU\n    uKmL72bzbpetDQu/sn49CEnWcFGCZQ9inSiEogF0e2ncxnKfthRKzpT3K5JGiqcM\n    mbcMoz5WjLks//PgWcZ/l2o=\n    \"\"\"\n\n    PKCS12 = \"\"\"\n    MIIFNgIBAzCCBOwGCSqGSIb3DQEHAaCCBN0EggTZMIIE1TCCApIGCSqGSIb3DQEHBqCCAoMwggJ/\n    AgEAMIICeAYJKoZIhvcNAQcBMFcGCSqGSIb3DQEFDTBKMCkGCSqGSIb3DQEFDDAcBAj/aKWRTdH5\n    CwICCAAwDAYIKoZIhvcNAgkFADAdBglghkgBZQMEASoEEMGS8BBALDKdaLIFg5sofxKAggIQCtTT\n    Q1PuFM7/QKiTMphxz9RLR+cYwdD/MMZsE4DbNiIt3jMbirbNW+QeEyN6wH+HH2H358pqsN3/8e40\n    K0FDHvLsfs8eWkqtmPK4e6MYX/Iz5MxZqMxaJNpSoOmdSJYPJdBUf6X1Cc5r0Fe0j50DNGPYazQS\n    Xik2U4v5ekvLIDNm9cRMcLOaF/Nf4qB1wMSrBWCMk75Nm1zllHyIuimCchNe04m3Rmpa2VXVSn3Q\n    Zjp5b8QyY5K8Wz15gQAfuQWEu9hrh/qsVpISR2R492BDS3FY7cwvubjGgIxVH7V8B3noch4YENS2\n    dlmQMWsJcOuhg8LTrRIyyzLJicP9O3VN9qF6jR++YBxekV56D54KjEeultUdpiD0Eqt3A5vUZyyY\n    hWcPEzFEI+CgM7mrvgDHtrRqzr8WHwiuho6tsgrwlhDCvOxcF/cSjBcfwJiB4gJxtlMjCYdEq256\n    KBU9Vq3kCKYglF4lwA5F498UZqgojx/t3vzLRGK3qp6ffXVPvcxZGjZjtfDwuY/rxYZfsrcsXdSS\n    w8X6OA0AcDzxTFdSuRAdtb/xdA9rj+n4tLFIn1smDBSCAbxC1hcV5XLVfkU+75SjCHY7TjK9bChx\n    IhMXJZFmX8JJF+B8PEtzkx/3mn+n/kWiEKPsWIerVVe1LqX/JWlMLucpKnGPKEXTUxmAc3Z8SFI0\n    kK0UIp04crqq6DRnMIICOwYJKoZIhvcNAQcBoIICLASCAigwggIkMIICIAYLKoZIhvcNAQwKAQKg\n    ggHBMIIBvTBXBgkqhkiG9w0BBQ0wSjApBgkqhkiG9w0BBQwwHAQIan4Jz+bein0CAggAMAwGCCqG\n    SIb3DQIJBQAwHQYJYIZIAWUDBAEqBBCulAkqt2DLDD1aGAzE3ik1BIIBYI1yRnH3viudZ1k4tZgr\n    ZijphnGvc4nlX8J0ImrH4Dqr90RKT7ZDFQldqr7XHsNwjpR6qGjkGu2xVS40AeBxFBsi5mDNMRcM\n    LgZKBQNh8C+CXxkatdvC33hZ2EJ7JzEL3ejdZwzOCvjQpqfxQPLgFFTRQOMZnBXx0nn9QLoJ8HJG\n    8/QJ31aqrhDPEX64s3xhCBa0FLI34AoTpF2nDVTHt+v+1wakFdki4ABC9X0QgCAUYHf7OYZG7b7A\n    7RNYb0LUyX5OEYERi5oUkC4dh9qB250+3CG1mKk1WRpR147XWA25RTsF2/q42anrPR4c1/3DFlE5\n    YtHx875SrGwxV9DRJytP6rum+b8nKxv91J7LbUUWBV5qX2cms2itPHSlNg1BhsnYtuMmKo1flIid\n    BAhuhpAiCmj8myFTUQ3cJ4lfGNrFz225guZFIPElTxl9S9GmHX3KdUTDb8S8jqfOfFGkTs8xTDAj\n    BgkqhkiG9w0BCRUxFgQUGY0PlBhhh6+fjx21HWim3e+syDowJQYJKoZIhvcNAQkUMRgeFgBlAHgA\n    YQBtAHAAbABlAC4AYwBvAG0wQTAxMA0GCWCGSAFlAwQCAQUABCBmjoy3EmwmDqVl9ZwnqndJ0Sf3\n    M1I223wax4Fje1dkegQIrDjD/AWVwj4CAggA\n    \"\"\"\n\n    PKCS12_CHANGEME = \"\"\"\n    MIIFNgIBAzCCBOwGCSqGSIb3DQEHAaCCBN0EggTZMIIE1TCCApIGCSqGSIb3DQEHBqCCAoMwggJ/\n    AgEAMIICeAYJKoZIhvcNAQcBMFcGCSqGSIb3DQEFDTBKMCkGCSqGSIb3DQEFDDAcBAhknVwZ/8XA\n    BAICCAAwDAYIKoZIhvcNAgkFADAdBglghkgBZQMEASoEECI9IqqZ3J6xUKkiXcNZCaGAggIQrWgd\n    iM7DBZIyAS6mocBSb/giKZLPMq23x1nZNdf4mkjEk2nLjNbtA09n8d/2FxBvFKLQfxZfxtq76Hza\n    TlCvVz8PhcGPhHumOXUAzBtT3Mv4WDmub/1pAZsjInN6K+CCQlb7tPLy8OlHHHP5HYET6LXUUy1R\n    cslDJNJdb9YDlhjhFOoGgd7fApnFAwsjQDjNVT/DCnuQQHrSylezYZP6HM4Sf7INrdbHviJU/K0A\n    c1hBDXrndhaOWEGnaKXknycIZqN0HgftdUjiujPhI0XdIE008U+6hxibTe/Okdn6URlmOtbuXOFQ\n    FYO7nAN8wOW2/n1nZSQkZflV7P0+Vq2Ce4tfCUCyj+pJuuKygGA6D4gUoY74N4LGjDHvzjY00f5h\n    tdQ3WRAXcuG1zsORsjOhRB8Ag5tKOYCMQF9GMhFQfhZwg07zaZS7dU8fyvIPFYSAynr7Uef6GMkv\n    Zyw8DF6dku4X/Jgm/h9b7jb7x289hjowUYVYZ7/+KQPdH2Pj68BrUxtFFc118W1P1FE4huYe11Kf\n    RBgGy2NugCCPkExKfQrFPRM32hGd+2AMTrfpVoBkY1Dj4IKwEKIufSTnyvtl+MIMB2cwumD/A/IV\n    ksr9qV7ptfwuZl1pzqkZIUAoVgDs8gqul/YOT9g0QWydP/Vwh30v/6RAmwAEUhTydhag2fP5JQgu\n    oVQXcHPYgYfIqjf+MIICOwYJKoZIhvcNAQcBoIICLASCAigwggIkMIICIAYLKoZIhvcNAQwKAQKg\n    ggHBMIIBvTBXBgkqhkiG9w0BBQ0wSjApBgkqhkiG9w0BBQwwHAQIA0VVM4PAVxMCAggAMAwGCCqG\n    SIb3DQIJBQAwHQYJYIZIAWUDBAEqBBA5WjHZFqFYRnvekUsb7V82BIIBYG5T1b/dWIkUslM7f7tm\n    Qy4vPlOeFDZv5U437Af9ZfrseIAiPXPXKUsQubwme2PH5cZQYV3AZY/6INPfSrhNw+feHGeSAYRm\n    jugB8vEfaTV0Lml6MPi+sn+SaBGLYDNYRv8i4fb+V/cgUMGvVpMMKhDBiGrjjmC4d/R/asEcD3Gh\n    JSerfECS1pg/CWckL8l86jwF+DbX90+xe1ReJ4c/64bnQzRbRKTQdu7bIbAuZjfbBd8a3zsRawmH\n    9uIE4RYNN9wHOSarwzKCT5JYMVBHv/tXqpxT12Z9z1sovAATo6JHIJ8x9qvmw3Yv7q20Vt5s/h8O\n    8RiFefJS8hWd0gX85oTpOO2mww0NmbPgH0At2VHPItK5HA4pM5/qPjSp0netZoaKrdJypSbMJfAj\n    G99FmZgp3MLQYphYRbM6g7RhWCeW4mM6pvqrk6YKWBsMKPQPnLD25pMfrnjR0LG0FnEClQ8xTDAj\n    BgkqhkiG9w0BCRUxFgQUGY0PlBhhh6+fjx21HWim3e+syDowJQYJKoZIhvcNAQkUMRgeFgBlAHgA\n    YQBtAHAAbABlAC4AYwBvAG0wQTAxMA0GCWCGSAFlAwQCAQUABCBb+Q7hc25Mh35RU/6qtG8NxT87\n    qGEE8yzsqZzIOG9iogQIO3wdxp2pvhECAggA\n    \"\"\"\n\n    def test_asn1_n(self):\n        self.assertEqual(0, Util.get_asn1_size(b'0\\x84\\x01\\x00\\x00\\x00' + b'\\xA5' * (1 << 24 - 1)))\n        self.assertEqual(0, Util.get_asn1_size(b'0\\x83\\x01\\x00\\x00' + b'\\xA5' * (65536 - 1)))\n        self.assertEqual(0, Util.get_asn1_size(b'0\\x82\\xFF\\xFF' + b'\\xA5' * (65535 - 1)))\n        self.assertEqual(0, Util.get_asn1_size(b'0\\x8F' + b'\\xFF' * 200))\n        self.assertEqual(0, Util.get_asn1_size(b'0\\x82' + b'\\xFF' * 200))\n        self.assertEqual(0, Util.get_asn1_size(b'0\\x81' + b'\\xFF' * 200))\n        self.assertEqual(0, Util.get_asn1_size(b'0\\x80' + b'\\xFF' * 200))\n        self.assertEqual(0, Util.get_asn1_size(b'0\\x0fabcdef'))\n        self.assertEqual(0, Util.get_asn1_size(b'0\\x01'))\n        self.assertEqual(0, Util.get_asn1_size(b''))\n        based_data = self.PKCS1\n        data = Util.decode_base64(based_data)\n        self.assertEqual(0, Util.get_asn1_size(data[:-1]))\n\n    def test_asn1_p(self):\n        self.assertEqual(16777222, Util.get_asn1_size(b'0\\x84\\x01\\x00\\x00\\x00' + b'\\xA5' * (1 << 24)))\n        self.assertEqual(65541, Util.get_asn1_size(b'0\\x83\\x01\\x00\\x00' + b'\\xA5' * 65536))\n        self.assertEqual(65539, Util.get_asn1_size(b'0\\x82\\xFF\\xFF' + b'\\xA5' * 65535))\n        self.assertEqual(4, Util.get_asn1_size(b'0\\x81\\x01abcdef'))\n        self.assertEqual(8, Util.get_asn1_size(b'0\\x80abcd\\000\\000'))\n        self.assertEqual(3, Util.get_asn1_size(b'0\\x01abcdef'))\n        self.assertEqual(2, Util.get_asn1_size(b'0\\x00'))\n        data = Util.decode_base64(self.PKCS1)\n        self.assertEqual(318, Util.get_asn1_size(data))\n        over_data = bytearray(data) + random.randbytes(200)\n        self.assertEqual(318, Util.get_asn1_size(over_data))\n\n    def test_get_extension_n(self):\n        self.assertEqual(\"\", Util.get_extension(None))\n        self.assertEqual(\"\", Util.get_extension(\"/\"))\n        self.assertEqual(\"\", Util.get_extension(\"/tmp\"))\n        self.assertEqual(\"\", Util.get_extension(\"tmp\"))\n        self.assertEqual(\"\", Util.get_extension(\"tmp/\"))\n        self.assertEqual(\"\", Util.get_extension(\".gitignore\"))\n        self.assertEqual(\"\", Util.get_extension(\"/tmp/.hidden\"))\n        self.assertEqual(\"\", Util.get_extension(\"/tmp.ext/\"))\n        self.assertEqual(\"\", Util.get_extension(\"http://127.0.0.1/index\"))\n\n    def test_get_extension_p(self):\n        self.assertEqual(\".ext\", Util.get_extension(\"tmp.ext\"))\n        self.assertEqual(\".jpg\", Util.get_extension(\"tmp.JPG\"))\n        self.assertEqual(\".ї\", Util.get_extension(\"tmp.Ї\", lower=True))\n        self.assertEqual(\".Ї\", Util.get_extension(\"tmp.Ї\", lower=False))\n        self.assertEqual(\".♡\", Util.get_extension(\"tmp.♡\"))\n        self.assertEqual(\".ㅋㅅ\", Util.get_extension(\"tmp.ㅋㅅ\"))\n        self.assertEqual(\".ß\", Util.get_extension(\"tmp.ß\"))\n        self.assertEqual(\".txt\", Util.get_extension(\"/.hidden.tmp.txt\"))\n\n    def test_colon_os_n(self):\n        self.assertEqual(\"\", Util.get_extension(\":memory:\"))\n        self.assertEqual(\".ext\", Util.get_extension(\"c:\\\\tmp.ext\"))\n        self.assertEqual(\".json\", Util.get_extension(\"c:\\\\tmp.ext:zip:text.json\"))\n        self.assertEqual(\".json\", Util.get_extension(\"/tmp.ext:zip:text.json\"))\n        self.assertEqual(\".json:encoded\", Util.get_extension(\"c:\\\\tmp.ext:zip:text.json:ENCODED\"))\n        self.assertEqual(\".json:raw\", Util.get_extension(\"/tmp.ext:zip:text.json:raw\"))\n        with tempfile.TemporaryDirectory() as tmp_dir:\n            file_name = os.path.join(tmp_dir, \"test_file.zip\")\n            Path(file_name).touch()\n            assert os.path.exists(file_name)\n            new_name = f\"{file_name}:ZIP:dummy.txt\"\n            assert not os.path.exists(new_name)\n\n    @given(strategies.binary())\n    def test_get_shannon_entropy_hypothesis_n(self, data):\n        self.assertLessEqual(0.0, Util.get_shannon_entropy(data))\n\n    def test_get_shannon_entropy_n(self):\n        self.assertEqual(0, Util.get_shannon_entropy(None))\n        self.assertEqual(0, Util.get_shannon_entropy(''))\n        self.assertEqual(0, Util.get_shannon_entropy('x'))\n        self.assertEqual(0, Util.get_shannon_entropy('♡'))\n        self.assertEqual(0, Util.get_shannon_entropy(b'\\0'))\n\n    def test_get_shannon_entropy_p(self):\n        self.assertEqual(1.0, Util.get_shannon_entropy(\"01\"))\n        self.assertEqual(1.0, Util.get_shannon_entropy(\"ÖЇ\"))\n        self.assertEqual(1.0, Util.get_shannon_entropy(\"ㅋㅅ\"))\n        self.assertEqual(4.431965045349459, Util.get_shannon_entropy(AZ_STRING))\n        self.assertEqual(4.385453417442482, Util.get_shannon_entropy(AZ_STRING.lower()))\n        self.assertEqual(4.385453417442482, Util.get_shannon_entropy(AZ_STRING.upper()))\n        self.assertEqual(3.321928094887362, Util.get_shannon_entropy(string.digits))\n        self.assertEqual(3.321928094887362, Util.get_shannon_entropy(string.ascii_uppercase[:10]))\n        self.assertEqual(6.0, Util.get_shannon_entropy(Chars.BASE64STD_CHARS.value))\n        self.assertEqual(6.0, Util.get_shannon_entropy(Chars.BASE64URL_CHARS.value))\n        self.assertEqual(6.0223678130284535, Util.get_shannon_entropy(Chars.BASE64URLPAD_CHARS.value))\n        self.assertEqual(6.643856189774724, Util.get_shannon_entropy(string.printable))\n        self.assertEqual(6.62935662007961, Util.get_shannon_entropy(string.printable[:-1]))\n        self.assertEqual(6.62935662007961, Util.get_shannon_entropy(string.printable[1:]))\n\n    def test_util_read_file_n(self):\n        with tempfile.TemporaryDirectory() as tmp_dir:\n            assert os.path.isdir(tmp_dir)\n            file_path = os.path.join(tmp_dir, 'test_util_read_file_p.tmp')\n            # required binary write mode\n            with open(file_path, \"wb\") as tmp_file:\n                tmp_file.write(AZ_DATA)\n            assert os.path.isfile(file_path)\n            # CP1026 incompatible with ASCII but encodes something\n            test_result = Util.read_file(file_path, [1, 'fake', 'undefined', 'utf_16', 'utf_32', 'CP1026'])\n            assert 1 == len(test_result)\n            assert len(AZ_STRING) == len(test_result[0])\n            assert AZ_STRING != test_result[0]\n\n    def test_util_read_file_p(self):\n        with tempfile.TemporaryDirectory() as tmp_dir:\n            assert os.path.isdir(tmp_dir)\n            file_path = os.path.join(tmp_dir, 'test_util_read_file_p.tmp')\n            # required binary write mode\n            with open(file_path, \"wb\") as tmp_file:\n                tmp_file.write(AZ_DATA)\n            assert os.path.isfile(file_path)\n            # windows might accept oem\n            test_result = Util.read_file(file_path, ['oem', 'utf_8'])\n            assert 1 == len(test_result)\n            assert AZ_STRING == test_result[0]\n\n    def test_util_read_utf8_bin_p(self):\n        IOOOOOOO = int('10000000', 2)\n        IOIIIIII = int('10111111', 2)\n        IIOOOOOO = int('11000000', 2)\n        IIIOOOOO = int('11100000', 2)\n        IIIIOOOO = int('11110000', 2)\n        IIIIIOOO = int('11111000', 2)\n        bin_text = bytearray()\n        n = 65536\n        while 0 < n:\n            bin_char = bytearray()\n            r = random.randint(1, 255)\n            if 128 > r:\n                bin_char.append(r)\n            elif IIOOOOOO == (IIIOOOOO & r):\n                bin_char.append(r)\n                bin_char.append(random.randint(IOOOOOOO, IOIIIIII))\n            elif IIIOOOOO == (IIIIOOOO & r):\n                bin_char.append(r)\n                bin_char.append(random.randint(IOOOOOOO, IOIIIIII))\n                bin_char.append(random.randint(IOOOOOOO, IOIIIIII))\n            elif IIIIOOOO == (IIIIIOOO & r):\n                bin_char.append(r)\n                bin_char.append(random.randint(IOOOOOOO, IOIIIIII))\n                bin_char.append(random.randint(IOOOOOOO, IOIIIIII))\n                bin_char.append(random.randint(IOOOOOOO, IOIIIIII))\n            else:\n                continue\n            try:\n                utf8_char = bin_char.decode('utf-8')\n                encoded_bin = utf8_char.encode('utf-8')\n                if bin_char != encoded_bin:\n                    # print (f\"Wrong refurbish:{utf8_char} {bin_char} {encoded_bin}\")\n                    continue\n            except UnicodeError:\n                continue\n            # the byte sequence is correct for UTF-8 and is added to data\n            bin_text += bin_char\n            n -= 1\n\n        with tempfile.TemporaryDirectory() as tmp_dir:\n            assert os.path.isdir(tmp_dir)\n            file_path = os.path.join(tmp_dir, 'test_util_read_utf8_bin_p.tmp')\n            with open(file_path, \"wb\") as tmp_file:\n                tmp_file.write(bin_text)\n            assert os.path.isfile(file_path)\n            read_lines = Util.read_file(file_path)\n            decoded_lines = Util.decode_bytes(bin_text)\n            assert 0 < len(read_lines)\n            assert decoded_lines == read_lines\n\n    def test_util_read_utf16le_bin_p(self):\n        bin_text = bytearray()\n        bin_text += bytes([0xff, 0xfe])  # BOM LE\n        n = 65536\n        while 0 < n:\n            bin_char = bytearray()\n            try:\n                bin_char.append(random.randint(0, 255))\n                bin_char.append(random.randint(0, 255))\n                utf16_char = bin_char.decode('utf-16-le')\n                encoded_bin = utf16_char.encode('utf-16-le')\n                if bin_char != encoded_bin:\n                    # print (f\"Wrong refurbish:{utf16_char} {bin_char} {encoded_bin}\")\n                    continue\n            except UnicodeError:\n                continue\n            # the byte sequence is correct for UTF-16-LE and is added to data\n            bin_text += bin_char\n            n -= 1\n            if 0 == n % 32:\n                bin_char.append(0x0a)\n                bin_char.append(0x00)\n\n        with tempfile.TemporaryDirectory() as tmp_dir:\n            assert os.path.isdir(tmp_dir)\n            file_path = os.path.join(tmp_dir, 'test_util_read_utf16le_bin_p.tmp')\n            with open(file_path, \"wb\") as tmp_file:\n                tmp_file.write(bin_text)\n            assert os.path.isfile(file_path)\n            read_lines = Util.read_file(file_path)\n            test_lines = Util.decode_bytes(bin_text)\n            assert 0 < len(read_lines)\n            assert read_lines == test_lines\n\n    def test_util_read_utf16le_txt_p(self):\n        unicode_text = \"\"\n        n = 65536\n        while 0 < n:\n            try:\n                unicode_char = chr(random.randint(0, 0x10FFFF))\n                encoded_bin = unicode_char.encode('utf-16-le')\n                utf16_char = encoded_bin.decode('utf-16-le')\n                if unicode_char != utf16_char:\n                    # print(f\"Wrong refurbish:{unicode_char} {encoded_bin} {utf16_char}\")\n                    continue\n            except UnicodeError:\n                continue\n            # the byte sequence is correct for UTF-16-LE and is added to data\n            unicode_text += unicode_char\n            n -= 1\n            if 0 == n % 32:\n                unicode_text += '\\n'\n\n        with tempfile.TemporaryDirectory() as tmp_dir:\n            assert os.path.isdir(tmp_dir)\n            file_path = os.path.join(tmp_dir, 'test_util_read_utf16le_bin_p.tmp')\n            with open(file_path, \"wb\") as tmp_file:\n                tmp_file.write(bytes([0xff, 0xfe]))  # BOM LE\n                tmp_file.write(unicode_text.encode('utf-16-le'))\n            assert os.path.isfile(file_path)\n            read_lines = Util.read_file(file_path)\n            test_lines = Util.decode_bytes(bytes([0xff, 0xfe]) + unicode_text.encode('utf-16-le'))\n            assert 0 < len(read_lines)\n            assert read_lines == test_lines\n\n    def test_util_read_utf16be_txt_p(self):\n        unicode_text = \"\"\n        n = 65536\n        while 0 < n:\n            try:\n                unicode_char = chr(random.randint(0, 0x10FFFF))\n                encoded_bin = unicode_char.encode('utf-16-be')\n                utf16_char = encoded_bin.decode('utf-16-be')\n                if unicode_char != utf16_char:\n                    # print (f\"Wrong refurbish:{unicode_char} {encoded_bin} {utf16_char}\")\n                    continue\n            except UnicodeError:\n                continue\n            # the byte sequence is correct for UTF-16-BE and is added to data\n            unicode_text += unicode_char\n            n -= 1\n            if 0 == n % 32:\n                unicode_text += '\\n'\n\n        with tempfile.TemporaryDirectory() as tmp_dir:\n            assert os.path.isdir(tmp_dir)\n            file_path = os.path.join(tmp_dir, 'test_util_read_utf16le_bin_p.tmp')\n            with open(file_path, \"wb\") as tmp_file:\n                tmp_file.write(bytes([0xfe, 0xff]))  # BOM BE\n                tmp_file.write(unicode_text.encode('utf-16-be'))\n            assert os.path.isfile(file_path)\n            read_lines = Util.read_file(file_path, ['utf-16-be', 'undefined'])\n            test_bytes = bytes([0xfe, 0xff]) + unicode_text.encode('utf-16-be')\n            test_lines = Util.decode_bytes(test_bytes, ['utf-16-be', 'undefined'])\n            assert 0 < len(read_lines)\n            assert read_lines == test_lines\n\n    def test_decode_text_n(self):\n        self.assertIsNone(Util.decode_text(None))\n        self.assertEqual('', Util.decode_text(b''))\n\n    def test_decode_text_p(self):\n        self.assertEqual('BE', Util.decode_text(b'\\0B\\0E'))\n        self.assertEqual('LE', Util.decode_text(b'L\\0E\\0'))\n        self.assertEqual('BE', Util.decode_text(b'\\xFE\\xFF\\0B\\0E'))\n        self.assertEqual('LE', Util.decode_text(b'\\xFF\\xFEL\\0E\\0'))\n        data = AZ_STRING.encode(\"utf_16\")\n        self.assertTrue(data.startswith(b'\\xFF') or data.startswith(b'\\xFE'), data)  # platform dependent\n        self.assertEqual(AZ_STRING, Util.decode_text(data))\n\n    def test_is_binary_n(self):\n        with self.assertRaises(AttributeError):\n            self.assertFalse(Util.is_binary(None))\n        self.assertFalse(Util.is_binary(b''))\n        self.assertFalse(Util.is_binary(self.DEUTSCH_PANGRAM.encode(UTF_8)))\n        self.assertFalse(Util.is_binary(b\"\\x7Ffew unprintable letters\\x00\"))\n        self.assertFalse(Util.is_binary(self.KOREAN_PANGRAM.encode(UTF_8)))\n        # some binaries may be false negatives\n        self.assertFalse(Util.is_binary(b'!' * MAX_LINE_LENGTH + b\"\\0\\0\\0\\0\"))\n\n    def test_is_binary_p(self):\n        # two zeroes sequence is a marker of a binary\n        self.assertTrue(Util.is_binary(b\"\\0\\0\"))\n        self.assertTrue(Util.is_binary(b\"X3\\0\\0\"))\n        # unsupported encoding has 3 zeroes\n        self.assertTrue(Util.is_binary(AZ_STRING.encode(\"utf_32\")))\n        self.assertTrue(Util.is_binary(AZ_STRING.encode(\"utf_32_le\")))\n        self.assertTrue(Util.is_binary(AZ_STRING.encode(\"utf_32_be\")))\n\n    def test_is_latin1_n(self):\n        # standard UTF-16 encoding is not recognized as Latin1\n        self.assertFalse(Util.is_latin1(self.DEUTSCH_PANGRAM.encode(UTF_16_LE)))\n        # standard UTF-8 encoding is not recognized as Latin1 for Hangul\n        self.assertFalse(Util.is_latin1(self.KOREAN_PANGRAM.encode(UTF_8)))\n        # random data should be not recognized as Latin1\n        self.assertFalse(Util.is_latin1(random.randbytes(MAX_LINE_LENGTH)))\n\n    def test_is_latin1_p(self):\n        # standard UTF-8 encoding is recognized as Latin1 even with null-terminator\n        self.assertTrue(Util.is_latin1((self.DEUTSCH_PANGRAM + '\\0').encode(UTF_8)))\n        # obsolete encoding may be recognized as Latin1\n        self.assertTrue(Util.is_latin1(self.KOREAN_PANGRAM.encode(\"euc_kr\")))\n        # 0x1B ESCAPE code in log\n        self.assertTrue(Util.is_latin1(b\"\u001b[94mPASSWORD\u001b[0m\u001b[92m=\u001b[0m\u001b[93m2IWJD88FH4Y\u001b[0m;\"))\n\n    def test_is_ascii_entropy_validate_p(self):\n        self.assertTrue(Util.is_ascii_entropy_validate(b''))\n        self.assertTrue(Util.is_ascii_entropy_validate(AZ_DATA))\n        # remove all spaces to make a variable name\n        az_data = AZ_DATA.replace(b' ', b'')  # 35 bytes\n        self.assertTrue(Util.is_ascii_entropy_validate(az_data))\n        hangul_pangram_data = self.KOREAN_PANGRAM.encode(UTF_8)\n        self.assertTrue(Util.is_ascii_entropy_validate(hangul_pangram_data))\n        hanja_data = \"漢字能力檢定試驗\".encode(UTF_8)\n        self.assertEqual(24, len(hanja_data))\n        self.assertTrue(Util.is_ascii_entropy_validate(hanja_data))\n\n    def test_is_ascii_entropy_validate_n(self):\n        various_lang_data = \"수도 首都 Hauptstadt\".encode(UTF_8)\n        self.assertEqual(24, len(various_lang_data))\n        self.assertFalse(Util.is_ascii_entropy_validate(various_lang_data))\n        decoded_like_base64 = Util.decode_base64(f\"{AZ_STRING}=\")\n        self.assertFalse(Util.is_ascii_entropy_validate(decoded_like_base64))\n        for random_data_len in range(16, 40):\n            data = random.randbytes(random_data_len)\n            # VERY RARELY IT MIGHT FAIL\n            self.assertFalse(Util.is_ascii_entropy_validate(data), data)\n\n    def test_read_bin_file_n(self):\n        with tempfile.TemporaryDirectory() as tmp_dir:\n            self.assertTrue(os.path.isdir(tmp_dir))\n            file_path = os.path.join(tmp_dir, 'test_read_data_p')\n            with open(file_path, \"wb\") as f:\n                f.write(AZ_DATA)\n            data = Util.read_data(file_path)\n            self.assertEqual(AZ_DATA, data)\n\n    def test_read_data_n(self):\n        self.assertIsNone(Util.read_data(os.path.join(\"not\", \"existed\", \"path\")))\n\n    @given(strategies.text())\n    def test_split_text_n(self, text):\n        self.assertLessEqual(0, len(Util.split_text(text)))\n\n    def test_get_xml_data_p(self):\n        target_path = str(SAMPLES_PATH / \"xml_password.xml\")\n        xml_lines = Util.read_data(target_path).decode().splitlines(True)\n        result = Util.get_xml_from_lines(xml_lines)\n        self.assertEqual(\n            (\n                [\n                    \"Countries : \",  #\n                    \"Country : \",  #\n                    \"City : Seoul\",  #\n                    \"password : cackle!\",  #\n                    \"Country : \",  #\n                    \"City : Kyiv\",  #\n                    \"password : peace_for_ukraine\",  #\n                    \"password : Password for authorization\\n\"\n                    \"        BAIT: bace4d59-fa7e-beef-cafe-9129474bcd81\",  #\n                ],\n                [2, 3, 4, 5, 7, 8, 9, 11]),\n            result)\n\n    def test_get_xml_data_n(self):\n        target_path = str(SAMPLES_PATH / \"bad.xml\")\n        lines = Util.read_file(target_path)\n        with self.assertRaises(XMLSyntaxError):\n            Util.get_xml_from_lines(lines)\n\n    def test_json_load_p(self):\n        with tempfile.TemporaryDirectory() as tmp_dir:\n            self.assertTrue(os.path.isdir(tmp_dir))\n            file_path = os.path.join(tmp_dir, __name__)\n            with open(file_path, \"wb\") as f:\n                f.write(b'{}')\n            data = Util.json_load(file_path)\n            self.assertIsInstance(data, dict)\n\n            with open(file_path, \"wb\") as f:\n                f.write(b'[]')\n            data = Util.json_load(file_path)\n            self.assertIsInstance(data, list)\n\n            with open(file_path, \"wb\") as f:\n                f.write(b'\"' + AZ_DATA + b'\"')\n            data = Util.json_load(file_path)\n            self.assertIsInstance(data, str)\n            self.assertEqual(AZ_STRING, data)\n\n            rand_int = random.randint(-100, 100)\n            with open(file_path, \"wb\") as f:\n                f.write(str(rand_int).encode())\n            data = Util.json_load(file_path)\n            self.assertIsInstance(data, int)\n            self.assertEqual(rand_int, data)\n\n            rand_float = rand_int / 3.14\n            with open(file_path, \"wb\") as f:\n                f.write(str(rand_float).encode())\n            data = Util.json_load(file_path)\n            self.assertIsInstance(data, float)\n            self.assertEqual(rand_float, data)\n\n            with open(file_path, \"wb\") as f:\n                f.write(b'true')\n            data = Util.json_load(file_path)\n            self.assertIsInstance(data, bool)\n            self.assertTrue(data)\n\n            with open(file_path, \"wb\") as f:\n                f.write(b'null')\n            data = Util.json_load(file_path)\n            self.assertIsNone(data)\n\n    def test_json_load_n(self):\n        self.assertIsNone(Util.json_load(\"not_existed_path\"))\n        with tempfile.TemporaryDirectory() as tmp_dir:\n            self.assertTrue(os.path.isdir(tmp_dir))\n            file_path = os.path.join(tmp_dir, __name__)\n            with open(file_path, \"wb\") as f:\n                f.write(AZ_DATA)\n            self.assertIsNone(Util.json_load(file_path))\n\n    def test_json_dump_p(self):\n        with tempfile.TemporaryDirectory() as tmp_dir:\n            self.assertTrue(os.path.isdir(tmp_dir))\n            file_path = os.path.join(tmp_dir, __name__)\n            rand_int = random.randint(-1000000, 1000000)\n            test_dict = {\"dummy_int\": rand_int, \"dummy_str\": AZ_STRING}\n            Util.json_dump(test_dict, file_path=file_path, indent=None)\n            with open(file_path, \"rb\") as f:\n                self.assertEqual(\n                    b'{\"dummy_int\": ' + str(rand_int).encode(DEFAULT_ENCODING) + b', \"dummy_str\": \"' + AZ_DATA + b'\"}',\n                    f.read())\n            Util.json_dump(test_dict, file_path=file_path, encoding='utf-16', indent=None)\n            with open(file_path, \"rb\") as f:\n                read_data = f.read()\n                expected_data = \\\n                    b'\\xff\\xfe{\\x00\"\\x00d\\x00u\\x00m\\x00m\\x00y\\x00_\\x00i\\x00n\\x00t\\x00\"\\x00:\\x00 \\x00' \\\n                    + str(rand_int).encode('utf-16')[2:] + \\\n                    b',\\x00 \\x00\"\\x00d\\x00u\\x00m\\x00m\\x00y\\x00_\\x00s\\x00t\\x00r\\x00\"\\x00:\\x00 \\x00' \\\n                    b'\"\\x00T\\x00h\\x00e\\x00 \\x00q\\x00u\\x00i\\x00c\\x00k\\x00 \\x00b\\x00r\\x00o\\x00w\\x00n\\x00 \\x00' \\\n                    b'f\\x00o\\x00x\\x00 \\x00j\\x00u\\x00m\\x00p\\x00s\\x00 \\x00o\\x00v\\x00e\\x00r\\x00 \\x00t\\x00h\\x00e\\x00 ' \\\n                    b'\\x00l\\x00a\\x00z\\x00y\\x00 \\x00d\\x00o\\x00g\\x00\"\\x00}\\x00'\n                self.assertEqual(expected_data, read_data)\n                expected_text = f'{{\"dummy_int\": {rand_int}, \"dummy_str\": \"{AZ_STRING}\"}}'\n                read_text = read_data.decode(encoding='utf-16')\n                self.assertEqual(expected_text, read_text)\n\n    def test_json_dump_n(self):\n        with tempfile.TemporaryDirectory() as tmp_dir:\n            self.assertTrue(os.path.isdir(tmp_dir))\n            file_path = os.path.join(tmp_dir, __name__)\n            test_bytes = AZ_DATA\n            Util.json_dump(test_bytes, file_path=file_path, encoding=DEFAULT_ENCODING)\n            with open(file_path, \"rb\") as f:\n                self.assertEqual(0, len(f.read()))\n\n    def test_parse_py_p(self):\n        result = Util.parse_python(\"\"\"password = \\\n        \"Hello\" \\\n        ' World!'\"\"\")\n        self.assertIsInstance(result, list)\n        self.assertListEqual([\"password = 'Hello World!'\"], result)\n\n    def test_parse_py_n(self):\n        # empty\n        self.assertFalse(Util.parse_python(\"\"))\n        # wrong syntax\n        with self.assertRaises(SyntaxError):\n            Util.parse_python(\"\"\"<html>\"Hello World!\"</html>\"\"\")\n        with self.assertRaises(SyntaxError):\n            Util.parse_python(\"\"\"{'wrong': ': '\"\\.\" is syntax warning'}\"\"\")\n\n    def test_decode_base64_p(self):\n        self.assertTrue(Util.parse_python(\"\"\"regexa=r'\\.'\"\"\"))\n        self.assertEqual(AZ_DATA, Util.decode_base64(\"VGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZw==\"))\n        self.assertEqual(b\"\\xFF\\xFF\\xFF\", Util.decode_base64(\"////\"))\n        self.assertEqual(b\"\\xFB\\xEF\\xBE\", Util.decode_base64(\"++++\"))\n        self.assertEqual(b\"\\xFF\\xFF\\xFF\", Util.decode_base64(\"____\", urlsafe_detect=True))\n        self.assertEqual(b\"\\xFB\\xEF\\xBE\", Util.decode_base64(\"----\", urlsafe_detect=True))\n        self.assertEqual(b\"\\xFF\\xFE\", Util.decode_base64(\"//4\", padding_safe=True))\n        self.assertEqual(b\"\\xFF\\xFE\", Util.decode_base64(\"__4\", padding_safe=True, urlsafe_detect=True))\n        self.assertEqual(b\"kibana\", Util.decode_base64(\"a2liYW5h=\", padding_safe=True))\n\n    def test_decode_base64_n(self):\n        with self.assertRaises(binascii.Error):\n            Util.decode_base64(\"VGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZw\")\n        with self.assertRaises(binascii.Error):\n            Util.decode_base64(\"-_+_-\", padding_safe=True, urlsafe_detect=True)\n        with self.assertRaises(binascii.Error):\n            Util.decode_base64(\"/** ! */\", urlsafe_detect=True)\n        with self.assertRaises(binascii.Error):\n            Util.decode_base64(\"-----BEGIN+++++\", urlsafe_detect=True)\n        with self.assertRaises(binascii.Error):\n            Util.decode_base64(\"____\")\n        with self.assertRaises(binascii.Error):\n            Util.decode_base64(\"----\")\n\n    def test_get_chunks_n(self):\n        self.assertGreater(MAX_LINE_LENGTH, CHUNK_SIZE)\n        self.assertGreater(CHUNK_SIZE, OVERLAP_SIZE)\n        self.assertGreater(CHUNK_STEP_SIZE, OVERLAP_SIZE)\n        # wrong cases which should not appear due line length is checked before\n        self.assertListEqual([(0, CHUNK_SIZE)], Util.get_chunks(0))\n        self.assertListEqual([(0, CHUNK_SIZE)], Util.get_chunks(42))\n        self.assertListEqual([(0, CHUNK_SIZE)], Util.get_chunks(CHUNK_STEP_SIZE))\n        self.assertListEqual([(0, CHUNK_SIZE), (CHUNK_STEP_SIZE, CHUNK_SIZE)], Util.get_chunks(CHUNK_SIZE))\n        self.assertListEqual([(0, CHUNK_SIZE), (CHUNK_STEP_SIZE, MAX_LINE_LENGTH)], Util.get_chunks(MAX_LINE_LENGTH))\n        with self.assertRaises(Exception):\n            Util.get_chunks(None)\n\n    def test_get_chunks_p(self):\n        line_length = 42 + MAX_LINE_LENGTH\n        self.assertListEqual(  #\n            [  #\n                (0, CHUNK_SIZE),  #\n                (CHUNK_STEP_SIZE, line_length),  #\n            ],  #\n            Util.get_chunks(line_length))\n        line_length = 2 * MAX_LINE_LENGTH\n        self.assertListEqual(  #\n            [  #\n                (0, CHUNK_SIZE),  #\n                (1 * CHUNK_STEP_SIZE, CHUNK_SIZE + CHUNK_STEP_SIZE),  #\n                (2 * CHUNK_STEP_SIZE, CHUNK_SIZE + 2 * CHUNK_STEP_SIZE),  #\n                (3 * CHUNK_STEP_SIZE, line_length),  #\n            ],  #\n            Util.get_chunks(line_length))\n        line_length = 3 * MAX_LINE_LENGTH + 42\n        self.assertListEqual(  #\n            [  #\n                (0, CHUNK_SIZE),  #\n                (1 * CHUNK_STEP_SIZE, CHUNK_SIZE + CHUNK_STEP_SIZE),  #\n                (2 * CHUNK_STEP_SIZE, CHUNK_SIZE + 2 * CHUNK_STEP_SIZE),  #\n                (3 * CHUNK_STEP_SIZE, CHUNK_SIZE + 3 * CHUNK_STEP_SIZE),  #\n                (4 * CHUNK_STEP_SIZE, CHUNK_SIZE + 4 * CHUNK_STEP_SIZE),  #\n                (5 * CHUNK_STEP_SIZE, CHUNK_SIZE + 5 * CHUNK_STEP_SIZE),  #\n                (6 * CHUNK_STEP_SIZE, line_length),  #\n            ],  #\n            Util.get_chunks(line_length))\n\n    def test_get_chunks_coverage_n(self):\n        line_len = MAX_LINE_LENGTH\n        while 7 * MAX_LINE_LENGTH > line_len:\n            line_len += random.randint(1, OVERLAP_SIZE)\n            data = bytearray(line_len)\n            chunks = Util.get_chunks(line_len)\n            for start, end in chunks:\n                for i in range(start, end):\n                    data[i] += 1\n            self.assertNotIn(0, data)\n            # overlapped items should be passed not more than twice\n            self.assertGreaterEqual(2, max(data))\n\n    def test_subtext_n(self):\n        self.assertEqual(\"\", Util.subtext(\"\", 0, 0))\n        self.assertEqual(\"\", Util.subtext(' ' * 42, 0, 0))\n\n    def test_subtext_p(self):\n        self.assertEqual(100, len(string.printable))\n        self.assertEqual(\"0123456789abcdefghij\", Util.subtext(string.printable, 10, 10))\n        self.assertEqual(\"0123456789abcdefghij\", Util.subtext(string.printable, 9, 10))\n        self.assertEqual(\")*+,-./:;<=>?@[\\\\]^_`\", Util.subtext(string.printable, 80, 10))\n        self.assertEqual(\"-./:;<=>?@[\\\\]^_`{|}~\", Util.subtext(string.printable, 84, 10))\n        self.assertEqual(\"-./:;<=>?@[\\\\]^_`{|}~\", Util.subtext(string.printable, 95, 10))\n        self.assertEqual(\"var=value0123456789;\", Util.subtext(\"                 var=value0123456789;   \", 35, 10))\n        self.assertEqual(AZ_STRING, Util.subtext(AZ_STRING, len(AZ_STRING) >> 1, 1 + len(AZ_STRING) >> 1))\n        self.assertEqual(\"x jump\", Util.subtext(AZ_STRING, len(AZ_STRING) >> 1, 3))\n        self.assertEqual(\"ox jumps\", Util.subtext(AZ_STRING, len(AZ_STRING) >> 1, 4))\n        self.assertEqual(\"fox jumps\", Util.subtext(AZ_STRING, len(AZ_STRING) >> 1, 5))\n        self.assertEqual(\"fox jumps ov\", Util.subtext(AZ_STRING, len(AZ_STRING) >> 1, 6))\n        self.assertEqual(\"The quick\", Util.subtext(AZ_STRING, 0, 5))\n        self.assertEqual(\"The quick\", Util.subtext(AZ_STRING, 3, 5))\n        self.assertEqual(\"fox jumps\", Util.subtext(AZ_STRING, AZ_STRING.find(\"jumps\"), 5))\n        self.assertEqual(\"e lazy dog\", Util.subtext(AZ_STRING, len(AZ_STRING) - 2, 5))\n        self.assertEqual(\"the lazy dog\", Util.subtext(AZ_STRING, len(AZ_STRING) - 2, 6))\n        self.assertEqual(AZ_STRING[:39], Util.subtext(AZ_STRING, 15, 20))\n        self.assertEqual(AZ_STRING[-40:], Util.subtext(AZ_STRING, 33, 20))\n\n    def test_get_excel_column_name_n(self):\n        self.assertFalse(Util.get_excel_column_name(None))\n        self.assertFalse(Util.get_excel_column_name(-1))\n        self.assertFalse(Util.get_excel_column_name(3.14))\n\n    def test_get_excel_column_name_p(self):\n        self.assertEqual(\"A\", Util.get_excel_column_name(0))\n        self.assertEqual(\"AQ\", Util.get_excel_column_name(42))\n        self.assertEqual(\"CS\", Util.get_excel_column_name(96))\n        self.assertEqual(\"AAA\", Util.get_excel_column_name(702))\n        self.assertEqual(\"XFD\", Util.get_excel_column_name(16383))\n        self.assertEqual(\"FXSHRXX\", Util.get_excel_column_name(MAXINT))\n\n    def test_load_pk_n(self):\n        self.assertIsNone(Util.load_pk(None, None))\n        self.assertIsNone(Util.load_pk(b'', None))\n        self.assertIsNone(Util.load_pk(b'', b''))\n        self.assertIsNone(Util.load_pk(AZ_DATA, None))\n        self.assertIsNone(Util.load_pk(AZ_DATA, b''))\n\n    def test_load_pk_p(self):\n        pkcs1der = Util.decode_base64(self.PKCS1)\n        self.assertEqual(\"c12d4fd541ccd981066ad72d953a3e0d\", hashlib.md5(pkcs1der).hexdigest())\n        pkcs1pk = Util.load_pk(pkcs1der, None)\n        self.assertIsNotNone(pkcs1pk)\n\n        pkcs8der = Util.decode_base64(self.PKCS8)\n        pkcs8pk = Util.load_pk(pkcs8der, None)\n        self.assertIsNotNone(pkcs8pk)\n\n        pkcs8changeme = Util.decode_base64(self.PKCS8_CHANGEME)\n        pkcs8pk_changeme = Util.load_pk(pkcs8changeme, b'changeme')\n        self.assertIsNotNone(pkcs8pk_changeme)\n\n        pkcs12der = Util.decode_base64(self.PKCS12)\n        pkcs12pk = Util.load_pk(pkcs12der, None)\n        self.assertIsNotNone(pkcs12pk)\n\n        pkcs12changeme = Util.decode_base64(self.PKCS12_CHANGEME)\n        pkcs12pk_changeme = Util.load_pk(pkcs12changeme, b'changeme')\n        self.assertIsNotNone(pkcs12pk_changeme)\n\n    def test_check_pk_n(self):\n        self.assertFalse(Util.check_pk(None))\n\n    def test_check_pk_p(self):\n        pkcs1der = Util.decode_base64(self.PKCS1)\n        self.assertTrue(Util.check_pk(Util.load_pk(pkcs1der)))\n"
  }
]