138-tool generic MCP server for AI agent firms. Works with Claude Code, Codex, VS Code, Cursor, Antigravity
Project description
firm-mcp-server
Python MCP server (port 8012) that bridges VS Code Copilot agents to the [Firm](https://github.com/the server) Gateway ecosystem. Companion to setup-vs-agent-firm.
Tools (138)
| Module | Tool | Description | Gaps |
|---|---|---|---|
| vs_bridge | vs_context_push |
Push VS Code context → Firm session | — |
| vs_bridge | vs_context_pull |
Pull Firm session state → VS Code | — |
| vs_bridge | vs_session_link |
Associate workspace path ↔ session ID | — |
| vs_bridge | vs_session_status |
Bridge health check | — |
| gateway_fleet | firm_gateway_fleet_status |
Parallel health-check all instances | — |
| gateway_fleet | firm_gateway_fleet_add |
Register a Gateway instance | — |
| gateway_fleet | firm_gateway_fleet_remove |
Remove a Gateway instance | — |
| gateway_fleet | firm_gateway_fleet_broadcast |
Broadcast to all instances | — |
| gateway_fleet | firm_gateway_fleet_sync |
Sync config+skills to all instances | — |
| gateway_fleet | firm_gateway_fleet_list |
List instances | — |
| delivery_export | firm_export_github_pr |
Create draft PR on GitHub | — |
| delivery_export | firm_export_jira_ticket |
Create Jira ticket (ADF) | — |
| delivery_export | firm_export_linear_issue |
Create Linear issue (GraphQL) | — |
| delivery_export | firm_export_slack_digest |
Post Slack digest (Block Kit) | — |
| delivery_export | firm_export_document |
Write local Markdown deliverable | — |
| delivery_export | firm_export_auto |
Auto-route by delivery_format |
— |
| security_audit | firm_security_scan |
Scan files for SQL injection + XSS patterns | C1 |
| security_audit | firm_sandbox_audit |
Detect sandbox.mode: off → CRITICAL |
C2 |
| security_audit | firm_session_config_check |
Detect ephemeral SESSION_SECRET in .env/compose | C3 |
| security_audit | firm_rate_limit_check |
Detect Funnel without rate limiter → CRITICAL | H8 |
| acp_bridge | acp_session_persist |
Persist ACP session to ~/.firm/acp_sessions.json |
C4 |
| acp_bridge | acp_session_restore |
Restore persisted ACP session by run_id | C4 |
| acp_bridge | acp_session_list_active |
List ACP sessions active in last N hours | C4 |
| acp_bridge | fleet_session_inject_env |
Inject env vars to spawned sessions (allowlist) | H3 |
| acp_bridge | fleet_cron_schedule |
Schedule cron with sandbox enforcement | H4 |
| acp_bridge | firm_workspace_lock |
Advisory file lock with owner tracking (fcntl) |
H5 |
| acp_bridge | firm_acpx_version_check |
ACPX plugin version pin (≥0.1.15) + streaming mode check | 3.1 |
| reliability_probe | firm_gateway_probe |
WS probe with backoff — detects close 1006, returns launchctl |
H6/H7 |
| reliability_probe | firm_doc_sync_check |
Detect version drift in docs vs package.json | M5 |
| reliability_probe | firm_channel_audit |
Detect zombie channel SDK deps (LINE, Baileys…) | M1 |
| reliability_probe | firm_adr_generate |
Generate MADR + commit path for architecture decisions | M6 |
| gateway_hardening | firm_gateway_auth_check |
Verify Gateway auth config — CRITICAL if Funnel without password | H2 |
| gateway_hardening | firm_credentials_check |
Check Baileys/channel credential integrity and freshness | M3 |
| gateway_hardening | firm_webhook_sig_check |
Verify HMAC signing secrets for all inbound webhook channels | M4 |
| gateway_hardening | firm_log_config_check |
Detect debug/trace logging and missing redactPatterns | M7 |
| gateway_hardening | firm_workspace_integrity_check |
Validate ~/.firm/workspace (AGENTS.md, SOUL.md, staleness) | M8 |
| runtime_audit | firm_node_version_check |
Verify Node.js ≥ 22.12.0 (CVE-2025-59466, CVE-2026-21636) | C5 |
| runtime_audit | firm_secrets_workflow_check |
Detect hardcoded secrets in config.json (migrate to firm secrets) |
C6 |
| runtime_audit | firm_http_headers_check |
Verify HTTP security headers (HSTS, X-Content-Type-Options, Referrer-Policy) | H9 |
| runtime_audit | firm_nodes_commands_check |
Detect dangerous gateway.nodes.allowCommands override | H10 |
| runtime_audit | firm_trusted_proxy_check |
Verify trusted-proxy config coherence (bind + trustedProxies + auth mode) | H11 |
| runtime_audit | firm_session_disk_budget_check |
Verify session.maintenance.maxDiskBytes / highWaterBytes configured | M15 |
| runtime_audit | firm_dm_allowlist_check |
Detect dmPolicy=allowlist with empty allowFrom (fail-closed) across 9 channels | M16 |
| advanced_security | firm_secrets_lifecycle_check |
Verify External Secrets lifecycle (audit/configure/apply/reload) | C7 |
| advanced_security | firm_channel_auth_canon_check |
Verify channel auth path canonicalization (encoded traversal) | C8 |
| advanced_security | firm_exec_approval_freeze_check |
Verify exec approval plan immutability (symlink cwd rebind) | C9 |
| advanced_security | firm_hook_session_routing_check |
Verify hook session-key routing hardening | H12 |
| advanced_security | firm_config_include_check |
Verify $include hardlink escape + file-size guardrails | H13 |
| advanced_security | firm_config_prototype_check |
Detect prototype pollution (proto, constructor, prototype) in config | H14 |
| advanced_security | firm_safe_bins_profile_check |
Verify safeBins entries have explicit profiles | H15 |
| advanced_security | firm_group_policy_default_check |
Verify group policy default is fail-closed (allowlist) | H16 |
| config_migration | firm_shell_env_check |
Verify shell env sanitization (LD_PRELOAD, DYLD_*, ZDOTDIR) | H17 |
| config_migration | firm_plugin_integrity_check |
Verify plugin install integrity/pin + drift detection | H18 |
| config_migration | firm_token_separation_check |
Verify hooks.token ≠ gateway.auth.token | H19 |
| config_migration | firm_otel_redaction_check |
Verify OTEL secret redaction in diagnostics export | M17 |
| config_migration | firm_rpc_rate_limit_check |
Verify control-plane RPC rate limiting config | M21 |
| observability | firm_observability_pipeline |
Ingest JSONL traces into SQLite for offline analysis | T1 |
| observability | firm_ci_pipeline_check |
Validate CI workflow completeness (lint, test, secrets) | T6 |
| memory_audit | firm_pgvector_memory_check |
Verify pgvector config (HNSW index, dimensions, distance metrics) | T3 |
| memory_audit | firm_knowledge_graph_check |
Audit knowledge graph integrity (orphan nodes, cycles, TTL) | T9 |
| agent_orchestration | firm_agent_team_orchestrate |
Task DAG execution with topological sort + parallel layers | T4 |
| agent_orchestration | firm_agent_team_status |
Check orchestration status by ID or list all | T4 |
| i18n_audit | firm_i18n_audit |
Scan locale files for missing keys, empty values, interpolation mismatches | T5 |
| skill_loader | firm_skill_lazy_loader |
Lazy-load SKILL.md metadata (YAML front-matter, 5min cache) | T7 |
| skill_loader | firm_skill_search |
Keyword/tag search across cached skills with relevance scoring | T7 |
| n8n_bridge | firm_n8n_workflow_export |
Export agent pipeline as n8n-compatible workflow JSON | T8 |
| n8n_bridge | firm_n8n_workflow_import |
Validate & import n8n workflow JSON into workspace | T8 |
| browser_audit | firm_browser_context_check |
Validate Playwright/Puppeteer headless config for agents | T10 |
| hebbian_memory | firm_hebbian_harvest |
Ingest JSONL session logs → SQLite (PII stripped) — CDC §4.1 | — |
| hebbian_memory | firm_hebbian_weight_update |
Compute/apply Hebbian weight updates on Layer 2 — CDC §4.3 | — |
| hebbian_memory | firm_hebbian_analyze |
Co-activation pattern analysis (Jaccard similarity) — CDC §4.3 | — |
| hebbian_memory | firm_hebbian_status |
Dashboard: weights, atrophy, promotions — CDC §7 | — |
| hebbian_memory | firm_hebbian_layer_validate |
Validate 4-layer Claude.md structure — CDC §3.3 | — |
| hebbian_memory | firm_hebbian_pii_check |
Audit PII stripping config — CDC §5.2 | — |
| hebbian_memory | firm_hebbian_decay_config_check |
Validate learning rate, decay, thresholds — CDC §4.3 | — |
| hebbian_memory | firm_hebbian_drift_check |
Cosine similarity drift detection vs baseline — CDC §5.1 | — |
| a2a_bridge | firm_a2a_card_generate |
Generate agent-card.json from SOUL.md (RC v1.0) | G1 |
| a2a_bridge | firm_a2a_card_validate |
Validate A2A Agent Card against RC v1.0 spec | G2 |
| a2a_bridge | firm_a2a_task_send |
Send message/task to an A2A agent (SendMessage) | G3 |
| a2a_bridge | firm_a2a_task_status |
Get task status or list tasks (RC v1.0) | G4 |
| a2a_bridge | firm_a2a_cancel_task |
Cancel a running A2A task (CancelTask) | G5 |
| a2a_bridge | firm_a2a_subscribe_task |
Subscribe to task updates via SSE | G6 |
| a2a_bridge | firm_a2a_push_config |
CRUD for push notification webhooks (RC v1.0) | G7 |
| a2a_bridge | firm_a2a_discovery |
Discover agents via Agent Cards or SOUL.md scan | G8 |
| platform_audit | firm_secrets_v2_audit |
Audit Firm secrets v2 lifecycle (2026.2+) | G9 |
| platform_audit | firm_agent_routing_check |
Validate agent routing bindings | G10 |
| platform_audit | firm_voice_security_check |
TTS/voice channel security audit | G11 |
| platform_audit | firm_trust_model_check |
Validate trust model and multi-user heuristics | G12 |
| platform_audit | firm_autoupdate_check |
Self-update supply chain integrity check | G13 |
| platform_audit | firm_plugin_sdk_check |
Plugin SDK integrity validation | G14 |
| platform_audit | firm_content_boundary_check |
Content boundary & anti-prompt-injection audit | G15 |
| platform_audit | firm_sqlite_vec_check |
SQLite-vec memory backend validation | G16 |
| platform_audit | firm_adaptive_thinking_check |
Claude 4.6 adaptive thinking configuration check | 3.1 |
| ecosystem_audit | firm_mcp_firewall_check |
MCP Gateway firewall policy audit | G17 |
| ecosystem_audit | firm_rag_pipeline_check |
RAG pipeline health & config audit | G18 |
| ecosystem_audit | firm_sandbox_exec_check |
Sandbox execution isolation audit | G19 |
| ecosystem_audit | firm_context_health_check |
Context rot / cognitive health detection | G20 |
| ecosystem_audit | firm_provenance_tracker |
Cryptographic audit trail / provenance tracking | G21 |
| ecosystem_audit | firm_cost_analytics |
Usage/cost tracking and analysis | G22 |
| ecosystem_audit | firm_token_budget_optimizer |
Token optimization analysis | G23 |
| spec_compliance | firm_elicitation_audit |
Audit MCP elicitation capability compliance | S4 |
| spec_compliance | firm_tasks_audit |
Audit MCP Tasks capability compliance | S5 |
| spec_compliance | firm_resources_prompts_audit |
Audit MCP Resources & Prompts compliance | S6 |
| spec_compliance | firm_audio_content_audit |
Audit MCP audio content support | H3 |
| spec_compliance | firm_json_schema_dialect_check |
Audit JSON Schema dialect compliance | H5 |
| spec_compliance | firm_sse_transport_audit |
Audit Streamable HTTP / SSE transport | H6 |
| spec_compliance | firm_icon_metadata_audit |
Audit icon metadata support | H7 |
| prompt_security | firm_prompt_injection_check |
Scan text for 16 injection/jailbreak patterns | H2 |
| prompt_security | firm_prompt_injection_batch |
Batch scan multiple texts for injection patterns | H2 |
| auth_compliance | firm_oauth_oidc_audit |
Audit OAuth 2.1 / OIDC Discovery compliance | H4 |
| auth_compliance | firm_token_scope_check |
Check OAuth scopes restrict tool access properly | H4 |
| compliance_medium | firm_tool_deprecation_audit |
Audit tool deprecation lifecycle | M1 |
| compliance_medium | firm_circuit_breaker_audit |
Audit circuit breaker / resilience config | M2 |
| compliance_medium | firm_gdpr_residency_audit |
Audit GDPR compliance and data residency | M3 |
| compliance_medium | firm_agent_identity_audit |
Audit agent DID (decentralized identity) | M4 |
| compliance_medium | firm_model_routing_audit |
Audit multi-model routing and fallback chain | M5 |
| compliance_medium | firm_resource_links_audit |
Audit MCP resource links in tool results | M6 |
| market_research | firm_market_competitive_analysis |
Full competitive landscape analysis (feature matrix, SWOT, positioning) | — |
| market_research | firm_market_sizing |
TAM/SAM/SOM market sizing (top-down + bottom-up) | — |
| market_research | firm_market_financial_benchmark |
Financial benchmarking — unit economics, pricing, revenue | — |
| market_research | firm_market_web_research |
Structured web research & OSINT intelligence gathering | — |
| market_research | firm_market_report_generate |
Professional Markdown market research report generator | — |
| market_research | firm_market_research_monitor |
Continuous competitive monitoring (add/remove/update/status) | — |
| legal_status | firm_legal_status_compare |
Compare legal forms (SAS, SARL, EURL…) on multi-criteria grid | — |
| legal_status | firm_legal_tax_simulate |
Simulate IS/IR tax burden per legal form | — |
| legal_status | firm_legal_social_protection |
Analyze social protection by dirigeant status | — |
| legal_status | firm_legal_governance_audit |
Audit governance clauses & shareholder pacts | — |
| legal_status | firm_legal_creation_checklist |
Step-by-step company creation checklist | — |
| location_strategy | firm_location_geo_analysis |
Geo-economic attractiveness analysis by zone | — |
| location_strategy | firm_location_real_estate |
Real estate market scan (buy/rent/coworking) | — |
| location_strategy | firm_location_site_score |
Multi-criteria site scoring (20 criteria) | — |
| location_strategy | firm_location_incentives |
Map tax incentives & public aids by zone | — |
| location_strategy | firm_location_tco_simulate |
Total cost of occupancy simulation over N years | — |
| supplier_management | firm_supplier_search |
Search & filter suppliers by category/region/certification | — |
| supplier_management | firm_supplier_evaluate |
Multi-criteria supplier evaluation (15 criteria) | — |
| supplier_management | firm_supplier_tco_analyze |
Supplier TCO analysis (direct + indirect + hidden costs) | — |
| supplier_management | firm_supplier_contract_check |
Contract clause compliance audit (14 mandatory clauses) | — |
| supplier_management | firm_supplier_risk_monitor |
Supplier risk monitoring (add/remove/update/status) | — |
Quick start
python3 -m venv .venv && source .venv/bin/activate
pip install -r requirements.txt
cp .env.example .env # fill in tokens
bash scripts/start.sh
Add to VS Code settings.json:
"mcp.servers": {
"firm-extensions": { "url": "http://127.0.0.1:8012/mcp" }
}
Scripts
bash scripts/start.sh # start in background
bash scripts/stop.sh # graceful stop
bash scripts/status.sh # PID + HTTP + tool count
Tests
pip install -r requirements-dev.txt
python -m pytest tests/test_smoke.py -v
2272 tests (1961 unit + 311 integration), 94.6% coverage, covering:
- Server starts and answers
ping initializereturns correct capabilities +__version__- All 115 tools registered with valid
inputSchema vs_context_pushdegrades gracefully without Gatewayfirm_export_documentwrites local file- Unknown method returns JSON-RPC error -32601
- Unknown tool returns descriptive error
- Timing-safe auth (I21), SQL injection guard (I24), session_id regex (I41)
- ConfigPathInput traversal blocking across all 21 config-path models (I27)
- Health/healthz endpoints return correct tool count + version (I35)
- Shared
config_helpers:load_config,get_nested,mask_secret(I25) - Hebbian memory: harvest PII stripping, weight update dry-run, layer validation, drift detection, Pydantic traversal guards
Security
- Auth: timing-safe
hmac.compare_digeston Bearer token — no timing side-channel (I21) - Request limit:
client_max_size=2MBon aiohttpApplication(I22) - Tool timeout:
asyncio.wait_forwithTOOL_TIMEOUT_S(default 120s) on all async tool calls (I23) - SQL injection guard:
table_namevalidated by Pydantic regex^[a-zA-Z_][a-zA-Z0-9_]{0,127}$+ runtime whitelist in handler (I24) - Session ID regex:
^[a-zA-Z0-9_\-:.]+$on allsession_idfields — no injection (I41) - Centralized version:
__version__inmain.py— single source of truth (I37) - DRY helpers:
config_helpers.py— sharedload_config,get_nested,mask_secret(I25) - ConfigPathInput base: 21 models inherit traversal guard from single base class (I27)
- Hebbian PII stripping: 9 regex patterns (email, phone, IP, API keys, SSN, JWT, AWS keys) applied before any session storage — CDC §5.2
- Hebbian drift detection: TF-IDF cosine similarity vs baseline (no external API) — CDC §5.1
- Hebbian weight caps: auto-update capped at 0.95, atrophy floor at 0.0, dry_run=True default — CDC §4.3
- GitHub PRs always created as drafts with
needs-reviewlabel - Tokens masked in logs (last 4 chars only) via
mask_secret() - Context capped at 32 KB per WS payload
fleet.jsonandacp_sessions.jsonwritten atomically (os.replace)- Workspace lock via
fcntl.LOCK_EX | LOCK_NB(advisory, crash-safe) fleet_session_inject_env: allowlist regex — only known provider keys acceptedfleet_cron_schedule: command allowlist regex + blocklist (rm,dd,mkfs…)- Path traversal guard (
..) on all file-path Pydantic fields - All AI outputs carry human-review disclaimer
Gap coverage (Firm audit)
| ID | Severity | Description | Coverage |
|---|---|---|---|
| C1 | CRITICAL | SQL injection in API endpoints | firm_security_scan |
| C2 | CRITICAL | Sandbox disabled (mode: off) |
firm_sandbox_audit |
| C3 | CRITICAL | SESSION_SECRET ephemeral / in config | firm_session_config_check |
| C4 | CRITICAL | ACP sessions lost on restart (in-memory) | acp_session_persist/restore |
| H1 | HIGH | @buape/carbon frozen at 0.0.0-beta |
firm_adr_generate + CTO SOUL.md |
| H2 | HIGH | Gateway Funnel without auth.mode=password | firm_gateway_auth_check |
| H3 | HIGH | Spawned sessions get no env vars | fleet_session_inject_env |
| H4 | HIGH | Cron not blocked in sandbox | fleet_cron_schedule |
| H5 | HIGH | Race condition on workspace lock | firm_workspace_lock |
| H6 | HIGH | Gateway silently drops on macOS sleep | firm_gateway_probe |
| H7 | HIGH | WS close code 1006 not handled | firm_gateway_probe |
| H8 | HIGH | No rate limiting on Tailscale Funnel | firm_rate_limit_check |
| M1 | MEDIUM | @line/bot-sdk zombie dependency |
firm_channel_audit |
| M2 | MEDIUM | Test coverage threshold 70% | factory 80% threshold + CTO SOUL.md |
| M3 | MEDIUM | Baileys creds.json no integrity/age check | firm_credentials_check |
| M4 | MEDIUM | Webhook HMAC signature verification missing | firm_webhook_sig_check |
| M5 | MEDIUM | Docs version stale vs package.json | firm_doc_sync_check |
| M6 | MEDIUM | No ADRs for architecture decisions | firm_adr_generate |
| M7 | MEDIUM | Logging verbose / no redactPatterns | firm_log_config_check |
| M8 | MEDIUM | ~/.firm/workspace integrity unchecked | firm_workspace_integrity_check |
| C5 | CRITICAL | Node.js < 22.12.0 (CVE-2025-59466, CVE-2026-21636) | firm_node_version_check |
| C6 | CRITICAL | Hardcoded secrets in config.json (no secrets workflow) | firm_secrets_workflow_check |
| H9 | HIGH | HTTP security headers absent (HSTS, X-Content-Type-Options) | firm_http_headers_check |
| H10 | HIGH | gateway.nodes.allowCommands dangerous override | firm_nodes_commands_check |
| H11 | HIGH | Trusted-proxy misconfigured (bind+proxies+auth mode) | firm_trusted_proxy_check |
| M15 | MEDIUM | Session disk budget not configured (maxDiskBytes) | firm_session_disk_budget_check |
| M16 | MEDIUM | dmPolicy=allowlist with empty allowFrom (fail-open) | firm_dm_allowlist_check |
| C7 | CRITICAL | External Secrets lifecycle not validated (inline creds) | firm_secrets_lifecycle_check |
| C8 | CRITICAL | Plugin channel HTTP auth bypass (path canonicalization) | firm_channel_auth_canon_check |
| C9 | CRITICAL | Exec approval plan mutability (symlink cwd rebind) | firm_exec_approval_freeze_check |
| H12 | HIGH | Hook session-key routing unrestricted | firm_hook_session_routing_check |
| H13 | HIGH | Config $include hardlink escape + file-size | firm_config_include_check |
| H14 | HIGH | Prototype pollution in config merge | firm_config_prototype_check |
| H15 | HIGH | SafeBins without explicit profile = unrestricted interpreter | firm_safe_bins_profile_check |
| H16 | HIGH | Group policy default not fail-closed | firm_group_policy_default_check |
| H17 | HIGH | Shell env not sanitized (LD_PRELOAD, DYLD_*) | firm_shell_env_check |
| H18 | HIGH | Plugin install integrity/pin not tracked | firm_plugin_integrity_check |
| H19 | HIGH | hooks.token = gateway.auth.token (reuse) | firm_token_separation_check |
| M17 | MEDIUM | OTEL secret redaction missing in diagnostics | firm_otel_redaction_check |
| M21 | MEDIUM | Control-plane RPC rate limiting absent | firm_rpc_rate_limit_check |
| T1 | TOOL | No observability pipeline for JSONL traces | firm_observability_pipeline |
| T3 | TOOL | pgvector memory config unchecked | firm_pgvector_memory_check |
| T4 | TOOL | No parallel agent orchestration (task DAG) | firm_agent_team_orchestrate |
| T5 | TOOL | No i18n/localization audit | firm_i18n_audit |
| T6 | TOOL | No CI pipeline completeness check | firm_ci_pipeline_check |
| T7 | TOOL | Skills loaded eagerly (no lazy loading) | firm_skill_lazy_loader + firm_skill_search |
| T8 | TOOL | No n8n workflow automation bridge | firm_n8n_workflow_export + firm_n8n_workflow_import |
| T9 | TOOL | Knowledge graph integrity unchecked | firm_knowledge_graph_check |
| T10 | TOOL | Browser automation config unchecked | firm_browser_context_check |
⚠️ Contenu généré par IA — validation humaine requise avant utilisation.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file mcp_openclaw_extensions-4.1.2.tar.gz.
File metadata
- Download URL: mcp_openclaw_extensions-4.1.2.tar.gz
- Upload date:
- Size: 379.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9b108755aadc0eb2630d3b36d211e64a06bd16084e04c054e5bc635027b45ff9
|
|
| MD5 |
fa099d3e3d5e2cf16c85c8967500435d
|
|
| BLAKE2b-256 |
5ed8e91d4ee1a6dd4dbe8df66cf2420b749be42af4c54ed8273103eb1b48755a
|
File details
Details for the file mcp_openclaw_extensions-4.1.2-py3-none-any.whl.
File metadata
- Download URL: mcp_openclaw_extensions-4.1.2-py3-none-any.whl
- Upload date:
- Size: 222.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
613b8363c45d422ac65118faf536ba70862cd947a59b5caaf5a8f409edfd19ce
|
|
| MD5 |
568921ffa57746354d1e9abcc9335f60
|
|
| BLAKE2b-256 |
c143c3e10c064c0f472fb644ca6c3ed564dca22196d228f7e254aff3c27dcbab
|