undoom-uninstaller-mcp


Nameundoom-uninstaller-mcp JSON
Version 0.1.7 PyPI version JSON
download
home_pageNone
SummaryA Windows program uninstaller MCP server with advanced management and cleanup features
upload_time2025-08-09 08:58:19
maintainerNone
docs_urlNone
authorNone
requires_python>=3.10
licenseMIT
keywords cleanup mcp program-management uninstaller windows
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # Undoom Uninstaller MCP

一个基于MCP (Model Context Protocol) 的Windows程序卸载器服务,提供程序管理、卸载、强制删除和残留清理功能。

## 功能特性

- **程序列表管理**: 从Windows注册表获取已安装程序列表
- **程序搜索**: 支持按名称和发布商搜索程序
- **程序详情**: 查看程序的详细信息(版本、大小、安装位置等)
- **标准卸载**: 使用程序自带的卸载程序进行卸载
- **强制删除**: 强制删除程序文件和注册表项
- **残留清理**: 清理程序卸载后的残留文件和文件夹
- **列表刷新**: 重新扫描系统中的已安装程序

## 安装

### 方式一:通过PyPI安装(推荐)
```bash
# 使用uv安装
uvx --index-url https://pypi.tuna.tsinghua.edu.cn/simple undoom-uninstaller-mcp

# 或使用pip安装
pip install undoom-uninstaller-mcp
```

### 方式二:从源码安装
1. 克隆或下载此项目
2. 安装依赖:
```bash
uv sync
```

## 使用方法

### 作为MCP服务器运行

```bash
python main.py
```

### 可用工具

#### 1. list_programs
列出所有已安装的程序(包含安装时间和盘符信息)

**参数:**
- `search` (可选): 搜索关键词

**返回信息:**
- 程序名称、发布商、版本、大小、安装位置
- **新增**: 安装时间、所在盘符

**示例:**
```json
{
  "search": "chrome"
}
```

#### 2. get_program_details
获取指定程序的详细信息(包含安装时间和盘符信息)

**参数:**
- `program_name` (必需): 程序名称

**返回信息:**
- 程序名称、发布商、版本、大小、安装位置、卸载字符串、注册表键
- **新增**: 安装时间、所在盘符

**示例:**
```json
{
  "program_name": "Google Chrome"
}
```

#### 3. uninstall_program
卸载指定程序(使用程序自带的卸载程序)

**参数:**
- `program_name` (必需): 要卸载的程序名称

**示例:**
```json
{
  "program_name": "Google Chrome"
}
```

#### 4. force_remove_program
强制删除程序(删除文件和注册表项)

**警告**: 此操作不可逆,请谨慎使用

**参数:**
- `program_name` (必需): 要强制删除的程序名称

**示例:**
```json
{
  "program_name": "Broken Software"
}
```

#### 5. clean_residues
清理程序残留文件

**参数:**
- `program_name` (必需): 要清理残留的程序名称

**示例:**
```json
{
  "program_name": "Old Program"
}
```

#### 6. refresh_programs
刷新程序列表

**参数:** 无

#### 7. show_all_programs_detailed
显示所有程序的详细信息,包括名称、安装时间和盘符

**参数:**
- `limit` (可选): 限制返回的程序数量,默认为100
- `sort_by` (可选): 排序字段,可选值:
  - `name`: 按程序名称排序(默认)
  - `install_date`: 按安装时间排序
  - `drive_letter`: 按盘符排序

**返回信息:**
- 程序名称、安装时间、所在盘符
- 发布商、版本、大小、安装位置

**示例:**
```json
{
  "limit": 50,
  "sort_by": "install_date"
}
```

#### 8. generate_markdown_report
生成系统程序信息的Markdown报告文件

**参数:**
- `filename` (可选): 输出文件名(不包含扩展名),默认为'system_programs_report'
- `limit` (可选): 限制返回的程序数量,默认为200
- `sort_by` (可选): 排序字段,可选值:
  - `name`: 按程序名称排序(默认)
  - `install_date`: 按安装时间排序
  - `drive_letter`: 按盘符排序
