osintengine 1.0.2__tar.gz → 1.0.3__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {osintengine-1.0.2 → osintengine-1.0.3}/PKG-INFO +4 -4
- {osintengine-1.0.2 → osintengine-1.0.3}/README.md +3 -3
- {osintengine-1.0.2 → osintengine-1.0.3}/pyproject.toml +1 -1
- {osintengine-1.0.2 → osintengine-1.0.3}/src/watson/__init__.py +1 -1
- {osintengine-1.0.2 → osintengine-1.0.3}/src/watson/orchestration/engine.py +44 -10
- {osintengine-1.0.2 → osintengine-1.0.3}/src/watson/pipeline/pre_synthesis.py +1 -1
- {osintengine-1.0.2 → osintengine-1.0.3}/.env.example +0 -0
- {osintengine-1.0.2 → osintengine-1.0.3}/LICENSE +0 -0
- {osintengine-1.0.2 → osintengine-1.0.3}/MANIFEST.in +0 -0
- {osintengine-1.0.2 → osintengine-1.0.3}/SELF_HOSTING.md +0 -0
- {osintengine-1.0.2 → osintengine-1.0.3}/WATSON_ARCHITECTURE.md +0 -0
- {osintengine-1.0.2 → osintengine-1.0.3}/deploy.sh +0 -0
- {osintengine-1.0.2 → osintengine-1.0.3}/osintengine.egg-info/SOURCES.txt +0 -0
- {osintengine-1.0.2 → osintengine-1.0.3}/requirements.txt +0 -0
- {osintengine-1.0.2 → osintengine-1.0.3}/setup.cfg +0 -0
- {osintengine-1.0.2 → osintengine-1.0.3}/src/watson/agent/__init__.py +0 -0
- {osintengine-1.0.2 → osintengine-1.0.3}/src/watson/agents/__init__.py +0 -0
- {osintengine-1.0.2 → osintengine-1.0.3}/src/watson/agents/protocol.py +0 -0
- {osintengine-1.0.2 → osintengine-1.0.3}/src/watson/auth/__init__.py +0 -0
- {osintengine-1.0.2 → osintengine-1.0.3}/src/watson/auth/store.py +0 -0
- {osintengine-1.0.2 → osintengine-1.0.3}/src/watson/conversation.py +0 -0
- {osintengine-1.0.2 → osintengine-1.0.3}/src/watson/core/__init__.py +0 -0
- {osintengine-1.0.2 → osintengine-1.0.3}/src/watson/core/models.py +0 -0
- {osintengine-1.0.2 → osintengine-1.0.3}/src/watson/ethics.py +0 -0
- {osintengine-1.0.2 → osintengine-1.0.3}/src/watson/exports.py +0 -0
- {osintengine-1.0.2 → osintengine-1.0.3}/src/watson/graph/__init__.py +0 -0
- {osintengine-1.0.2 → osintengine-1.0.3}/src/watson/graph/entities.py +0 -0
- {osintengine-1.0.2 → osintengine-1.0.3}/src/watson/graph/graph.py +0 -0
- {osintengine-1.0.2 → osintengine-1.0.3}/src/watson/graph/osint_framework.py +0 -0
- {osintengine-1.0.2 → osintengine-1.0.3}/src/watson/graph/relationships.py +0 -0
- {osintengine-1.0.2 → osintengine-1.0.3}/src/watson/graph/transforms.py +0 -0
- {osintengine-1.0.2 → osintengine-1.0.3}/src/watson/infra/__init__.py +0 -0
- {osintengine-1.0.2 → osintengine-1.0.3}/src/watson/infra/cache.py +0 -0
- {osintengine-1.0.2 → osintengine-1.0.3}/src/watson/infra/ratelimit.py +0 -0
- {osintengine-1.0.2 → osintengine-1.0.3}/src/watson/infra/resilience.py +0 -0
- {osintengine-1.0.2 → osintengine-1.0.3}/src/watson/infra/retry.py +0 -0
- {osintengine-1.0.2 → osintengine-1.0.3}/src/watson/metrics.py +0 -0
- {osintengine-1.0.2 → osintengine-1.0.3}/src/watson/opsec/__init__.py +0 -0
- {osintengine-1.0.2 → osintengine-1.0.3}/src/watson/orchestration/__init__.py +0 -0
- {osintengine-1.0.2 → osintengine-1.0.3}/src/watson/orchestration/executor.py +0 -0
- {osintengine-1.0.2 → osintengine-1.0.3}/src/watson/orchestration/intent.py +0 -0
- {osintengine-1.0.2 → osintengine-1.0.3}/src/watson/orchestration/intent_classifier.py +0 -0
- {osintengine-1.0.2 → osintengine-1.0.3}/src/watson/orchestration/llm_config.py +0 -0
- {osintengine-1.0.2 → osintengine-1.0.3}/src/watson/orchestration/resolution.py +0 -0
- {osintengine-1.0.2 → osintengine-1.0.3}/src/watson/orchestration/scraper.py +0 -0
- {osintengine-1.0.2 → osintengine-1.0.3}/src/watson/orchestration/synthesis.py +0 -0
- {osintengine-1.0.2 → osintengine-1.0.3}/src/watson/orchestration/target_profile.py +0 -0
- {osintengine-1.0.2 → osintengine-1.0.3}/src/watson/persistence/__init__.py +0 -0
- {osintengine-1.0.2 → osintengine-1.0.3}/src/watson/persistence/models.py +0 -0
- {osintengine-1.0.2 → osintengine-1.0.3}/src/watson/persistence/store.py +0 -0
- {osintengine-1.0.2 → osintengine-1.0.3}/src/watson/pipeline/__init__.py +0 -0
- {osintengine-1.0.2 → osintengine-1.0.3}/src/watson/search.py +0 -0
- {osintengine-1.0.2 → osintengine-1.0.3}/src/watson/serializers/stix.py +0 -0
- {osintengine-1.0.2 → osintengine-1.0.3}/src/watson/tools/__init__.py +0 -0
- {osintengine-1.0.2 → osintengine-1.0.3}/src/watson/tools/base.py +0 -0
- {osintengine-1.0.2 → osintengine-1.0.3}/src/watson/tools/blockchain.py +0 -0
- {osintengine-1.0.2 → osintengine-1.0.3}/src/watson/tools/captcha.py +0 -0
- {osintengine-1.0.2 → osintengine-1.0.3}/src/watson/tools/conflict.py +0 -0
- {osintengine-1.0.2 → osintengine-1.0.3}/src/watson/tools/corporate.py +0 -0
- {osintengine-1.0.2 → osintengine-1.0.3}/src/watson/tools/darkweb.py +0 -0
- {osintengine-1.0.2 → osintengine-1.0.3}/src/watson/tools/geolocation.py +0 -0
- {osintengine-1.0.2 → osintengine-1.0.3}/src/watson/tools/image_video.py +0 -0
- {osintengine-1.0.2 → osintengine-1.0.3}/src/watson/tools/marinetraffic.py +0 -0
- {osintengine-1.0.2 → osintengine-1.0.3}/src/watson/tools/people.py +0 -0
- {osintengine-1.0.2 → osintengine-1.0.3}/src/watson/tools/registry.py +0 -0
- {osintengine-1.0.2 → osintengine-1.0.3}/src/watson/tools/satellite.py +0 -0
- {osintengine-1.0.2 → osintengine-1.0.3}/src/watson/tools/scraper.py +0 -0
- {osintengine-1.0.2 → osintengine-1.0.3}/src/watson/tools/shodan.py +0 -0
- {osintengine-1.0.2 → osintengine-1.0.3}/src/watson/tools/social_media.py +0 -0
- {osintengine-1.0.2 → osintengine-1.0.3}/src/watson/tools/websites.py +0 -0
- {osintengine-1.0.2 → osintengine-1.0.3}/src/watson/tools/wikidata.py +0 -0
- {osintengine-1.0.2 → osintengine-1.0.3}/src/watson/utils/__init__.py +0 -0
- {osintengine-1.0.2 → osintengine-1.0.3}/src/watson/utils/helpers.py +0 -0
- {osintengine-1.0.2 → osintengine-1.0.3}/src/watson/utils/http.py +0 -0
- {osintengine-1.0.2 → osintengine-1.0.3}/src/watson/verification/__init__.py +0 -0
- {osintengine-1.0.2 → osintengine-1.0.3}/tests/conftest.py +0 -0
- {osintengine-1.0.2 → osintengine-1.0.3}/tests/test_infra.py +0 -0
- {osintengine-1.0.2 → osintengine-1.0.3}/tests/test_integration.py +0 -0
- {osintengine-1.0.2 → osintengine-1.0.3}/tests/test_persistence.py +0 -0
- {osintengine-1.0.2 → osintengine-1.0.3}/tests/test_resolution.py +0 -0
- {osintengine-1.0.2 → osintengine-1.0.3}/tests/test_synthesis.py +0 -0
- {osintengine-1.0.2 → osintengine-1.0.3}/watson/__init__.py +0 -0
- {osintengine-1.0.2 → osintengine-1.0.3}/watson/agents/__init__.py +0 -0
- {osintengine-1.0.2 → osintengine-1.0.3}/watson/agents/base.py +0 -0
- {osintengine-1.0.2 → osintengine-1.0.3}/watson/agents/direct.py +0 -0
- {osintengine-1.0.2 → osintengine-1.0.3}/watson/agents/hermes.py +0 -0
- {osintengine-1.0.2 → osintengine-1.0.3}/watson/agents/hermes_mcp.py +0 -0
- {osintengine-1.0.2 → osintengine-1.0.3}/watson/api_keys.py +0 -0
- {osintengine-1.0.2 → osintengine-1.0.3}/watson/browser_scraper.py +0 -0
- {osintengine-1.0.2 → osintengine-1.0.3}/watson/cli.py +0 -0
- {osintengine-1.0.2 → osintengine-1.0.3}/watson/crossref.py +0 -0
- {osintengine-1.0.2 → osintengine-1.0.3}/watson/ethics.py +0 -0
- {osintengine-1.0.2 → osintengine-1.0.3}/watson/graph.py +0 -0
- {osintengine-1.0.2 → osintengine-1.0.3}/watson/mcp_server.py +0 -0
- {osintengine-1.0.2 → osintengine-1.0.3}/watson/memory.py +0 -0
- {osintengine-1.0.2 → osintengine-1.0.3}/watson/neo4j_graph.py +0 -0
- {osintengine-1.0.2 → osintengine-1.0.3}/watson/opsec/__init__.py +0 -0
- {osintengine-1.0.2 → osintengine-1.0.3}/watson/reporter.py +0 -0
- {osintengine-1.0.2 → osintengine-1.0.3}/watson/scheduler.py +0 -0
- {osintengine-1.0.2 → osintengine-1.0.3}/watson/serializers/stix.py +0 -0
- {osintengine-1.0.2 → osintengine-1.0.3}/watson/terminal.py +0 -0
- {osintengine-1.0.2 → osintengine-1.0.3}/watson/toolkit.py +0 -0
- {osintengine-1.0.2 → osintengine-1.0.3}/watson/toolkit_api.py +0 -0
- {osintengine-1.0.2 → osintengine-1.0.3}/watson/toolkit_automation.py +0 -0
- {osintengine-1.0.2 → osintengine-1.0.3}/watson/toolkit_registry.py +0 -0
- {osintengine-1.0.2 → osintengine-1.0.3}/watson/verification/__init__.py +0 -0
- {osintengine-1.0.2 → osintengine-1.0.3}/watson/web/__init__.py +0 -0
- {osintengine-1.0.2 → osintengine-1.0.3}/watson/web/app.py +0 -0
- {osintengine-1.0.2 → osintengine-1.0.3}/watson/web/middleware.py +0 -0
- {osintengine-1.0.2 → osintengine-1.0.3}/watson/web/static/assets/index-B7hPOc0z.js +0 -0
- {osintengine-1.0.2 → osintengine-1.0.3}/watson/web/static/assets/index-CJ6FP8Mp.css +0 -0
- {osintengine-1.0.2 → osintengine-1.0.3}/watson/web/static/assets/watson-logo-Dk9tawHb.png +0 -0
- {osintengine-1.0.2 → osintengine-1.0.3}/watson/web/static/index.html +0 -0
- {osintengine-1.0.2 → osintengine-1.0.3}/watson/web/templates/chat.html +0 -0
- {osintengine-1.0.2 → osintengine-1.0.3}/watson/web/templates/investigation-map.html +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: osintengine
|
|
3
|
-
Version: 1.0.
|
|
3
|
+
Version: 1.0.3
|
|
4
4
|
Summary: The OSINT investigation engine — 7-phase pipeline, persistent knowledge graph, community intelligence
|
|
5
5
|
Author-email: Lorenzo Baron <baron.lorenzo99@gmail.com>
|
|
6
6
|
License-Expression: Apache-2.0
|
|
@@ -65,9 +65,9 @@ Dynamic: license-file
|
|
|
65
65
|
</p>
|
|
66
66
|
|
|
67
67
|
<p align="center">
|
|
68
|
-
<a href="https://pypi.org/project/osintengine/"><img src="https://img.shields.io/badge/pypi-v1.0.
|
|
68
|
+
<a href="https://pypi.org/project/osintengine/"><img src="https://img.shields.io/badge/pypi-v1.0.3-blue" alt="PyPI"></a>
|
|
69
69
|
<a href="https://www.python.org/downloads/"><img src="https://img.shields.io/badge/python-3.10%2B-blue" alt="Python"></a>
|
|
70
|
-
<a href="LICENSE"><img src="https://img.shields.io/badge/license-
|
|
70
|
+
<a href="LICENSE"><img src="https://img.shields.io/badge/license-Apache%202.0-green" alt="License"></a>
|
|
71
71
|
<a href="https://github.com/Lorenzobaron99/watson-osint"><img src="https://img.shields.io/badge/status-active-brightgreen" alt="Status"></a>
|
|
72
72
|
</p>
|
|
73
73
|
|
|
@@ -85,7 +85,7 @@ One target. One command. A dossier that would take an analyst hours.
|
|
|
85
85
|
|
|
86
86
|
| You type... | Most tools return... | Watson returns... |
|
|
87
87
|
|---|---|---|
|
|
88
|
-
| "
|
|
88
|
+
| "John Chen" | Wikipedia link, maybe a news article | Employment history, board positions, corporate registrations, domain ownerships, sanctions screening, adverse media, timeline of professional milestones, entity relationship graph |
|
|
89
89
|
| "example.com" | WHOIS record | Domain history, SSL certificates, subdomains, DNS records, IP geolocation, hosting provider, Wayback snapshots, linked social accounts, VirusTotal reputation |
|
|
90
90
|
| "crypto-wallet-0x..." | Nothing useful | Transaction graph, exchange links, associated addresses, risk scoring, dark web mentions |
|
|
91
91
|
|
|
@@ -9,9 +9,9 @@
|
|
|
9
9
|
</p>
|
|
10
10
|
|
|
11
11
|
<p align="center">
|
|
12
|
-
<a href="https://pypi.org/project/osintengine/"><img src="https://img.shields.io/badge/pypi-v1.0.
|
|
12
|
+
<a href="https://pypi.org/project/osintengine/"><img src="https://img.shields.io/badge/pypi-v1.0.3-blue" alt="PyPI"></a>
|
|
13
13
|
<a href="https://www.python.org/downloads/"><img src="https://img.shields.io/badge/python-3.10%2B-blue" alt="Python"></a>
|
|
14
|
-
<a href="LICENSE"><img src="https://img.shields.io/badge/license-
|
|
14
|
+
<a href="LICENSE"><img src="https://img.shields.io/badge/license-Apache%202.0-green" alt="License"></a>
|
|
15
15
|
<a href="https://github.com/Lorenzobaron99/watson-osint"><img src="https://img.shields.io/badge/status-active-brightgreen" alt="Status"></a>
|
|
16
16
|
</p>
|
|
17
17
|
|
|
@@ -29,7 +29,7 @@ One target. One command. A dossier that would take an analyst hours.
|
|
|
29
29
|
|
|
30
30
|
| You type... | Most tools return... | Watson returns... |
|
|
31
31
|
|---|---|---|
|
|
32
|
-
| "
|
|
32
|
+
| "John Chen" | Wikipedia link, maybe a news article | Employment history, board positions, corporate registrations, domain ownerships, sanctions screening, adverse media, timeline of professional milestones, entity relationship graph |
|
|
33
33
|
| "example.com" | WHOIS record | Domain history, SSL certificates, subdomains, DNS records, IP geolocation, hosting provider, Wayback snapshots, linked social accounts, VirusTotal reputation |
|
|
34
34
|
| "crypto-wallet-0x..." | Nothing useful | Transaction graph, exchange links, associated addresses, risk scoring, dark web mentions |
|
|
35
35
|
|
|
@@ -1927,7 +1927,7 @@ Examples:
|
|
|
1927
1927
|
# FORCE a targeted person search excluding the non-person Wikipedia hit
|
|
1928
1928
|
# Universal fix: when Wikipedia returns a location/org/thing instead of a person,
|
|
1929
1929
|
# search with -site:wikipedia.org + person keywords. Works for:
|
|
1930
|
-
# -
|
|
1930
|
+
# - Marco Rossi (comune) → "Marco Rossi" analyst defense
|
|
1931
1931
|
# - Austin Texas (city) → "Austin Texas" linkedin
|
|
1932
1932
|
# - Paris Hilton (city) → "Paris Hilton" celebrity (though common enough to find anyway)
|
|
1933
1933
|
try:
|
|
@@ -2808,7 +2808,7 @@ Examples:
|
|
|
2808
2808
|
# employment, board positions) — essential context even for criminal
|
|
2809
2809
|
# investigations. Criminal queries add sanctions, court records, and
|
|
2810
2810
|
# wanted notices. Without professional queries, deep investigations
|
|
2811
|
-
# miss entire professional profiles (e.g. "
|
|
2811
|
+
# miss entire professional profiles (e.g. "Marco Rossi" → only found
|
|
2812
2812
|
# jail lookup sites, never discovered eurodefense.tech).
|
|
2813
2813
|
search_label = "searching professional history + court records, legal databases"
|
|
2814
2814
|
search_mode = "both"
|
|
@@ -3802,14 +3802,14 @@ Examples:
|
|
|
3802
3802
|
primary = sum(1 for f in findings if f.source_tier == "PRIMARY")
|
|
3803
3803
|
has_url = sum(1 for f in findings if f.source_url)
|
|
3804
3804
|
|
|
3805
|
-
# Verifiability score — weighted:
|
|
3806
|
-
#
|
|
3807
|
-
#
|
|
3805
|
+
# Verifiability score — weighted: confirmed findings + primary sources dominate.
|
|
3806
|
+
# CONFIRMED findings are the gold standard; PRIMARY sources (court docs, sanctions)
|
|
3807
|
+
# carry the most weight. PROBABLE adds marginal confidence.
|
|
3808
3808
|
report.verifiability_score = (
|
|
3809
|
-
0.
|
|
3809
|
+
0.35 * (confirmed / max(total, 1)) +
|
|
3810
|
+
0.30 * (primary / max(total, 1)) +
|
|
3810
3811
|
0.25 * (has_url / max(total, 1)) +
|
|
3811
|
-
0.
|
|
3812
|
-
0.35 * (probable / max(total, 1))
|
|
3812
|
+
0.10 * (probable / max(total, 1))
|
|
3813
3813
|
)
|
|
3814
3814
|
|
|
3815
3815
|
lines = [
|
|
@@ -4830,7 +4830,7 @@ and confidence assessments. Follow the OUTPUT FORMAT specified above."""
|
|
|
4830
4830
|
"""Compute token-overlap relevance between target query and finding text.
|
|
4831
4831
|
|
|
4832
4832
|
Returns 0.0 – 1.0. A score of 0 means zero word overlap — the finding
|
|
4833
|
-
is almost certainly unrelated (e.g., "Idaho murders" for "
|
|
4833
|
+
is almost certainly unrelated (e.g., "Idaho murders" for "KOVÁCS Anna").
|
|
4834
4834
|
"""
|
|
4835
4835
|
import unicodedata
|
|
4836
4836
|
if not target or not text:
|
|
@@ -5004,7 +5004,7 @@ and confidence assessments. Follow the OUTPUT FORMAT specified above."""
|
|
|
5004
5004
|
"no family members identified",
|
|
5005
5005
|
"no specific co-conspirator names",
|
|
5006
5006
|
"no specific fine", "no specific asset",
|
|
5007
|
-
# ── Leaked through
|
|
5007
|
+
# ── Leaked through KOVÁCS investigation ──
|
|
5008
5008
|
"no specific legal citations",
|
|
5009
5009
|
"no court identifiers",
|
|
5010
5010
|
"no child details",
|
|
@@ -5111,6 +5111,24 @@ and confidence assessments. Follow the OUTPUT FORMAT specified above."""
|
|
|
5111
5111
|
"i will run", "i will simulate", "i must ask",
|
|
5112
5112
|
"you have not", "if you can", "instruct me",
|
|
5113
5113
|
"once you provide", "example of what",
|
|
5114
|
+
# ── Leaked through Mohammadzadeh investigation ──
|
|
5115
|
+
"let's first extract", "let's first",
|
|
5116
|
+
"i will open", "i'll open", "i can use python",
|
|
5117
|
+
"i'm not actually able", "i recall the",
|
|
5118
|
+
"for each fact", "i'll also", "i'll keep",
|
|
5119
|
+
"i'll treat", "i'll use", "i can use",
|
|
5120
|
+
"the youtube video is likely",
|
|
5121
|
+
"however, the user also",
|
|
5122
|
+
"i will incorporate", "i can incorporate",
|
|
5123
|
+
"i could open", "i could use",
|
|
5124
|
+
"i don't have the full", "i can view",
|
|
5125
|
+
"i could mention", "i'll rely on",
|
|
5126
|
+
"but i can't see", "i can't see the full",
|
|
5127
|
+
"the search result snippet says",
|
|
5128
|
+
"for iran:", "i can mention that",
|
|
5129
|
+
"as an ai in this simulation",
|
|
5130
|
+
"i need to fetch", "i might need",
|
|
5131
|
+
"i will treat", "i can mention",
|
|
5114
5132
|
])
|
|
5115
5133
|
|
|
5116
5134
|
if is_meta and not (has_proper_names or has_dates or has_source_ref):
|
|
@@ -5121,6 +5139,22 @@ and confidence assessments. Follow the OUTPUT FORMAT specified above."""
|
|
|
5121
5139
|
f.source_tier = "UNVERIFIED"
|
|
5122
5140
|
f.confidence = min(f.confidence, 0.25)
|
|
5123
5141
|
|
|
5142
|
+
# ── Drop: DNS/IP resolution noise when target is a person ──
|
|
5143
|
+
# Graph enrichment resolves every domain in findings to IPs and geolocates them.
|
|
5144
|
+
# For person investigations, this produces 14+ noise findings (Cloudflare → Toronto).
|
|
5145
|
+
# Only keep DNS/IP enrichment when the investigation target IS a domain or IP.
|
|
5146
|
+
if getattr(f, 'phase', '') == 'graph_enrich':
|
|
5147
|
+
tf = (f.title or '').lower()
|
|
5148
|
+
df = (f.description or '').lower()
|
|
5149
|
+
# DNS resolution or IP geolocation that's about infrastructure, not the target
|
|
5150
|
+
dns_patterns = [
|
|
5151
|
+
'dns a record', 'resolves_to', '→ resolves_to',
|
|
5152
|
+
'→ located_in', 'located_in', 'ip geolocation',
|
|
5153
|
+
'cloudflare, inc.', '→ toronto', '→ san francisco',
|
|
5154
|
+
]
|
|
5155
|
+
if any(p in tf or p in df for p in dns_patterns):
|
|
5156
|
+
continue
|
|
5157
|
+
|
|
5124
5158
|
kept.append(f)
|
|
5125
5159
|
|
|
5126
5160
|
# ── Relevance check: universal pre-synthesis pipeline (any target type, any language) ──
|
|
@@ -501,7 +501,7 @@ def relevance_score(profile: TargetProfile, text: str) -> float:
|
|
|
501
501
|
|
|
502
502
|
# ── Strategy 2.5: Surname-aware penalty (person targets only) ──
|
|
503
503
|
# For multi-word person names, a finding that matches only ONE name part
|
|
504
|
-
# (e.g., "
|
|
504
|
+
# (e.g., "Anna Kovacs" matching only "Anna" from "KOVÁCS Anna") is a
|
|
505
505
|
# completely different person. Given names are too common; the surname is
|
|
506
506
|
# the primary disambiguator. This penalty prevents the trigram/Jaccard
|
|
507
507
|
# overlap from giving high scores to clearly irrelevant findings.
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|