From a3e86ac78350e690950cb7d758d13054e4ae1e18 Mon Sep 17 00:00:00 2001 From: LL Date: Tue, 18 Nov 2025 14:28:07 +0800 Subject: [PATCH] =?UTF-8?q?=E5=88=9D=E5=A7=8B=E5=8C=96=E7=89=88=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 404.html | 7 + api.php | 510 +++++++++++++++ assets/css/style.css | 144 +++++ assets/js/app.js | 689 +++++++++++++++++++++ assets/js/project.js | 456 ++++++++++++++ data/ai_reminder.json | 1 + data/ark_api_key.txt | 1 + data/projects.json | 223 +++++++ data/uploads/up_20251110_032321_242501.png | Bin 0 -> 52841 bytes data/uploads/up_20251110_032334_977265.png | Bin 0 -> 54764 bytes data/uploads/up_20251110_034506_014266.png | Bin 0 -> 102855 bytes index.html | 39 ++ index.php | 136 ++++ project.php | 79 +++ 14 files changed, 2285 insertions(+) create mode 100644 404.html create mode 100644 api.php create mode 100644 assets/css/style.css create mode 100644 assets/js/app.js create mode 100644 assets/js/project.js create mode 100644 data/ai_reminder.json create mode 100644 data/ark_api_key.txt create mode 100644 data/projects.json create mode 100644 data/uploads/up_20251110_032321_242501.png create mode 100644 data/uploads/up_20251110_032334_977265.png create mode 100644 data/uploads/up_20251110_034506_014266.png create mode 100644 index.html create mode 100644 index.php create mode 100644 project.php diff --git a/404.html b/404.html new file mode 100644 index 0000000..6f17eaf --- /dev/null +++ b/404.html @@ -0,0 +1,7 @@ + +404 Not Found + +

404 Not Found

+
nginx
+ + \ No newline at end of file diff --git a/api.php b/api.php new file mode 100644 index 0000000..06c9dc2 --- /dev/null +++ b/api.php @@ -0,0 +1,510 @@ + $it) { if (($it['id'] ?? '') === $id) return $i; } + return -1; +} + +// 未登录则阻止除 login 以外的操作 +if ($action !== 'login') { + if (!isset($_SESSION['auth']) || !$_SESSION['auth']) { + resp_json(['ok' => false, 'message' => '未登录', 'need_login' => true]); + } +} + +switch ($action) { + case 'login': { + $b = body_json(); + $pwd = trim($b['password'] ?? ''); + if ($pwd === '123123') { + $_SESSION['auth'] = 1; + // 设置简单 Cookie,供导出HTML等静态页前端校验 + setcookie('auth_ok', '1', time() + 7*24*3600, '/'); + resp_json(['ok' => true]); + } else { + resp_json(['ok' => false, 'message' => '密码错误']); + } + } + case 'logout': { + $_SESSION['auth'] = 0; unset($_SESSION['auth']); + setcookie('auth_ok', '', time() - 3600, '/'); + resp_json(['ok' => true]); + } + case 'list_projects': { + $projects = readJson($dataFile); + resp_json(['ok' => true, 'projects' => $projects]); + } + case 'get_project': { + $id = $_GET['id'] ?? ''; + if ($id === '') resp_json(['ok' => false, 'message' => '缺少项目ID']); + $projects = readJson($dataFile); + $idx = find_index_by_id($projects, $id); + if ($idx < 0) resp_json(['ok' => false, 'message' => '项目不存在']); + resp_json(['ok' => true, 'project' => $projects[$idx]]); + } + case 'cleanup_unused_uploads': { + // 主动触发一次清理:删除 data/uploads 下未被任何笔记引用的文件 + $projects = readJson($dataFile); + $clean = cleanup_unused_uploads($projects, $uploadDir); + resp_json(['ok' => true, 'cleanup' => $clean]); + } + case 'create_project': { + $b = body_json(); + $name = trim($b['name'] ?? ''); + if ($name === '') resp_json(['ok' => false, 'message' => '项目名称不能为空']); + $projects = readJson($dataFile); + $p = [ + 'id' => uid(), + 'name' => $name, + 'status' => '待做', + 'notes' => [], + 'created_at' => nowStr(), + 'updated_at' => nowStr() + ]; + $projects[] = $p; + writeJson($dataFile, $projects); + resp_json(['ok' => true, 'project' => $p]); + } + case 'update_project': { + $b = body_json(); + $id = $b['id'] ?? ''; + if ($id === '') resp_json(['ok' => false, 'message' => '缺少项目ID']); + $projects = readJson($dataFile); + $idx = find_index_by_id($projects, $id); + if ($idx < 0) resp_json(['ok' => false, 'message' => '项目不存在']); + $name = isset($b['name']) ? trim($b['name']) : null; + $status = isset($b['status']) ? trim($b['status']) : null; + if ($name !== null && $name !== '') $projects[$idx]['name'] = $name; + if ($status !== null && in_array($status, ['待做','进行','完成','异常'])) $projects[$idx]['status'] = $status; + $projects[$idx]['updated_at'] = nowStr(); + writeJson($dataFile, $projects); + resp_json(['ok' => true, 'project' => $projects[$idx]]); + } + case 'delete_project': { + $b = body_json(); + $id = $b['id'] ?? ''; + if ($id === '') resp_json(['ok' => false, 'message' => '缺少项目ID']); + $projects = readJson($dataFile); + $idx = find_index_by_id($projects, $id); + if ($idx < 0) resp_json(['ok' => false, 'message' => '项目不存在']); + array_splice($projects, $idx, 1); + writeJson($dataFile, $projects); + // 同步删除该项目的AI润色存档 + $aiMap = readJson($aiTextFile); + if (isset($aiMap[$id])) { unset($aiMap[$id]); writeJson($aiTextFile, $aiMap); } + // 删除项目后,清理未被任何笔记引用的上传文件 + $clean = cleanup_unused_uploads($projects, $uploadDir); + resp_json(['ok' => true, 'cleanup' => $clean]); + } + case 'add_note': { + $b = body_json(); + $pid = $b['project_id'] ?? ''; + $content = trim($b['content'] ?? ''); + if ($pid === '' || $content === '') resp_json(['ok' => false, 'message' => '缺少参数']); + $projects = readJson($dataFile); + $idx = find_index_by_id($projects, $pid); + if ($idx < 0) resp_json(['ok' => false, 'message' => '项目不存在']); + $note = [ 'id' => uid(), 'content' => $content, 'created_at' => nowStr(), 'updated_at' => nowStr() ]; + if (!isset($projects[$idx]['notes']) || !is_array($projects[$idx]['notes'])) $projects[$idx]['notes'] = []; + $projects[$idx]['notes'][] = $note; + writeJson($dataFile, $projects); + resp_json(['ok' => true, 'note' => $note]); + } + case 'update_note': { + $b = body_json(); + $pid = $b['project_id'] ?? ''; + $nid = $b['note_id'] ?? ''; + $content = trim($b['content'] ?? ''); + if ($pid === '' || $nid === '') resp_json(['ok' => false, 'message' => '缺少参数']); + $projects = readJson($dataFile); + $pidx = find_index_by_id($projects, $pid); + if ($pidx < 0) resp_json(['ok' => false, 'message' => '项目不存在']); + $notes = $projects[$pidx]['notes'] ?? []; + $nidx = -1; foreach ($notes as $i => $n) { if (($n['id'] ?? '') === $nid) { $nidx = $i; break; } } + if ($nidx < 0) resp_json(['ok' => false, 'message' => '笔记不存在']); + if ($content !== '') { $projects[$pidx]['notes'][$nidx]['content'] = $content; } + $projects[$pidx]['notes'][$nidx]['updated_at'] = nowStr(); + writeJson($dataFile, $projects); + // 更新笔记后尝试清理未使用的上传文件(防止删除了图片引用后残留) + $clean = cleanup_unused_uploads($projects, $uploadDir); + resp_json(['ok' => true, 'note' => $projects[$pidx]['notes'][$nidx], 'cleanup' => $clean]); + } + case 'delete_note': { + $b = body_json(); + $pid = $b['project_id'] ?? ''; + $nid = $b['note_id'] ?? ''; + if ($pid === '' || $nid === '') resp_json(['ok' => false, 'message' => '缺少参数']); + $projects = readJson($dataFile); + $pidx = find_index_by_id($projects, $pid); + if ($pidx < 0) resp_json(['ok' => false, 'message' => '项目不存在']); + $notes = $projects[$pidx]['notes'] ?? []; + $nidx = -1; foreach ($notes as $i => $n) { if (($n['id'] ?? '') === $nid) { $nidx = $i; break; } } + if ($nidx < 0) resp_json(['ok' => false, 'message' => '笔记不存在']); + array_splice($projects[$pidx]['notes'], $nidx, 1); + writeJson($dataFile, $projects); + // 删除笔记后,清理未被任何笔记引用的上传文件 + $clean = cleanup_unused_uploads($projects, $uploadDir); + resp_json(['ok' => true, 'cleanup' => $clean]); + } + case 'export_project_html': { + $id = $_GET['id'] ?? ''; + if ($id === '') resp_json(['ok' => false, 'message' => '缺少项目ID']); + $projects = readJson($dataFile); + $idx = find_index_by_id($projects, $id); + if ($idx < 0) resp_json(['ok' => false, 'message' => '项目不存在']); + $p = $projects[$idx]; + $safeName = preg_replace('/[^\w\x{4e00}-\x{9fa5}]+/u', '_', $p['name']); + $fname = $exportDir . DIRECTORY_SEPARATOR . 'project_' . $safeName . '_' . substr($p['id'], 0, 8) . '.html'; + $html = "" . htmlspecialchars($p['name']) . " - 导出"; + $html .= '

' . htmlspecialchars($p['name']) . '

'; + $html .= '

状态:' . htmlspecialchars($p['status']) . '

'; + $html .= '

笔记