- `include_stats` (可选): 是否包含详细统计信息,默认为true

**返回信息:**
- 生成包含所有程序信息的Markdown报告文件
- 包含统计概览、程序详细列表等

**示例:**
```json
{
  "filename": "my_programs_report",
  "limit": 100,
  "sort_by": "name",
  "include_stats": true
}
```

## 技术实现

### 数据来源
程序信息从以下Windows注册表位置获取:
- `HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall`
- `HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall`
- `HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall`

### 程序信息字段
- **name**: 程序名称
- **publisher**: 发布商
- **version**: 版本号
- **size**: 安装大小
- **install_location**: 安装位置
- **install_date**: 安装时间(YYYY-MM-DD格式)
- **drive_letter**: 所在盘符(如C:、D:等,网络路径显示为"网络路径")
- **uninstall_string**: 卸载命令
- **reg_key**: 注册表键路径

### 残留清理位置
系统会检查以下常见残留位置:
- 程序安装目录
- `%APPDATA%\[程序名]`
- `%LOCALAPPDATA%\[程序名]`
- `%PROGRAMDATA%\[程序名]`
- `%USERPROFILE%\AppData\Local\[程序名]`
- `%USERPROFILE%\AppData\Roaming\[程序名]`

## 注意事项

1. **管理员权限**: 某些操作可能需要管理员权限
2. **数据安全**: 强制删除和残留清理操作不可逆,请谨慎使用
3. **系统兼容性**: 仅支持Windows系统
4. **程序限制**: 某些系统程序可能无法卸载或删除

## 许可证

MIT License

## 贡献

欢迎提交Issue和Pull Request来改进此项目。
            

