From 7f7a59fd0832734a640787573da4a8b9a2b7e799 Mon Sep 17 00:00:00 2001 From: --git_token Date: Fri, 26 Jun 2026 08:10:01 +0800 Subject: [PATCH] auto backup 2026-06-26 08:10:01 --- memory/.dreams/events.jsonl | 3 + memory/.dreams/short-term-recall.json | 98 +++++++++---- .../ai_descriptions_feishu_2026-06-24.json | 21 +++ .../ai_descriptions_wechat_2026-06-24.json | 61 ++++++++ .../cluster_context_2026-06-24.json | 130 ++++++++++++++++++ .../飞书反馈_2026-06-25.xlsx | Bin 0 -> 6451 bytes 6 files changed, 287 insertions(+), 26 deletions(-) create mode 100644 output/daily_feedback/ai_descriptions_feishu_2026-06-24.json create mode 100644 output/daily_feedback/ai_descriptions_wechat_2026-06-24.json create mode 100644 output/daily_feedback/cluster_context_2026-06-24.json create mode 100644 output/daily_feedback/飞书反馈_2026-06-25.xlsx diff --git a/memory/.dreams/events.jsonl b/memory/.dreams/events.jsonl index b08d8fd..afbba13 100644 --- a/memory/.dreams/events.jsonl +++ b/memory/.dreams/events.jsonl @@ -39,3 +39,6 @@ {"type":"memory.recall.recorded","timestamp":"2026-06-18T02:18:46.478Z","query":"小葵小葵群 发送 消息 机制 定时 心跳","resultCount":1,"results":[{"path":"memory/2026-04-18.md","startLine":1,"endLine":5,"score":1}]} {"type":"memory.recall.recorded","timestamp":"2026-06-22T08:07:37.366Z","query":"P0 检测 归纳 方法 飞书 微信","resultCount":5,"results":[{"path":"memory/2026-05-21.md","startLine":35,"endLine":64,"score":1},{"path":"memory/2026-05-21.md","startLine":1,"endLine":26,"score":1},{"path":"memory/2026-05-27.md","startLine":41,"endLine":51,"score":1},{"path":"memory/2026-05-27.md","startLine":22,"endLine":43,"score":1},{"path":"memory/2026-05-07.md","startLine":189,"endLine":209,"score":1}]} {"type":"memory.recall.recorded","timestamp":"2026-06-22T08:20:23.105Z","query":"微信反馈数据查询 wechat feedback MySQL 数据库","resultCount":6,"results":[{"path":"memory/2026-04-30.md","startLine":116,"endLine":142,"score":1},{"path":"memory/2026-04-30.md","startLine":134,"endLine":166,"score":1},{"path":"memory/2026-05-22.md","startLine":107,"endLine":135,"score":1},{"path":"memory/2026-05-26.md","startLine":1,"endLine":24,"score":1},{"path":"memory/2026-05-25.md","startLine":21,"endLine":42,"score":1},{"path":"memory/2026-05-25.md","startLine":38,"endLine":44,"score":1}]} +{"type":"memory.recall.recorded","timestamp":"2026-06-25T02:57:36.278Z","query":"李应瑛 飞书文档 情境 context","resultCount":5,"results":[{"path":"memory/2026-05-25.md","startLine":21,"endLine":42,"score":1},{"path":"memory/2026-05-26.md","startLine":1,"endLine":24,"score":1},{"path":"memory/2026-05-25.md","startLine":38,"endLine":44,"score":1},{"path":"memory/2026-05-22.md","startLine":129,"endLine":158,"score":1},{"path":"memory/2026-05-26.md","startLine":21,"endLine":41,"score":1}]} +{"type":"memory.recall.recorded","timestamp":"2026-06-25T02:57:47.989Z","query":"飞书知识库 wiki 文档列表 用户反馈","resultCount":5,"results":[{"path":"memory/2026-05-25.md","startLine":21,"endLine":42,"score":1},{"path":"memory/2026-05-26.md","startLine":1,"endLine":24,"score":1},{"path":"memory/2026-05-25.md","startLine":38,"endLine":44,"score":1},{"path":"memory/2026-05-22.md","startLine":129,"endLine":158,"score":1},{"path":"memory/2026-05-26.md","startLine":21,"endLine":41,"score":1}]} +{"type":"memory.recall.recorded","timestamp":"2026-06-25T02:57:59.732Z","query":"wiki space_id token 知识库 用户反馈 问题归纳","resultCount":1,"results":[{"path":"memory/2026-04-30.md","startLine":57,"endLine":78,"score":1}]} diff --git a/memory/.dreams/short-term-recall.json b/memory/.dreams/short-term-recall.json index d22d208..b0655a2 100644 --- a/memory/.dreams/short-term-recall.json +++ b/memory/.dreams/short-term-recall.json @@ -1,6 +1,6 @@ { "version": 1, - "updatedAt": "2026-06-22T08:20:23.105Z", + "updatedAt": "2026-06-25T02:57:59.732Z", "entries": { "memory:memory/2026-04-18.md:1:5": { "key": "memory:memory/2026-04-18.md:1:5", @@ -925,13 +925,13 @@ "endLine": 42, "source": "memory", "snippet": "- `update_summary_doc_as_children()` 默认 title_prefix 从 `\"\"` 改为 `\"飞书-\"` - `create_child_doc()` 日期提取兼容 `飞书-` / `微信-` 前缀 - `dispatch_summary_to_chat()` 消息标题和链接同步更新 - `get_today_doc_obj_token()`、`--apply-ai` 路径、步骤7分发 的标题格式全部更新 ### 补跑历史数据 - 飞书 5/22(3条)、5/23(1条)AI归纳回写成功 + 自动分发到群聊 - 飞书 5/24:当天无飞书群新数据,跳过 - 微信 5/22(23条)、5/23(13条)、5/24(29条)AI归纳回写成功 + 自动分发 ### 知识库文档重命名 - 13个飞书历史文档(5/6-5/23)从 `{date} 问题反馈` 重命名为 `飞书-{date} 用户反馈问题归纳` ## 新增逻辑:飞书/微信文档标题渠道区分 - [刘新玉需求] 飞书文档标题加 `飞书-` 前缀以便与微信区分 - 飞书格式:`飞书-{date} 用户反馈问题归纳` - 微信格式:保持 `微信-{date} 问题反馈`(由 `sync_wechat_feedback.py` 传入 `title_prefix=\"微信-\"`) - `update_summary_doc_as_children()` 默认 `title_prefix=\"飞书-\"`,微信调用时显式覆盖为 `\"微信-\"` - `create_child_doc()` 日期提取已兼", - "recallCount": 9, + "recallCount": 11, "dailyCount": 0, "groundedCount": 0, - "totalScore": 9, + "totalScore": 11, "maxScore": 1, "firstRecalledAt": "2026-05-25T07:11:25.527Z", - "lastRecalledAt": "2026-06-22T08:20:23.105Z", + "lastRecalledAt": "2026-06-25T02:57:47.989Z", "queryHashes": [ "1e9d4a024a31", "442660038a9b", @@ -941,7 +941,9 @@ "35e4329ea912", "52ecc24c3e06", "7acf4444a34f", - "d92aa0d61be8" + "d92aa0d61be8", + "c3c188775eb5", + "f264e4f93930" ], "recallDays": [ "2026-05-25", @@ -949,7 +951,8 @@ "2026-06-01", "2026-06-02", "2026-06-17", - "2026-06-22" + "2026-06-22", + "2026-06-25" ], "conceptTags": [ "update-summary-doc-as-children", @@ -969,13 +972,13 @@ "endLine": 44, "source": "memory", "snippet": "- `update_summary_doc_as_children()` 默认 `title_prefix=\"飞书-\"`,微信调用时显式覆盖为 `\"微信-\"` - `create_child_doc()` 日期提取已兼容两种前缀(strip `飞书-` 或 `微信-` 再解析) ## 注意事项 - 今天(5/25)的反馈数据将在明天 10:00 正常走全流程 - `ai_summarize_feedback.py` 中 `apply_descriptions` 修复后需注意:微信渠道需要 `--date` 参数,飞书渠道 `--date` 可选", - "recallCount": 9, + "recallCount": 11, "dailyCount": 0, "groundedCount": 0, - "totalScore": 9, + "totalScore": 11, "maxScore": 1, "firstRecalledAt": "2026-05-25T07:11:25.527Z", - "lastRecalledAt": "2026-06-22T08:20:23.105Z", + "lastRecalledAt": "2026-06-25T02:57:47.989Z", "queryHashes": [ "1e9d4a024a31", "442660038a9b", @@ -985,7 +988,9 @@ "35e4329ea912", "52ecc24c3e06", "7acf4444a34f", - "d92aa0d61be8" + "d92aa0d61be8", + "c3c188775eb5", + "f264e4f93930" ], "recallDays": [ "2026-05-25", @@ -993,7 +998,8 @@ "2026-06-01", "2026-06-02", "2026-06-17", - "2026-06-22" + "2026-06-22", + "2026-06-25" ], "conceptTags": [ "update-summary-doc-as-children", @@ -1013,13 +1019,13 @@ "endLine": 158, "source": "memory", "snippet": "- 步骤2:姓氏 + 1个中文字符模式匹配,排除内容词白名单(文件/资源/游戏/动画/设计等50+词) - 替换为\"相关人员\" ### 修复效果(簇 #7) | 修复前 | 修复后 | |--------|--------| | \"角色江涛的spine动画中,眼睛设计应为睁开但实际显示为闭眼。\" | \"Spine动画中角色眼睛呈现闭眼状态,与设计不符。\" | ## 刘新玉 - 反馈流程完整概览(5/22 12:00) ### 全链路三层架构 ``` 采集层 → 每5分钟(飞书群同步) / 每分钟(微信群导出+P0检测) 汇总层 → 每天 10:00(飞书) 10:02(微信) 聚类+归纳+写入知识库 AI层 → 每天 10:05(飞书) 10:07(微信) DeepSeek生成描述+回写+分发群聊 ``` ### 时间线 | 时间 | 飞书 | 微信 | |------|------|------| | 10:00 | sync_feishu_feedback (占位符,不分发) | — | | 10:02 | — | sync_wechat_feedback (占位符,不分发) | | 10:05 | ai_summarize_feedback (回写+分发) | — | | 10:07 | — | ai_summarize_feedback --channel wechat (回写+分发) | ## 刘新玉 - 微信反馈同步系统搭建(5/22 下午) ### 背景 刘新玉要求微信用户反馈流程与飞书一致(收集→整理→归纳→分发),之前微信只有 M", - "recallCount": 8, + "recallCount": 10, "dailyCount": 0, "groundedCount": 0, - "totalScore": 8, + "totalScore": 10, "maxScore": 1, "firstRecalledAt": "2026-05-25T07:11:25.527Z", - "lastRecalledAt": "2026-06-17T10:48:17.775Z", + "lastRecalledAt": "2026-06-25T02:57:47.989Z", "queryHashes": [ "1e9d4a024a31", "442660038a9b", @@ -1028,14 +1034,17 @@ "927d0719ac4d", "35e4329ea912", "52ecc24c3e06", - "7acf4444a34f" + "7acf4444a34f", + "c3c188775eb5", + "f264e4f93930" ], "recallDays": [ "2026-05-25", "2026-05-26", "2026-06-01", "2026-06-02", - "2026-06-17" + "2026-06-17", + "2026-06-25" ], "conceptTags": [ "文件/资源/游戏/动画/设计等50", @@ -1148,13 +1157,13 @@ "endLine": 24, "source": "memory", "snippet": "# 2026-05-26 工作日志 ## 刘新玉 - 微信/飞书问题汇总分发排查与修复 ### 问题 刘新玉询问是否向\"小葵小葵\"群发送了昨天(5/25)的问题汇总。 ### 排查结果 - **飞书 5/25**:「内容测试问题反馈」群昨天无新消息,飞书 crontab 10:00 输出 `✅ 无新数据,无需同步`,无需分发 - **微信 5/25**:数据库有 17 条消息,但大部分是单条消息,仅 1 个有效簇(≥2条),AI 归纳为\"无明确问题\",属于无效反馈 ### 修复的 Bug(均在本次会话中修复) **Bug 1:`sync_wechat_feedback.py` 文档标题不匹配** - 文件:`scripts/sync_wechat_feedback.py` - 问题:`--apply-ai` 路径搜索子文档时标题为 `微信-{date} 问题反馈`,但实际创建的是 `微信-{date} 用户反馈问题归纳`,导致创建后找不到文档 - 修复:两处标题改为 `微信-{date} 用户反馈问题归纳`(apply-ai 路径 + 步骤7分发路径) **Bug 2:`dispatch_summary_to_chat` 标题前缀** - 文件:`skills/feishu-feedback-sync/scripts/sync_feishu_feedback.py` - 问题:title 硬编码 `飞书-{day_label}`,微信调用时 day_label 已含 `微信-` 前缀,导致出现 `飞书-微信-{date}` 双重前缀 - 修复:检测 day_labe", - "recallCount": 7, + "recallCount": 9, "dailyCount": 0, "groundedCount": 0, - "totalScore": 7, + "totalScore": 9, "maxScore": 1, "firstRecalledAt": "2026-06-01T02:51:24.899Z", - "lastRecalledAt": "2026-06-22T08:20:23.105Z", + "lastRecalledAt": "2026-06-25T02:57:47.989Z", "queryHashes": [ "b36cfa790039", "bc1ed8fedd00", @@ -1162,13 +1171,16 @@ "35e4329ea912", "52ecc24c3e06", "7acf4444a34f", - "d92aa0d61be8" + "d92aa0d61be8", + "c3c188775eb5", + "f264e4f93930" ], "recallDays": [ "2026-06-01", "2026-06-02", "2026-06-17", - "2026-06-22" + "2026-06-22", + "2026-06-25" ], "conceptTags": [ "微信/飞书问题汇总分发排查与修复", @@ -1257,18 +1269,21 @@ "endLine": 41, "source": "memory", "snippet": "- 问题:title 硬编码 `飞书-{day_label}`,微信调用时 day_label 已含 `微信-` 前缀,导致出现 `飞书-微信-{date}` 双重前缀 - 修复:检测 day_label 是否已含前缀,已含则复用,否则加 `飞书-` **Bug 3:姓名脱敏正则误伤** - 文件:`scripts/ai_summarize_feedback.py` - 问题:`strip_names()` 中 `[姓][一-鿿]` 匹配过于宽泛,致 `程序`→`相关人员`、`常完`→`相关人员`,破坏正常描述 - 修复:content_words 排除词扩充(程序、方式、正常、完成、加载、原生等) **Bug 4:过滤后空消息仍发送** - 文件:`skills/feishu-feedback-sync/scripts/sync_feishu_feedback.py` - 问题:`dispatch_summary_to_chat` 过滤 `- 无明确问题` 后,若只剩标题无实质条目,仍会发送空消息 - 修复:增加 `has_items` 检查,无 `- ` 开头的内容行则不发送 ### 操作记录 - 手动补跑微信 5/25 apply-ai 回写知识库 - 撤回小葵小葵群中两条无效消息(`om_x100b6e653633aca4b268daf5d0579e7`、`om_x100b6e65e7cb90b8b3d97c2a9fc5f07`) ### 刘新玉指令(12:03) - 确认记住今天的变动 - 明确规则:微信反馈中\"无明确问题\"的簇不分发到小葵小葵群", - "recallCount": 1, + "recallCount": 3, "dailyCount": 0, "groundedCount": 0, - "totalScore": 1, + "totalScore": 3, "maxScore": 1, "firstRecalledAt": "2026-06-01T02:56:57.688Z", - "lastRecalledAt": "2026-06-01T02:56:57.688Z", + "lastRecalledAt": "2026-06-25T02:57:47.989Z", "queryHashes": [ - "bc1ed8fedd00" + "bc1ed8fedd00", + "c3c188775eb5", + "f264e4f93930" ], "recallDays": [ - "2026-06-01" + "2026-06-01", + "2026-06-25" ], "conceptTags": [ "day-label", @@ -1404,6 +1419,37 @@ "0.462", "is-duplicate" ] + }, + "memory:memory/2026-04-30.md:57:78": { + "key": "memory:memory/2026-04-30.md:57:78", + "path": "memory/2026-04-30.md", + "startLine": 57, + "endLine": 78, + "source": "memory", + "snippet": "- 电子表格 token:`AHtnsehwShUVyDtjasSciIvgn7b` - 知识库节点 token:`TVivwmzqXiW3YakDUzucFMRenvf` - 位置:知识库「飞书问题反馈」文档同级 ### Bot 权限现状 - 有:sheets:read/write, wiki API 读取(wiki:space:get, wiki:node:read) - 无:wiki:node:create, drive 操作, bitable 操作 - 结论:Bot 可以通过 sheets API 在知识空间直接创建电子表格,但无法创建其他类型文档 ### 飞书问题反馈表格字段统一与移动 - 将表格移动到「飞书问题反馈」文档下方(wiki v2 move API) - 将表格字段从「时间|反馈人|信息类型|信息内容」改为与数据库 `lark_group_message` 一致:消息ID/发送者/消息类型/内容/媒体URL/引用消息ID/消息时间/消息时间戳 - 4/29 数据因字段变更需重新写入(仅2条) - 表格最终位置:https://makee-interactive.feishu.cn/sheets/AHtnsehwShUVyDtjasSciIvgn7b(「飞书问题反馈」文档下方) ### 飞书问题反馈按引用关系重新排序 [刘新玉] 要求按问题完整解决过程排序——通过 `quote_message_id` 串联同一问题的讨论链。 #### 排序逻辑 1. 从数据库读取全部消息及引用关系 2. 构建引用图:每个消息的 `quote_message_id`", + "recallCount": 1, + "dailyCount": 0, + "groundedCount": 0, + "totalScore": 1, + "maxScore": 1, + "firstRecalledAt": "2026-06-25T02:57:59.732Z", + "lastRecalledAt": "2026-06-25T02:57:59.732Z", + "queryHashes": [ + "9a7c056e83e9" + ], + "recallDays": [ + "2026-06-25" + ], + "conceptTags": [ + "read/write", + "lark-group-message", + "4/29", + "quote-message-id", + "电子", + "表格", + "token", + "ahtnsehwshuvydtjassciivgn7b" + ] } } } diff --git a/output/daily_feedback/ai_descriptions_feishu_2026-06-24.json b/output/daily_feedback/ai_descriptions_feishu_2026-06-24.json new file mode 100644 index 0000000..5ad4bc4 --- /dev/null +++ b/output/daily_feedback/ai_descriptions_feishu_2026-06-24.json @@ -0,0 +1,21 @@ +{ + "date": "2026-06-24", + "descriptions": [ + { + "index": 1, + "description": "游戏中进入14单元时无法进入,需要用户手动更新S1资源才能解决。" + }, + { + "index": 2, + "description": "小程序磨耳朵功能不支持熄屏播放。" + }, + { + "index": 3, + "description": "苹果平板端学习时页面卡住,只能后退学习无法前进学习。" + }, + { + "index": 4, + "description": "无明确问题" + } + ] +} \ No newline at end of file diff --git a/output/daily_feedback/ai_descriptions_wechat_2026-06-24.json b/output/daily_feedback/ai_descriptions_wechat_2026-06-24.json new file mode 100644 index 0000000..3117654 --- /dev/null +++ b/output/daily_feedback/ai_descriptions_wechat_2026-06-24.json @@ -0,0 +1,61 @@ +{ + "date": "2026-06-24", + "descriptions": [ + { + "index": 1, + "description": "家长无法继续学习课程" + }, + { + "index": 2, + "description": "苹果平板端在学习过相关人员只能后退无法前进,导致学习进度卡住无法继续。" + }, + { + "index": 3, + "description": "无明确问题" + }, + { + "index": 4, + "description": "无明确问题" + }, + { + "index": 5, + "description": "无明确问题" + }, + { + "index": 6, + "description": "小程序磨耳朵环节缺少熄屏播放功能。" + }, + { + "index": 7, + "description": "相关人员询问某个功能以后是否可以添加。" + }, + { + "index": 8, + "description": "无明确问题" + }, + { + "index": 9, + "description": "游戏内某个特定章节无法打开,其他章节可正相关人员入。" + }, + { + "index": 10, + "description": "用户无法进入第14单元第四节课关卡,点击重新开始、继续或杀掉进相关人员进均无效,其他关卡正常。" + }, + { + "index": 11, + "description": "14单元无法进入,需更新S1资源才能解决" + }, + { + "index": 12, + "description": "无明确问题" + }, + { + "index": 13, + "description": "无明确问题" + }, + { + "index": 14, + "description": "无明确问题" + } + ] +} \ No newline at end of file diff --git a/output/daily_feedback/cluster_context_2026-06-24.json b/output/daily_feedback/cluster_context_2026-06-24.json new file mode 100644 index 0000000..1c041bd --- /dev/null +++ b/output/daily_feedback/cluster_context_2026-06-24.json @@ -0,0 +1,130 @@ +{ + "date": "2026-06-24", + "total_clusters": 4, + "clusters": [ + { + "index": 1, + "_idx": 1, + "cluster_id": "9147176325995735892", + "location": { + "端": "未知", + "环节": "未知", + "课程": "", + "角色/组件": "" + }, + "priority": "P2", + "priority_detail": "", + "category": "其他问题", + "conclusion": "**当前问题排查结论:** 暂无结论排查中", + "messages": [ + { + "sender": "瓦拉英语-花花班班(早10晚7-周末休息)", + "content": "[聊天记录] DX17和瓦拉英语-花花班主任(早10晚7)\nDX17: 平板\nDX17: 苹果的\nDX17: 就卡在这里学不下去了\nDX17: 只能后退学习,不能前进学习", + "msg_type": "link", + "media_url": "", + "time": "2026-06-24 08:05:17" + }, + { + "sender": "kevin", + "content": "@瓦拉英语-花花班主任(早10晚7) 看我上面的回复,把s1的资源也一起更新一下 ", + "msg_type": "text", + "media_url": "", + "time": "2026-06-24 08:05:56" + } + ] + }, + { + "index": 2, + "_idx": 2, + "cluster_id": "3101834520383355965", + "location": { + "端": "未知", + "环节": "未知", + "课程": "", + "角色/组件": "" + }, + "priority": "P2", + "priority_detail": "", + "category": "声音/音频类", + "conclusion": "**当前问题排查结论:** 暂无结论排查中", + "messages": [ + { + "sender": "瓦拉英语-茉茉老师(早10晚7)", + "content": "请问小程序里面的磨耳朵怎么才能熄屏播放呀", + "msg_type": "text", + "media_url": "", + "time": "2026-06-24 12:55:27" + }, + { + "sender": "花生", + "content": "现在没有后台播放和熄屏播放的功能\n ↳ 回复 瓦拉英语-茉茉班主任(早10晚7): 请问小程序里面的磨耳朵怎么才能熄屏播放呀", + "msg_type": "link", + "media_url": "", + "time": "2026-06-24 14:03:27" + } + ] + }, + { + "index": 3, + "_idx": 3, + "cluster_id": "1235559924978246096", + "location": { + "端": "未知", + "环节": "未知", + "课程": "", + "角色/组件": "" + }, + "priority": "P2", + "priority_detail": "", + "category": "其他问题", + "conclusion": "**当前问题排查结论:** 暂无结论排查中", + "messages": [ + { + "sender": "瓦拉英语-茉茉老师(早10晚7)", + "content": "这个功能以后可以添加吗", + "msg_type": "text", + "media_url": "", + "time": "2026-06-24 14:07:58" + }, + { + "sender": "花生", + "content": "下次更新的版本会上线这个功能,应该在7月初\n ↳ 回复 瓦拉英语-茉茉班主任(早10晚7): 这个功能以后可以添加吗", + "msg_type": "link", + "media_url": "", + "time": "2026-06-24 14:12:38" + } + ] + }, + { + "index": 4, + "_idx": 4, + "cluster_id": "7807479000711232607", + "location": { + "端": "未知", + "环节": "未知", + "课程": "", + "角色/组件": "" + }, + "priority": "P2", + "priority_detail": "", + "category": "启动/运行异常", + "conclusion": "**当前问题排查结论:** 暂无结论排查中", + "messages": [ + { + "sender": "kevin", + "content": "早上相同的问题,更新一下s1的资源", + "msg_type": "text", + "media_url": "", + "time": "2026-06-24 19:59:22" + }, + { + "sender": "瓦拉英语-露露班班(早10晚7)", + "content": "好的老师,但是现在14单元进不去,都需要用户去更新S1的资源,可能会有很多没加上班主任的用户不知道这样操作,后面会有替代方案吗", + "msg_type": "text", + "media_url": "", + "time": "2026-06-24 20:26:53" + } + ] + } + ] +} \ No newline at end of file diff --git a/output/daily_feedback/飞书反馈_2026-06-25.xlsx b/output/daily_feedback/飞书反馈_2026-06-25.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..79f289ad4d869fece7184b2a1cd9bd5f181bfe3a GIT binary patch literal 6451 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 GPyYkl2ya;c literal 0 HcmV?d00001