'; + foreach (($p['notes'] ?? []) as $n) { + $html .= '
' . render_note_content($n['content'] ?? '') . '
'; + $html .= '
创建:' . htmlspecialchars($n['created_at'] ?? '') . ' 更新:' . htmlspecialchars($n['updated_at'] ?? '') . '
'; + } + $html .= ''; + file_put_contents($fname, $html); + // 构造相对URL,便于在浏览器打开 + $rel = 'data/exports/' . basename($fname); + resp_json(['ok' => true, 'url' => $rel]); + } + case 'ai_enrich_reminder': { + // 使用火山引擎 Doubao 模型对提醒文案进行情感润色 + $b = body_json(); + $raw = trim($b['raw'] ?? ''); + $proj = $b['project'] ?? []; + $apiKey = trim($b['api_key'] ?? ''); + if ($raw === '') resp_json(['ok' => false, 'message' => '缺少原始提醒内容']); + if ($apiKey === '') { + // 尝试从本地文件读取 Key(可选) + $kf = $dataDir . DIRECTORY_SEPARATOR . 'ark_api_key.txt'; + if (is_file($kf)) { $apiKey = trim(@file_get_contents($kf)); } + } + if ($apiKey === '') resp_json(['ok' => false, 'message' => '缺少AI Key(请将密钥写入 data/ark_api_key.txt)']); + $name = isset($proj['name']) ? $proj['name'] : ''; + $status = isset($proj['status']) ? $proj['status'] : ''; + $pid = isset($proj['id']) ? $proj['id'] : ''; + // 可选:结合项目最近笔记进行润色 + $includeNotes = isset($b['include_notes']) ? !!($b['include_notes']) : true; // 默认结合笔记 + $notesSummary = ''; + if ($includeNotes && $pid !== '') { + $projectsAll = readJson($dataFile); + $pidx2 = find_index_by_id($projectsAll, $pid); + if ($pidx2 >= 0) { + $notesArr = $projectsAll[$pidx2]['notes'] ?? []; + // 取最近3条(末尾3条) + $cnt = count($notesArr); + $recent = []; + if ($cnt > 0) { + $recent = array_slice($notesArr, max(0, $cnt - 3)); + } + $pieces = []; + foreach ($recent as $nn) { + $content = trim($nn['content'] ?? ''); + if ($content !== '') { + // 去掉图片Markdown、URL等噪声 + $content = preg_replace('/!\[[^\]]*\]\([^\)]*\)/', '', $content); + $content = preg_replace('/https?:\/\/\S+/i', '', $content); + $content = trim($content); + // 截断避免过长 + if (function_exists('mb_strlen') && function_exists('mb_substr')) { + if (mb_strlen($content, 'UTF-8') > 120) { $content = mb_substr($content, 0, 120, 'UTF-8') . '…'; } + } else { + if (strlen($content) > 200) { $content = substr($content, 0, 200) . '…'; } + } + if ($content !== '') $pieces[] = $content; + } + } + if (!empty($pieces)) { $notesSummary = implode(';', $pieces); } + } + } + $prompt = "请将以下项目提醒改写为更具同理心、简洁明确且可执行的中文提示,长度不超过60字,并适当使用 emoji(最多2个),避免官方语气。\n" . + "只输出一条润色后的中文提醒,不要附加任何解释、评分、括号中的说明、标签或代码块。\n" . + "项目名称:" . $name . "\n状态:" . $status . "\n提醒:" . $raw; + if ($notesSummary !== '') { + $prompt .= "\n参考最近笔记要点:" . $notesSummary; + } + $payload = [ + 'model' => 'doubao-seed-1-6-251015', + 'max_completion_tokens' => 1024, + 'messages' => [ [ 'role' => 'user', 'content' => [ [ 'type' => 'text', 'text' => $prompt ] ] ] ], + 'reasoning_effort' => 'medium' + ]; + $ch = curl_init('https://ark.cn-beijing.volces.com/api/v3/chat/completions'); + curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); + curl_setopt($ch, CURLOPT_HTTPHEADER, [ 'Content-Type: application/json', 'Authorization: Bearer ' . $apiKey ]); + curl_setopt($ch, CURLOPT_POST, true); + curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($payload, JSON_UNESCAPED_UNICODE)); + curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 10); + curl_setopt($ch, CURLOPT_TIMEOUT, 20); + $resp = curl_exec($ch); + $err = curl_error($ch); + $code = curl_getinfo($ch, CURLINFO_HTTP_CODE); + curl_close($ch); + if ($resp === false) resp_json(['ok' => false, 'message' => '请求失败: ' . $err]); + $j = json_decode($resp, true); + if (!is_array($j)) resp_json(['ok' => false, 'message' => '响应解析失败', 'code' => $code]); + // 提取文本内容 + $txt = ''; + // 1) 直接读取 output_text(有些版本会提供该字段) + if (isset($j['output_text']) && is_string($j['output_text'])) { $txt = $j['output_text']; } + // 2) choices.message.content 可能是字符串或数组 + if ($txt === '' && isset($j['choices'][0]['message']['content'])) { + $content = $j['choices'][0]['message']['content']; + if (is_string($content)) { $txt = $content; } + elseif (is_array($content)) { + foreach ($content as $c) { if (isset($c['text'])) { $txt .= $c['text']; } } + } + } + // 3) 兜底读取常见位置 + if ($txt === '' && isset($j['choices'][0]['message']['content'][0]['text'])) { + $txt = $j['choices'][0]['message']['content'][0]['text']; + } + if ($txt === '' && isset($j['data']['output_text'])) { $txt = $j['data']['output_text']; } + if ($txt === '') resp_json(['ok' => false, 'message' => '未获取到AI文本', 'raw_resp' => $j]); + // 仅保留第一行,并去掉末尾的括号型说明(例如:(字数合规…)或(...)) + $txt = trim((string)$txt); + $firstLine = preg_split('/\r?\n/', $txt)[0]; + $firstLine = trim($firstLine); + // 去掉结尾括号段,但保留正文中的内容 + $firstLine = preg_replace('/(?:([^)]*)|\([^\)]*\))\s*$/u', '', $firstLine); + $firstLine = trim($firstLine); + if ($firstLine === '') $firstLine = $txt; // 兜底 + $txt = $firstLine; + // 写入到 ai_reminder.json 中,按项目ID持久化 + if ($pid !== '') { + $aiMap = readJson($aiTextFile); + if (!is_array($aiMap)) $aiMap = []; + $aiMap[$pid] = [ 'text' => $txt, 'raw' => $raw, 'updated_at' => nowStr(), 'notes' => $notesSummary ]; + writeJson($aiTextFile, $aiMap); + } + resp_json(['ok' => true, 'text' => $txt, 'saved' => ($pid !== '')]); + } + case 'get_ai_reminder': { + // 获取指定项目的AI润色文本(如果存在) + $id = $_GET['id'] ?? ($_POST['id'] ?? ''); + if ($id === '') resp_json(['ok' => false, 'message' => '缺少项目ID']); + $aiMap = readJson($aiTextFile); + if (isset($aiMap[$id]) && isset($aiMap[$id]['text'])) { + $item = $aiMap[$id]; + resp_json(['ok' => true, 'text' => $item['text'], 'updated_at' => ($item['updated_at'] ?? '')]); + } else { + resp_json(['ok' => true, 'text' => '', 'updated_at' => '']); + } + } + case 'list_exports': { + // 列出 data/exports 下的导出文件(仅 .html) + $files = []; + if (is_dir($exportDir)) { + foreach (scandir($exportDir) as $f) { + if ($f === '.' || $f === '..') continue; + if (!preg_match('/\.html?$/i', $f)) continue; + $path = $exportDir . DIRECTORY_SEPARATOR . $f; + if (is_file($path)) { + $files[] = [ + 'name' => $f, + 'url' => 'data/exports/' . $f, + 'size' => filesize($path), + 'mtime' => date('Y-m-d H:i:s', filemtime($path)) + ]; + } + } + } + // 最新时间倒序 + usort($files, function($a,$b){ return strcmp($b['mtime'],$a['mtime']); }); + resp_json(['ok' => true, 'files' => $files]); + } + case 'delete_export': { + // 删除指定的导出文件(仅限 data/exports) + $b = body_json(); + $name = $b['name'] ?? ''; + if ($name === '') resp_json(['ok' => false, 'message' => '缺少文件名']); + $base = basename($name); // 防止路径穿越 + $path = $exportDir . DIRECTORY_SEPARATOR . $base; + if (!is_file($path)) resp_json(['ok' => false, 'message' => '文件不存在']); + if (!@unlink($path)) resp_json(['ok' => false, 'message' => '删除失败']); + resp_json(['ok' => true]); + } + case 'upload_file': { + // 允许上传图片或常见文档,保存到 data/uploads + if ($_SERVER['REQUEST_METHOD'] !== 'POST') resp_json(['ok' => false, 'message' => '仅支持POST']); + $file = $_FILES['file'] ?? ($_FILES['image'] ?? null); + if (!$file) resp_json(['ok' => false, 'message' => '未选择文件']); + if (($file['error'] ?? UPLOAD_ERR_OK) !== UPLOAD_ERR_OK) resp_json(['ok' => false, 'message' => '上传错误: ' . ($file['error'] ?? '未知')]); + $name = $file['name'] ?? ('img_' . uniqid()); + $ext = strtolower(pathinfo($name, PATHINFO_EXTENSION)); + $allow = ['png','jpg','jpeg','gif','webp','pdf','doc','docx','xls','xlsx','ppt','pptx','txt','csv','zip','rar','7z']; + if (!$ext) $ext = 'bin'; + if (!in_array($ext, $allow)) resp_json(['ok' => false, 'message' => '不支持的文件类型: ' . $ext]); + $size = $file['size'] ?? 0; if ($size > 30 * 1024 * 1024) resp_json(['ok' => false, 'message' => '文件过大,限制30MB']); + $target = $uploadDir . DIRECTORY_SEPARATOR . ('up_' . date('Ymd_His') . '_' . substr(uniqid('', true), -6) . '.' . $ext); + if (!@move_uploaded_file($file['tmp_name'], $target)) resp_json(['ok' => false, 'message' => '保存失败']); + $rel = 'data/uploads/' . basename($target); + $mime = mime_content_type($target); + resp_json(['ok' => true, 'url' => $rel, 'name' => $name, 'mime' => $mime]); + } + default: resp_json(['ok' => false, 'message' => '未知操作']); +} + +// 将笔记文本转换为HTML(支持 Markdown 图片:![alt](url)),其余文本安全转义 +function render_note_content($text) { + if ($text === null) $text = ''; + $out = ''; + $last = 0; + while (true) { + $img = preg_match('/!\[([^\]]*)\]\(([^\)]+)\)/u', $text, $im, PREG_OFFSET_CAPTURE, $last) ? $im : null; + $lnk = preg_match('/(?=0 && ($lpos < 0 || $ipos <= $lpos)) ? $ipos : $lpos; + $out .= nl2br(htmlspecialchars(substr($text, $last, $nextPos - $last), ENT_QUOTES | ENT_SUBSTITUTE, 'UTF-8')); + if ($nextPos === $ipos) { + $alt = htmlspecialchars($img[1][0], ENT_QUOTES | ENT_SUBSTITUTE, 'UTF-8'); + $urlAdj = adjust_url_for_export($img[2][0]); + $url = htmlspecialchars($urlAdj, ENT_QUOTES | ENT_SUBSTITUTE, 'UTF-8'); + $out .= '' . $alt . ''; + $last = $ipos + strlen($img[0][0]); + } else { + $label = htmlspecialchars($lnk[1][0], ENT_QUOTES | ENT_SUBSTITUTE, 'UTF-8'); + $urlRaw = $lnk[2][0]; + $urlAdj = adjust_url_for_export($urlRaw); + $urlEsc = htmlspecialchars($urlAdj, ENT_QUOTES | ENT_SUBSTITUTE, 'UTF-8'); + if (is_image_url($urlRaw)) { + $out .= '' . $label . ''; + } else { + $out .= '' . $label . ''; + } + $last = $lpos + strlen($lnk[0][0]); + } + } + $out .= nl2br(htmlspecialchars(substr($text, $last), ENT_QUOTES | ENT_SUBSTITUTE, 'UTF-8')); + return $out; +} + +function is_image_url($url) { + return preg_match('/\.(png|jpg|jpeg|gif|webp)(\?.*)?$/i', $url) || preg_match('/^data:image\//i', $url); +} + +// 导出HTML时将相对路径调整为以导出文件为基准的相对路径 +// 例如:原始插入为 data/uploads/xxx.png,导出文件位于 data/exports/ 下, +// 浏览器在 exports 页面中引用 uploads 需使用 ../uploads/xxx.png +function adjust_url_for_export($url) { + if (!$url) return $url; + // 只处理本项目的相对路径 + if (preg_match('/^data\/uploads\//i', $url)) { + // 去掉可能的查询参数 + $parts = explode('?', $url, 2); + return '../uploads/' . substr($parts[0], strlen('data/uploads/')) . (isset($parts[1]) ? ('?' . $parts[1]) : ''); + } + return $url; +} + +// 提取笔记文本中所有 Markdown 链接/图片的 URL +function extract_note_urls($text) { + $urls = []; + if ($text === null) $text = ''; + // 图片 + if (preg_match_all('/!\[[^\]]*\]\(([^\)]+)\)/u', $text, $m1)) { + foreach ($m1[1] as $u) { $urls[] = $u; } + } + // 普通链接 + if (preg_match_all('/\[[^\]]+\]\(([^\)]+)\)/u', $text, $m2)) { + foreach ($m2[1] as $u) { $urls[] = $u; } + } + return $urls; +} + +// 仅清理 data/uploads 下未被任何笔记引用的文件 +function cleanup_unused_uploads($projects, $uploadDir) { + try { + $used = []; + foreach ($projects as $p) { + $notes = $p['notes'] ?? []; + foreach ($notes as $n) { + $urls = extract_note_urls($n['content'] ?? ''); + foreach ($urls as $u) { + // 只统计本地上传目录的相对路径 + $pos = strpos($u, 'data/uploads/'); + if ($pos !== false) { + $rel = substr($u, $pos); + // 去掉查询串 + $rel = explode('?', $rel)[0]; + $base = basename($rel); + if ($base) $used[$base] = true; + } + } + } + } + $deleted = 0; + if (is_dir($uploadDir)) { + $files = @scandir($uploadDir); + foreach ($files as $f) { + if ($f === '.' || $f === '..') continue; + if (!isset($used[$f])) { + $path = $uploadDir . DIRECTORY_SEPARATOR . $f; + if (is_file($path)) { @unlink($path); $deleted++; } + } + } + } + return [ 'deleted' => $deleted, 'kept' => count($used) ]; + } catch (Throwable $e) { + return [ 'deleted' => 0, 'error' => $e->getMessage() ]; + } +} diff --git a/assets/css/style.css b/assets/css/style.css new file mode 100644 index 0000000..bbbbe77 --- /dev/null +++ b/assets/css/style.css @@ -0,0 +1,144 @@ +:root { + --sidebar-width: 220px; + --bg: #f6f7fb; + --card-bg: #fff; + --border: #e5e7eb; + --text: #111827; + --muted: #6b7280; + --primary: #3b82f6; + --danger: #ef4444; + --success: #10b981; + --warning: #f59e0b; +} +* { box-sizing: border-box; } +body { margin: 0; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", "Microsoft YaHei", sans-serif; background: var(--bg); color: var(--text); } +.app { display: flex; min-height: 100vh; } +.sidebar { width: var(--sidebar-width); background: #111827; color: #fff; padding: 16px; } +.sidebar h2 { margin-top: 0; font-size: 18px; } +.menu { list-style: none; padding: 0; margin: 0; } +.menu li { padding: 10px 12px; border-radius: 8px; cursor: pointer; } +.menu li.active, .menu li:hover { background: #374151; } +.main { flex: 1; padding: 16px; } +.header { display: flex; align-items: center; gap: 8px; justify-content: space-between; margin-bottom: 12px; } +.header-right { display: flex; flex-wrap: wrap; gap: 8px; justify-content: flex-end; } +.header-left { display: flex; align-items: center; gap: 8px; } +.status-board { display: grid; grid-template-columns: repeat(4, 1fr); gap: 12px; } +.column { background: var(--card-bg); border: 1px solid var(--border); border-radius: 10px; padding: 10px; } +.column.drag-over { border-color: var(--primary); box-shadow: inset 0 0 0 2px rgba(59,130,246,0.15); background: #f8fbff; } +.column h3 { margin: 0 0 8px; font-size: 16px; } +.column .count { color: var(--muted); font-size: 12px; } +.project { background: #fff; border: 1px solid var(--border); border-radius: 8px; padding: 8px; margin-bottom: 8px; display: flex; justify-content: space-between; align-items: center; gap: 6px; } +.project.dragging { opacity: 0.6; } +.project .title { font-weight: 600; cursor: pointer; } +.project .actions { display: flex; gap: 6px; } +.btn { padding: 6px 10px; border: 1px solid var(--border); background: #fff; border-radius: 6px; cursor: pointer; font-size: 13px; } +.btn:hover { background:#f8fafc; box-shadow: 0 2px 8px rgba(0,0,0,0.06); } +a.btn, a.btn:link, a.btn:visited { color: var(--text); text-decoration: none; display:inline-flex; align-items:center; gap:6px; } +a.btn:hover { text-decoration: none; border-color: var(--primary); box-shadow: 0 2px 10px rgba(59,130,246,0.15); } +.btn.back-btn { position: relative; } +.btn.back-btn::before { content: "←"; color: var(--primary); margin-right: 6px; font-weight: 600; } + +/* 顶部操作区:让重命名输入框更长 */ +.project-actions { display:flex; gap:8px; align-items:center; margin-bottom:8px; flex-wrap: wrap; } +.project-actions #renameProjectInput { flex: 1; min-width: 380px; } + +/* 提醒横幅 */ +.remind-banner { display:flex; align-items:flex-start; gap:8px; background:#fff8db; border:1px solid #fde68a; color:#6b4e16; padding:8px 10px; border-radius:8px; font-size:13px; } +.remind-banner::before { content:"⚠"; font-weight:700; color:#b45309; } +.remind-banner .muted { color:#8b6b22; } +.btn.primary { background: var(--primary); color: #fff; border-color: var(--primary); } +.btn.danger { background: var(--danger); color: #fff; border-color: var(--danger); } +.btn.outline { background: #fff; color: var(--text); } +.input { padding: 6px 8px; border: 1px solid var(--border); border-radius: 6px; font-size: 14px; } +.select { padding: 6px 8px; border: 1px solid var(--border); border-radius: 6px; font-size: 14px; background: #fff; } +.footer { margin-top: 12px; color: var(--muted); font-size: 12px; } +.chart-card { background: var(--card-bg); border: 1px solid var(--border); border-radius: 10px; padding: 12px; margin-bottom: 12px; } +.chart-title { display:flex; align-items:center; justify-content:space-between; margin:0 0 8px; font-size:16px; } +.chart-msg { color: var(--muted); font-size: 12px; margin-top: 6px; } +.chart-container { position: relative; height: 240px; width: 100%; } +#monthlyChart { width: 100%; height: 100%; display: block; } + +/* 导出管理 */ +.export-item { display:flex; justify-content:space-between; align-items:center; padding:8px; border:1px solid var(--border); border-radius:8px; background:#fff; margin-bottom:8px; } +.export-info { font-size: 13px; color: var(--text); } +.export-actions { display:flex; gap:8px; } + +/* 模态框 */ +.modal-mask { position: fixed; inset: 0; background: rgba(0,0,0,0.4); display: none; align-items: center; justify-content: center; } +.modal { width: 640px; max-width: 92vw; background: #fff; border-radius: 10px; border: 1px solid var(--border); } +.modal-header { padding: 10px 12px; border-bottom: 1px solid var(--border); display: flex; justify-content: space-between; align-items: center; } +.modal-body { padding: 12px; max-height: 68vh; overflow-y: auto; } +.modal-footer { padding: 10px 12px; border-top: 1px solid var(--border); display: flex; justify-content: flex-end; gap: 8px; } +.note { border: 1px dashed var(--border); border-radius: 8px; padding: 8px; margin: 8px 0; } +.note .meta { color: var(--muted); font-size: 12px; } +.hidden { display: none; } + +/* 小工具类 */ +.muted-small { color: var(--muted); font-size: 12px; } +.muted { color: var(--muted); } +.ml-8 { margin-left: 8px; } +.notes-title { margin: 6px 0; } +.notes-add-bar { display:flex; gap:8px; align-items:center; margin-top:8px; } +.notes-add-bar textarea#newNoteInput { flex: 1; min-height: 120px; padding: 10px; font-size: 14px; line-height: 1.6; resize: vertical; } + +/* 笔记内容预览(支持图片) */ +.note-preview { margin-top: 6px; color: var(--muted); font-size: 13px; max-height: 280px; overflow: auto; padding: 6px; background: #fafafa; border: 1px solid var(--border); border-radius: 6px; } +.note-preview img { max-width: 100%; max-height: 240px; object-fit: contain; border-radius: 6px; margin-top: 6px; display: block; cursor: zoom-in; } +.note-preview a { color: var(--primary); text-decoration: none; word-break: break-all; } +.note-preview a:hover { text-decoration: underline; } + +/* 评论气泡样式(预览在上方,编辑框在下方) */ +.note-bubble { position: relative; background: #fff; border: 1px solid var(--border); border-radius: 12px; padding: 10px 12px; box-shadow: 0 4px 12px rgba(0,0,0,0.04); margin-bottom: 8px; } +.note-bubble::after { content: ""; position: absolute; left: 16px; top: -6px; width: 12px; height: 12px; background: #fff; border-left: 1px solid var(--border); border-top: 1px solid var(--border); transform: rotate(45deg); } +.note-bubble img { max-width: 100%; border-radius: 8px; margin-top: 6px; } + +/* Git 风格的笔记卡片 */ +.note-git { background:#f9fafb; border:1px solid var(--border); border-left:4px solid #1f2937; border-radius:8px; margin:10px 0; box-shadow:0 2px 6px rgba(0,0,0,0.02); } +.note-git-header { display:flex; align-items:center; gap:10px; color:var(--muted); font-size:12px; padding:8px 12px; border-bottom:1px dashed var(--border); } +.note-git-title { font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace; font-weight:600; color:var(--text); cursor:pointer; } +.note-git-title:hover { text-decoration: underline; } +.note-git-time { margin-left:auto; color:var(--muted); } +.note-git-body { padding:12px; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace; white-space: pre-wrap; word-break: break-word; } +.note-git-body img { max-width:100%; max-height: clamp(220px, 48vh, 420px); object-fit: contain; border-radius:6px; margin:6px 0; display:block; cursor: zoom-in; } + +/* 笔记卡片(头像+用户名+时间+操作) */ +.note-card { background:#fff; border:1px solid var(--border); border-radius:12px; padding:12px; margin:10px 0; box-shadow:0 2px 8px rgba(0,0,0,0.04); } +.note-header { display:flex; align-items:center; justify-content:space-between; margin-bottom:8px; } +.note-user { display:flex; align-items:center; gap:10px; } +.note-avatar { width:32px; height:32px; border-radius:50%; background:#e5e7eb; color:#374151; display:flex; align-items:center; justify-content:center; font-weight:600; } +.note-username { font-weight:600; } +.note-time { color:var(--muted); font-size:12px; } +.note-comment-btn { border:none; background:transparent; color:var(--muted); cursor:pointer; padding:4px 8px; border-radius:6px; } +.note-comment-btn:hover { background:#f3f4f6; color:var(--text); } +.note-footer { display:flex; align-items:center; justify-content:flex-end; margin-top:8px; } +.note-actions-left { display:flex; gap:14px; color:var(--muted); font-size:13px; } +.note-actions-left .action { cursor:pointer; user-select:none; } +.note-actions-left .action:hover { color:var(--text); } +.note-actions-right { display:flex; gap:8px; } + +/* 图片浮窗(Lightbox) */ +.img-lightbox-mask { position: fixed; inset: 0; background: rgba(0,0,0,0.6); display: none; align-items: center; justify-content: center; z-index: 10000; } +.img-lightbox-content { position: relative; max-width: 92vw; max-height: 92vh; } +.img-lightbox-content img { max-width: 92vw; max-height: 92vh; border-radius: 8px; box-shadow: 0 12px 30px rgba(0,0,0,0.35); background: #fff; } +.img-lightbox-close { position: absolute; top: -10px; right: -10px; width: 28px; height: 28px; border-radius: 50%; border: 1px solid var(--border); background: #fff; color: var(--text); cursor: pointer; box-shadow: 0 2px 6px rgba(0,0,0,0.2); } + +/* 自适应/响应式:根据视口宽度优化布局,在浏览器缩放时也能更好适配 */ +@media (max-width: 1280px) { + .status-board { grid-template-columns: repeat(3, 1fr); } +} +@media (max-width: 960px) { + .app { display: block; } + .main { padding: 12px; } + .status-board { grid-template-columns: repeat(2, 1fr); gap: 10px; } + .column { padding: 8px; } + .chart-container { height: clamp(180px, 28vh, 240px); } + .note-preview { max-height: clamp(200px, 34vh, 280px); } +} +@media (max-width: 640px) { + .header { flex-wrap: wrap; gap: 6px; } + .header-right { width: 100%; justify-content: flex-start; gap: 6px; } + .status-board { grid-template-columns: 1fr; } + .chart-container { height: clamp(160px, 32vh, 220px); } + .modal { width: 100%; max-width: 96vw; } + .note-preview img { max-height: 200px; } +} diff --git a/assets/js/app.js b/assets/js/app.js new file mode 100644 index 0000000..0b9a5a5 --- /dev/null +++ b/assets/js/app.js @@ -0,0 +1,689 @@ +// ===== 从 index.php 迁移的脚本(中文状态版) ===== +const Statuses = ["待做","进行","完成","异常"]; // 四种状态 +let Projects = []; // 全量项目数据 +let CurrentProjectId = null; +const ShowStep = 15; // 每列初始显示数量 +let ShowLimits = { '待做': ShowStep, '进行': ShowStep, '完成': ShowStep, '异常': ShowStep }; +let Filters = { status: '全部', search: '', month: '' }; // month: YYYY-MM + +// 获取项目的年月键(优先 created_at,其次 updated_at) +function projectMonthKey(p) { + return monthKeyFromDateStr(p?.created_at || p?.updated_at || '') || null; +} + +const api = async (url, options = {}) => { + const res = await fetch(url, options); + const ct = res.headers.get('Content-Type') || ''; + if (ct.includes('application/json')) { + try { + const data = await res.json(); + if (data && data.need_login) { + // 统一跳回登录页 + location.href = 'index.php'; + throw new Error('未登录'); + } + return data; + } catch (e) { + // JSON 解析异常时直接返回空 + return null; + } + } + return res.text(); +}; + +// 退出登录 +async function logout() { + try { + const data = await api('api.php?action=logout', { method: 'POST' }); + // 清理本地标记 + try { localStorage.removeItem('auth_ok'); } catch (e) {} + // 返回登录页 + location.href = 'index.php'; + } catch (e) { + // 即便异常也尝试跳转 + location.href = 'index.php'; + } +} + +async function loadProjects() { + const data = await api('api.php?action=list_projects'); + Projects = Array.isArray(data?.projects) ? data.projects : []; + // 每次加载数据时重置显示数量(避免越来越多) + ShowLimits = { '待做': ShowStep, '进行': ShowStep, '完成': ShowStep, '异常': ShowStep }; + renderBoard(); + renderMonthlyChart(); +} + +function renderBoard() { + const board = document.getElementById('statusBoard'); + board.innerHTML = ''; + const statusesToRender = Filters.status === '全部' ? Statuses : [Filters.status]; + const q = (Filters.search || '').trim().toLowerCase(); + statusesToRender.forEach(st => { + const items = Projects.filter(p => p.status === st); + let filtered = items.filter(p => { + if (!q) return true; + return String(p.name || '').toLowerCase().includes(q); + }); + if (Filters.month) { + filtered = filtered.filter(p => projectMonthKey(p) === Filters.month); + } + const col = document.createElement('div'); + col.className = 'column'; + col.dataset.status = st; // 用于拖拽目标识别 + col.innerHTML = `

${st} (${filtered.length})