Raw data

            {
    "_id": null,
    "home_page": null,
    "name": "undoom-uninstaller-mcp",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.10",
    "maintainer_email": null,
    "keywords": "cleanup, mcp, program-management, uninstaller, windows",
    "author": null,
    "author_email": "Undoom <kaikaihuhu666@163.com>",
    "download_url": "https://files.pythonhosted.org/packages/3d/76/537bf457cb4c4ea4f6ceb6cfcd5b7811540cf085525ffc13299d4da7a12d/undoom_uninstaller_mcp-0.1.7.tar.gz",
    "platform": null,
    "description": "# Undoom Uninstaller MCP\n\n\u4e00\u4e2a\u57fa\u4e8eMCP (Model Context Protocol) \u7684Windows\u7a0b\u5e8f\u5378\u8f7d\u5668\u670d\u52a1\uff0c\u63d0\u4f9b\u7a0b\u5e8f\u7ba1\u7406\u3001\u5378\u8f7d\u3001\u5f3a\u5236\u5220\u9664\u548c\u6b8b\u7559\u6e05\u7406\u529f\u80fd\u3002\n\n## \u529f\u80fd\u7279\u6027\n\n- **\u7a0b\u5e8f\u5217\u8868\u7ba1\u7406**: \u4eceWindows\u6ce8\u518c\u8868\u83b7\u53d6\u5df2\u5b89\u88c5\u7a0b\u5e8f\u5217\u8868\n- **\u7a0b\u5e8f\u641c\u7d22**: \u652f\u6301\u6309\u540d\u79f0\u548c\u53d1\u5e03\u5546\u641c\u7d22\u7a0b\u5e8f\n- **\u7a0b\u5e8f\u8be6\u60c5**: \u67e5\u770b\u7a0b\u5e8f\u7684\u8be6\u7ec6\u4fe1\u606f\uff08\u7248\u672c\u3001\u5927\u5c0f\u3001\u5b89\u88c5\u4f4d\u7f6e\u7b49\uff09\n- **\u6807\u51c6\u5378\u8f7d**: \u4f7f\u7528\u7a0b\u5e8f\u81ea\u5e26\u7684\u5378\u8f7d\u7a0b\u5e8f\u8fdb\u884c\u5378\u8f7d\n- **\u5f3a\u5236\u5220\u9664**: \u5f3a\u5236\u5220\u9664\u7a0b\u5e8f\u6587\u4ef6\u548c\u6ce8\u518c\u8868\u9879\n- **\u6b8b\u7559\u6e05\u7406**: \u6e05\u7406\u7a0b\u5e8f\u5378\u8f7d\u540e\u7684\u6b8b\u7559\u6587\u4ef6\u548c\u6587\u4ef6\u5939\n- **\u5217\u8868\u5237\u65b0**: \u91cd\u65b0\u626b\u63cf\u7cfb\u7edf\u4e2d\u7684\u5df2\u5b89\u88c5\u7a0b\u5e8f\n\n## \u5b89\u88c5\n\n### \u65b9\u5f0f\u4e00\uff1a\u901a\u8fc7PyPI\u5b89\u88c5\uff08\u63a8\u8350\uff09\n```bash\n# \u4f7f\u7528uv\u5b89\u88c5\nuvx --index-url https://pypi.tuna.tsinghua.edu.cn/simple undoom-uninstaller-mcp\n\n# \u6216\u4f7f\u7528pip\u5b89\u88c5\npip install undoom-uninstaller-mcp\n```\n\n### \u65b9\u5f0f\u4e8c\uff1a\u4ece\u6e90\u7801\u5b89\u88c5\n1. \u514b\u9686\u6216\u4e0b\u8f7d\u6b64\u9879\u76ee\n2. \u5b89\u88c5\u4f9d\u8d56\uff1a\n```bash\nuv sync\n```\n\n## \u4f7f\u7528\u65b9\u6cd5\n\n### \u4f5c\u4e3aMCP\u670d\u52a1\u5668\u8fd0\u884c\n\n```bash\npython main.py\n```\n\n### \u53ef\u7528\u5de5\u5177\n\n#### 1. list_programs\n\u5217\u51fa\u6240\u6709\u5df2\u5b89\u88c5\u7684\u7a0b\u5e8f\uff08\u5305\u542b\u5b89\u88c5\u65f6\u95f4\u548c\u76d8\u7b26\u4fe1\u606f\uff09\n\n**\u53c2\u6570:**\n- `search` (\u53ef\u9009): \u641c\u7d22\u5173\u952e\u8bcd\n\n**\u8fd4\u56de\u4fe1\u606f:**\n- \u7a0b\u5e8f\u540d\u79f0\u3001\u53d1\u5e03\u5546\u3001\u7248\u672c\u3001\u5927\u5c0f\u3001\u5b89\u88c5\u4f4d\u7f6e\n- **\u65b0\u589e**: \u5b89\u88c5\u65f6\u95f4\u3001\u6240\u5728\u76d8\u7b26\n\n**\u793a\u4f8b:**\n```json\n{\n  \"search\": \"chrome\"\n}\n```\n\n#### 2. get_program_details\n\u83b7\u53d6\u6307\u5b9a\u7a0b\u5e8f\u7684\u8be6\u7ec6\u4fe1\u606f\uff08\u5305\u542b\u5b89\u88c5\u65f6\u95f4\u548c\u76d8\u7b26\u4fe1\u606f\uff09\n\n**\u53c2\u6570:**\n- `program_name` (\u5fc5\u9700): \u7a0b\u5e8f\u540d\u79f0\n\n**\u8fd4\u56de\u4fe1\u606f:**\n- \u7a0b\u5e8f\u540d\u79f0\u3001\u53d1\u5e03\u5546\u3001\u7248\u672c\u3001\u5927\u5c0f\u3001\u5b89\u88c5\u4f4d\u7f6e\u3001\u5378\u8f7d\u5b57\u7b26\u4e32\u3001\u6ce8\u518c\u8868\u952e\n- **\u65b0\u589e**: \u5b89\u88c5\u65f6\u95f4\u3001\u6240\u5728\u76d8\u7b26\n\n**\u793a\u4f8b:**\n```json\n{\n  \"program_name\": \"Google Chrome\"\n}\n```\n\n#### 3. uninstall_program\n\u5378\u8f7d\u6307\u5b9a\u7a0b\u5e8f\uff08\u4f7f\u7528\u7a0b\u5e8f\u81ea\u5e26\u7684\u5378\u8f7d\u7a0b\u5e8f\uff09\n\n**\u53c2\u6570:**\n- `program_name` (\u5fc5\u9700): \u8981\u5378\u8f7d\u7684\u7a0b\u5e8f\u540d\u79f0\n\n**\u793a\u4f8b:**\n```json\n{\n  \"program_name\": \"Google Chrome\"\n}\n```\n\n#### 4. force_remove_program\n\u5f3a\u5236\u5220\u9664\u7a0b\u5e8f\uff08\u5220\u9664\u6587\u4ef6\u548c\u6ce8\u518c\u8868\u9879\uff09\n\n**\u8b66\u544a**: \u6b64\u64cd\u4f5c\u4e0d\u53ef\u9006\uff0c\u8bf7\u8c28\u614e\u4f7f\u7528\n\n**\u53c2\u6570:**\n- `program_name` (\u5fc5\u9700): \u8981\u5f3a\u5236\u5220\u9664\u7684\u7a0b\u5e8f\u540d\u79f0\n\n**\u793a\u4f8b:**\n```json\n{\n  \"program_name\": \"Broken Software\"\n}\n```\n\n#### 5. clean_residues\n\u6e05\u7406\u7a0b\u5e8f\u6b8b\u7559\u6587\u4ef6\n\n**\u53c2\u6570:**\n- `program_name` (\u5fc5\u9700): \u8981\u6e05\u7406\u6b8b\u7559\u7684\u7a0b\u5e8f\u540d\u79f0\n\n**\u793a\u4f8b:**\n```json\n{\n  \"program_name\": \"Old Program\"\n}\n```\n\n#### 6. refresh_programs\n\u5237\u65b0\u7a0b\u5e8f\u5217\u8868\n\n**\u53c2\u6570:** \u65e0\n\n#### 7. show_all_programs_detailed\n\u663e\u793a\u6240\u6709\u7a0b\u5e8f\u7684\u8be6\u7ec6\u4fe1\u606f\uff0c\u5305\u62ec\u540d\u79f0\u3001\u5b89\u88c5\u65f6\u95f4\u548c\u76d8\u7b26\n\n**\u53c2\u6570:**\n- `limit` (\u53ef\u9009): \u9650\u5236\u8fd4\u56de\u7684\u7a0b\u5e8f\u6570\u91cf\uff0c\u9ed8\u8ba4\u4e3a100\n- `sort_by` (\u53ef\u9009): \u6392\u5e8f\u5b57\u6bb5\uff0c\u53ef\u9009\u503c\uff1a\n  - `name`: \u6309\u7a0b\u5e8f\u540d\u79f0\u6392\u5e8f\uff08\u9ed8\u8ba4\uff09\n  - `install_date`: \u6309\u5b89\u88c5\u65f6\u95f4\u6392\u5e8f\n  - `drive_letter`: \u6309\u76d8\u7b26\u6392\u5e8f\n\n**\u8fd4\u56de\u4fe1\u606f:**\n- \u7a0b\u5e8f\u540d\u79f0\u3001\u5b89\u88c5\u65f6\u95f4\u3001\u6240\u5728\u76d8\u7b26\n- \u53d1\u5e03\u5546\u3001\u7248\u672c\u3001\u5927\u5c0f\u3001\u5b89\u88c5\u4f4d\u7f6e\n\n**\u793a\u4f8b:**\n```json\n{\n  \"limit\": 50,\n  \"sort_by\": \"install_date\"\n}\n```\n\n#### 8. generate_markdown_report\n\u751f\u6210\u7cfb\u7edf\u7a0b\u5e8f\u4fe1\u606f\u7684Markdown\u62a5\u544a\u6587\u4ef6\n\n**\u53c2\u6570:**\n- `filename` (\u53ef\u9009): \u8f93\u51fa\u6587\u4ef6\u540d\uff08\u4e0d\u5305\u542b\u6269\u5c55\u540d\uff09\uff0c\u9ed8\u8ba4\u4e3a'system_programs_report'\n- `limit` (\u53ef\u9009): \u9650\u5236\u8fd4\u56de\u7684\u7a0b\u5e8f\u6570\u91cf\uff0c\u9ed8\u8ba4\u4e3a200\n- `sort_by` (\u53ef\u9009): \u6392\u5e8f\u5b57\u6bb5\uff0c\u53ef\u9009\u503c\uff1a\n  - `name`: \u6309\u7a0b\u5e8f\u540d\u79f0\u6392\u5e8f\uff08\u9ed8\u8ba4\uff09\n  - `install_date`: \u6309\u5b89\u88c5\u65f6\u95f4\u6392\u5e8f\n  - `drive_letter`: \u6309\u76d8\u7b26\u6392\u5e8f\n- `include_stats` (\u53ef\u9009): \u662f\u5426\u5305\u542b\u8be6\u7ec6\u7edf\u8ba1\u4fe1\u606f\uff0c\u9ed8\u8ba4\u4e3atrue\n\n**\u8fd4\u56de\u4fe1\u606f:**\n- \u751f\u6210\u5305\u542b\u6240\u6709\u7a0b\u5e8f\u4fe1\u606f\u7684Markdown\u62a5\u544a\u6587\u4ef6\n- \u5305\u542b\u7edf\u8ba1\u6982\u89c8\u3001\u7a0b\u5e8f\u8be6\u7ec6\u5217\u8868\u7b49\n\n**\u793a\u4f8b:**\n```json\n{\n  \"filename\": \"my_programs_report\",\n  \"limit\": 100,\n  \"sort_by\": \"name\",\n  \"include_stats\": true\n}\n```\n\n## \u6280\u672f\u5b9e\u73b0\n\n### \u6570\u636e\u6765\u6e90\n\u7a0b\u5e8f\u4fe1\u606f\u4ece\u4ee5\u4e0bWindows\u6ce8\u518c\u8868\u4f4d\u7f6e\u83b7\u53d6\uff1a\n- `HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall`\n- `HKEY_LOCAL_MACHINE\\SOFTWARE\\WOW6432Node\\Microsoft\\Windows\\CurrentVersion\\Uninstall`\n- `HKEY_CURRENT_USER\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall`\n\n### \u7a0b\u5e8f\u4fe1\u606f\u5b57\u6bb5\n- **name**: \u7a0b\u5e8f\u540d\u79f0\n- **publisher**: \u53d1\u5e03\u5546\n- **version**: \u7248\u672c\u53f7\n- **size**: \u5b89\u88c5\u5927\u5c0f\n- **install_location**: \u5b89\u88c5\u4f4d\u7f6e\n- **install_date**: \u5b89\u88c5\u65f6\u95f4\uff08YYYY-MM-DD\u683c\u5f0f\uff09\n- **drive_letter**: \u6240\u5728\u76d8\u7b26\uff08\u5982C:\u3001D:\u7b49\uff0c\u7f51\u7edc\u8def\u5f84\u663e\u793a\u4e3a\"\u7f51\u7edc\u8def\u5f84\"\uff09\n- **uninstall_string**: \u5378\u8f7d\u547d\u4ee4\n- **reg_key**: \u6ce8\u518c\u8868\u952e\u8def\u5f84\n\n### \u6b8b\u7559\u6e05\u7406\u4f4d\u7f6e\n\u7cfb\u7edf\u4f1a\u68c0\u67e5\u4ee5\u4e0b\u5e38\u89c1\u6b8b\u7559\u4f4d\u7f6e\uff1a\n- \u7a0b\u5e8f\u5b89\u88c5\u76ee\u5f55\n- `%APPDATA%\\[\u7a0b\u5e8f\u540d]`\n- `%LOCALAPPDATA%\\[\u7a0b\u5e8f\u540d]`\n- `%PROGRAMDATA%\\[\u7a0b\u5e8f\u540d]`\n- `%USERPROFILE%\\AppData\\Local\\[\u7a0b\u5e8f\u540d]`\n- `%USERPROFILE%\\AppData\\Roaming\\[\u7a0b\u5e8f\u540d]`\n\n## \u6ce8\u610f\u4e8b\u9879\n\n1. **\u7ba1\u7406\u5458\u6743\u9650**: \u67d0\u4e9b\u64cd\u4f5c\u53ef\u80fd\u9700\u8981\u7ba1\u7406\u5458\u6743\u9650\n2. **\u6570\u636e\u5b89\u5168**: \u5f3a\u5236\u5220\u9664\u548c\u6b8b\u7559\u6e05\u7406\u64cd\u4f5c\u4e0d\u53ef\u9006\uff0c\u8bf7\u8c28\u614e\u4f7f\u7528\n3. **\u7cfb\u7edf\u517c\u5bb9\u6027**: \u4ec5\u652f\u6301Windows\u7cfb\u7edf\n4. **\u7a0b\u5e8f\u9650\u5236**: \u67d0\u4e9b\u7cfb\u7edf\u7a0b\u5e8f\u53ef\u80fd\u65e0\u6cd5\u5378\u8f7d\u6216\u5220\u9664\n\n## \u8bb8\u53ef\u8bc1\n\nMIT License\n\n## \u8d21\u732e\n\n\u6b22\u8fce\u63d0\u4ea4Issue\u548cPull Request\u6765\u6539\u8fdb\u6b64\u9879\u76ee\u3002",
    "bugtrack_url": null,
    "license": "MIT",
    "summary": "A Windows program uninstaller MCP server with advanced management and cleanup features",
    "version": "0.1.7",
    "project_urls": {
        "Homepage": "https://github.com/undoom/undoom-uninstaller-mcp",
        "Issues": "https://github.com/undoom/undoom-uninstaller-mcp/issues",
        "Repository": "https://github.com/undoom/undoom-uninstaller-mcp"
    },
    "split_keywords": [
        "cleanup",
        " mcp",
        " program-management",
        " uninstaller",
        " windows"
    ],
    "urls": [
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "3b1806e3b5bd3b4f461bb8fdbfef3b8e92804f8a6c0a484d64cac27417cf7e0e",
                "md5": "9528eaccb2716f75cc9f21c4b61ebaa5",
                "sha256": "36f6b03f445c4579c4aeb2cc063477dc6c54ee5c0a957f523a1aa473c3f80f82"
            },
            "downloads": -1,
            "filename": "undoom_uninstaller_mcp-0.1.7-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "9528eaccb2716f75cc9f21c4b61ebaa5",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.10",
            "size": 16187,
            "upload_time": "2025-08-09T08:58:17",
            "upload_time_iso_8601": "2025-08-09T08:58:17.391225Z",
            "url": "https://files.pythonhosted.org/packages/3b/18/06e3b5bd3b4f461bb8fdbfef3b8e92804f8a6c0a484d64cac27417cf7e0e/undoom_uninstaller_mcp-0.1.7-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "3d76537bf457cb4c4ea4f6ceb6cfcd5b7811540cf085525ffc13299d4da7a12d",
                "md5": "24ca8c3430dbf4f439084c236277731e",
                "sha256": "ff3b1ad6766afb2a458e5c3a69a2b1b788239e0e90af33b6df04d07091072794"
            },
            "downloads": -1,
            "filename": "undoom_uninstaller_mcp-0.1.7.tar.gz",
            "has_sig": false,
            "md5_digest": "24ca8c3430dbf4f439084c236277731e",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.10",
            "size": 12465,
            "upload_time": "2025-08-09T08:58:19",
            "upload_time_iso_8601": "2025-08-09T08:58:19.090145Z",
            "url": "https://files.pythonhosted.org/packages/3d/76/537bf457cb4c4ea4f6ceb6cfcd5b7811540cf085525ffc13299d4da7a12d/undoom_uninstaller_mcp-0.1.7.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2025-08-09 08:58:19",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "undoom",
    "github_project": "undoom-uninstaller-mcp",
    "github_not_found": true,
    "lcname": "undoom-uninstaller-mcp"
}
        
Elapsed time: 0.66770s