`; + // 列拖拽目标事件 + col.addEventListener('dragover', (e) => { e.preventDefault(); col.classList.add('drag-over'); }); + col.addEventListener('dragleave', () => { col.classList.remove('drag-over'); }); + col.addEventListener('drop', (e) => { + e.preventDefault(); col.classList.remove('drag-over'); + const pid = e.dataTransfer.getData('text/plain'); + if (pid) { updateProject(pid, { status: st }); } + }); + const limit = ShowLimits[st] || ShowStep; + filtered.slice(0, limit).forEach(p => { + const div = document.createElement('div'); + div.className = 'project'; + div.draggable = true; + div.addEventListener('dragstart', (e) => { + e.dataTransfer.setData('text/plain', p.id); + e.dataTransfer.effectAllowed = 'move'; + div.classList.add('dragging'); + }); + div.addEventListener('dragend', () => { div.classList.remove('dragging'); }); + const title = document.createElement('div'); + title.className = 'title'; + title.textContent = p.name; + title.style.cursor = 'pointer'; + title.onclick = () => openProject(p.id); + const actions = document.createElement('div'); + actions.className = 'actions'; + const sel = document.createElement('select'); + sel.className = 'select'; + Statuses.forEach(s => { + const opt = document.createElement('option'); + opt.value = s; opt.textContent = s; if (s === p.status) opt.selected = true; sel.appendChild(opt); + }); + sel.onchange = () => updateProject(p.id, { status: sel.value }); + const editBtn = document.createElement('button'); editBtn.className = 'btn'; editBtn.textContent = '编辑'; editBtn.onclick = () => openProject(p.id); + const delBtn = document.createElement('button'); delBtn.className = 'btn danger'; delBtn.textContent = '删除'; delBtn.onclick = () => deleteProject(p.id); + actions.appendChild(sel); actions.appendChild(editBtn); actions.appendChild(delBtn); + div.appendChild(title); + div.appendChild(actions); + col.appendChild(div); + }); + if (filtered.length > limit) { + const more = document.createElement('button'); + more.className = 'btn'; + more.textContent = `显示更多... (${filtered.length - limit})`; + more.onclick = () => { ShowLimits[st] = limit + ShowStep; renderBoard(); }; + col.appendChild(more); + } + board.appendChild(col); + }); +} + +async function createProject() { + const nameInput = document.getElementById('newProjectName'); + const name = (nameInput.value || '').trim(); + if (!name) { alert('请输入项目名称'); return; } + const resp = await api('api.php?action=create_project', { + method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ name }) + }); + if (resp && resp.ok) { nameInput.value=''; await loadProjects(); } else { alert(resp?.message || '创建失败'); } +} + +async function updateProject(id, updates) { + const resp = await api('api.php?action=update_project', { + method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ id, ...updates }) + }); + if (resp && resp.ok) { await loadProjects(); } else { alert(resp?.message || '更新失败'); } +} + +async function deleteProject(id) { + if (!confirm('确认删除该项目及其笔记吗?')) return; + const resp = await api('api.php?action=delete_project', { + method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ id }) + }); + if (resp && resp.ok) { await loadProjects(); } else { alert(resp?.message || '删除失败'); } +} + +async function openProject(id) { + // 改为跳转到独立详情页,不再使用悬浮弹窗 + location.href = 'project.php?id=' + encodeURIComponent(id); +} +function closeProjectModal() { document.getElementById('projectModalMask').style.display = 'none'; CurrentProjectId = null; } + +function renderNotes(notes) { + const list = document.getElementById('notesList'); + list.innerHTML = ''; + notes.forEach(n => { + const div = document.createElement('div'); div.className = 'note'; + // 预览在上方:评论气泡样式 + const preview = document.createElement('div'); preview.className = 'note-preview note-bubble'; + const ta = document.createElement('textarea'); ta.className = 'input'; ta.style.width = '100%'; ta.style.minHeight = '80px'; ta.value = n.content || ''; + preview.innerHTML = noteTextToHtml(ta.value || ''); + enhancePreview(preview); + const meta = document.createElement('div'); meta.className = 'meta'; meta.textContent = `创建: ${n.created_at || ''} 更新: ${n.updated_at || ''}`; + const bar = document.createElement('div'); bar.style.display = 'flex'; bar.style.gap='8px'; bar.style.marginTop='6px'; + const save = document.createElement('button'); save.className = 'btn'; save.textContent = '保存修改'; save.onclick = () => updateNote(n.id, ta.value); + const del = document.createElement('button'); del.className = 'btn danger'; del.textContent = '删除'; del.onclick = () => deleteNote(n.id); + const addImgBtn = document.createElement('button'); addImgBtn.className = 'btn'; addImgBtn.textContent = '添加图片'; + const fileInput = document.createElement('input'); fileInput.type = 'file'; fileInput.accept = 'image/*'; fileInput.className = 'hidden'; + addImgBtn.onclick = () => fileInput.click(); + fileInput.onchange = async () => { + const f = fileInput.files && fileInput.files[0]; + if (!f) return; + const up = await uploadFile(f); + if (up && up.ok && up.url) { + const md = `\n![图片](${up.url})\n`; + insertAtCursor(ta, md); + preview.innerHTML = noteTextToHtml(ta.value || ''); + enhancePreview(preview); + fileInput.value = ''; + } else { + alert(up?.message || '图片上传失败'); + } + }; + ta.addEventListener('input', () => { preview.innerHTML = noteTextToHtml(ta.value || ''); enhancePreview(preview); }); + bar.appendChild(save); bar.appendChild(del); bar.appendChild(addImgBtn); bar.appendChild(fileInput); + // 排列顺序:预览气泡 -> 元信息 -> 编辑框 -> 操作条 + div.appendChild(preview); + div.appendChild(meta); + div.appendChild(ta); + div.appendChild(bar); + list.appendChild(div); + + // 允许直接粘贴或拖拽图片/文件到笔记文本框 + ta.addEventListener('paste', async (e) => { + const items = e.clipboardData?.items || []; + const files = []; + for (const it of items) { + if (it.kind === 'file') { const f = it.getAsFile(); if (f) files.push(f); } + } + if (files.length) { + e.preventDefault(); + await handleFilesInsert(ta, files); + preview.innerHTML = noteTextToHtml(ta.value || ''); + enhancePreview(preview); + } + }); + ta.addEventListener('dragover', (e) => { e.preventDefault(); }); + ta.addEventListener('drop', async (e) => { + e.preventDefault(); + const files = Array.from(e.dataTransfer?.files || []); + if (files.length) { + await handleFilesInsert(ta, files); + preview.innerHTML = noteTextToHtml(ta.value || ''); + enhancePreview(preview); + } + }); + }); +} + +async function applyProjectMeta() { + if (!CurrentProjectId) return; + const name = document.getElementById('renameProjectInput').value.trim(); + const status = document.getElementById('statusSelect').value; + const resp = await api('api.php?action=update_project', { + method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ id: CurrentProjectId, name, status }) + }); + const msg = document.getElementById('modalMsg'); + if (resp && resp.ok) { msg.textContent = '项目已保存'; await loadProjects(); openProject(CurrentProjectId); } else { msg.textContent = resp?.message || '保存失败'; } +} + +async function deleteCurrentProject() { if (CurrentProjectId) { await deleteProject(CurrentProjectId); closeProjectModal(); } } + +async function addNote() { + if (!CurrentProjectId) return; + const content = document.getElementById('newNoteInput').value.trim(); + if (!content) { alert('请输入笔记内容'); return; } + const resp = await api('api.php?action=add_note', { + method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ project_id: CurrentProjectId, content }) + }); + if (resp && resp.ok) { document.getElementById('newNoteInput').value=''; await loadProjects(); openProject(CurrentProjectId); } else { alert(resp?.message || '添加失败'); } +} + +async function updateNote(note_id, content) { + if (!CurrentProjectId) return; + const resp = await api('api.php?action=update_note', { + method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ project_id: CurrentProjectId, note_id, content }) + }); + if (resp && resp.ok) { await loadProjects(); openProject(CurrentProjectId); } else { alert(resp?.message || '保存失败'); } +} + +async function deleteNote(note_id) { + if (!CurrentProjectId) return; + if (!confirm('确认删除该笔记吗?')) return; + const resp = await api('api.php?action=delete_note', { + method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ project_id: CurrentProjectId, note_id }) + }); + if (resp && resp.ok) { await loadProjects(); openProject(CurrentProjectId); } else { alert(resp?.message || '删除失败'); } +} + +async function exportProjectHtml() { + if (!CurrentProjectId) return; + const resp = await api('api.php?action=export_project_html&id='+encodeURIComponent(CurrentProjectId)); + if (resp && resp.ok && resp.url) { + window.open(resp.url, '_blank'); + // 导出后刷新“导出管理”列表 + await loadExports(); + } else { + alert(resp?.message || '导出失败'); + } +} + +// 主动清理未使用的上传文件(后台扫描 data/uploads 与所有笔记引用) +async function cleanupUnusedUploads() { + const resp = await api('api.php?action=cleanup_unused_uploads'); + if (resp && resp.ok) { + const d = resp.cleanup?.deleted ?? 0; + alert(`清理完成:删除未引用文件 ${d} 个`); + await loadProjects(); if (CurrentProjectId) openProject(CurrentProjectId); + } else { + alert(resp?.message || '清理失败'); + } +} + +// 文件上传(图片) +async function uploadFile(file) { + const fd = new FormData(); fd.append('file', file); + return api('api.php?action=upload_file', { method: 'POST', body: fd }); +} + +// 将笔记文本转换为HTML(支持 Markdown 图片:![alt](url)) +function noteTextToHtml(text) { + if (!text) return ''; + const imgReg = /!\[([^\]]*)\]\(([^\)]+)\)/u; + const linkReg = /\[([^\]]+)\]\(([^\)]+)\)/u; // 链接(图片将由 imgReg 优先匹配) + let out = ''; + let pos = 0; + while (true) { + const imgM = imgReg.exec(text.slice(pos)); + const linkM = linkReg.exec(text.slice(pos)); + const imgPos = imgM ? imgM.index : -1; + const linkPos = linkM ? linkM.index : -1; + if (imgPos < 0 && linkPos < 0) break; + const nextRel = (imgPos >=0 && (linkPos < 0 || imgPos <= linkPos)) ? imgPos : linkPos; + out += escapeHtml(text.slice(pos, pos + nextRel)).replace(/\n/g, '
'); + if (nextRel === imgPos) { + const alt = escapeHtml(imgM[1] || ''); + const url = escapeHtml(imgM[2] || ''); + out += `${alt}`; + pos += imgPos + imgM[0].length; + } else { + const label = escapeHtml(linkM[1] || ''); + const urlRaw = linkM[2] || ''; + const url = escapeHtml(urlRaw); + if (isImageUrl(urlRaw)) { + out += `${label}`; + } else { + out += `${label}`; + } + pos += linkPos + linkM[0].length; + } + } + out += escapeHtml(text.slice(pos)).replace(/\n/g, '
'); + return out; +} +function escapeHtml(s) { return String(s).replace(/&/g,'&').replace(//g,'>').replace(/"/g,'"'); } +function insertAtCursor(ta, text) { + const start = ta.selectionStart ?? ta.value.length; const end = ta.selectionEnd ?? start; + ta.value = ta.value.slice(0, start) + text + ta.value.slice(end); + ta.focus(); + ta.selectionStart = ta.selectionEnd = start + text.length; + ta.dispatchEvent(new Event('input')); +} + +// 预览增强:点击图片在新窗口查看原图 +function enhancePreview(previewEl) { + previewEl.querySelectorAll('img').forEach(img => { + img.addEventListener('click', () => { openImageLightbox(img.src, img.alt || ''); }); + }); +} + +function isImageFile(file) { + const t = (file?.type || '').toLowerCase(); + if (t.startsWith('image/')) return true; + const name = file?.name || ''; + return /\.(png|jpg|jpeg|gif|webp)$/i.test(name); +} +async function handleFilesInsert(ta, files) { + for (const f of files) { + const up = await uploadFile(f); + if (up && up.ok && up.url) { + const fname = (up.name || f.name || '附件'); + const url = up.url; + const md = isImageFile(f) ? `\n![${fname}](${url})\n` : `\n[${fname}](${url})\n`; + insertAtCursor(ta, md); + } else { + alert(up?.message || `上传失败:${f.name}`); + } + } +} + +function isImageUrl(url) { + return /\.(png|jpg|jpeg|gif|webp)(\?.*)?$/i.test(url) || /^data:image\//i.test(url); +} + +// ====== 图片浮窗(Lightbox) ====== +let _imgLightboxEl = null; +function ensureImageLightbox() { + if (_imgLightboxEl) return _imgLightboxEl; + const mask = document.createElement('div'); + mask.className = 'img-lightbox-mask'; + const content = document.createElement('div'); + content.className = 'img-lightbox-content'; + const img = document.createElement('img'); + const closeBtn = document.createElement('button'); + closeBtn.className = 'img-lightbox-close'; closeBtn.textContent = '×'; + content.appendChild(img); content.appendChild(closeBtn); + mask.appendChild(content); + document.body.appendChild(mask); + // 交互 + const close = () => { mask.style.display = 'none'; document.body.style.overflow = ''; document.removeEventListener('keydown', escHandler); }; + const escHandler = (e) => { if (e.key === 'Escape') close(); }; + mask.addEventListener('click', close); + content.addEventListener('click', (e) => e.stopPropagation()); + closeBtn.addEventListener('click', close); + _imgLightboxEl = mask; + return _imgLightboxEl; +} +function openImageLightbox(src, alt) { + const el = ensureImageLightbox(); + const img = el.querySelector('img'); + img.src = src; img.alt = alt || ''; + el.style.display = 'flex'; + document.body.style.overflow = 'hidden'; + const escHandler = (e) => { if (e.key === 'Escape') { el.style.display='none'; document.body.style.overflow=''; document.removeEventListener('keydown', escHandler); } }; + document.addEventListener('keydown', escHandler); +} + +// ====== 月份曲线图 ====== +let chartInstance = null; +function getLast12MonthsLabels() { + const labels = []; + const now = new Date(); + for (let i = 11; i >= 0; i--) { + const d = new Date(now.getFullYear(), now.getMonth() - i, 1); + const y = d.getFullYear(); + const m = (d.getMonth() + 1).toString().padStart(2, '0'); + labels.push(`${y}-${m}`); + } + return labels; +} +function monthKeyFromDateStr(str) { + // 输入格式:YYYY-MM-DD HH:mm:ss + if (!str || typeof str !== 'string' || str.length < 7) return null; + const m = str.slice(0,7); + // 基础校验 + if (!/^\d{4}-\d{2}$/.test(m)) return null; + return m; +} +function computeMonthlySeries(labels) { + const colorMap = { '待做': '#3b82f6', '进行': '#f59e0b', '完成': '#10b981', '异常': '#ef4444' }; + const series = {}; + Statuses.forEach(st => { series[st] = labels.map(_ => 0); }); + Projects.forEach(p => { + // 优先使用创建月份;没有则使用更新时间;都没有则归入当前月 + const mk = monthKeyFromDateStr(p.created_at || p.updated_at || '') || labels[labels.length - 1]; + if (!mk) return; // 略过缺少时间的项目 + const idx = labels.indexOf(mk); + if (idx === -1) return; // 不在最近12个月 + const st = p.status || '待做'; + if (!series[st]) series[st] = labels.map(_ => 0); + series[st][idx] += 1; + }); + const datasets = Statuses.map(st => ({ + label: st, + data: series[st], + tension: 0.25, + borderColor: colorMap[st], + backgroundColor: colorMap[st], + pointRadius: 3, + borderWidth: 2, + fill: false, + })); + return datasets; +} +function drawSimpleChart(canvas, labels, datasets) { + const dpr = window.devicePixelRatio || 1; + const cw = canvas.clientWidth || 600; + const ch = canvas.clientHeight || 140; + canvas.width = Math.floor(cw * dpr); + canvas.height = Math.floor(ch * dpr); + const ctx = canvas.getContext('2d'); + ctx.scale(dpr, dpr); + const margin = { left: 36, right: 12, top: 12, bottom: 28 }; + const plotW = cw - margin.left - margin.right; + const plotH = ch - margin.top - margin.bottom; + // 背景 + ctx.fillStyle = '#fff'; + ctx.fillRect(0, 0, cw, ch); + // 计算最大值 + let maxY = 0; + datasets.forEach(ds => ds.data.forEach(v => { if (v > maxY) maxY = v; })); + if (maxY === 0) maxY = 5; + const stepX = labels.length > 1 ? plotW / (labels.length - 1) : plotW; + const scaleY = plotH / maxY; + // 坐标轴 + ctx.strokeStyle = '#e5e7eb'; + ctx.lineWidth = 1; + ctx.beginPath(); + ctx.moveTo(margin.left, margin.top); + ctx.lineTo(margin.left, margin.top + plotH); + ctx.lineTo(margin.left + plotW, margin.top + plotH); + ctx.stroke(); + // y 轴刻度 + ctx.fillStyle = '#6b7280'; + ctx.font = '12px Arial'; + for (let i = 0; i <= 4; i++) { + const yVal = Math.round((maxY * i) / 4); + const y = margin.top + plotH - yVal * scaleY; + ctx.fillText(String(yVal), 6, y + 4); + ctx.strokeStyle = '#f3f4f6'; + ctx.beginPath(); + ctx.moveTo(margin.left, y); + ctx.lineTo(margin.left + plotW, y); + ctx.stroke(); + } + // x 轴标签(每隔2个月显示一次) + for (let i = 0; i < labels.length; i += Math.ceil(labels.length / 6)) { + const x = margin.left + i * stepX; + ctx.fillStyle = '#6b7280'; + ctx.save(); + ctx.translate(x, margin.top + plotH + 14); + ctx.rotate(-Math.PI / 8); + ctx.fillText(labels[i], 0, 0); + ctx.restore(); + } + // 折线 + datasets.forEach(ds => { + ctx.strokeStyle = ds.borderColor; + ctx.lineWidth = 2; + ctx.beginPath(); + for (let i = 0; i < ds.data.length; i++) { + const x = margin.left + i * stepX; + const y = margin.top + plotH - ds.data[i] * scaleY; + if (i === 0) ctx.moveTo(x, y); else ctx.lineTo(x, y); + } + ctx.stroke(); + // 点 + ctx.fillStyle = ds.borderColor; + for (let i = 0; i < ds.data.length; i++) { + const x = margin.left + i * stepX; + const y = margin.top + plotH - ds.data[i] * scaleY; + ctx.beginPath(); + ctx.arc(x, y, 3, 0, Math.PI * 2); + ctx.fill(); + } + }); + // 简易图例 + let lx = margin.left; let ly = margin.top - 2; + datasets.forEach(ds => { + ctx.fillStyle = ds.borderColor; + ctx.fillRect(lx, ly, 10, 10); + ctx.fillStyle = '#374151'; + ctx.fillText(ds.label, lx + 14, ly + 10); + lx += 60; + }); +} +function renderMonthlyChart() { + const labels = getLast12MonthsLabels(); + const datasets = computeMonthlySeries(labels); + const canvas = document.getElementById('monthlyChart'); + const msg = document.getElementById('chartMsg'); + if (window.Chart) { + const ctx = canvas.getContext('2d'); + if (chartInstance) { chartInstance.destroy(); } + chartInstance = new Chart(ctx, { + type: 'line', + data: { labels, datasets }, + options: { + responsive: true, + maintainAspectRatio: false, // 父容器固定高度,避免在Flex布局下无限增高 + plugins: { + legend: { position: 'bottom' }, + tooltip: { mode: 'index', intersect: false } + }, + interaction: { mode: 'nearest', axis: 'x', intersect: false }, + scales: { + y: { beginAtZero: true, ticks: { precision:0 } }, + x: { grid: { display: false } } + } + } + }); + msg.textContent = ''; + } else { + // 无法加载外部CDN时,使用内置简易绘制 + msg.textContent = '图表库未加载(可能网络限制或被拦截),已切换为内置简易曲线图。'; + drawSimpleChart(canvas, labels, datasets); + } +} + +// 初次加载 +loadProjects(); + +// 对外暴露(给内联按钮用) +window.createProject = createProject; +window.updateProject = updateProject; +window.deleteProject = deleteProject; +window.openProject = openProject; +window.closeProjectModal = closeProjectModal; +window.applyProjectMeta = applyProjectMeta; +window.deleteCurrentProject = deleteCurrentProject; +window.addNote = addNote; +window.updateNote = updateNote; +window.deleteNote = deleteNote; +window.exportProjectHtml = exportProjectHtml; +window.cleanupUnusedUploads = cleanupUnusedUploads; + +// 绑定筛选与搜索(在脚本加载后执行一次) +document.addEventListener('DOMContentLoaded', () => { + const sel = document.getElementById('statusFilterSelect'); + if (sel) sel.addEventListener('change', () => { Filters.status = sel.value || '全部'; renderBoard(); }); + const input = document.getElementById('projectSearchInput'); + if (input) input.addEventListener('input', () => { Filters.search = input.value || ''; renderBoard(); }); + const monthInput = document.getElementById('monthFilterInput'); + if (monthInput) monthInput.addEventListener('change', () => { Filters.month = monthInput.value || ''; renderBoard(); }); + const clearBtn = document.getElementById('monthFilterClearBtn'); + if (clearBtn) clearBtn.addEventListener('click', () => { Filters.month=''; if (monthInput) monthInput.value=''; renderBoard(); }); + + // 新增笔记条中的“添加图片”支持 + const newNoteBtn = document.getElementById('newNoteAddImageBtn'); + const newNoteFile = document.getElementById('newNoteImageInput'); + const newNoteInput = document.getElementById('newNoteInput'); + if (newNoteBtn && newNoteFile && newNoteInput) { + newNoteBtn.addEventListener('click', () => newNoteFile.click()); + newNoteFile.addEventListener('change', async () => { + const f = newNoteFile.files && newNoteFile.files[0]; + if (!f) return; + const up = await uploadFile(f); + if (up && up.ok && up.url) { + const md = isImageFile(f) ? `\n![${up.name || f.name || '图片'}](${up.url})\n` : `\n[${up.name || f.name || '附件'}](${up.url})\n`; + newNoteInput.value = (newNoteInput.value || '') + md; + newNoteFile.value = ''; + } else { + alert(up?.message || '图片上传失败'); + } + }); + // 允许粘贴/拖拽到新增笔记输入框 + newNoteInput.addEventListener('paste', async (e) => { + const items = e.clipboardData?.items || []; + const files = []; + for (const it of items) { if (it.kind === 'file') { const f = it.getAsFile(); if (f) files.push(f); } } + if (files.length) { + e.preventDefault(); + await handleFilesInsert(newNoteInput, files); + } + }); + newNoteInput.addEventListener('dragover', (e) => { e.preventDefault(); }); + newNoteInput.addEventListener('drop', async (e) => { + e.preventDefault(); + const files = Array.from(e.dataTransfer?.files || []); + if (files.length) { await handleFilesInsert(newNoteInput, files); } + }); + } +}); + +// ====== 导出管理 ====== +let ExportFilesCache = []; +let ExportsFilters = { search: '', month: '' }; +async function loadExports() { + const resp = await api('api.php?action=list_exports'); + ExportFilesCache = Array.isArray(resp?.files) ? resp.files : []; + renderExports(ExportFilesCache); +} + +function renderExports(files) { + const box = document.getElementById('exportsList'); + if (!box) return; + // 过滤 + const q = (ExportsFilters.search || '').trim().toLowerCase(); + const month = ExportsFilters.month || ''; + let filtered = files.slice(); + if (q) filtered = filtered.filter(f => String(f.name || '').toLowerCase().includes(q)); + if (month) filtered = filtered.filter(f => monthKeyFromDateStr(f.mtime || '') === month); + // 数量统计 + const countEl = document.getElementById('exportsCount'); + if (countEl) countEl.textContent = `共 ${filtered.length} 项${month ? ` · 月份:${month}` : ''}${q ? ` · 关键词:${q}` : ''}`; + if (!filtered.length) { box.innerHTML = '
暂无匹配的导出文件
'; return; } + box.innerHTML = ''; + filtered.forEach(f => { + const row = document.createElement('div'); + row.className = 'export-item'; + const info = document.createElement('div'); + info.className = 'export-info'; + const sizeKB = Math.round((f.size || 0) / 1024); + info.textContent = `${f.name} · ${f.mtime} · ${sizeKB} KB`; + const acts = document.createElement('div'); acts.className = 'export-actions'; + const openBtn = document.createElement('button'); openBtn.className = 'btn'; openBtn.textContent = '打开'; openBtn.onclick = () => window.open(f.url, '_blank'); + const shareBtn = document.createElement('button'); shareBtn.className = 'btn'; shareBtn.textContent = '分享'; + shareBtn.onclick = async () => { + const abs = new URL(f.url, window.location.href).href; + try { await navigator.clipboard.writeText(abs); alert('已复制链接到剪贴板:\n' + abs); } catch(e) { prompt('复制失败,请手动复制:', abs); } + }; + const delBtn = document.createElement('button'); delBtn.className = 'btn danger'; delBtn.textContent = '删除'; + delBtn.onclick = async () => { + if (!confirm(`确认删除导出文件:${f.name}?`)) return; + const r = await api('api.php?action=delete_export', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ name: f.name }) }); + if (r && r.ok) { await loadExports(); } else { alert(r?.message || '删除失败'); } + }; + acts.appendChild(openBtn); acts.appendChild(shareBtn); acts.appendChild(delBtn); + row.appendChild(info); row.appendChild(acts); + box.appendChild(row); + }); +} + +// 初始加载导出列表 +document.addEventListener('DOMContentLoaded', () => { + // 初次加载 + loadExports(); + // 绑定筛选控件 + const searchInput = document.getElementById('exportsSearchInput'); + if (searchInput) searchInput.addEventListener('input', () => { ExportsFilters.search = searchInput.value || ''; renderExports(ExportFilesCache); }); + const monthInput = document.getElementById('exportsMonthInput'); + if (monthInput) monthInput.addEventListener('change', () => { ExportsFilters.month = monthInput.value || ''; renderExports(ExportFilesCache); }); + const clearBtn = document.getElementById('exportsMonthClearBtn'); + if (clearBtn) clearBtn.addEventListener('click', () => { ExportsFilters.month=''; if (monthInput) monthInput.value=''; renderExports(ExportFilesCache); }); +}); diff --git a/assets/js/project.js b/assets/js/project.js new file mode 100644 index 0000000..dcffd5e --- /dev/null +++ b/assets/js/project.js @@ -0,0 +1,456 @@ +// 项目详情页脚本(不使用悬浮弹窗) +const api = async (url, options = {}) => { + const res = await fetch(url, options); + const ct = res.headers.get('Content-Type') || ''; + if (ct.includes('application/json')) { + try { + const data = await res.json(); + if (data && data.need_login) { + location.href = 'index.php'; + throw new Error('未登录'); + } + return data; + } catch (e) { return null; } + } + return res.text(); +}; + +let CurrentProjectId = null; +let CurrentProject = null; + +function escapeHtml(s) { return String(s).replace(/&/g,'&').replace(//g,'>').replace(/"/g,'"'); } +function isImageUrl(url){ return /\.(png|jpg|jpeg|gif|webp)(\?.*)?$/i.test(url) || /^data:image\//i.test(url); } + +// 将笔记文本转换为HTML(支持 Markdown 图片:![alt](url)) +function noteTextToHtml(text) { + if (!text) return ''; + const imgReg = /!\[([^\]]*)\]\(([^\)]+)\)/u; + const linkReg = /\[([^\]]+)\]\(([^\)]+)\)/u; // 链接(图片将由 imgReg 优先匹配) + let out = ''; + let pos = 0; + while (true) { + const imgM = imgReg.exec(text.slice(pos)); + const linkM = linkReg.exec(text.slice(pos)); + const imgPos = imgM ? imgM.index : -1; + const linkPos = linkM ? linkM.index : -1; + if (imgPos < 0 && linkPos < 0) break; + const nextRel = (imgPos >=0 && (linkPos < 0 || imgPos <= linkPos)) ? imgPos : linkPos; + out += escapeHtml(text.slice(pos, pos + nextRel)).replace(/\n/g, '
'); + if (nextRel === imgPos) { + const alt = escapeHtml(imgM[1] || ''); + const url = escapeHtml(imgM[2] || ''); + out += `${alt}`; + pos += imgPos + imgM[0].length; + } else { + const label = escapeHtml(linkM[1] || ''); + const urlRaw = linkM[2] || ''; + const url = escapeHtml(urlRaw); + if (isImageUrl(urlRaw)) { + out += `${label}`; + } else { + out += `${label}`; + } + pos += linkPos + linkM[0].length; + } + } + out += escapeHtml(text.slice(pos)).replace(/\n/g, '
'); + return out; +} + +function insertAtCursor(ta, text) { + const start = ta.selectionStart ?? ta.value.length; const end = ta.selectionEnd ?? start; + ta.value = ta.value.slice(0, start) + text + ta.value.slice(end); + ta.focus(); + ta.selectionStart = ta.selectionEnd = start + text.length; + ta.dispatchEvent(new Event('input')); +} + +function isImageFile(file) { + const t = (file?.type || '').toLowerCase(); + if (t.startsWith('image/')) return true; + const name = file?.name || ''; + return /\.(png|jpg|jpeg|gif|webp)$/i.test(name); +} + +function enhancePreview(previewEl) { + previewEl.querySelectorAll('img').forEach(img => { + img.addEventListener('click', () => { openImageLightbox(img.src, img.alt || ''); }); + }); +} + +// ====== 图片浮窗(Lightbox) ====== +let _imgLightboxEl = null; +function ensureImageLightbox() { + if (_imgLightboxEl) return _imgLightboxEl; + const mask = document.createElement('div'); + mask.className = 'img-lightbox-mask'; + const content = document.createElement('div'); + content.className = 'img-lightbox-content'; + const img = document.createElement('img'); + const closeBtn = document.createElement('button'); + closeBtn.className = 'img-lightbox-close'; closeBtn.textContent = '×'; + content.appendChild(img); content.appendChild(closeBtn); + mask.appendChild(content); + document.body.appendChild(mask); + const close = () => { mask.style.display = 'none'; document.body.style.overflow = ''; document.removeEventListener('keydown', escHandler); }; + const escHandler = (e) => { if (e.key === 'Escape') close(); }; + mask.addEventListener('click', close); + content.addEventListener('click', (e) => e.stopPropagation()); + closeBtn.addEventListener('click', close); + _imgLightboxEl = mask; + return _imgLightboxEl; +} +function openImageLightbox(src, alt) { + const el = ensureImageLightbox(); + const img = el.querySelector('img'); + img.src = src; img.alt = alt || ''; + el.style.display = 'flex'; + document.body.style.overflow = 'hidden'; + const escHandler = (e) => { if (e.key === 'Escape') { el.style.display='none'; document.body.style.overflow=''; document.removeEventListener('keydown', escHandler); } }; + document.addEventListener('keydown', escHandler); +} + +async function uploadFile(file) { + const fd = new FormData(); fd.append('file', file); + return api('api.php?action=upload_file', { method: 'POST', body: fd }); +} + +async function loadProject() { + const id = window.PAGE_PROJECT_ID || ''; + if (!id) { document.getElementById('pageMsg').textContent = '缺少项目ID'; return; } + const data = await api('api.php?action=get_project&id=' + encodeURIComponent(id)); + if (data && data.ok) { + CurrentProject = data.project; CurrentProjectId = CurrentProject.id; + document.getElementById('pageProjectTitle').textContent = CurrentProject.name; + document.getElementById('pageProjectStatus').textContent = '· 当前状态:' + CurrentProject.status; + document.getElementById('renameProjectInput').value = CurrentProject.name; + document.getElementById('statusSelect').value = CurrentProject.status; + // ETA 输入显示控制(仅进行中显示) + const etaInput = document.getElementById('etaInput'); + if (etaInput) { + const key = 'project_eta_' + CurrentProjectId; + const saved = localStorage.getItem(key) || ''; + etaInput.style.display = (CurrentProject.status === '进行') ? '' : 'none'; + if (saved) etaInput.value = saved; + } + updateProjectReminder(); + renderNotes(CurrentProject.notes || []); + } else { + document.getElementById('pageMsg').textContent = (data && data.message) ? data.message : '加载失败'; + } +} + +function timeAgo(str) { + if (!str) return ''; + const d = new Date(str.replace(/-/g,'/')); // iOS 兼容 + if (isNaN(d.getTime())) return str; + const diff = Date.now() - d.getTime(); + const sec = Math.floor(diff/1000); if (sec < 60) return sec + '秒前'; + const min = Math.floor(sec/60); if (min < 60) return min + '分钟前'; + const hour = Math.floor(min/60); if (hour < 24) return hour + '小时前'; + const day = Math.floor(hour/24); if (day < 30) return day + '天前'; + const month = Math.floor(day/30); if (month < 12) return month + '个月前'; + const year = Math.floor(month/12); return year + '年前'; +} +function durationSince(str) { + if (!str) return ''; + const d = new Date(str.replace(/-/g,'/')); + if (isNaN(d.getTime())) return ''; + let ms = Date.now() - d.getTime(); + if (ms < 0) ms = 0; + const days = Math.floor(ms / (24*3600*1000)); + ms -= days * 24*3600*1000; + const hours = Math.floor(ms / (3600*1000)); + ms -= hours * 3600*1000; + const mins = Math.floor(ms / (60*1000)); + const parts = []; + if (days > 0) parts.push(days + '天'); + if (hours > 0) parts.push(hours + '小时'); + if (days === 0 && mins > 0) parts.push(mins + '分钟'); + return parts.join('') || '刚刚'; +} + +function updateProjectReminder() { + try { + const box = document.getElementById('projectRemind'); if (!box || !CurrentProject) return; + const p = CurrentProject; + let msg = ''; + if (p.status === '异常') { + const base = p.updated_at || p.created_at || ''; + msg = `异常状态已持续:${durationSince(base)}。请尽快处理。`; + } else if (p.status === '待做') { + const base = p.created_at || ''; + msg = `项目创建至今已等待:${durationSince(base)}。建议尽快开始。`; + } else if (p.status === '进行') { + const base = p.created_at || p.updated_at || ''; + const howlong = durationSince(base); + const key = 'project_eta_' + p.id; + const eta = localStorage.getItem(key) || ''; + if (eta) { + const ed = new Date(eta + 'T00:00:00'); + const now = new Date(); + let diff = ed.getTime() - now.getTime(); + const daysLeft = Math.ceil(diff / (24*3600*1000)); + const tail = daysLeft >= 0 ? `剩余约 ${daysLeft} 天` : `已超期 ${Math.abs(daysLeft)} 天`; + msg = `进行中:已用时 ${howlong};计划完成:${eta}(${tail})。`; + } else { + msg = `进行中:已用时 ${howlong}。可设置“计划完成日期”以显示剩余天数。`; + } + } else if (p.status === '完成') { + const base = p.updated_at || p.created_at || ''; + msg = `已完成(${timeAgo(base)})。`; + } + // 原始提醒文案(用于 AI 的原始输入) + box.textContent = msg; + box.setAttribute('data-raw', msg); + // 尝试从后端获取已保存的AI润色文本(持久化在服务器JSON) + (async () => { + try { + const resp = await api('api.php?action=get_ai_reminder&id=' + encodeURIComponent(CurrentProjectId)); + if (resp && resp.ok && resp.text) { + box.textContent = resp.text; + } + } catch (e) {} + })(); + } catch (e) {} +} + +// ====== AI 自动润色提醒 ====== +async function aiEnhanceReminderOnce() { + try { + const box = document.getElementById('projectRemind'); + if (!box || !CurrentProjectId) return; + const raw = (box.getAttribute('data-raw') || box.textContent || '').trim(); + if (!raw) return; + // 进度提示:结合笔记进行润色 + box.textContent = 'AI正在结合笔记进行润色…'; + const lastKey = 'ai_last_ts_' + CurrentProjectId; + const resp = await api('api.php?action=ai_enrich_reminder', { + method: 'POST', headers: { 'Content-Type': 'application/json' }, + body: JSON.stringify({ raw: raw, project: { id: CurrentProjectId, name: CurrentProject?.name, status: CurrentProject?.status }, include_notes: true }) + }); + if (resp && resp.ok && resp.text) { + box.textContent = resp.text; + try { localStorage.setItem(lastKey, String(Date.now())); } catch (e) {} + } + } catch (e) { /* 静默失败 */ } +} + +// 已取消自动AI润色,改为手动点击按钮触发 +function firstLetter(name){ return (name || '记').trim().slice(0,1).toUpperCase(); } + +function renderNotes(notes) { + const list = document.getElementById('notesList'); + list.innerHTML = ''; + notes.forEach(n => { + // Git风格卡片容器 + const card = document.createElement('div'); card.className = 'note-git'; + const header = document.createElement('div'); header.className = 'note-git-header'; + const titleEl = document.createElement('span'); titleEl.className = 'note-git-title'; titleEl.textContent = '笔记'; + titleEl.title = '点击以展开/收起编辑'; + const timeEl = document.createElement('span'); timeEl.className = 'note-git-time'; timeEl.textContent = timeAgo(n.created_at || '') || (n.created_at || ''); + header.appendChild(titleEl); header.appendChild(timeEl); + // 预览(Git风格正文) + const preview = document.createElement('div'); preview.className = 'note-git-body'; + const ta = document.createElement('textarea'); ta.className = 'input'; ta.style.width = '100%'; ta.style.minHeight = '80px'; ta.value = n.content || ''; + preview.innerHTML = noteTextToHtml(ta.value || ''); + enhancePreview(preview); + // 编辑区域(默认展开) + const editWrap = document.createElement('div'); + editWrap.style.marginTop = '6px'; + editWrap.appendChild(ta); + editWrap.classList.add('hidden'); + + // 底部操作:左侧图标,右侧保存/删除/添加图片 + const footer = document.createElement('div'); footer.className = 'note-footer'; + const actionsRight = document.createElement('div'); actionsRight.className = 'note-actions-right'; + const save = document.createElement('button'); save.className = 'btn'; save.textContent = '保存修改'; save.onclick = () => updateNote(n.id, ta.value); + const del = document.createElement('button'); del.className = 'btn danger'; del.textContent = '删除'; del.onclick = () => deleteNote(n.id); + const addImgBtn = document.createElement('button'); addImgBtn.className = 'btn'; addImgBtn.textContent = '添加图片'; + const fileInput = document.createElement('input'); fileInput.type = 'file'; fileInput.accept = 'image/*'; fileInput.className = 'hidden'; + addImgBtn.onclick = () => fileInput.click(); + fileInput.onchange = async () => { + const f = fileInput.files?.[0]; if (!f) return; if (!isImageFile(f)) { alert('请选择图片文件'); return; } + const up = await uploadFile(f); + if (up && up.ok && up.url) { + insertAtCursor(ta, `![image](${up.url})`); + preview.innerHTML = noteTextToHtml(ta.value || ''); + enhancePreview(preview); + } else { + alert(up?.message || '上传失败'); + } + fileInput.value = ''; + }; + ta.addEventListener('input', () => { preview.innerHTML = noteTextToHtml(ta.value || ''); enhancePreview(preview); }); + + // 点击标题“笔记”展开/收起编辑;双击正文也可展开编辑 + const toggleEdit = () => { + const hidden = editWrap.classList.contains('hidden'); + if (hidden) { editWrap.classList.remove('hidden'); footer.classList.remove('hidden'); } + else { editWrap.classList.add('hidden'); footer.classList.add('hidden'); } + }; + titleEl.addEventListener('click', toggleEdit); + preview.addEventListener('dblclick', toggleEdit); + + actionsRight.appendChild(save); actionsRight.appendChild(del); actionsRight.appendChild(addImgBtn); actionsRight.appendChild(fileInput); + footer.appendChild(actionsRight); + // 初始隐藏底部按钮,跟随编辑区一起展开/收起 + footer.classList.add('hidden'); + + // 组装卡片:头部 -> 预览 -> 编辑(默认展开) -> 底部 + card.appendChild(header); + card.appendChild(preview); + card.appendChild(editWrap); + card.appendChild(footer); + list.appendChild(card); + }); +} + +async function applyProjectMeta() { + if (!CurrentProjectId) return; + const name = document.getElementById('renameProjectInput').value.trim(); + const status = document.getElementById('statusSelect').value; + const resp = await api('api.php?action=update_project', { + method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ id: CurrentProjectId, name, status }) + }); + const msg = document.getElementById('pageMsg'); + if (resp && resp.ok) { msg.textContent = '项目已保存'; await loadProject(); } else { msg.textContent = resp?.message || '保存失败'; } +} + +async function deleteProjectCurrent() { + if (!CurrentProjectId) return; if (!confirm('确认删除该项目吗?')) return; + const resp = await api('api.php?action=delete_project', { + method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ id: CurrentProjectId }) + }); + if (resp && resp.ok) { + // 删除项目的同时清理保存的AI润色、上次时间、计划日期 + try { + localStorage.removeItem('ai_last_ts_' + CurrentProjectId); + localStorage.removeItem('project_eta_' + CurrentProjectId); + } catch (e) {} + alert('已删除'); location.href = 'index.php'; + } else { alert(resp?.message || '删除失败'); } +} + +async function addNote() { + if (!CurrentProjectId) return; + const content = document.getElementById('newNoteInput').value.trim(); + if (!content) { alert('请输入笔记内容'); return; } + const resp = await api('api.php?action=add_note', { + method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ project_id: CurrentProjectId, content }) + }); + if (resp && resp.ok) { document.getElementById('newNoteInput').value=''; await loadProject(); } else { alert(resp?.message || '添加失败'); } +} + +async function updateNote(note_id, content) { + if (!CurrentProjectId) return; + const resp = await api('api.php?action=update_note', { + method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ project_id: CurrentProjectId, note_id, content }) + }); + if (resp && resp.ok) { await loadProject(); } else { alert(resp?.message || '保存失败'); } +} + +async function deleteNote(note_id) { + if (!CurrentProjectId) return; if (!confirm('确认删除该笔记吗?')) return; + const resp = await api('api.php?action=delete_note', { + method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ project_id: CurrentProjectId, note_id }) + }); + if (resp && resp.ok) { await loadProject(); } else { alert(resp?.message || '删除失败'); } +} + +async function exportProjectHtml() { + if (!CurrentProjectId) return; + const resp = await api('api.php?action=export_project_html&id='+encodeURIComponent(CurrentProjectId)); + if (resp && resp.ok && resp.url) { + window.open(resp.url, '_blank'); + } else { + alert(resp?.message || '导出失败'); + } +} + +async function cleanupUnusedUploads() { + const resp = await api('api.php?action=cleanup_unused_uploads'); + if (resp && resp.ok) { + const d = resp.cleanup?.deleted ?? 0; + alert(`清理完成:删除未引用文件 ${d} 个`); + await loadProject(); + } else { + alert(resp?.message || '清理失败'); + } +} + +document.addEventListener('DOMContentLoaded', () => { + // 退出登录按钮 + const logoutBtn = document.getElementById('logoutBtn'); + if (logoutBtn) logoutBtn.addEventListener('click', async () => { + try { await api('api.php?action=logout', { method: 'POST' }); } catch (e) {} + try { localStorage.removeItem('auth_ok'); } catch (e) {} + location.href = 'index.php'; + }); + // 绑定操作按钮 + document.getElementById('saveMetaBtn').addEventListener('click', applyProjectMeta); + document.getElementById('deleteProjectBtn').addEventListener('click', deleteProjectCurrent); + document.getElementById('exportHtmlBtn').addEventListener('click', exportProjectHtml); + document.getElementById('cleanupBtn').addEventListener('click', cleanupUnusedUploads); + document.getElementById('addNoteBtn').addEventListener('click', addNote); + // 已移除前端 AI Key 输入,改为后端文件配置 + // AI润色提示 + const aiBtn = document.getElementById('aiEnhanceBtn'); + if (aiBtn) { + aiBtn.addEventListener('click', async () => { + try { + const box = document.getElementById('projectRemind'); if (!box) return; + const raw = (box.getAttribute('data-raw') || box.textContent || ''); + if (!raw) { alert('当前无提醒内容'); return; } + aiBtn.disabled = true; aiBtn.textContent = 'AI润色中...'; + // 进度提示:结合笔记进行润色 + box.textContent = 'AI正在结合笔记进行润色…'; + const resp = await api('api.php?action=ai_enrich_reminder', { + method: 'POST', headers: { 'Content-Type': 'application/json' }, + body: JSON.stringify({ raw: raw, project: { id: CurrentProjectId, name: CurrentProject?.name, status: CurrentProject?.status }, include_notes: true }) + }); + if (resp && resp.ok && resp.text) { + box.textContent = resp.text; + try { localStorage.setItem('ai_last_ts_' + CurrentProjectId, String(Date.now())); } catch (e) {} + } + else { + const msg = resp?.message || 'AI润色失败'; + box.textContent = msg; + alert(msg); + } + } catch (e) { alert('AI调用失败'); } + finally { aiBtn.disabled = false; aiBtn.textContent = 'AI润色提示'; } + }); + } + // 手动润色:仅在点击“AI润色提示”时触发 + // 计划完成日期(本地存储,不影响后端数据) + const etaInput = document.getElementById('etaInput'); + if (etaInput) { + etaInput.addEventListener('change', () => { + if (!CurrentProjectId) return; + const key = 'project_eta_' + CurrentProjectId; + const v = etaInput.value || ''; + if (v) localStorage.setItem(key, v); else localStorage.removeItem(key); + updateProjectReminder(); + }); + } + // 新增笔记添加图片 + const addImgBtn = document.getElementById('newNoteAddImageBtn'); + const imgInput = document.getElementById('newNoteImageInput'); + const ta = document.getElementById('newNoteInput'); + if (addImgBtn && imgInput && ta) { + addImgBtn.addEventListener('click', () => imgInput.click()); + imgInput.addEventListener('change', async () => { + const f = imgInput.files?.[0]; if (!f) return; if (!isImageFile(f)) { alert('请选择图片文件'); return; } + const up = await uploadFile(f); + if (up && up.ok && up.url) { + insertAtCursor(ta, `![image](${up.url})`); + } else { + alert(up?.message || '上传失败'); + } + imgInput.value = ''; + }); + } + // 加载项目 + loadProject(); +}); diff --git a/data/ai_reminder.json b/data/ai_reminder.json new file mode 100644 index 0000000..9e26dfe --- /dev/null +++ b/data/ai_reminder.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/data/ark_api_key.txt b/data/ark_api_key.txt new file mode 100644 index 0000000..44021ba --- /dev/null +++ b/data/ark_api_key.txt @@ -0,0 +1 @@ +29db635c-fc90-4768-be88-f3f283f0b40f \ No newline at end of file diff --git a/data/projects.json b/data/projects.json new file mode 100644 index 0000000..d077235 --- /dev/null +++ b/data/projects.json @@ -0,0 +1,223 @@ +[ + { + "id": "69113e14a4a6d3.08228982", + "name": "202-20251023-001 华贝四通道", + "status": "完成", + "notes": [ + { + "id": "69113e38354b13.64838711", + "content": "电路图和程序已做完", + "created_at": "2025-11-10 02:22:00", + "updated_at": "2025-11-10 02:22:00" + }, + { + "id": "69114b28dc5e70.82623136", + "content": "物料异常504-0315-074变更为504-0315-066\n![image.png](data\/uploads\/up_20251110_032334_977265.png)替换为![image.png](data\/uploads\/up_20251110_032321_242501.png)", + "created_at": "2025-11-10 03:17:12", + "updated_at": "2025-11-11 15:45:41" + }, + { + "id": "6911588ec744b3.88497779", + "content": "开始装配", + "created_at": "2025-11-10 04:14:22", + "updated_at": "2025-11-10 04:14:22" + }, + { + "id": "6915274037db45.73502181", + "content": "预计今天调试", + "created_at": "2025-11-13 08:33:04", + "updated_at": "2025-11-13 08:33:04" + }, + { + "id": "691536b38f65c6.23540535", + "content": "点位偏移 Y16 Y17 换到Y60 Y61 因为主模块缺失两个点位", + "created_at": "2025-11-13 09:38:59", + "updated_at": "2025-11-13 09:38:59" + }, + { + "id": "69159aaa01a710.30202196", + "content": "调试阶段", + "created_at": "2025-11-13 16:45:30", + "updated_at": "2025-11-13 16:45:30" + } + ], + "created_at": "2025-11-10 02:21:24", + "updated_at": "2025-11-17 08:49:54" + }, + { + "id": "6911506e752fc7.70298044", + "name": "明通八方", + "status": "异常", + "notes": [ + { + "id": "6911508eec0de2.55005459", + "content": "出货第一台为标准机双电磁阀程序,第二台为双电磁阀但是下压气缸使用双头的,拍下急停先给仪器复位信号等待三秒在复位设备", + "created_at": "2025-11-10 03:40:14", + "updated_at": "2025-11-13 08:34:30" + }, + { + "id": "691151b4e058c7.57343764", + "content": "![image.png](data\/uploads\/up_20251110_034506_014266.png)", + "created_at": "2025-11-10 03:45:08", + "updated_at": "2025-11-10 03:45:15" + } + ], + "created_at": "2025-11-10 03:39:42", + "updated_at": "2025-11-10 03:39:44" + }, + { + "id": "6911521a348912.72415509", + "name": "标准机", + "status": "完成", + "notes": [ + { + "id": "69115232056f85.50079503", + "content": "修改测堵逻辑,延时增加0.8s", + "created_at": "2025-11-10 03:47:14", + "updated_at": "2025-11-10 03:47:16" + } + ], + "created_at": "2025-11-10 03:46:50", + "updated_at": "2025-11-10 03:47:22" + }, + { + "id": "6911571a3078f8.05270717", + "name": "202-20250312-012 欧荘", + "status": "完成", + "notes": [ + { + "id": "6911576946e9d5.87043878", + "content": "修改需求:点击屏幕可以启动治具", + "created_at": "2025-11-10 04:09:29", + "updated_at": "2025-11-10 04:10:03" + }, + { + "id": "691158acb74cc7.13001871", + "content": "已上门处理完", + "created_at": "2025-11-10 04:14:52", + "updated_at": "2025-11-10 04:14:52" + } + ], + "created_at": "2025-10-10 04:08:10", + "updated_at": "2025-10-10 04:10:17" + }, + { + "id": "691286595e5780.27379948", + "name": "耕得电子 202-20250728-001", + "status": "完成", + "notes": [ + { + "id": "69128ccde5f2a9.58594282", + "content": "复制 离线式双工位双仪器电缸版的程序", + "created_at": "2025-11-11 02:09:33", + "updated_at": "2025-11-11 02:09:33" + } + ], + "created_at": "2025-10-11 01:42:01", + "updated_at": "2025-10-11 01:42:04" + }, + { + "id": "691286678014a3.57619340", + "name": "华贝-202-20250911-004", + "status": "完成", + "notes": [ + { + "id": "69128ca78d7a25.88122586", + "content": "经过更新设备使用两套允许逻辑通过X37这个点进行切换:第一套默认,第二套测试完成后才堵测堵", + "created_at": "2025-11-11 02:08:55", + "updated_at": "2025-11-11 02:08:55" + } + ], + "created_at": "2025-10-11 01:42:15", + "updated_at": "2025-10-11 01:42:17" + }, + { + "id": "6912866f593012.04320815", + "name": "科伦特", + "status": "完成", + "notes": [ + { + "id": "69128ce3952f86.45359449", + "content": "按双按钮进行下压,启动仪器方式是人工手动按仪器进行启动\n测试完成是人工旋转复位按钮进行复位,仪器测试完成不自动复位", + "created_at": "2025-11-11 02:09:55", + "updated_at": "2025-11-11 02:09:55" + } + ], + "created_at": "2025-10-11 01:42:23", + "updated_at": "2025-10-11 01:42:41" + }, + { + "id": "6912867755fe73.35852449", + "name": "明美加继电器", + "status": "完成", + "notes": [ + { + "id": "69128c4e45c7e0.63898276", + "content": "客户增加需求,启动仪器的时候同时输出一个信号给对方的扫码枪扫码,经过沟通决定使用继电器来做信号转接,流程为:下压--测堵--启动仪器--吸合继电器--测试完成--断开继电器--测堵回--下压回", + "created_at": "2025-11-11 02:07:26", + "updated_at": "2025-11-11 02:07:26" + } + ], + "created_at": "2025-10-11 01:42:31", + "updated_at": "2025-10-11 01:42:40" + }, + { + "id": "6912867ca70651.00182168", + "name": "通力流量双工位", + "status": "完成", + "notes": [ + { + "id": "691286991418c8.32008067", + "content": "单工位启动的时候条件是:任意物料感应到位按下启动给信号让上位机扫码,扫码完成开始启动; \n双工位启动的时候条件是:两个物料感应到位按下启动给信号让上位机扫码,扫码完成开始启动", + "created_at": "2025-10-11 01:43:05", + "updated_at": "2025-10-11 01:43:15" + } + ], + "created_at": "2025-10-11 01:42:36", + "updated_at": "2025-10-11 01:42:38" + }, + { + "id": "6912ad95f08674.37367476", + "name": "老F型改造为新版F型", + "status": "待做", + "notes": [ + { + "id": "6912addd4e4f15.54079500", + "content": "PLC换成领控,加入EX14-A常开光电,加一个235通讯线", + "created_at": "2025-11-11 11:30:37", + "updated_at": "2025-11-11 11:30:37" + }, + { + "id": "6915275b5f6972.26468336", + "content": "购买物料中", + "created_at": "2025-11-13 08:33:31", + "updated_at": "2025-11-13 08:33:31" + } + ], + "created_at": "2025-11-11 11:29:25", + "updated_at": "2025-11-11 11:29:25" + }, + { + "id": "6916c378a20be5.14702126", + "name": "售后处理", + "status": "进行", + "notes": [ + { + "id": "6916c3bfd6a367.53168084", + "content": "考斯泰售后 测试记录不连续;比如1个小时内测了100个产品实际记录的只有30个,原因是排气时间不够充足导致触摸屏抓取不到", + "created_at": "2025-11-14 13:53:03", + "updated_at": "2025-11-14 13:53:03" + } + ], + "created_at": "2025-11-14 13:51:52", + "updated_at": "2025-11-14 13:51:54" + }, + { + "id": "691a7157217782.74284323", + "name": "F型双工位电缸版单仪器20251115", + "status": "完成", + "notes": [], + "created_at": "2025-11-17 08:50:31", + "updated_at": "2025-11-17 08:50:47" + } +] \ No newline at end of file diff --git a/data/uploads/up_20251110_032321_242501.png b/data/uploads/up_20251110_032321_242501.png new file mode 100644 index 0000000000000000000000000000000000000000..866ede2b62591d7f393986e9ea4163af6044752c GIT binary patch literal 52841 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%0A&(~(YS+@-UKcCzB*69(7wc%< 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 literal 0 HcmV?d00001 diff --git a/data/uploads/up_20251110_032334_977265.png b/data/uploads/up_20251110_032334_977265.png new file mode 100644 index 0000000000000000000000000000000000000000..0af33ad7f3a358aeb3414c4c2a6f2dba8328f27e GIT binary patch literal 54764 zcmagFbx>SQw>?ad;O-vW-91Qf3-0djF2RGl4ibX9ySqbhcbDKg*l+U4d%wE(t@{3$ znyQ&T-TR#G)4kW)YlSPyOCZAG!GVE+AxcS#DS?53+k-xpFyNqHJhp5m!N5L&Nr?%o zczig^3RB0I%6|0k^1g7pUqAEm+g+|{SzT>gUu{`kzuGwS7+mHC`?#CQVnCM2#>pcQ zAc=;?V;(OiPntmu2_EnnJeNSL#qn3yr8fg?91JIsnOnQt)7_17ab+dYrA$ayb(8iD zxjdxjBMcb$H_))4uV<1=|NA<&C2SNhNU#r|!9ZUI3A;_{~3S+%%)X8a4Q_)KO=BLaYFsu)x8YZ zl1mq44?6B&;rtoY2F?cV-vG~2!K#n_U<0XG{|fC-gi9Dp82@&)#Pq>n_7x3M!Q|g) z!K!JhY5wi1S|6M^OisT{)#`(OuOa->Fy&sgDeDt_!?~e!g(n4iBsakx9g;e2s9rB# zVwX};Km#02KlW!Mmhw$gi6dGHdQ`ZjGD$(5PVj`T70JRRx)7he8`Z|o)B(w~i7)Z? zP-ues6-r&4XFokl6sbK4rb~0XjRYlf6}uMBu5X*1G3Tl^AS={0^&LL|$S}Vz8cYBK z3@QxuI|%|8+{XO#NVlN=4z+s{QVnUy%VX$`ox#WAIy1vpG^h(Mnp#96P6{+Rf37o2q~2g&<){fQg_+xjr7Y zp^SVK;%V(9*p%BZZIHQ!=Gykt=ulhyfO^^OlW1m5jfe!`6dMt$(Ya;A@Xb zX%-&}#aw8L=UV}KuUL%n@<^%S+Hy!C$;W%Ph$(5ynW>2!RhVP0E0s9tdRS=;AIDxc z@|kbr5zY^6l#DW$V~!&om{NK045-ez);A>gi-!(*8n4o5H7JeYlB6uAq^czHN!q$v z3aS&ECnYH@SF16qkGt*UghGAs^jK>7$iu6`aINwYaEV+11k$=V4eY0!xjw zNw>$tSVXJY*#MdRmkpA5={&ezU960Xn$lQ(_tClR#pI{7C6yKtvScB?@X_K4GS~X} zuu!uU4=oMb`muu+9~n%SOMMzc*a|G-I4z~M>UKxoJ@Aj=DiMAdI_ZRdy-?6Lt->GM z|Js7LKyTGRVYOPGXF*&<>hc<@QSC1JDf(d|kO~V&7AbKi4d=qj^%rTUS%&y7JS1(% zxm%UB9WXzi3SEL*ws1r|Pp+w7+XE}{uP0QMBk;Q1!!*(O!sqk&Ya1fR=b7AG0w99I zu1Dzed&AY_*X`qg^gj8Lt~*NJ;9E{I5pL^@(_W zmd3}=eqlo+`2ffKfqUIOqG8B6SFnuudcx-tynyqQc7LJEa9xa%xx$Mi5A{3FL2aF= zsg!-8i8MFnwH%5=N>2 z9mC{fjOnuY0a9wH6oN7IpoyLSD8~Z@QTe;VH172DM4b+58$O~9aB?cw`#m}!33QrW zvY>dB$x)zfqfFkbVSEg-CdV@Ahtd~_kY*Z>kXU#0a+#w@U(%4Wi4qZr8p3IHo3Bn` z6Pj5!ok4G#W?B7g<0CkME{&k(@z7r%GGN+iQ>LOqt5MB7BQ&&q#g(V(-YHZ%7fElG z@~k>FesJX|ZEWm$Hpxj?%rqf)FLK!E^l4dULgP48F1b2oB_k2#csKO=>JCA!Oc#R* z(UfA}qHW1)K$nBFNeP?3jb5MTv7}GcKwXSZ*R;jldMuctA-O zcK`WFY#;Ggv3+rG1V&5XHfE1b`n&4l?ZPx{pFuT7p?ZJ+ka$Ym#}KF2AFLJtKZGtf zMG4TB`gja;Hc$xcnasYw3jOF~gV$M{$gp4ckrv)KGy5Y&(jBXcoW<+XA)bEg%-7(U zaNSs;2x-~!Otgw|WS6;}D3KH;c&*TqoervVk|~7rkD|6>oVNY}bd2~OWK5Ncio~{0 z%mro^X)`NosQ&!<@gGNAcC%Qq8ajvHqpas0Cupls7Dz$4J3~xoSe{sv?%+=3+m6R)Pn23u!fmaiY8q z?%8>ZTxDBI#%*n9C#qa9({o4?}ueHgaN55eazqkLPCcEM#Jxm_6?=7Tr3V$@}`QupsEyRX_Aw*qA4h;GEp*$N1bV zZu+|$79Dc|d3f|tr|$|mRW0>It=}?x>*La=JBMNwEm#{ZE%HqbF*ke)waCJNDJ8;8j zIGXjsg40T9_(VkMTtx}P>1<;*g)o+sR(jGT@|Hi{4Q$MOiR(Sp8kbc{ylBGaLOHPV ze+EpJrrk9jALxbh!nu_P`mQkB6Q$FWo62+SdFwk>rQ_|M4ux`=9pIGSFZCT4{@#?= zYct!876W{^ zc+;(Z%baD49GKP?eOJ{pBWmCU6#lSf4Z8!!nY^7~np<|c2l zk_&a9s??$Mu9@J{D!Cr$J)`#yk46wx%2_;w&Jwy1E-qvZ(b}F-am{`xD4L(!@Z|Ik zlpK#-cMP5>E^_yNV=mv1;-WAOZVPLyIaFId^8@F_+>N?0>Iha@!*daqGrWP(?lxnX z6~F!(6EG5?mt*8BvBDE-+E0aNF~C z%cPsLppE1 z*raa!?Quw*DXWfI$Z>k|-10nTy3W3?M62iGlmWTjYw{(j;3@ou(eJTPFGQzczMF}} z%iE}aQ*}K<3~Ol8gQ`ASwv;O`z^(pxMg5MX(T7T+NCcTmu^=0jPMCGiTioA&T7vNO62C@jl{I znwin_NqYcmG}nfBs>6PxlCOtgJqLS_sG*hG=M>~sMNq8m%Jb?J)VH>4PzPyE zaN^hX_;CD0G2@h`bC74%Zf~sRV#}&RfFYSfpA=X%WtUggB9<&42o=BmjgEYLAU7ro z8J4L0>+f#ik*32ia-AapxJv2Oq%(X1x8w2x9?4)y3cay%(bwkOm*&ATb zLRx&s4^Fk6XV_Jz$Lrokq6!!CjKY)YVx(t%nuM@pmX@X$DIa~1{zYvsDv%okg_$3u z{Y}MABNQv1m1#$lF};XuIy2Kwf!$C+l>~>cDqkfZGZ;8SLRjx_4i-Z1FyrAyr9}y1 z+RRXf+;xhu>vR6WqhJ9!N!{AEw8;@v@Pxf5;?%bc3=ahd2YYS6FX8e}*cj1QhV$U= zysM10p5H=WDlm~MT3BxVg8=H(x;){KYklB-O2WHPsFClY&94_Z z{#`ZXGhP074PQpLz+|}koMd?ZP2)d&-lC$sR0CMCS0yRcpsWDZc?=&zWGN3%jIEcI zN?ha+yVOb+$=B|L2uuA)5``s2)k@;OW1v;eTtW|ENaw0hBzO3v_MiIS^k14>NtdWy zsW+EL59?vMd#YB(;SUnZ%|D}~zeo|gef}3}zoS5ISScG&{s-!!c))}3Z4($U%!3j< z1oCgp{OAe7p7S`PRLe^I6z2Kn1qY=Jx~A zonSrBXI#*0fb!UFD-9^(h{Nmt2=np^TkqO1!d~0)0wav~=M)Bm@!8^h1)D@E2LE>u z1rQd$75nhNkp9IxIyyDUKW!A`{u^F@DampF{Pxc&bs_Y@K-oa~-HkS|tM;rcwWgNocbN z&vh!=#WQ_V)<*}vs8)-S?mB*wypqlf93ZvuuHh*o4KR_b5IHISS}{@(r|~A8clZND z5|lprBr9Dht4xa^^qgA3^Y#C z;1;#1kiN7txtjMnCY4t$fhrdla!;ComAP5x%BfDsim^_5;>+41&P-!T3yZC7f~~|2 z`Z4fUzxM-wb=1cBDn@^y-arbmPiq^kp^BZm0v+wf+aT2Y4EbS;Y^i1-Hz#r)+ z2D0$3rD#eSy^k0}EVL6(Le zjkRt+7{`VtCWa6jd_@ln9~ir}Fw1qxDRybCw1!Yvs0|q!l9%TBxT${iGSdf!8Gpsy zPdoQq*NpGeaBGp5z}Aq-8Es%pvP{EIIlN>JGhh(o2*N6 zrf>@?N+ht?Zg=iTi#Ol|LKv5Jws*@FQc} zcY-Qxt)~eKI_trRPjFVL7Y=Ra7Px*a_0lf!wFe?dg$y?(sEWHAn;G;p8+^5E-F4!t z;Z{>;Mov;t*#NUuD^d8tx6T6_FG=DnAUbP>J#cESNFD+l>wV2R8GXkHV#w>8!7g03 z%O>3IpX#l~%pwJ?z?`%W?m9=*(84*l*w2IMpEk{)1*0h@CSmp|i#+Pa@v$M4dRD}^ z6uP2k&5PeOn6P3u9vxo4m;?&NlPWUAqOj0xYfD4*T~qXU#QU2mV;ig1YNGDe1}uVJ zuWGsg_l6RYTqA^3iljzl#HyoJ0_|G09xdQ!Tq0~#yw*M}OuVnl!us2GuN6+}N3VBB zKQ}OG{B31I3+?ykwo?Mn@PgHCs*(9J-sWwQYk_Sx5Uh{o?kP>WNB&%nW z6V=?}rQ(+mWLavg9Ab)g7*u!!A|o$l*W4^jQdJPP(|7O8r@zY;D2+J8KjTsnzu)z1 z;((XL4s2g2wl%5w4?&_~RkRhXDJFbE#y>4nJ3#7;501hhOxc<2`5G`1BRxImBM~f+ z!rx5IzP9hm{<*DAhfreU{W3i?@^;Fn3Z&IMYh)TDN4m8RK@WXR)E|J6)XKHe|3le#YQpwbv?V5eo|sOn&@!%7IPXi*VIyA<_BN|h{s`yNhBrh z>xIbsl{UAOkD^c%45a)RR<&PM%X{KDCDN<3tIWm>>B7p0E_#$py*I<~MPy?Xa;@jQ z77RJ3n40}#A`Tud(Rs`%t|*#}2D=dj$z`~@jglEJ<=}-T24$gJRPKCnJ%~nHIWf}l z(TR)gOUDo1?n%BAiUlem)p>v4*SrF929wqVAA1G~zGmWCW%s@h=s7bLK zMSQ`!+Kr?K22RW!(6ppNtCvoRjxQx z`y?qfh=J>PydUrI8syyTj`J%uw|0)*FA{z?jJXqW4~2;>9P&4`ygp8og)ty*Ub3@0 zntU-=M&2A+%v@JIzejSz+T8T=7#qOd-}SfvaRbJorE7cQbE=l8(8+N0yp4o3>*+#|9E5Mw1P+F5!$IX+j9n_RCfhB^Y~JnQ zJj_k=(C)X&*eoM>e-R@3VABe_kVfKx2y+(xho5Ag$uu#&pT8I%AMfOUTpAoz6Gl-&|y>_cO1z`Vb+sQ-HU{(M_&%9)D>f*HXgix_3)CvmOT7G& zsjAD4EEn8MTv?vO8uGwjkAE;y}f&a zH610VaUOMkv!u}G&^Bg}mPW2nER*`7xU>;bCck}jl!c$Y-`eO1ncZh{Qu_uP{A{Y! zkdNNnyebpdD(fwNNKI4Oyk?euYdg1GLosi^Uyd&rru_WhdZp-!lB9@4Lze29a?zBF`{9QKZgvbCw1}clMxZR zQhKZjHTC>hjv^NJq0T)Dv*c9l-lOck6DCMY$aG8wV>ZN7lZo0wLLZ(9c8ZxCRj3*9d%Lu%DQr6Il`+k3B!VgzJn+D1FbR^#^H#t zznJZT(*~$TkBYe8EYQPI?_T3_DA~V_Cx4_(*W4zjY?L=v21|tHKC{Ay4SAh9%mKSn zIM{@AiHG7r1#Vwc0+$jVJZ{>rO4e^OM72OQNp+_{&zwd;S-`@wF@N&oi_Zjm^q?WD zr%sG);mqikz^Y2Y9;@`3UB>%%l>7SRpDZ2kS8UgyG>-26rKeQ5WmS^*m=#bIt>Y&>;jR9B+ z(vSp_q+g7@HZ7Dn5{0sU`wk6?6y=oZ1*AD@l+T8P)`fzGlqh_1+OGFRi^&=aB6+T3 zE4mE?oOSW|0IreTOog%e`~7^A{`>Lmh&_|t$2Wo-DLKpREn%e)tc4@n(esn?q0Ct8 zOe4k`sIy!z5m-iAe?4;CB`aksA$_zy+h6 zqtob5JR9k8Z!aN#7cWoT@H5kTuEfiSJp7{6IEb3~{yWRb8uGsHp zc;)OdSsOl4-eooh9&(VedFuq(PdnP;!Lw(T#cbRCW-FzPFWO|O4DOU^&s%h()MQB; zE<*5tYR<{1{$d2c5G&B3rK5xM$;DT z=w<3^ibS-ra{1`aU$G_nc`N!)nMi{!ailQg=SACEo5OY0`_*$FbQizVWbew#;KJa} zTzu8L!x45^r=X#w>3&9pbmNoR3DK|H&Z& z0*bQzlPRdWbYxT_LZ?;8f%&Yl+3I(`D)ch-{&sgnqfJLQ=B!U#>ku)xg`oROvdN)# z>}%7H?nl4$8aYFTazBzomSIsBUR|*#DI2`KeW$|!F3Jq%HN3r-#zsrEKnayId4Z0_ z^Hx5g>z*y`p@T(Ruf=nu8HTgnP_L6%+9P6ZOcLLyvEBT@cHsE}mXm}wA|>18=3v=R z8CpycGTW!)?GH7Udq`+A0AAh^ql#*1@oSwa=%ji1D#`k4hmtC;n^2i;4i;^6)jZEB?wsd))sbeVlG|kJ~M;N z1Z}JaW>O)G{4!1km}BEjm>Exi&6etwh-<_UW@_{G&##lT=D|t_KJ=}*(UbG~B2GMQ z(6;9xbad$^;pywXma&X{EgQ~@IeEJFoeAkDrR`hj7Obnxw{0}TDG_NnHms#CKD%fI z?&c_Hgj`|KO{*%rbt|}Lj!&U7PHuMA5|+RQTTUy{$tSnziSVIB<2Zd zT2UcIMcT5NYHJp7jD@*#c5U{4iB)6tBZ^6#)X;jFUZG(prDosRE}+Y039Vf35GSD_ zM-bPy6ER%;#p)lvF_ZF6PfuOrq{Kd>tD}j7o)Mp@$T_Y^r-mSi7KoyaRu>wH>X&y7Ww&0~_4dy}2MtBtvm~hW(R~p=qn7nNXH2_T8 zSRa&Y5+^A@y*VwZAYp7ZpX;+{FfM~6jj65T6nGhN zeds1NLdHfr>XTDNAc8XY=fm0L__BD3J&0eM%|H3`8cPKT2vn)ecS|-oL}6uhVyjNZ zTn>UqOXK3w(H0dW1trXlCEs*(Q%+vlaZ>T{LlhK9gQ0%bB}fm2R7`q_@@2(JN%>S8D(|oLgRvlow_SC4@}k5>VRViZvTp2&K@0M*99bG! zU2VN&VyImYT5#wM8RNOv(h#dTlDjCm8LG+t*sLr5^@;qa`B$#rX#!jeI?;2ekt9j= zzcgH=32Ug0Bmi!62>FxF$3faD;Yh z%)DnvJ6~hRrmpjPbzjlY$t3Hvt?#7a;AKP^2#MBX2a)582FUIhWXAY$-C^`Y9UDR1 zH2s3P`Me5V#_(Wz-z6OdeQq>E&HWswFGJA0?NX6tb6}hyvdurZM=RtD z8Y~a;K8pVGDks;H!l+Zt*a@agu$BgGMh<{Gb zky-VRGoqHYW+Lsj^}?|Ro?}=AQabVZYNNWM#U*0UJJ`(2@+%=Z6p1|@f~>H1wNE}+ zg==Q1m03MmcF-c6^ABs1PdCk_N2q*4|I6jH}N@c7Dxd&tGEBktD;E{86xs3m*w zm)d^7ef~_TS@BD9U)Y=|RVlk^mt}cL!c#OZ7hYFzJ+x zOW|_=boWY};ovDNFeRGF&lnFlwU`&D#OhRJs8JT$kQpCg@D5fbksB^hK(Zl0 ztjGGZLDk;{i3ox~nYgTIXUxRb;3&s?Ea2njW6q}Dmqo@DiARI@YBCU$&)f@ie}8-4 zBoOIM^1FHJdIKy6DII7yYZdQ~C?Mesa&>V#>_rfFnsq>xC^|ifP}&x^4qh-p``=BO zzc@KVa}Fu~&HP$(;Blz0oVnjU68pa{t8eQ1rm)apQ9}~6xa2}>hk81}3UySsldBAy z@J+nWS_H#6HN!Wu=Gh~I))RT@K>KjBj?Qbd-N~LE=Q>_U{m(T0tWl@WO~{k@Kv=Hx zu2yWT^r&Sl@9pym<;^T1$GMkhp&TCHm);t(p%@|_-yOcOx*>)bVjkd~`cS9PMQY~E z)Y5!m!gj#P*4SYM(Ozt{!>4GA>MC&GRn|tePdn`ibb8c#OrK!zs*pOJ`g(zmN>XIV zY9&wQUQIvRGgL&pgbUxloc$^l`Cx5m;u~rXFfO2?mnYwMtniT z8-BP9hr6OwlADY-F>7EuAf+wX;_j4FOOu0XW+)&<&iQ(8sd5kDX74(Rb)%dFw@qFN?W3nT3v3Tf)ZR8+S0__^PtN z76zzj+eSnI4*1&gRS_mC%PqGSY14zJ3A}rt^)*>Ks_g+Mqx2`G^3L8acfIKE-@5qw z18`X>)uE2wpdjzX|Edb=A;Pwq8H4f~VK%X3GqbLz7xnj7{jRp{y=!g%hcV8t9|7|D z8f^!QZZRx8<293OHc9E)(UXPY)7VCU+xRBA8oTC9IY10Hze^n}-^+eaP#5sfAK3N& zkf`tb_LK_P?kIYJj~INcR-+9Wgct1)U|b2IkjQVuc-kCIv+!_3*TuuZ)Cl#o$W~18 zxlu6WnV66{b!X25((RQ69jiI2+D1p(#~$mtE9hR~NMMW9ssk9y1#_sK{nCV3o7V!a2!bPv0c+FIUa8D+m7oPmWo#t_6%P{yUakh68pP{LS43j8sV*4b!%JG!>5 zYa4oKt}n2;L1Y-6b1+48W5z_pvk$ist%H{6SuW8B$q0diWkzRt%GFSH%r+i^-`)N8 zun6(98h*sJe@^;VP6%T=ctyG`q*~&x_!tus0@b$?7C8n!I$oQ=lrn1AqBOCm?A%ec z8kU+k;ZJZ`=s=4zW(h)$`Z&LmkjfcBL`Jp&A>1+df}F@t&?^#aaGr5 zcCr65JTyT!w>~g-7}049S0#^(fsVGOC|F6IBeD4MGvO3Ej^mqNnE^)~&(Pxf^0CxU z$F5>KiYycTDH9Vp((v0S1M9{t@1C?hPhEKta#jg9k2?W;;csrDY0 z>P*T8I7#d6U1^my26LPt4a^;U5cqyQqC#ENku)wm1pSosb~4>zU9>Y z97hg5hThIXSFMEotRQ=7_!AQ}NcoalX6+(E>TR`(Br4ZJ{W( zy_5u#&f4agg7`Tp&cG%R=jiP0Z5VWnp6#LsjQwQgv8GL4V3xQK2m&Og;*X99!KkYa zXy{%%eyLrtQm&A07}We}mIu+1Nt~;g9ji$6pgX&|dIa7BpMPbm)KhWFh1)cDx4$+s zYfas*#L2djdE|NbTy^mQU?-Hjh5mW#H|X3{Hc2?*uYr2ri*3yI>mkWS&3%(k)z$s| z+G+wm0fhWh{hs1v$jBtBLX3_?jJ|5NA;vh=o?7venSt426xuwad_hSS;#X`Xw$jr%tI2@u!HV_{a^@RJ)lH6?Or z{}3a#IxX`!H>142`%~g0B?Cg2T6b-DWuX!H2SQxz)03FrDc|E`bovV|kt06xmR*HF zN%|-wIr`=n>-cyfF$Tp2Ob@8usfL=E6a+6+h4EP$YS_=_%Ws@qBJtP*y-DPs2pgD4#5lXPlLBR*M*Az(rgk_LYa+(;9U$_FHCQlJr&I&zePZ zE@IA9x#jb%Q#|^V`wbBoiDKi67h2jeC18bPveK$*TAt#F5_^<~7@E8mHj;{n<0%>V z{z{jkRGNNqv6tTu?t}wYxnSp#WYdx5F;~SiYJS-nmSy~?+jF@@YP2bikfBDaKIxY1 zB5zaqvmn4VlJO3~R`XOkRTYs)JBVJ9VzovI#C(AE!L07K<$9W@jX?xlknU6B{W}31 zdBDkzFPkIKakhs1bah(_7ph;}NLbwA60wd-wYAZ*dFpGbiSH@f^1iSv&`g1;Y=evc zXaulY2!8P5@WD@mCmtImHAh=T!MYT|J8gL=E44S2I^Tv@A~z8GBoh9H?D{#{-oc3^ zdLu;Ged1J2fJ2W|bu)*#S9ITSB-2HLGAb$Sn*L~{w@(7E;dCJ%t!VJcD}x&i_(h0 z!+K>-tvFzBdqUsON>-cvoLGEX>Y2aAPz}uVH~`$LX#3w)GB?QZPO}`(3uSdIv0u0j ziyGMj=9Yi8w!c+ig(f?*vFXxqbhU15DhJZ*jE@fj^yXnpZtw@2Kw%kv%M7x z04*$DE&gL@h|V@#0ShYep$kQ9&vfcZQE)?0@y2ssiT*IjNG~lW@p*il#-rYgYlgpA z)Q|DMB4|(VZdZZVlxc{G$gQYza;t?*uSTyFS;-aj$K z3fq0>XsYEoNZVNZ?9cS(bRuXC=?48*C0&604^yX7?Oy!echo>Y)L@l?o4Wa{Ra(!1LF4V6_& zMKZT~2?3Th3u3{_pu#1cv#q{8@WqsUy$QmX0km*sHo?BY&~3JQok*0Zh6J|Bo*tcC z;21i&lG$$YK>QOHj}Nm2X9FQfK?lG&G~)l5LYBxt<1yR)Z(GLsRSgvRKdz9+Z~s-JL428qRgCwK z8ieS-Hu3hc`7rX&-3uCkcNcaS{_lH-ekq13{l{NYE%9HPB>yl&Oeh=J;n2A8s%ksC z3jg?@xFkTrkXCgLIP>p&gY4tn^m?nOjPFO-(9}ZziONTXQy0f}Vqnl%3CLrl(E)oD z0@9=A8wY+Bw4=^3xVVI4CC9V^Wfl)&{$FqjQ#wE2j^xmv7Dq%Ag@!O+tJTg4EUDIW z&@rGe{L|-<beP-tWE61hWoB2K4h4>8TVf^Xr8+-f9zFhq@hsbHis5ILP40Rcr@^#Z;HD|6 z1|!D2U78=8{!=mYK7B{ zMeA*zyH!+7ODjuhHfm}q*qwrVX>+{dY~P_#P2@i7_%S+a(8a@yaIe1C@_X;(C;JV_ za5fITIUP01Ksw?`F$FdJw)`XFHxa9>GO4Z>xVvhQh_Mq6!5=vFme)tMX~@v2O#9t0 zgb3fu?|o0sJiSyX{at`x4F#l-jA8GhWm$J@6O3L3Ee$>a8D9$_4d| zU?~y7x2E!*N!B9Ltd1((2j5d3=POe-U*1x?fG_ZDb$wyTzE8_kU5|73hBmv+Bf@g$ z7q{mKfi-ga&Ib~wGg-Q|;ugkbHjUppXt!_XX&V?PzYA$Ds9_P!4Q9{#emSL>+Y7_# zVjzJGXgnsWVvGCBJQaWp0L@uxpeZSdb9$eNllb?M7=?0$Oofvi4FhH#S!rXV_Of~5 z$j1yzyy!lY>t=#<*@glrOHxjBfV3t=5Dj+M+ll`BW>MGMS>06E<80Hr8;^fG&wRsN@ulS}n3K98+gh#X(H%h&_+Dsn21*P-pr_nQ`LzZN+H zN@K&HLdP$#hs{4$XhKGWL1m=nM+fi9EMFzB@d7^NaRrSG?H@kv_?kW(GsxpP^mLIm z0#1`J%@o)3S2sgl0?u=fztf@Ry9%8r#7?_)8%!R zrcEA(twrrDQ+K6zWZqN3XA!r7NzZoi1&;|LHo-YX714JMr-$u3%93QW{3G~Qoej3F zEAy&H?rXsFx}U&^n3%>C8xgO|jv?52kp2iq?N6z~AHPMk3l%<(`N~egiT9*6PT_mV zSE=x~?n3(?h@IenokP1Mpgmujy!S)qZ%^zds&mv_ze*(c*!SttfvLW$8C;o2kk~Rr z95O_lzukp`U0f)$Bo=c8M9HQ&&I)H%P-vOY;+2Q_-mxmom)6mMDD?%H$1K5z@+zI? z>tP{IQdoe_{9<}6yhysXkMkC?{`>F6_m?JS0#7@E&XIhnR!82Zm8AKVl+))4+b)}k zZv}yd6RZ_g%qLe3-wt>pBwK1y-v&|)RdDT{%xXK##9=Bd8}lLU|8e^Xa)Nu;l=xLU z8#s6x#iaoNC|?^s>10<9q3>KsY{xHrT1)tejO0a=EK>-*f(Jk#k?H?0#4k!Yz1$o- z$1bQOJ(v-3o%uQPhJ_cvY5ELw9f8cacLj`^ULU)SGXU(no=!n}4X;NSOn_zzCg#@d zR$)cz?(VPrBx^1^fyhaEY6>A@12{LnNbSGoC*5PCW3NSwcK#08`R{t|btts@BRHdV zcuoIouhqJ`whf$hfzfvXQPYS8mD2U+6n8q}3yWZsRD=q(SiA#oOyc7f*07&FjI9|0`D=bisJdLA~No zVh+J$uk6D`B!ooe<2G#8L^4s>`)ybdwBXZxRlMZSD!*s#$iz)T7X+v=A`@uaO-mxK|OMEXFVU2MI%#a+sB7@At=u@4YE{CbFp`d%w~%uZv}~E4wzJk<`Qd8 zm8}GLGzA4t{X3-|;NA^1l($xrOC0#tV+zO_B&F9a_IwDo-Ca_JvQJ6ez z$%S-ag`=y{Icmf(#`VA~Z+y+lg;Or76J<4jmZ*+q0WmeGN-ISe4anNWKibQO5Kf)} z@*A#+Az7eSORKU(I*8}Fcvb_h|T7QioP2bN%79_X0EcThbzdm7i zP1CKMRi`iaK=^w;l6SaDmn{9Rw{4(7o7Il+v$-p_unC6fsSQ88le%9(I*On79Du7n zw!`T;{3mPBhB=!reBz+6)jeJw@skj^44LNurDUip41!yg-dBoG8p74ir9Fj-B@3PX z=QNz&%;TL>Ma$^C=W zbA29BhL3LcyM~YrTVga;=+!sd5$q_PDt*0+b+ntH-k`7{Gl7@VdQk9aj z3UKaMU&5Aw^Dt00Jgy$!bhM<1h)zwbIC2roxT>KtX@%HgGY6wXKFKb+Et!5woFeeq z(6`3pB~PX+(WO}C85WVm<>?P)h(DTOP{!%O1>mIETumb}Hn!e9B90dgAXn6Fx2Kff zoaIX~@#W*E$@{h>Nk0sO)Mw7n?dFM+7*nMgFRk|R@}bjFfvzkA zkWE}7-L{*plZLg28x*}f9~3SzbJ!s!jNE@Vk{bXr#Y;yV@Cs(7xo;T=4Yd-(U3r}?1oFF#p$eSfh0j&OcMaJ3<&3W-CH z6R>No{iNMZbIta=C}fYz^;%Xph41aPIZ(*=fQi3f%`Ivx3cV;RigG)xFD|aJF^Wk3 zx8)Cl{F0H=mn5-lK&QZPTfpQ0V52)wEU3K0ay^S^yvG>fN(CW2>`K4usu+h*0L28y z8CIqVY5woCo9~CYqG4~FB}4HvK@ql`71wOuQOjtvr|B{8&&w(WI*H+*B%h@7KKyII zer*2ZsiVcD*TDgmu|u@6Lc)^i=xzml4{iBO14zDh{|6e47&6eOR?sVODLA;^$YCFH z76!njB^6)}27YT|W&0eqr(_a`CN=&u0f@t&UAavMYAc5V$cW!RYojbYEC34O^`#dv z&@HkEm;9g-@2zHw;-C1rzEim@csdAyCfh;vDtYYd#Lq+;~y*gQuP0}o_7~M zQ#7wS!~N%Y`E%L-^|t%*E9m|B7xA>Ag0LSa)U%1E71%#ofIn%&A0hR<3@8j5kb7Z! zf)$bj9CCvTT#iAmtwFu}koYgGhnOEaTs(|ykBOs52D$?Dj0|R&x%tm`9X}Qy+d&HY z00QBCo1BpaL5Miu72V13*P^rbKu`J&?aA4cI zX;Ge5U8zkPh9?*SfdoQXG0;BSpd?uuRN(HHT;0l4gtwNx2T6_xrhBB|Y&DIppYAhz zsJ?X%fhNu+2MuW8_Kss)>RIxQ+n5YK(j{J{01GB9XdNQUb`QzKTX3y!Yec`;l}dva zYnBSg%Nth(l)x!h^%$EF$qi055B1KTO_xnqYKp{LxW+OMg^ttp;td--_yl#U)Rju& z$aFpb>(@A%0(=?QYrO!S2~$fPrzi#fsQ9@B;OFcYB@k$5-F)`Z{G?bG7gQO(-~LBv zd1un!N_m^;tk7Er7kQUF^D5N4S6OPHF@_m&^3#6J_vI))D0WwX%UwG*0TtHWkRKTx z{cH=M1nN|HCRV+xNVGDyH9wC#<=XKZ5JG3d59Xe zghZ&Tja)>oQUz>EaR-}?Z;9K-GUJB*d>bj)4G?^11KC1sg8~4Zl+h8l&qH=Iw|6|ey;qGlNl_-Vx!rH4igaJD zSEv>~g_~HaE~R0K4l~;1Xc6Y%OV>293OT=xJBm)WDrsiqI7DAlDK+W#OSYvXy(}G< z3Yy=bW5@CoaxF{=U#lyXm^2UXx`;W3RjP;!b)`DBBnV0{MYLNwFN>tU`xcE^60!%V zTq)K4MiJ+;6U_LA{2`!=7{rfUmd&9*KH8L;U7JS=v^!#ovSXF+Ou8=&WwvB3FUT5J zL)kQ@O?{=F`@YA$J8_i%Im!6#X#ASBjW`tp5BRCvND-cH;bH~F+=TsoBb{wihkXen z@JG!Figin&he8q%MuBmD4ovF`xHou1*VB9m}SwsqsQtnHBHg7?~OdW z6KO{hT;sMmUQd4BLbLsa=$J$-N58sx;gmQ(01&0ftEFE>y3O6qpFQ^6Vq(TzIBk*n zQ1$dU_$y>M1^Cp7Os)_%#fbhNabFn~SF>#!B)Ge4&>%q?f&>!W8h3Y>;10pvEi|5B zjk~+MySux4UgtaKo;&V%_y7IdqxY`btE$$nnsctXr%rn{GYJRlT_q)^|rF&CD|bmG4$By)van9C$n@_jdkd^4^UuD&do@RK!3C(G-Uj=gWkTjYHRyi^>iB6DiLf?dFD|s0_8ALe><>9p~!(*jOfR zL1k%J!Em7qf$y?*4ADM#gZ*}~nIADJ$Neju)L(??Pv3$l(i%x3F-_OE5C_=m&FJ~n&qqdojzQC@`<>FOKiTsEY z|Esi1`nk|a$61+i%@CKd+Ic`ac0;}W z3P1E>R1J;tKziQM>UBt}%Tzfa`v#1`Iccy{cBv*p9xWnP92}u0= z+%vFgz4F?*nJ_a|VR=b?nYXiWSlYGy=``!l@qz0f6U;F3OszRw8JLJb;Y!^zTNi+AKEKC^c_?iU)78)m2`rQ^2*r2lL|W5e9Ouc+UbO6SDdBM zsO2%-cH?+n&dNkno1fxoeuzDHhN9!5g|$D77{G0evnW_)2BN6dH4s3 z-YwCiiG?oHmT}X!WtJP2Cj_?H&SL${_P{_KNmcx2s|4*YuMqCk7A3gB(4p_Ns_AGzu-~&p&e&Q;LoqV>`r^X44@BH}|tx*VR z2vhWdA?itSIzJ>2_d^Z58?Y7i6M7J+0FW}{8Ay?~4g?LA&9rrKTlK@=814W~W!XKIHTg62m zgbPH93l8iBmxRaE;p(?znBE6ZY_|j;u4R~f32_5EO3Y-YEB4ljtd6t}xycFv7j}e* zWsv4DE|S%68x~Ew7{yBd=hw$#Gi$@*Agbs=W0w96s-4gvo>`pv81X=HeB@| zOC=r>$~5Mk@04seih19D#d7rl2~WT)60Gg=CuiFb{C1gT_!J-JVW*X<;+7U>Y@=Ul z1IR^6w=2q525&>fmTuNA==)N>PX0K3s1%H_5Y-{u-(WliD?W@XrTHs^BW#sg>$fs& z&Hm~?0`Ra(ph`vZY?!NffvIVX1a5f}2+|+pl!wR@_NFkLO*N^YL^jong*OJ?HVgkI z3nfc6$%gjUR$<*^3LRP>h32tL!&Kar5gMawBN|^_&{o{ z$=iD@cZnt!U3m1n+tTR0rHE3=Tr75Fa}C5dKfXrsJBXDs!a3&gJ_u;ck zXja=jx>YNaXWRP-+mokU8=|c8wC28=`60Z8hx0py5+{8wSyA$4U5DG7DO{RS{ zd{&CsVC8x^u&C6JLU*(CXU&aBTPjl@MX@-88uZaC3pYvSmQ}LQk=o5OCH?3{!rI$} zKNY4t%wPwqkh9fF6}%hP`(XrT8B(G~S7N*3nXEgi@{Kjh$b&V#qT#uuq&TG7Q--zT z@aeXq8}P2pgB8NY_*<#SLE?}5eZN4AcWJ=JW+(hZmKA!sPL}c9L9c$;eZqS@%foz3jyY&kT4^lsdLCE?HO@TIzU2=(uVLXhcj{ zssIV-Knw~8JgP7hA*>;dsDQVidwMFUy2{FaE|x3-0bp@c(~(kpnVsuwxzFj%L?@A{ zdgkY^Srd_8tK7Tx=wtY+e6}W(G3WP!wJOQjqKGXSlZI%uCUq}zIjxTmT5$YlmUhD& zXH7K1E-y_=y(Eg<5vT2*M1O53U|X+k1%s~CQp~%Bymta z-6UKw=_Z;>DFoZD(v7fkDI8D!PX2ZT<@H^gtFA5NR*JfHiR)^F4quegULxhBua1(p zo@0oOu@he9m(2<-7A`J{f1fJ)gc>d1aJ;4(G4^)NF;Fz2c;>UTn~IX2C@#wvDlBR3 zpC9@>XqA;f$)d4KPU%@o0ItStW%|rf?1b0tU)0#ggC8tEf~&>3Rnfs&+tVLy%16S{ zFN6UXlwp#`#G~&{-a(%e`;BHq<_vqR4tU z!{?tM6b}5NZf&cj0pt?V0%ez|3U{n1)Jpf4r^4mTi&0%hLJ1i~5!kL<7a3H&XWJr8 z-SiK8W}@#!MRGuJ;-B+nc}EU&me`dIg^2Lx+iU3K%9-z+xXfYh3HbF44TW3IvK&Jt zBfqASj$4rf#*vl`4CrE(?xD2)6unbK ztrJ@JbY|}M?lnbbx+oU>AvEdH$y4;NK`2H`S~JSqK_3!_X&8ZvI2d+ibX#%a`Z#s& z5@_GXKg8w=%yO{2pXR?|XZ@g)pyCo+^xQ}91lkJ|FV0T|xhv7aUgoqB>_;jZFGtQT zadiPkB;2a8U(;_@Yq&hRq0P*jh)gpkCj|s~R&{g}35a3|hy$3Yrc#n?f>sPm_OA0y zTSpvclt*(htEXSTtjfb8Nsr8SDpd3!Cl*zz2!}>S7349i!3sh_w{!V1XN;8Vy!(#d zLI6JdY*0Xc3D^5kfH(hCEShZ z(V^LV^V8hNFBOmML++~xdI(HW=%vae!eXwkP3qF|hVBki!fpW$3sOjore_s?dwzZ} z!NE}oUXl>aqjxp?SA_gF3d$Gh+7A?YKR>iWxgj@{ey$a@>Mn-l~Vi{DHLz(HF! zr#)p~$zP|Zi9TGyaNmvqEGct9s(L4Lul(?eNrN0++k-mEROO;QS%t|*#I-hc2ht#! zF1r3)NYaHvEiZZ^?$d_OQ#^FDI%*BANxxxa4^x*KKx$7>T;^|QOq81rvBVhgf0{GJ zN|Ncw`ydL>m%U8OiND14aaH~7W#_vqpQsX-p|lOr%G?*)=4>-iad39OkU1VPNi3Gy z3J`=M-?9%W`WPJHUh^ z)XM$%Q!AK%jw9Q`!O7XczNG5&>h+n9)_e_!_o?nO@G!FV^iPUU%L)QfmiE zVJrK^o?6<^Y2rKfkHf6i8Q;(*MWSGBpJh~k&PzoI4BA|_F!ji8G&5#bmAeCcj+O^> zPHW$X5g4i!@K;q&raN4(tk&@Q{rLSwdW49mi$`7WOEIFF(^)4>paw;#P1V#$Bunit z@0N4(VN)CL5kNtBTVd2)fg*UW$0qJ<5x20+efr7rp2v%f;mtwb_P2mXKs0(OoZpCe zzr2{L8lw=IX^&u)_rWjbou~s|!;4#Zu606c77fxrZ(?pvw?Dw3EjA4mT*><~y2Q~D znUR@I#TIRylP-H6+4-@~sv`vK@rbpGnQ&QpCh8i?Jr5vvr8>Vhp~vnWpu4BV;(bs8 zlS9L3l;hHbY(7+xjN`lKA03|G^sVTOY>&=GDZj<}yocsfm@X8fY$ZVzHqE{ghuxwh z^2^;a@PQH_JCJIsAk0xxin{ArtFHQN@*UW8LK=92jqo(}(rS0qELvRMUqbRLR2YW8 z(%4zQjpt>{SvbbxvvkVT6ycsuea8+P4;5T3Bb(4Riiz_GBZ1@*As(`-X>%~r3E8Y{ z4fj4J^(kuVG0b_YB4p^K7>rClz53ZHbT3fJVPD8G;jpW@YclUU&KoO^8Y->c$&|SZ zOt=-Yr}DGNwN-M>xFODRrC+B-iR<^IM(=-o~ZbJeNoOs?ko17N*Lr} zYP&o1>)#9=^~VviG?!Kdx$=RnZKBGViDPD3IA4tf$eK%) zB}(8)vZ=b-5>X>t;v5egO3M!RK4v5?75=945!m{vAf3&T%74e`DY=6ENQ?r$sSy^ zDN+feOn{SZa&&BTwGGV!Z)9G+2_uGW;qg z$|2_0mHP~VSvNgZoN^jmbByKbDRyd)Ww{(8GIAX^FQ)~Z5H-Z`#rY#2rFS6(dzciZ zf_TAu=r|(Hw9~v?9+OB1f|B=r%H;-MiUsIfES_zQ4&-{U*3=zczJApOzR$1#JqR!E zm!c^~XnV)*jwZ;wj{I^D`Q^p5JEGwET-%*XjClm`d&Y-7*_C9^i?BxUNB<_b8@tG^ zXS4D4*h{n8r8-)rHumzeHS>UBlw%iJ%|EximgCCH@i}@F9WBz1_?9e`oTB0$(RzCD z=XwmeR6q1kqckKQ(;9N-lcZkr`x$4{&I#<&v~}kV3`DVhg%8fv}-C%e`-e zHiW%|Z~%Z?gG65X-G_oM*-{V@s%<5fo+g1Rzx4~=!jicpGs{eNeplXLUA`iR-ESQ? zN{cg_*`}Y|-wF?i4m7owY1&*JnnDFR*8G^sCmYOL6QF-YK)hss#J!VOq7IMo+TXP- z(wk$?%nA_(mBmW-Z94P=lY2s+JasjIwbF)5?Dk0}hcMbk(j{nHMGi2l#~M~rG`V}S zw~2cY7sAw)4Dz)mkL~?ex)`57(}#}1-vxQa3rO84PhaUwsKp?2;T?24G*oteJM<3v z7FKz7zC~y=aTZ*4RYk=3$5hkHho0~EEqJREcH*6{g->BY?`cyOwTQD44BfZ^BZH%? zGIJt4d(H=Iz@(xAAt>KMMod43BKAu~1zCluh^dv|PZXI3%=vJ;9Jn=Q&gQ>nXEvat z1)UnLQ2S#&;2M`lz7b8r2y_2>$M=^&<3ji$yJsW+igE4r9>84EW8*~>IlLngNOj0> z#y&m>D3C4453GpjkI9K^GxW7CQ!^v_8^MW|mwIqWIDFRMS zrbSsDCh({710G;DaCMTGbM?kaYz_rUP1T*bu~XKyl#Cx?{e;}g8d3j13`ZXxLOQI$ zK}`&{pcauEX7Z^j9d=QfSr~P$J0R!K_bm=z`aNfSyktIg)PDTvPC1H#3dnDM4@Z~C ziE$_$5nnsoSa$^LYIEaWkT#}!R{35zhXpU*Aa{O#n1`OHH2muUG0{&g+~OogfSJ#) z@-$5~jp*>8#^$b-jNixzU#9a%-=VA~!Y%w|E4XFfIkDT39KwS(BW9JmOvceLmJ1RU z<0dU6>bpsgESbL)51R&!*^nU37YjF#>Hgx$VZixgk$}{MAV4sH0bo?XyXiSCQFF( z8~mCa-$a`N)Pg2xVnD4xhfET?^mhlwYoDjkIlJ+T!C-Um*yoN3LHTCbUN~3*9O&$X zM|sU7n-uKAL-@zUi@H(Bbb?&P_u<`)Q%Lrm7khU8*MC_kyLm%@1>U#FoK^UL1?v4_ zS)w%jN9}X>2{H>k8|?MKmS2H>pnv?7FP>n3fZF1BPBwe~_1|tt68kHQ`@gxbryg*c zW4h6hW#J!+%8eM7vG`;4ga+Tq_it5SWc1IA!7(v%2oL{IdmYP^8~gk4GfwDMJ7dLl z{j-UUeIz+CKT!XX{nU%=yI8pFd$UM1sv(}(16GSi;f~%zp6u^3(8YXb`Si2~f370z z-}P_j>K0*0*!~@szdqK@G?2*F!>(`s#%SRDHv{M?^sbOW{=c22>LJlPOWyFjQil!y z$59k=Z#2YrfcKXFEo@AFCqKQ4haTXc2FQU;f1Dz2 zd&YbvtweKT_bk`Y`z`hr=*oBfLNw9I0O@pv8NxfjDhIG}IQ%~k*Kv#u>9sWG5=Q|H z!27lNU{~xy22$lVAILHAC|12G0`}BKHZD{hs$ z2?{>4_GU_PdpZJ?|r+&uC0y)w= z)67x&^Z{52;XV8g6|Rn#h*5pU6wX=^}uHTkTd<^E= zl`MqpY^Y~Wi$g4*b}*BFP|r9kcW=IbKp-z)ASfU3XAni4giQ7XyCz`g{uDWy z^wB3y7YvvcZ8N}JO4NIM*6-Fi; z3*wtqQq)OIToxB@hW;lTyb%3Ow01>zWkc7MV6dfgQy%S6%J(5g9etMqRNQ9Kv?7KO z^`GfGxS{6?!tA3Gm{!@eM1)5~Yo#0Cp0G7g*eS1ePEi3t6rt#-ea-nvxr+HoX)`tK zZxYI1Yz#VkNG<#ZOXVVZH;dtaS|WJR`ppe43aniWtc3IUJs{??N6ItgaSXRI-0h!< zTYklS_irtLh$>_*Du+8)$~UwO5i>>I$&C##WEhrTJsRR>QEy%EC^nj^6GYyC0B6lj z%^l8yaF9hR7_7P`Nh-(%*d2|T+jsk%ZJw^ts1eev0W3h8zM5cp|H@t~JDaGK$mx_G zpmd8Ro-+}*DhA97&Cct(__;CyqMV}z^fr)u_IU~2rFG5SUSCIunFAm4k`u`~)C;;^ z^aNQ!9VS^zyol%tjamB&-(>LJ+lp}A-i5g#I|W)hc^u%e{w zS;)AO6DE_RB`fO7fBMFO1QNbVVI3)GszRA~C4iEteEf45C4j_Z;=Bd97@VrVA)eI6 zO#p$TxOrf`$U23#y^tlbFk?~?Whft~)M!Xv4o0-=G(cCvq0-IXWiHQ z{xI>;F)s!c^}#U&WxC3rdO?l9$S&vRcfCb^c3S#a4Aw*giw}4IuC4@-I!MrNN9t!d z(zl+zj^=iWuP+LQk4en(ky~iT*2qfgf>UQZ}svURcI;BkY+WS8gh%I+$T~=h*DM`71-~Q(JUbU@j;G2GTddq=`==-R>(* z$7Fs8tW?T3GS@fd^IDGq)PLW3T9BFkuWb~ciqhJVgsYN^rdT>Fh?9o6M7TGPHv5{F z4nHxr3q$Tl{nEV335hBv?*Ps)u;z%zvPizf5$|BuUD6L6G`qyDmS^e_j}ay%H){Q9 zm{3u8$%NTLlE>sB^AL;*$RM>I6YcG#Q#g!NX`K1=+oI&fR5&H(F5y~-q*4c(ay>UN zmS`zAf5J@wE5c#q8230&f_E)G9{07QHM2HBJI8c*yX z>Wula6m*?Ja(WhAKr@R{H4{74QY9wv&vxHMQs0pd=Bzd*sbhHNCRM1BMSHt?3E3NZ z3!{$$1|v%`2^aA?iuI@Q=w;BBbI_bgFf~R!rLYwEMif$(Y6H1MCf}H4q*mXH#luWh z4R|4g0+Q`4=<7DTJ}40llerVg`w=Kqsli0)p{K;q#Zqhb%eVLBvlb&>d9h5@67Lir z$D9V12TN6Ow-$gO_F&3RRY?qy@k=Kq*wl+OUN9iL-!TJs^78w7u0d#fneWe4Szz8o zLLG@Z7Sc3-E*?@4%wyRYf#UiPk-XUN4@%umjgjLPUHb+B@kNA;a5mwiSQcHx_ItF; z)zeER&{aOIU+2C$1k}r1fZe3{2vGGNfK%WM=JwNR2}J6nU?`yNtF=S=Ogz zht{f}X;{z?-@zXPfy_`RFwk~kkepQydlxW#XJT2TtxY_B*=XX;-9*uDw?^;|-GdQ# z7*DJ@Jhp7Ey<+-=il3yzm2@S&Wi=z?C7_y-aZe2urXA#1uQ2TlB_iz6yGIL{P<7|zWgCD~RTr%5$yURR z5Z?Y+_{s$S0alsr;SDzS69^XXr`b=m6VaIJ6{3=fmIH`C(cGD;;L(PrP6c@pWkW|0+{jI}85C@u7@o%EfEx-ekXe-LzbEe=D zcHa}Yh7UXN76e|G!V0zZHNxRy6K}ipk*Q2-3tKa@H7&z>YOcFhyN0fXz9}s(tjy~y z@<@p6nh__Yo@Eae4~r-F@m2KR!g{Gls#w5bC4}|p%M&P*RhH)0hQ&Laaq+X^1c~jL z+N3W`tkyP|hWixfL@Wq*tLW+;o|0bkhYdcwA+?s3rU+?Z*ru2L<#TW$$8FBrQdg0vc_Wgi+M}hmaIb71`3uJ`+qg)h%w8ETRY=5|*0tAs=H&}acC#@Jp(m%IkKs~{x z(W#8sAMo6j@zi!ZTG8gWj7pRf`Ey3-etM%681pDkPrKJYlU>5s_U!*y&%c6VrO=@C zCC`2GZ0r-c89}~>p@AssCBEl#h3w^*^sq`i|3T>rjv~|PBajUWspjtZe1BI$mEb8=D4g_4;!~G_QTvSt*8_30q<(fqC0%LIIvzSK=;oHei7Kzh2t(Wsh8pOW@nN^+?U_|;8>|38Z@qI z*%rNpktRc8&>9aSvUeo9c)zg0c@KsWQj>vj@+QYRFlCBY+yR!~?9V>XkPjZTDR#k8_zX z7{lj(8vY~uw()RPCF#bWv5%Zpp2(ml2iay`0!%PRk^5roLB$MKKYtSKUgWpL)|^{5 zjYkiO2$>%zo*uW4Fpx{rD9(X|wnJW$HIa?~I`5woLyq3(S`jV9S1t0usPY&~1Wj8o z#ZJ&xSO8PyNtosHg&46V@5;Qe4Nc9&OssZw;1QS2aQ{T~zW%^8E{4r}eW!HsLQmRMaqrl?++zxdlb z1Of;;0QmJV;Odf{KW-dr9H^L@rmGk-?~8$>nUgY?_CrOb0qVKekt&o}Uy zqD?45GQCqZi&D67seiZ#;o+LGOgN}EXMEF zm4MfgHhUlwt5jGxN=sJkbeI02TH^r0$y*O`-TnDzK5-ly*geQj9+zp3s@5-&6y`dN z-tsq7Nm#G+wD8WHEPI${QWOdrddz^)SD{h0K9uu(o2cA)w^7CPi<%Ez@1&X4iVjB? z9uU;c<%MJ!l2$}$65tL{>MSTiOOJt_&HsWs?EY@s(KVsh^*8m3@=2hwLR%aUuS~~( zFRy6?4*58?6K{Tq02wF9+GcJ4#ETO{=u+89`Xs~jb8$_Vz~e4i@9wkfH*C>w&pL@A zcxI)w*T3su`6qA!l;RE6W|p27gpGb8B$UitV|y>ie~g&cG%F<83O&s8%SoGpuq_Y> zrw|Eu`NGbLTj z5FyCGkxNOpo;pASUN6Wn*Xn>jULaTL@Bam((r4FX5&r`mmCHfS(`$1B8S`j`hsW!p zd<7_qf8hk(zt~oJ-AVBr@_+Cw-7HAd)l@QCL1h2@*K?NkYb#`F{@>i!_Pp3a#8?CZ zNc}A}hJZt;&;y*tc)V8sjp&_{o{S2a`TZB%mz@JPC})H%oFDrK?&Cp-#rl`H9wJ<~ z`HL+1w(ZpB1YrNWO6iW^f5qTDPcD&^|KiktlM(=edi^g@UX(b&cO*!k{+3dcLGsrB zgy|r_ne_LVFS>q5{{<|<{jV*RUn0QB{$t7xu`e)!j2#3h_%CI?i!@~1Y!S~Y`#;K) z{-f1@=QmIBzqND$AT#Lr3(@`Uj%Or<)A*0_|3`-{B-yMocYe8Zdtda=$2K5y`!5dh z|F_iEM~(9N{l6YtKL+!Genz>LWeBkkoWG!FfwU|^&Ii|>ijo;-c%IvLx(tCXsXkbNjTi-qhAsj zK2RqHQ$>~?cmIk@(xJ9qyZQ%I4?>j8vYw9lM%A}vZ8r-m*HSh$FWZSVR=?*Y%l7c= z9^AH!`?l)bLLLNS#7TcdqLW*PS0iiU>t4w)C>yI--nS{!ZgHNMy)H129s*LKm5$ww zOBWPl2~D~;?kY)ddt=L(J6rm50qSdz!bF5LbHt5DKV?+rjp9hLm<21Q9v&ZWo@c2j zu+=lF3KuaC{$TzG9DDR))4A zYiZSijKf1E0aaM%n&{v<>!s&5uDc3A1)Mn~0$nH1kYv%AhI;_k2CGBV@yu0tdM%|F zjr@62C)xnmFG`F%)_5t^v`GWHj6zL4LS$-`N^MM)|3dBd@)UVe26gluj;DW3@HF5N zr3}v4Knv(G7>(W~DCx)t=%j9bqjxe^d{5>>4NjF43ku20#hGPhDleJ*ex^06%%Fty zGr<^Z>5-qQz6dEbJ;+HGOuB^}D5t{8yk?5VT0AD6@dlP*+^^>0zZ~uu+Of`wWYu18 z@WW+{Q}4t6vUrARrZbR&xag3YdD;}qx>@}JD@a4@AksH=&?m>e+}_nNf!vuIq_Aq9 z?b;(k8TUPiJwj_O9)@wv+dYm z7-#$%v`U-SNQJ?WMYM(qIKYYZ0OO)wx7pZ_NYz8A_=h-h9|8NGqrFBx3uiB=eXw!~ z#-)j3FE(aRkNDo)CP=*Z>ae$V58=Kg|4h+qjJklMZ<;welgFd8m!k-M>l?<6GOsKP z%eW+yQL%`eajWR131F8QB|Be>$Tfnny$BR8;{PrE^|a*aOkgs3#l0qp@&3I1&2WAA z?bVGAcCw}Fa8F@i(ec4^o|&wvfD_G*;ovST1Cx@*o0U{)Ret*H?oR0E9BkB`*(ZjO z1>-FQCEjZGpJ!Y6r#AZ-J66vKxa5+1)yi0YZXivv6tZpXX{lj{wW9nI14GN)^MGpx zpwS4RQm7-#wr~(hu(S0NG4amk4KB8I{{i>}lQ+;rW|y*#i+9N%9!S~nUxEeXsMxG0TYd^$kCV^^G$WWWA z9R7e9Ttop#MTzH(D=ggDu(nnaybe>RH9(23-4A)pqfkN;r$hZsuE^pU&o=v|;p?y? zhr)C}Rj5L8^vyl+YyRwg?YMnzOzrs!5?;ils#-h=!9kEU3E@s#3k_Ei;fuwG4xJO) z0`=v!39i@1?S3?}hZ}Ca7jp~extdkyXS557fZgx-#79Hl8+*lsL6!_d(x{_{s$Z*^ z&oPvGbLg#2k3OmSDoo1Qp<op3QnJ)JqDiMt6qB+k7{CYKV%-+P*4A&k;!zm|bwFtzBZabwjR_taf* zN)gmSLmZ^1n8B8+tYkn(*YV$ubpxtNn$vQljYwsW@_w22qpF(&utGixh6v`NhBZcO z%l*+8lqp3ikO!NZ8Ly-ySkLG~rD!qB$-C12d0X{eCD+EUQ`F&RKZ`*g??fDEo$Od) zOLLo=Ky6G2&2aYB)X=obQ@8w~QoeTp?dJQ$NT~b5;_8>@+S{n&v9YmFuH~PNrSPTS z*%0b^$!R^R9r@_x=O0`B!gVlEbV7kfo44!y-t&45FRP)s;;{4?VZ4aewc41yS6ffg z%Y&aJ`r_W}`~HfbQJo)@4?=+!UUC6idV9~qXnVXsLA`x$!_^yu4jv}XKMOl#uk)$iM%1lLT`=LoL~(2HtdmFj`PrI_i!h=_#|H{0AGu$pqM9D(0H0pI#vt=- zch6od5Pa4)lIV|qxh||le^F?V{7rm{p%JT~3<HnQmFLCcPtwzpsBz~-AQere3>aXowqDKz*c~)OF#hT{kWdLID}@j1D=6Vux>H!55vULCQp94$}eTbSBOR-Lu?uV z9@4r{iu3yo>g1mtUi~8AySjIyM>p5Wn-B3fLVk1uQNYcx8783W;l~IyR?^xa!c(N^ z0U?Nyq>~YuA_P8kwm0OboWCB=#0|o2;Po<$jcFZzd=m$zc>QQbA!Q|9Xv^Kaaa?QmjW%?CS9FS0=QnyZS8sILDv1Q!G*t&I5UquvG zeFVu@gu9ms{hl6fZLEEa`SpauZ{9||yxc1|(%7I!n?~IC5JcC@FE#!(pXwL+>dP6~ z2ptzx*x=Ws<>EBo(2Exg^oU6bBVV-E^>>^uO5)U zN>yR&3#?T5*bs<5Jx*3mGeF?3?1>lOnuYEZWEBT;2ms;0st2g~r9kIG2@=*&J8@ttQ z@d;lpg^x~F>-DC0Q?G z^|H5tzHVXNy^|dv2+fy|QN~dOZOfa^ZMjs~%~Eb7T>z7n26a z+M1Y{d>--Iq4l$WM>usDP;A!CTSEv;ghvf$oHw&Z2yW52opW&+OxP5p+xJ;T$W} z&7vc{TQ}LyT(St|zqp{9Q4h&Ah4L(txez)e&WG27bo2AI>`-v=e?2_zab|ng^SUAi zwY)JAr=&OKqv1tqDiIhwezHp!=&>BQMZT_#WHMnRD4CKdcXDEJ-mDa9;cAmXX|lNe zoma5X}t8QiQuB z47zJ5*~P0+P(isIJp42_>*xky`*)-d%{hmHe{QM;U(f$M#QfRkZg0P$_{O*0HYh@l zj596q2U(D$eFq<+*7<_>wVJR^(!_j=Ggoye5BWEPnVbhr_c2{k3=P&Lk{o!(oy#&j z_gWb9vJokDD@>VIM~BP4DlLulP>LTr5Il0qbuYbT!Q=uDfDXR&!Ejr1E9qMgQNaB% zAT?^E50s7O?$h8kndNk@;01k`M9UKFi8SY{pJ56V13D|6bVo64c5?Y02Jmy`DjqqM zrK$;8a}}_Ra`6fu<4`4)IEncB&V8Y8sLE=cuu`5rXpm2NfeM(Oen-i}Ib~7}D#~Oq zVaF4%U^@mM4mGh?T{eCLa3y_xIvtp z)54R57H-Q+pVq#x&)%DIakCN~RQE{zY}Ni}Lao$IF>X zm7LV`ygGa(dP;$`>J^aBwO{%3tG_`j2rCVQzfd!$JrXcZ;_#f-H{!{L=c(nZ4^Es8 zbLvv?^b}8%BuIhjk0Gz*{7g=mv1J=5Y6StljBc|_>~vo))3(LOJ>e)rDE<0am06M^ zV5NnTb7S?GKm+Yh{>&v#v85{v)=9*1ic1-&JnL@192VZNX|5!(wn`t-K9>ka<_y? zW4tDB4{RYD+{*gaz2a_xiqI1)AXL$(rd6sP*tkIp13U+y~A zQP|tg%Y9#8ss-QnAd_-mPJn}K`Ye4~oe2V)1$Ri#+^po43p^@MFJ--La<@NE7i7Je ztV2Akc4FFJW7c0K=NrA94_AUgLy%7u!ib>1`?nS#XKc!Pp)-^hEhcZcu_ocmPoHxN zro0j>k!JmGw=xV#C9#U-EB6kKS@QbIO6St>KJ^ANS+9>V@IF;5CHWvU#^Pso(HCj9sy>dw z?=HcKC(paZL$KN4;L4!N1$^kBVHo@qENu-{R%mD5 zQSmELGK`^=d61Obsgvle>%At&*gPT!+RO~ju+`beq?M$-uOZW}I=_dORESeA3c^qi zI;_xt$Kmdl21`Ok=_eoWnj&0~Nud7v? z7+|$DEOcW6Z{tW(b;ylvJneQz6Wb1Xj0V}Ctns(`^>zWTsjj}ICqEz6h~~o6l_v%< z04lmmBMGR$*@Ft>=z6PFyXBOt7<^Tk$RU1uI$w@$Lp7h+qg&l>=lpbbJ6$G_qF-qF zJHkXxZh3)3ja^(X(|jN%47sK~%;~^S_(7+(VgIIM`mt$LvU!B)1Dr~bpBeDu zUJCx>aG*aZT*B##>$`38t>0Og9QQ&FXweseIpIB4U728dH01fb3g3dJglShVI8DiMvq0u1xa`|j|kPSx;%ESYykEywzxU#pWl`XaSU;6; zR`sl!gpowIOs{s#S^*ZC_`~}L9l^V2-#6>(-fK*#kp2Sk{RD>ENkVWif9>ne+n=Xy z-?x3eKh6g&sq5N|yg5OgY7EJ6;f1X`XOlTeMCIhvnpfMT0bj~~HZXOPu- ziWxQ|qiePm9ogBDtB}}V1LEw<3b(qTWi(|?cQ;0A4w1xIYU5&W=^1IElR#7KbBn5T z@_DBd6AS|%)cO;L4n7+LZDlBxn%yFo1IxjoBQ}`qp*#)Nt@Zhh_*hlh2tX1I#i5;! zA3%f_Wgtx&KWj<-tD= z%|H!IJTofyrVa~*c%)?!2J*huitS!JpB25R=%!df40cG{^P6wm%VAB_?fWQrDE=Jd z>n7452OkUm{%sd2lRumRg1if$R3h9!(w(t!t69!ELoaYM{YTE$LeS?rPC)x75qdJk z$P}88U)NHhX=-&pA8&|8J%oX`$fiP^=uV)1?x{rUTuvT=`ieRwYt3&Je~@5vwUB^Cz&BoJT5UVk==K4*_+5Yzx%T{Ox>Q&S6<(WTrjH3ZP&aOW=X)olpimpiWfXY z98R@jOUCCtw->IasEHcKIl5`hBr)4^TSuoWClx(tenc|f>`on`suq_+nAiM$>1szU z%lmFNre98LX`wNAkF(@kejH8Yd43Ns6YZA?0R5-*&wxq4zWHSFxw}JM`tC~6piyH* zIXPnQ%;qtWMGua$a)FWu9mtT>Q1K%?VKJ{6+NuL68O_N-k#I;G7%^JF*db9KW+^bP z3gNS~Y*DTy!KYU$5>HB-_6l=ss1YT3qH{!gLpoaKC6dVPZl8X64F7sY1+0eh3;mum zz`!rdk1CnqY5GJ14OPzC-B+Gl+nQxZ1j?o4CM4VmJ~d<>JEWbe`}_kT#nZFGr2v~a z?U17;*-6{w>rl3F*r*{e$!Ox>FGt%)SY8iHmL999SWPt_Oq5F377nUf+7ADC%{7{4 zxeCSk2Gn54+jXX9MFUij_A&3cPNaLXlg}Bu8udh_U$VFB2_;|z3Sgt1=sF2Umy^HW zvPJn*v@>Pm@f6e$Ubn=vJM{nBd+)d=mv4R4u7HZ7f`EvkfOP4-D7|-(jv&26YJdu&w?RytlmUXiDN+1)5)`d(Q{b#G(Wp9`~y|eD3ns z&-#N(=KW+Bi*-RI|3nq$-TnA;mOIv>7IDXX7Ge5{a_|?AYf;J5xyE88&d`#0`PYxr z8cRLe3xpR11#FVIrs9t&uB@TStn$nQ!LS(;YuI_$n860m$Q?TGwT3ZfnYsF%C@^7` zEUKNI12ESf$*-Ty_NzDMK^YU2Wk{QSl-7SHmwEd8#JMJV&EqY$&m0%_ z_tw~h&lZD;+uD$=8NBh_FwgBLn;Gbpj_YgBxN1Y=5_S3c3vyXS_?M3g`yAqO4r5~+ zEp;4!&h{zbgd2Jz8#qs0ic37XMVUMtlCAjI63zhElcE_mhf|lcDLzzu%k9O-7Dx=E_?la7e)u;DDb%u=KpljLppzv z>DH^XZy?(4&Mw1sQ(@#Ou1A*WpR_pK0wxeoCx(b;2-5f1OU|c>T3BTDd|L6EnpJR6 z4dSpCbACduf3nd6uG`KH`l6~uI)`(;x^**C$DM|U>SNb;iriFL)47{0ym9a^tVk8_ zr{f5lM1%&T9HvU#A5B|9)$}|RmE8Z~rmI$vn|vl7!(%I9T=b57C^Fd-eO-DjDM%c0 z@M}#W+5aUUlW4v+pE~zs1jM=m>UlMdot%B0w}RK_o&SQVMAM{RBg04zmyTMY_6qyy z_dFxoB4PLRqT7-(o_w2kH$J*w5*9Wt&dJ&!A8EFlr5&8h;zlB4Vi46NY7%ybKz+7F zB2HjiNe7s2cblw}pPC!5L{TWAeHFnBv6pQj)76(2hNoiA)i2jjrfuYPgw@p%Wh@+N za`4KY5ovLAW7gi%d1}}Puje)|uq1gHJA|(kR;4T_^qllihx?KkUtqv zQ<+-4UYuV8#Z9C5uVj$mh>iasQn!o`N39F7W zsA9{8eDygpTKJwD-f})8OWX-QcO!*>N#sy_6S@!wtLgIE7PnI=nhAOJwS+Av0&|Y?6Y9j0FRUa}`PaO_esx*CgB3$leySzt{ zAi;iD;UBLgRMmGf$Cp*=L@UJC&PR7fBfBZ&!3c86~L~2H- z+O8(o@U)CkscyWvZ-wF))y)dm9AUj3bu&uyi(F{0kqL+0t*lN;fTPRZ!l*`JrZEuS(Nf7rz})R0V# zI)6+mh_;CFFc`J{R^%3Vx4$QX0crhVb#|s@8GEi1F?{QtZTH2;$&t)1+Ra|r%%#x}ESoQka zL(JnRPd*8S*i*u4EbZA|Wr;RA?WVEMz*z1W3N{~cDqPa2W@r;h(ip4>wWG}l%g$zD zp%JKknllml`ys9FY;t^t^}?L}t`fg#{-=8R3sQIO!CUL8kZ7l9$=mN0g3{VH@fXgJ z`d9Du`I|_heUbN!WX3b-mv+8xR`hyI$=4b$QcXiQ<&uZ^73YeDxCQXatg`>&}yr*B@)qUB2xlK-E z)h+A{eRe=YhP?Z3QT~&toJ@m|{fp$0gWbk=m&&PC&Ap9(++$d^F^iOjVw&A&~uerJJa3qdx+g)}LEjE^e#Je?;8@M-n&M&wjyGzQupYbhezy zaOuB$dSjBTSquE~^hqD6I?Od(bc8DL;PNWN zpL~N+2LTm<*K4agOly$z4fylevKMxq@-HO+OM&`A`58a`&>TY(f_6g44c_PMXQO~G zdYXhy52e(@K?6!>K%i@6_GOxOoJNf9ss`BTmf~1BTWia6d3m-c^#5E)l66<6WKCbZ zBi~1RD8}pakZ%42O&q&TMmql_If-bZDp>xq7wnr)NJK7enr^Dq1Zvcno-U>&+rIq8 zgQlqeB22KyfyQJ1ie)(f=o~;?QD$|gvf#%O2+K;p?!;$t=+jAVr;0NvR+{r#?OmT;se@X{XC6JLd$Rg3CPH09bZ&Aa z&-kX@pcV)9IIv--?(CK!JjHlli+CKG=15<8lJuw4V{8Wg4g>inJXG3pWmb3 zw__NTsr**r`ne}NFLvS@=2gAu$V&QOgo}w1rzcP`gl%Gvoq%ys#&bU%nO7ushg9*f z+r4b}>jsK*cl|a+xHlJK`nrQ9PIh+4rPkj0Y^NKFNl-uj&;a_qfFfhhwnjxk5<$Zp zB?Td@%av^F-?nr*pev0nM`4d-`(B=1a>-EaC~AO6`Yfc^9#)2n8wzzr>apl-woxa! zjS9_Vw!xSTei@z#k1x=;cqDXMCaJv}x~~>7w8G8j63fk7mC<)8VY5Vy(}Bt^a6T*` z0~2IBIeE~*RZ{Tai@}M;)sm;7k+L(!pK%0{hz5@W=aW<+v z-{dpSV=;SEf%)4>CN?2F&PT;*O#0|3Q|5miP?ILS%65)J58l>ZE** z4~7A8kQ4sW+!3>n@Q!es7aEVFIPOPI@uUnKa(tFPep^+a54~xs{*BNAw%VMj2SCa} zYKz}(Ql-=VcK(C}JH>9!;KznA(~ALDzEylAn519Xob=jswh+^}LG39^0DE^wDo~a@ zRZ@R#wA#sNB7HN&6&Lljt@%)x;s0TF4AB`RsE8S?ddSw6miWi^nA4}Ps(3eSX1qF;4Mpq#ZB&f;NZ)Q*`Bt+YZ`J4 zCeQyg|5$0$CL8Nr*gZcoY3aq+v8j+vgL(t*3edWEXAY-tg!-4yNsTmjVXV8aeZ3eB zFTC1!8n+$^#i_DdjJj@pQDX%Z(%)V3=$q~`MdZ}iiSG|!NrxDc)NxYbcEn0BV)t|L z**BJSatyxf6L!#qiExA?9iF6N9!tG-60;z{E5LP5aGk3$XogFa;*!FlgCy+bj5jmv$_kx+7UxFFoFrOoRE-legNO zn0fVR|9QqpA@l0!(kxn`RF$iukFvu+ftGrsPm27odE#8NMPWa^#DayKp40Takw-C2 z%qU%cxh*E{&$c{vuXLT_^XXtv7p1Yx0E1fddqFAw{0};iPz5FQch#L`-D>9S?3$W5v!`v8~t-3vopy0?VBC{%%M*HEa7bF(o2n_w1NkFdx~L)Vwa?$|%X zJv-(u>eF%(z9IoK%o`&Vd8&wsx7qMjT|4cW((yc&_QuYSy*@;r=f2qyj@uQ@X<#_RJYV@vL|SEN&3eQPoQ zto+(QMM?G5`*_UxB7qNG4Gg>z9`1MA_-2~~=-Z%{dba1&;necF%Vx>^y(bX4Y}X%{ zm7@^o??IIj9iptWc^*EUYz+ean0~sed*{+^W!n3- z>8+C)rB1q~ctZrJ!kEvZVf|6ajqc})3Vt(F+0{{M(Q^RzTSz4tlR-7@3r z2tT!9;W9l8mbv>%Bk-L&Q;VBY2Za8a!#k|qUpcCf-p2&5@ribUg=zs#+_R51KP#?x zKI30g(TGk%+B(`(c%-n~0}UU1(^bMkvo+pbgeICMW@oG~(nIlnk-ikYz3N-R`GVbm zsjz4P+_>+5C?d^+QfHSgxy3Pw0kI)PvMf{UIlofe?Xd?fpzi5N% zfQDBi^{D$M_h}Hn`MCd z&hNaS&X-bUpg8i&pn7cg7~R9|2p**f4pBp^tuHIirC|kn_MpU2pb+wLI~Gb=GS|9#ky3}L-{u?P_E zuzcX*&1B-L$oN(XFIWBZc>lC4? z+wR73XY=39%srf(X8uHMo9jcN&Zc*^d~hLPbG2e*EfO(jk&ct@W;AlpB9d#gd@(a{ zX!*035wxPU?JZ%?&xzM^a3AT}@@CKJcxbDkF{>!#5wk^$XS#cp+s^CaRYk>j37T?O zlMUsr+*iE+?yjQR6!+H;(_gd28FsSWi8){Ip$Nhq&r(HXr%{KW5=+<1N0ZXZ z-!!}}Zy#PQW;ukn0-V=h*2=mLmsAvmZ@%|1ZRu}s$7|Soj>pV|?yY!bv}{xPWn{ktapvGc7MQO{>bO%0D_b1n5ShWe0{{G*e=)p4=aEjn5nn$#rhnBh%GWn&|S)bZ3H@P%Tjm|8;2@JFe++6$q;Si!_vfbcoD&D{sTU*XR5lJSE<4Mafg8h93&WX5Er86s zX|(fuQ%%35VvJ^X7)5;~TkKVy6~%oOmJze9u6x8NQTRBj)O%n6Dq@?} z#5w$Sj?%0z3A)1bl$=lKu+d*u7cM*V@e&`#jWGOGH_al>6zR8}dF#4%PHz+y`k;p$ z0{77FZTwazMJQ~sg1Mv8O$W4#GSc3HPeoca+|cI+_pw6Lf*j=s6C%+JCe7GP7{M0c&a}4n~e{WGH>#Q~hcM+n_IXblRRm9O?W#GyBbm{5( z*@DXhVYLlJ4#~J^I6eBXH~Y#?$vx?2rqp1BcUOACy_Vx895tHhq(`>pWWRdwz_jjo zC55A0cx%?w)d^R?r>sp}kuGYexkCD(pJ2A2u0ibsZF&Q7i%NTwHtfLWSBa^0y$$b? z5t!&4?L0J(S;NxWZq(kJX^stN5>KGrJ^*%qXR%X6*g3B?0wiRYj_nlJ;z`szCm zIwT)a$*y=!oo3$CCk|)GTsKF!tTWKiWxJp+mzBL}UXl*V+qetwV8N07PS%tnBhB}e z-%$o*Z|JHQk@F-wgnq&sD5turLEuuN-e~pWL^H>n+b|T&tLrZe4z>gz9cVGhx*Vc6 zC0R35Q+wI3K{L1h!vz>aH80ldj(NAPMiXLVMwNNY-GB#b6HyL91b=fQQ3vj8AsC%M z^y4*a=z+5DJdCm1*&;Ip)ab0J^kUQK9AI<=*}0`jU1Nf-#&2PK$_(J6$=RlrEK7lw zEhlZ#F;IRC#$ErQFj{bp_;i~QsEDN%p|8;d3fRnwR#<%h@vPzvH$<)llRNKubY|Es1ZG5iy)cmGtY*sji*)^xeczXAR@riMySE<2nxSj)gJ62d4A1H;^zB@Pw-|5UA83`Ozc_!nh+X^X568}g?+xvdR@0$1 zouWd|kp)KZ-WkaO{ATFtD3LudRa?R+sI~JAL*-=O#2n97>ZyC#dE(_SC*!w%!I4lwRmR37(-Qe7heTSDQ2&qvOn6lj^{EHqbi?1eWhzc zrZ$&me!RD*dhz<@pZR>V4R(Wp*a{16hwIqwEyWzbaR9Tol}x+%b2tpDIBvH&?X?-d zbJ18kO_4O|KW?rMDZe+dvwMqjR~lTR<9`@=IHH28QJ2%VGQCqYiG)qu7Vca5+QOb^ zM{W8m<8u|`b*OtR-ek&fv_$6QWM7VJFif`@w?R?&DE+Zt84%bBjTYNS-S(GqeYsP)wLF-?P`@l7++rU2s%ANL zbECi=0a7(k&|+n~x5;njRO0hs=3{j0{O)kAi*X?4WaO&kjH<0{P0sEVwR?+ikRv#?NZZ%9OMtxWuwl&nY>g->X)^bzw7Wy{P& z+B zfR?>=80jr;-E61zylpafPEP%Sma;7X9bc!5!^~TBt4Uft_1f1<@K+8{#?oR8TXb_~E#ohDrhM zUpm6FRy;-s{@VWmw=8P(aPGWczl%yCiAlP9t_}_LCSSzaiVwR z1+nB(;K16&!SI_}qCfJ>Sl@Id*t~*XYW5(dK9C~tVy=ls!Ma@i2fmhJP(lKF!w$G0m~Y+>?Mp7lW#S*kX5QjR#Y@ zd)>Z|IVzC)fH^$_Ut!5E;9S`6sxVM(M&)n<;<5ltB3j8ylR8W>yLWZg|K0i0v}x_W zmf}&u1NS00aI6Mr2d{TAWn|o5y5A`oGnbT^y9#`P3O=dqA9Q%f$3!W?gyd3Z9f%|0 zeUj_ylzj9Dwp=KjKx_lmjD+PxRx3E(V_zL!3UhjSguaDx7MP3h%#{IeFPMZ2q}29m z;Da?7?WPQbY$k(S&X0cO&;@Q9Kc>dXniRS@mu)sXCoWH`f+3={mO842CMH%6Ez=3h z2X$LzCCeq}-%Vh6#Z#*?w{nEh-Re_|qUtZA*UzTbyqms_@@D<4=1y~21!-mW$63%l znyvD1$J*D^3wCX)4eE_&NoYun9d5i;cWcdZJcng4<^)n{AbC|McSLJQbl7J%p6s4o z%>`)QI$d`iqGpry+tTEkCDkbCtEh^?sXh<&U)`yPmWaF<6X zWkX1l2VY^IEiM4EjV{e=!qI$+Lmfn857I1|L;^c*FfwM%%ZCT<4)hn5t;OsPN+ai% ztDA=lDn><|Zk9rQahhJ>wzn2Tx}k3)&ZBQH3`xx8DnH-@K$ouk7}DdQQ7HD z!Nk&!fkxrWTSM%c$9@MZm+1&7Ay%0Y@Oc4Ww^o+e;cm(-f{x~L4lP)?4rlLuw%S;s zd?^az-PnN*w*U3AMi^^uK^wS_PV>c`3Aii4O@PPAfcHAlgtB_l(eU)73?jtWRgz(` zX<}}|YfN@_;1v>M-T3>fK+$e6u{Xu{DO8tyFc2Bhuda ztb4%kvhi`B+lDcvrbzT|{)syItmouZZY(@kPfSsRxd&N0lQJS$K744tl549umeM$- zyb=(m5Vn$>I_?q;Rq`2FR(Cj`op>b1kOIn=Aq5=l#|7Vz*4G&u8UE&0(F7L8*NuM# zI||TK@;ZFxHSt=2D$O+37C6u)p0qdxM9AYeG#BqJ>hrD83Okx@{Hz1)97o1{#CA1D^JWn||6h+8)@rd(?M+`*Gxp@)rYNv^7LpM^L9lI~$q^na2b4Fl=yRPBbmmK9tkfUEj4Tr)B+5 z$mgu_TdAK2-AAv%z&ZB$kk4HHhc_}*$JXswvmALAzT(< z0c}N2AGIeoCZYX@e5d#<;$cG*^A=a`JoLV#UF?LP`|XT)G(H!*w|L#uq|R_Cfa>;)`jkk z+1K-iRK{5b)MpI`Orhl+s!xOMa9D3QwS9@r2bI;>#8&VSnn)M5ZE_87epk-=J*8A0 zbgo{YIpo5n8&5uv)1*F^)4YyNK2Vnh$i)8j-LBM?Vh&-&3m31D_bh`CnURz-arEKv zFMqcYXud*GWFX;=+=Yv}A+Id;!3fK8eH<3g^83_wW5F@3%T1jp8Pf=_e};jYnD`hm)x5x zmKqnG)inQpd*{xBuh4HF`Bv_C0b~C2TRr{1dwoUWYH>-i_0H7i|L^~1zy4c9G>vZM z-MgiC1L?fJ~ovtFB~%f3-WQzoEeL!MfPpi zW<<;4NtA(CLb|Emvq+=ETT`_DIJr!tiTY7>jasAjjwfq9FjrFJz*l%9MrXqMcfI%7 zK9+>CA+tzf0Mt1OeUz@f@pApJwCS{0&5$H(m{J-BJu+HcB%bi`eF#4EzU0Q^)@eL? zR8Cljc_g(y79`FrgW9z*V|Cu?)1VeD5J8(Ehj*=*Jk=MwV={#7&iYewr+W1)V3qlE z$6u?I=v!=83}(Jq#btqsc}u|L83~WICEH2imBG`&!P` zHLhRNR98V#9ocwx%el6)uspx~oZZ3}>@#q|!2qspG&a6ga~j@t#4H?BUS3We!=qGg z1m{1S9iKLxn6>|1zj4?FWkBX_VUOs1noc!?8i~vI)A9H7>f=D`9X^f44?QZwI!^4PWgC0g6)8oU13JhI+f~TVy6YXVvJvJ8-ihLuPpNS%eogbax3Y)IMv}rWEbCSbUxA9 zE^GK**^9xOlXdU6bGdx#Z(5K7|3LCvp7ODHrk%gR7QD`}#Jnx-rT!vW)64p@Ue0ZG z9i}wu*NJhDMZn>~HpjYfCN3rLh9`@FkVk9ZN9L6n)A?M#{deC8k&2+ePhO=GH_Ny1 zkt0cZ2(6;Y(YF^jWOJ%!J+@kQEwOJ-JN4{*U`Ftk+@SuaFL) z>ap7~f+V|KLw4EZmGJRI=x?G6bsBgf_`~#J(qZEkTW4L4h4R`-FJ&meQ6)fC-a#`> zk~_P;8IQ@t_)gdPly8B!&IF1}o{Qc~DT-s-GppuPoO)X&Ra3#CHU<3U778}aZ$fV5 zX`S;JZp$DZTx6$8zO@4JgJ~K2`Vt!4+8h?EMynPAi^{(=mkv7*1Q)_N#Ti@dW;6Be zCf3ae6U7rH-*jBlMFG95vMmk>?+p=lO*+}C_-$$pPm@zT+7fltw(OFHu#-^rxhEepC+FqIjPkJ+h<&aUM6Q!%>B^%X= zv@umIV901TDfgwr(PX6{8q^s1iXj@2XEZk3AoGckamD*{s|C5-YB6kcWCB<0xHUQ<9f! zMiTcy?yMb;Qh>L;ySmven@uhAMS`Kj?^*y7z_nxTZkYgYGX#e|oA$BwvEGgsss`{l zx4Xyrh1fciw_oR%kK25fLG!=);f3m2bLFB8<;+5*R9rNVWbqnmTs!@VZ8}-CI~y@X z-Mq?#FT;qg&At+0Zy8>)HHZL`)(P>=eZte*@Tv2zXVkU_=fkq6Dq$yYqj3*T7p}xz zg|+US!JJ0fz_|JEt+9`AYsZ$5=9Le@rx&OzY8adW$FUYIe9gg{hlh%tx{S2_S>nDZ z47oylyr>mnl=PU`mfoW;LXd!)*SueleAZf-B{ATBfC+CU5YrzVb@TbaA)>iSaxRJs z`Z+2?PV|8$SIRDFmzGq1s}OphXQt+!(Tf_kN0l;AdU<7KZUhG|-7Wv9Gm)-8Pf;6S zA@Ag~Pm37BFo<`frEBprvAt?`TJuu_i{ULNot}`(89;*orqp)4eqzZ1im z*(7thH-6X4XzZQ%cFV+7pUhJE6EDSd@@xCEsPenWOjt>`G-O}RH6Xj=Zq!0P0m!!O zp|D6;H`2ZtAA8>O&dVI6HIO>4RIUqx3oREcTA?w;Zv^(>_t3=A_&f`z8Y1a#dl)qs zS121;?|5=R&nPl@q@w5hFovnOfN7%{8TT1&Br0rV1aznpJ6z8Lgd>l3ti%xj)Sar`{l@FUN4W6uBMBG@@6|fdMiyHXYwZEs5=< zlhOF6^5OVER9BaM@3dlGS{WfLo0{1Jy^bXebzbB@!dzp0k!@ZVR38XiobL~3kk|aW z$O)J3uG%>~-SS%@2EKyH5s;`Nse}Ocs+S6XGN{O2@|a!Y-J?3MmTDOVk+m#789)4C zFu{t1&(|)eK06AUbStsJwKX&^bbMYIaq*|86YP(hI+__xxC8M!G#&1YQk?MYEzO!i zjbZC}&sQKYX`8BPkk$corbqRnnM3*hfwa$lpueUjtcUE;8T$!vbb>p9E~2iJjEN7K znd#_TH)b+6fNy-G6qF&mmV)bx%ynC6#$f*XveOK~y{pW3Ur29*CV_kN8iv?90iRb3 z=ueWy;&y8RxuR~oCDKI?tN9NMbPJa=JU?lfc~9?gr7iYQV3S6^`NsH0^Ng(DTv>PA ze$aW1jKq%8+l4gYLKc*7Pw2voI>jaf5kBGYRy)M+p7a}dlSO=ol~~rJJIe@XQ|m9K ztjk{)hyVP^MwA~OE@Kn*r9oOL6--Lw7K-e)ALks9GJyOja+M>h&O$upVv=4H#3~|I zrqW@c_-THt8E%!g;P^Nj#zDusbPPC%`l5wM37+OVUR6@uoU7K7ylk5|RHS$%TPEOT z8B{k5VT)^7m0wen7EY1-x<0F)t0FBb5SMEm_$b8T$?oS&5rZ`QNBVvNFYcSIXhFoB zmeLy;%^%DlL@tV#Wr*UdWn(fOT1P5DaGjwF3;pmlevpI)HA7|!IfP8+ii8((HT+jOnKu%1|jum9UDqJWDxIYN&f#WRaHlP2-^Fwz#C5#X+ZWWYT36 zs;W{2unsQu&Z!u`*FV)0G)xz4y3WWPT!bmv|7rvl?F#CtieYTl%5EKZh)aZ8nq<=Y zmQ)C^iwm6USo@h9If1qc5Bhpf!N5tSg35Hb{F-7fmOvV%WJ5CYu0k zvI0#vQgMt0$bQ9u^>H~Ly!&{ce`;E_-#ld%>^_PsoUfHsZA$<_~Ui`r;wmZdZ(UY zvbCZ+&6X}|hOhmeZB3%7cWF6KsGjekcd85t3CHu?`qeyT^L^HEi^PK}HB7iI!mRP| zaCstC@ZEZHNj~Nz(5u7NW%{p?Hy*EcSx=_O$M`#Kqlv<9!=)7~$_Q>W%ZfbP5UrniZ=0=F`=d;L55n62KP>xMY zb-(IxW4q%;Wkj*1TJ+HCm^m7TAml5<)T{*&_U}SnZ+{+vEB5@6_Me-$E~N97>}Or|JdoQiVe_Nz4uwAd3XQ(U^z#For>7SdkPoH%*;e3BqH7fVh1^X{KJImH*X~g)% z2#=q~k8dSYS;QTnpPInNoSAEC&mDhnz=Ws=Pc%rv!nND-{@C-h@aEHX#?-mz?QUql zlVxM8dhh8bs??2s;h1fWT;uPAJAp4d-u*koH8qy81~m z5BDH|W+_j@U0avaxduK-?G)v@dnS1LsepqLCr!)bB%8`DV9-SJG}&cA9@(2a_Y*@C zdYi@vi#%t%3-Kd4>@AJI#vUDh%N7J>cgMWBuji|1=ep5g5x?2A8V5h~crLt!s|F43 z$jp5?$fm<>gkO;HdimGr`9ePW)bpL}JUo%LJgFzWB?5j0-y~S~W`|bXC7V3Zwt{bP z)k#dZG{AYhMyk~g@8Ud-&lHZ^e!Y%Xv}v>-;N!Oc!+EoddHpLvE7*fh52|P4Q~#vC z6utX$poyvk>pv>YOSutN8$!0Xk|Tzr*BSIZ;x|%v=-j-g?gUjwlCyDLtoLW# zoXed!W!9FL(MX6RBC7ow0;sH&>o&!OI)~p!Cs6d%XPu%@lW2q7?FaAWD(y}_#xRQR za0&@aeWM1r%VNNF}qvGD@wj&oV zJaAD}cx6zXH2RIt-oMDa1s!PYFTEWBtA=fSD~Uqlm8}diwI4WW$0_P}Ye4pXEjLMM z(`@h-!0iXK>ZMV9EWFQ*<{R64g1V2+J?Il%L;Me+ zv9$WiZ6P}H2TAFTptybk4!tCkGKiRz+qj*-d7akSTb|)F4O@gT7L$gLKj>WCOx!%z7ier zuzD22euI2Izl`aSnvdF#`urDO_~8c?tDI)W&A(vIEB`?gQM;X@QGd0*{CYvS5c)TI zdLx2TM_;$?V)%WTh`*Y4UsK%N&s?85bk50?ZKVqtXTE-HMMXlAUVHur%)}F;Uan5a z{&LAo%~<&v+{zr1XvX?!$2c}g=k(rtom>_2d)s)h@~38K?XB8S*3h#PM0~aoRyM!_@(8<-O zfxZ5_P47eI|A0WhCRbB;|5p?FZ~xS^#S)8?!^KX!qZ!7ZOsrWy_H2HP)r OOI1-zq2jgm$NvlN>e;6N literal 0 HcmV?d00001 diff --git a/data/uploads/up_20251110_034506_014266.png b/data/uploads/up_20251110_034506_014266.png new file mode 100644 index 0000000000000000000000000000000000000000..9afa5e89ee3f99e1d34070c00191bc74bfcfc11d GIT binary patch literal 102855 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%0Ds*1tYL@WLLyY?vugKcW-8P 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 C(RiW& literal 0 HcmV?d00001 diff --git a/index.html b/index.html new file mode 100644 index 0000000..86aeca2 --- /dev/null +++ b/index.html @@ -0,0 +1,39 @@ + + + + + 恭喜,站点创建成功! + + + +

+

恭喜, 站点创建成功!

+

这是默认index.html,本页面由系统自动生成

+
    +
  • 本页面在FTP根目录下的index.html
  • +
  • 您可以修改、删除或覆盖本页面
  • +
  • FTP相关信息,请到“面板系统后台 > FTP” 查看
  • +
+
+ + \ No newline at end of file diff --git a/index.php b/index.php new file mode 100644 index 0000000..bd09179 --- /dev/null +++ b/index.php @@ -0,0 +1,136 @@ + + + + + + + 登录 - 笔记管理 + + + + + + + + + + + + + + + 项目工作进度与笔记管理 + + + +
+ +
+
+
+ 项目列表 · 工作进度看板 +
+
+ + + + + + + + +
+
+ +
+ +
+ +
+

月份曲线图 展示最近12个月各状态项目数量

+
+ +
+
+
+ +
+

导出的HTML管理 + + + + + + +

+
+
+
+
+
+ + + + + + + + diff --git a/project.php b/project.php new file mode 100644 index 0000000..4b2402b --- /dev/null +++ b/project.php @@ -0,0 +1,79 @@ + + + + + + + 项目详情 + + + + + +
+
+
+ 返回列表 + 项目详情 + +
+
+ +
+
+ +
+ + + + + + + +
+ +
+ +
+ +
+

笔记

+
+
+ + + + +
+
+ +
+
+ + + +