From bc60a40eee93f0542a3eb528aa329d4dacd46228 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hu=E1=BB=B3nh=20Th=C6=B0=C6=A1ng?= <252359928+Huynhthuongg@users.noreply.github.com> Date: Mon, 15 Jun 2026 18:52:53 +0700 Subject: [PATCH 1/8] Design professional wiki page --- src/App.tsx | 479 ++++++++++++++++++++++++++---- src/components/CommandPalette.tsx | 106 ++++--- 2 files changed, 477 insertions(+), 108 deletions(-) diff --git a/src/App.tsx b/src/App.tsx index e0c7a4d..813c92b 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -4,27 +4,38 @@ */ import React, { useState, useEffect, useRef } from 'react'; -import { - GitBranch, - GitPullRequest, - Settings, - Bell, - Cpu, - Smartphone, - Monitor, - Database, - Network, - Calendar, - ArrowLeft, - Folder, - Github, - ChevronRight, - Star, - Menu, +import { + GitBranch, + GitPullRequest, + Settings, + Bell, + Cpu, + Smartphone, + Monitor, + Database, + Network, + Calendar, + ArrowLeft, + Folder, + Github, + ChevronRight, + Star, + Menu, MessageSquare, Sparkles, Info, - Search + Search, + Activity, + CheckCircle2, + Clock3, + ShieldCheck, + TrendingUp, + Zap, + BookOpen, + Layers3, + Code2, + LockKeyhole, + Rocket } from 'lucide-react'; import { Repository, PullRequest, PRComment, Pipeline, DiffFile } from './types'; @@ -39,7 +50,7 @@ import { Analytics } from '@vercel/analytics/react'; export default function App() { // Navigation / Viewport simulation mode const [viewportMode, setViewportMode] = useState<'desktop' | 'mobile'>('desktop'); - + // Data State const [currentRepoId, setCurrentRepoId] = useState(1); const pendingTargetFileRef = useRef(null); @@ -53,10 +64,10 @@ export default function App() { const [diffFiles, setDiffFiles] = useState([]); const [comments, setComments] = useState([]); const [pipelines, setPipelines] = useState([]); - + // GUI state const [isMobileMenuOpen, setIsMobileMenuOpen] = useState(false); - const [activeWorkspaceTab, setActiveWorkspaceTab] = useState<'pr' | 'pipeline' | 'docs'>('pr'); + const [activeWorkspaceTab, setActiveWorkspaceTab] = useState<'wiki' | 'dashboard' | 'pr' | 'pipeline' | 'docs'>('wiki'); const [notificationMsg, setNotificationMsg] = useState(''); const [isCommandPaletteOpen, setIsCommandPaletteOpen] = useState(false); @@ -111,7 +122,7 @@ export default function App() { ]; const filtered = prList.filter(p => p.repo_id === repoId); setPrs(filtered); - + // Auto assign first PR if none is loaded or mismatched if (filtered.length > 0 && !filtered.some(p => p.id === currentPrId)) { setCurrentPrId(filtered[0].id); @@ -193,12 +204,33 @@ export default function App() { setTimeout(() => setNotificationMsg(""), 3500); }; + const activeOpenPRs = prs.filter(p => p.status === 'open').length; + const mergedPRs = prs.filter(p => p.status === 'merged').length; + const totalDiffAdditions = diffFiles.reduce((sum, file) => sum + file.additions, 0); + const totalDiffDeletions = diffFiles.reduce((sum, file) => sum + file.deletions, 0); + const pipelineSuccessRate = pipelines.length + ? Math.round((pipelines.filter(pipeline => pipeline.status === 'success').length / pipelines.length) * 100) + : 96; + const dashboardCards = [ + { label: 'Pull Requests mở', value: activeOpenPRs || 2, helper: `${mergedPRs} PR đã merge trong sprint`, icon: GitPullRequest, accentClass: 'border-emerald-500/20 bg-emerald-500/10 text-emerald-300' }, + { label: 'Pipeline ổn định', value: `${pipelineSuccessRate}%`, helper: `${pipelines.length || 4} workflow đang theo dõi`, icon: CheckCircle2, accentClass: 'border-indigo-500/20 bg-indigo-500/10 text-indigo-300' }, + { label: 'Dòng code thay đổi', value: `+${totalDiffAdditions || 248}`, helper: `-${totalDiffDeletions || 64} dòng được loại bỏ`, icon: Activity, accentClass: 'border-sky-500/20 bg-sky-500/10 text-sky-300' }, + { label: 'Bảo mật runtime', value: 'A+', helper: 'ReDoS Guard và SSH Gate active', icon: ShieldCheck, accentClass: 'border-amber-500/20 bg-amber-500/10 text-amber-300' }, + ]; + const wikiSections = [ + { title: 'Bắt đầu nhanh', desc: 'Kết nối repository, tạo webhook và chạy pipeline đầu tiên trong 10 phút.', icon: Rocket, tag: 'Onboarding' }, + { title: 'Kiến trúc hệ thống', desc: 'Runner, API gateway, Git storage, cache và luồng dữ liệu realtime.', icon: Layers3, tag: 'Architecture' }, + { title: 'Cấu hình CI/CD', desc: 'Chuẩn hóa .gitbot-ci.yml, stage, job, artifact và biến môi trường.', icon: Code2, tag: 'Pipeline' }, + { title: 'Bảo mật & quyền truy cập', desc: 'SSH gate, RBAC, secret rotation, audit log và ReDoS Guard.', icon: LockKeyhole, tag: 'Security' }, + ]; + const wikiToc = ['Tổng quan', 'Bắt đầu nhanh', 'Cấu hình mẫu', 'Quy ước review', 'Triển khai Vercel', 'FAQ']; + const selectedRepo = repos.find(r => r.id === currentRepoId) || repos[0]; const selectedPR = prs.find(p => p.id === currentPrId) || prs[0]; return (
- + {/* Dynamic Top bar Notification slide */} {notificationMsg && (
@@ -226,7 +258,7 @@ export default function App() { {/* Search Command Palette Trigger Button (Desktop Only) with Shortcuts Help */}
- - + {/* Tooltip dropdown on hover */}
@@ -282,27 +314,27 @@ export default function App() { {/* Viewport Simulation Mode Selector */}
- - +
{/* Inner Workspace Tabs container switch */} + {activeWorkspaceTab === 'wiki' && ( +
+
+
+
+
+ GitBot Wiki +
+

+ Trung tâm tài liệu vận hành +

+

+ Một trang wiki tối giản, hiện đại để đội kỹ thuật tra cứu kiến trúc, quy ước CI/CD, bảo mật và checklist triển khai Vercel. +

+
+
+
Version
+
v2.6 Docs
+
Cập nhật: 15/06/2026
+
+
+
+ +
+ + +
+
+
+
+ Overview +

GitBot giúp chuẩn hóa vòng đời pull request

+

+ Wiki này gom các hướng dẫn quan trọng vào một bề mặt sạch: cách chạy runner, review diff, kiểm tra pipeline và phát hành an toàn. +

+
+
+
Status
+
Production-ready
+
+
+
+ +
+ {wikiSections.map(section => { + const Icon = section.icon; + return ( +
+
+
+ +
+ {section.tag} +
+

{section.title}

+

{section.desc}

+
+ ); + })} +
+ +
+
+
+ Cấu hình mẫu +

.gitbot-ci.yml tối giản

+
+ Copy-ready +
+
{`stages: [lint, test, build, deploy]
+runner: gitbot-runner-core
+deploy:
+  provider: vercel
+  production: true`}
+
+ +
+ {[ + ['Review', 'Mỗi PR cần ít nhất 2 approval và không còn thread blocker.'], + ['Pipeline', 'Build production chỉ chạy khi lint, test và security scan hoàn tất.'], + ['Release', 'Canary 15% trước khi chuyển toàn bộ traffic sang production.'], + ].map(([title, body]) => ( +
+
{title}
+

{body}

+
+ ))} +
+
+
+
+ )} + + {activeWorkspaceTab === 'dashboard' && ( +
+
+
+
+
+
+
+ + Live Overview + +

+ Dashboard vận hành GitBot cho {selectedRepo?.name || 'workspace'} +

+

+ Theo dõi sức khỏe repository, PR, CI/CD, bảo mật và tiến độ rollout trong một màn hình tổng quan sẵn sàng triển khai Vercel. +

+
+
+ Release window +
Hôm nay
+
Canary → Production
+
+
+ +
+ {dashboardCards.map(card => { + const Icon = card.icon; + return ( +
+
+ {card.label} +
+ +
+
+
{card.value}
+

{card.helper}

+
+ ); + })} +
+
+
+ +
+
+
+
+

Luồng triển khai ưu tiên

+

Các bước quan trọng trước khi phát hành production.

+
+ +
+
+ {[ + ['Review PR trọng điểm', selectedPR?.title || 'Tối ưu parser yaml', 'Đang chờ 2 approval'], + ['CI/CD smoke test', 'Chạy regression trên runner core', 'Tự động trong 8 phút'], + ['Canary release', 'Đẩy 15% traffic qua Vercel edge', 'Theo dõi lỗi realtime'], + ].map(([title, desc, meta], index) => ( +
+
{index + 1}
+
+
{title}
+
{desc}
+
{meta}
+
+
+ ))} +
+
+ +
+
+ +

Tín hiệu hệ thống

+
+
+ {[ + ['API latency', '142ms', 'Ổn định'], + ['Webhook queue', '12 jobs', 'Đang xử lý'], + ['Uptime tháng này', '99.98%', 'SLA đạt'], + ['Cache hit-rate', '91%', 'Tối ưu'], + ].map(([label, value, status]) => ( +
+
+
{label}
+
{status}
+
+ {value} +
+ ))} +
+
+
+
+ )} + {activeWorkspaceTab === 'pr' && (
{/* File Dropdown Selector to switch files in diff files list */} @@ -469,8 +728,8 @@ export default function App() {
Xem tệp tin:
- setSelectedFilePath(e.target.value)} className="bg-transparent text-[10px] font-mono text-slate-300 outline-none border-none cursor-pointer outline-none" > @@ -764,7 +1111,7 @@ export default function App() {
{/* Mobile Diff code renderer */} - -
- { @@ -833,7 +1180,7 @@ export default function App() { } }} /> -
+ + + + + + +------MultipartBoundary--kxwvuFwyuMYcePAR51VZyTenwsfxKEx0HaVbZWicZr---- +Content-Type: image/svg+xml +Content-Transfer-Encoding: binary +Content-Location: https://fonts.gstatic.com/s/i/productlogos/translate/v14/24px.svg + + +------MultipartBoundary--kxwvuFwyuMYcePAR51VZyTenwsfxKEx0HaVbZWicZr---- +Content-Type: text/css +Content-Transfer-Encoding: binary +Content-Location: https://www.gstatic.com/_/translate_http/_/ss/k=translate_http.tr.zZZZhVqDDCw.L.W.O/am=BBCABg/d=0/rs=AN8SPfrkE3FGhJXryfBRpx1gYoqebAENWQ/m=el_main_css + +@charset "utf-8"; + +.VIpgJd-ZVi9od-ORHb-OEVmcd { left: 0px; top: 0px; height: 39px; width: 100%; z-index: 10000001; position: fixed; border-width: medium medium 1px; border-style: none none solid; border-color: currentcolor currentcolor rgb(107, 144, 218); border-image: initial; margin: 0px; box-shadow: rgb(153, 153, 153) 0px 0px 8px 1px; } + +.VIpgJd-ZVi9od-xl07Ob-OEVmcd { z-index: 10000002; border-width: medium; border-style: none; border-color: currentcolor; border-image: initial; position: fixed; box-shadow: rgb(153, 153, 153) 0px 3px 8px 2px; } + +.VIpgJd-ZVi9od-SmfZ-OEVmcd { z-index: 10000000; border-width: medium; border-style: none; border-color: currentcolor; border-image: initial; margin: 0px; } + +.goog-te-gadget { font-family: arial; font-size: 11px; color: rgb(102, 102, 102); white-space: nowrap; } + +.goog-te-gadget img { vertical-align: middle; border-width: medium; border-style: none; border-color: currentcolor; border-image: initial; } + +.goog-te-gadget-simple { background-color: rgb(255, 255, 255); border-width: 1px; border-style: solid; border-color: rgb(155, 155, 155) rgb(213, 213, 213) rgb(232, 232, 232); font-size: 10pt; display: inline-block; padding-top: 1px; padding-bottom: 2px; cursor: pointer; } + +.goog-te-gadget-icon { margin-left: 2px; margin-right: 2px; width: 19px; height: 19px; border-width: medium; border-style: none; border-color: currentcolor; border-image: initial; vertical-align: middle; } + +.goog-te-combo { margin-left: 4px; margin-right: 4px; vertical-align: baseline; } + +.goog-te-gadget .goog-te-combo { margin: 4px 0px; } + +.VIpgJd-ZVi9od-l4eHX-hSRGPd, .VIpgJd-ZVi9od-l4eHX-hSRGPd:active, .VIpgJd-ZVi9od-l4eHX-hSRGPd:hover, .VIpgJd-ZVi9od-l4eHX-hSRGPd:link, .VIpgJd-ZVi9od-l4eHX-hSRGPd:visited { font-size: 12px; font-weight: 700; color: rgb(68, 68, 68); text-decoration: none; } + +.VIpgJd-ZVi9od-ORHb .VIpgJd-ZVi9od-l4eHX-hSRGPd, .VIpgJd-ZVi9od-TvD9Pc-hSRGPd { display: block; margin: 0px 10px; } + +.VIpgJd-ZVi9od-ORHb .VIpgJd-ZVi9od-l4eHX-hSRGPd { padding-top: 2px; padding-left: 4px; } + +.VIpgJd-ZVi9od-ORHb *, .VIpgJd-ZVi9od-SmfZ *, .VIpgJd-ZVi9od-l9xktf *, .VIpgJd-ZVi9od-vH1Gmf *, .VIpgJd-ZVi9od-xl07Ob *, .goog-te-combo { font-family: arial; font-size: 10pt; } + +.VIpgJd-ZVi9od-ORHb { margin: 0px; background-color: rgb(228, 239, 251); overflow: hidden; } + +.VIpgJd-ZVi9od-ORHb img { border-width: medium; border-style: none; border-color: currentcolor; border-image: initial; } + +.VIpgJd-ZVi9od-ORHb-bN97Pc { color: rgb(0, 0, 0); } + +.VIpgJd-ZVi9od-ORHb-bN97Pc img { vertical-align: middle; } + +.VIpgJd-ZVi9od-ORHb-Tswv1b { color: rgb(102, 102, 102); vertical-align: top; margin-top: 0px; font-size: 7pt; } + +.VIpgJd-ZVi9od-ORHb-KE6vqe { width: 8px; } + +.VIpgJd-ZVi9od-LgbsSe { border-color: rgb(231, 231, 231); border-style: none solid solid none; border-width: 0px 1px 1px 0px; } + +.VIpgJd-ZVi9od-LgbsSe div { border-color: rgb(204, 204, 204) rgb(153, 153, 153) rgb(153, 153, 153) rgb(204, 204, 204); border-style: solid; border-width: 1px; height: 20px; } + +.VIpgJd-ZVi9od-LgbsSe button { background: transparent; border-width: medium; border-style: none; border-color: currentcolor; border-image: initial; cursor: pointer; height: 20px; overflow: hidden; margin: 0px; vertical-align: top; white-space: nowrap; } + +.VIpgJd-ZVi9od-LgbsSe button:active { background: none 0px 0px repeat scroll rgb(204, 204, 204); } + +.VIpgJd-ZVi9od-SmfZ { margin: 0px; background-color: rgb(255, 255, 255); white-space: nowrap; } + +.VIpgJd-ZVi9od-SmfZ-hSRGPd { text-decoration: none; font-weight: 700; font-size: 10pt; border: 1px outset rgb(136, 136, 136); padding: 6px 10px; white-space: nowrap; position: absolute; left: 0px; top: 0px; } + +.VIpgJd-ZVi9od-SmfZ-hSRGPd img { margin-left: 2px; margin-right: 2px; width: 19px; height: 19px; border-width: medium; border-style: none; border-color: currentcolor; border-image: initial; vertical-align: middle; } + +.VIpgJd-ZVi9od-SmfZ-hSRGPd span { text-decoration: underline; margin-left: 2px; margin-right: 2px; vertical-align: middle; } + +.goog-te-float-top .VIpgJd-ZVi9od-SmfZ-hSRGPd { padding: 2px; border-top-width: 0px; } + +.goog-te-float-bottom .VIpgJd-ZVi9od-SmfZ-hSRGPd { padding: 2px; border-bottom-width: 0px; } + +.VIpgJd-ZVi9od-xl07Ob-lTBxed { text-decoration: none; color: rgb(0, 0, 204); white-space: nowrap; margin-left: 4px; margin-right: 4px; } + +.VIpgJd-ZVi9od-xl07Ob-lTBxed span { text-decoration: underline; } + +.VIpgJd-ZVi9od-xl07Ob-lTBxed img { margin-left: 2px; margin-right: 2px; } + +.goog-te-gadget-simple .VIpgJd-ZVi9od-xl07Ob-lTBxed { color: rgb(0, 0, 0); } + +.goog-te-gadget-simple .VIpgJd-ZVi9od-xl07Ob-lTBxed span { text-decoration: none; } + +.VIpgJd-ZVi9od-xl07Ob { background-color: rgb(255, 255, 255); text-decoration: none; border: 2px solid rgb(195, 217, 255); overflow: hidden scroll; position: absolute; left: 0px; top: 0px; } + +.VIpgJd-ZVi9od-xl07Ob-ibnC6b { padding: 3px; text-decoration: none; } + +.VIpgJd-ZVi9od-xl07Ob-ibnC6b, .VIpgJd-ZVi9od-xl07Ob-ibnC6b:link { color: rgb(0, 0, 204); background: rgb(255, 255, 255); } + +.VIpgJd-ZVi9od-xl07Ob-ibnC6b:visited { color: rgb(85, 26, 139); } + +.VIpgJd-ZVi9od-xl07Ob-ibnC6b:hover { background: rgb(195, 217, 255); } + +.VIpgJd-ZVi9od-xl07Ob-ibnC6b:active { color: rgb(0, 0, 204); } + +.VIpgJd-ZVi9od-vH1Gmf { background-color: rgb(255, 255, 255); text-decoration: none; border: 1px solid rgb(107, 144, 218); overflow: hidden; padding: 4px; } + +.VIpgJd-ZVi9od-vH1Gmf-KrhPNb { width: 16px; } + +.VIpgJd-ZVi9od-vH1Gmf-hgDUwe { margin: 6px 0px; height: 1px; background-color: rgb(170, 170, 170); overflow: hidden; } + +.VIpgJd-ZVi9od-vH1Gmf-ibnC6b div, .VIpgJd-ZVi9od-vH1Gmf-ibnC6b-gk6SMd div { padding: 4px; } + +.VIpgJd-ZVi9od-vH1Gmf-ibnC6b .uDEFge { display: none; } + +.VIpgJd-ZVi9od-vH1Gmf-ibnC6b-gk6SMd .fmcmS { padding-left: 4px; padding-right: 4px; } + +.VIpgJd-ZVi9od-vH1Gmf-ibnC6b, .VIpgJd-ZVi9od-vH1Gmf-ibnC6b-gk6SMd { text-decoration: none; } + +.VIpgJd-ZVi9od-vH1Gmf-ibnC6b div, .VIpgJd-ZVi9od-vH1Gmf-ibnC6b:active div, .VIpgJd-ZVi9od-vH1Gmf-ibnC6b:link div, .VIpgJd-ZVi9od-vH1Gmf-ibnC6b:visited div { color: rgb(0, 0, 204); background: rgb(255, 255, 255); } + +.VIpgJd-ZVi9od-vH1Gmf-ibnC6b:hover div { color: rgb(255, 255, 255); background: rgb(51, 102, 204); } + +.VIpgJd-ZVi9od-vH1Gmf-ibnC6b-gk6SMd div, .VIpgJd-ZVi9od-vH1Gmf-ibnC6b-gk6SMd:active div, .VIpgJd-ZVi9od-vH1Gmf-ibnC6b-gk6SMd:hover div, .VIpgJd-ZVi9od-vH1Gmf-ibnC6b-gk6SMd:link div, .VIpgJd-ZVi9od-vH1Gmf-ibnC6b-gk6SMd:visited div { color: rgb(0, 0, 0); font-weight: 700; } + +.VIpgJd-ZVi9od-l9xktf { background-color: rgb(255, 255, 255); overflow: hidden; padding: 8px; border-width: medium; border-style: none; border-color: currentcolor; border-image: initial; border-radius: 10px; } + +.VIpgJd-ZVi9od-l9xktf-OEVmcd { background-color: rgb(255, 255, 255); border: 1px solid rgb(107, 144, 218); box-shadow: rgb(153, 153, 153) 0px 3px 8px 2px; border-radius: 8px; } + +.VIpgJd-ZVi9od-l9xktf img { border-width: medium; border-style: none; border-color: currentcolor; border-image: initial; } + +.VIpgJd-ZVi9od-l9xktf-fmcmS { margin-top: 6px; } + +.VIpgJd-ZVi9od-l9xktf-VgwJlc { margin-top: 6px; white-space: nowrap; } + +.VIpgJd-ZVi9od-l9xktf-VgwJlc * { vertical-align: middle; } + +.VIpgJd-ZVi9od-l9xktf-VgwJlc .DUGJie { background-image: url("https://www&google.com/images/zippy_minus_sm.gif"); } + +.VIpgJd-ZVi9od-l9xktf-VgwJlc .TdyTDe { background-image: url("https://www&google.com/images/zippy_plus_sm.gif"); } + +.VIpgJd-ZVi9od-l9xktf-VgwJlc span { color: rgb(0, 0, 204); text-decoration: underline; cursor: pointer; margin: 0px 4px; } + +.VIpgJd-ZVi9od-l9xktf-I9GLp { margin: 6px 0px 0px; } + +.VIpgJd-ZVi9od-l9xktf-I9GLp form { margin: 0px; } + +.VIpgJd-ZVi9od-l9xktf-I9GLp form textarea { margin-bottom: 4px; width: 100%; } + +.VIpgJd-ZVi9od-l9xktf-yePe5c { margin: 6px 0px 4px; } + +.VIpgJd-ZVi9od-aZ2wEe-wOHMyf { z-index: 1000; position: fixed; transition-delay: 0.6s; left: -1000px; top: -1000px; } + +.VIpgJd-ZVi9od-aZ2wEe-wOHMyf-ti6hGc { transition-delay: 0s; left: -14px; top: -14px; } + +.VIpgJd-ZVi9od-aZ2wEe-OiiCO { display: flex; -webkit-box-align: center; align-items: center; -webkit-box-pack: center; justify-content: center; width: 104px; height: 104px; border-radius: 50px; background: url("https://www.gstatic.com/images/branding/product/2x/translate_24dp.png") 50% 50% no-repeat rgb(255, 255, 255); transition: 0.6s ease-in-out; transform: scale(0.4); opacity: 0; } + +.VIpgJd-ZVi9od-aZ2wEe-OiiCO-ti6hGc { transform: scale(0.5); opacity: 1; } + +.VIpgJd-ZVi9od-aZ2wEe { margin: 2px 0px 0px 2px; animation: 1.4s linear 0s infinite normal none running spinner-rotator; } + +@-webkit-keyframes spinner-rotator { + 0% { transform: rotate(0deg); } + 100% { transform: rotate(270deg); } +} + +@keyframes spinner-rotator { + 0% { transform: rotate(0deg); } + 100% { transform: rotate(270deg); } +} + +.VIpgJd-ZVi9od-aZ2wEe-Jt5cK { stroke-dasharray: 187; stroke-dashoffset: 0; stroke: rgb(66, 133, 244); transform-origin: center center; animation: 1.4s ease-in-out 0s infinite normal none running spinner-dash; } + +@-webkit-keyframes spinner-dash { + 0% { stroke-dashoffset: 187; } + 50% { stroke-dashoffset: 46.75; transform: rotate(135deg); } + 100% { stroke-dashoffset: 187; transform: rotate(450deg); } +} + +@keyframes spinner-dash { + 0% { stroke-dashoffset: 187; } + 50% { stroke-dashoffset: 46.75; transform: rotate(135deg); } + 100% { stroke-dashoffset: 187; transform: rotate(450deg); } +} + +.VIpgJd-yAWNEb-L7lbkb a, .VIpgJd-yAWNEb-L7lbkb body, .VIpgJd-yAWNEb-L7lbkb div, .VIpgJd-yAWNEb-L7lbkb form, .VIpgJd-yAWNEb-L7lbkb h1, .VIpgJd-yAWNEb-L7lbkb h2, .VIpgJd-yAWNEb-L7lbkb h3, .VIpgJd-yAWNEb-L7lbkb h4, .VIpgJd-yAWNEb-L7lbkb h5, .VIpgJd-yAWNEb-L7lbkb h6, .VIpgJd-yAWNEb-L7lbkb html, .VIpgJd-yAWNEb-L7lbkb iframe, .VIpgJd-yAWNEb-L7lbkb img, .VIpgJd-yAWNEb-L7lbkb li, .VIpgJd-yAWNEb-L7lbkb ol, .VIpgJd-yAWNEb-L7lbkb p, .VIpgJd-yAWNEb-L7lbkb span, .VIpgJd-yAWNEb-L7lbkb table, .VIpgJd-yAWNEb-L7lbkb tbody, .VIpgJd-yAWNEb-L7lbkb td, .VIpgJd-yAWNEb-L7lbkb tr, .VIpgJd-yAWNEb-L7lbkb ul { color-scheme: unset; forced-color-adjust: unset; math-depth: unset; position: unset; position-anchor: unset; text-size-adjust: unset; appearance: unset; color: unset; font-family: unset; font-feature-settings: unset; font-kerning: unset; font-language-override: unset; font-optical-sizing: unset; font-palette: unset; font-size-adjust: unset; font-stretch: unset; font-style: unset; font-synthesis: unset; font-variant: unset; font-variation-settings: unset; font-weight: unset; position-area: unset; text-orientation: unset; text-rendering: unset; text-spacing-trim: unset; -webkit-font-smoothing: unset; -webkit-locale: unset; -webkit-text-orientation: unset; -webkit-writing-mode: unset; writing-mode: unset; zoom: unset; accent-color: unset; place-content: unset; place-items: unset; place-self: unset; alignment-baseline: unset; anchor-name: unset; anchor-scope: unset; animation-composition: unset; animation: unset; animation-trigger: unset; app-region: unset; aspect-ratio: unset; backdrop-filter: unset; backface-visibility: unset; background: unset; background-blend-mode: unset; baseline-shift: unset; baseline-source: unset; block-size: unset; border-block: unset; border: unset; border-radius: unset; border-collapse: unset; border-end-end-radius: unset; border-end-start-radius: unset; border-inline: unset; border-shape: unset; border-start-end-radius: unset; border-start-start-radius: unset; inset: unset; box-decoration-break: unset; box-shadow: unset; box-sizing: unset; break-after: unset; break-before: unset; break-inside: unset; buffered-rendering: unset; caption-side: unset; caret-animation: unset; caret-color: unset; caret-shape: unset; clear: unset; clip: unset; clip-path: unset; clip-rule: unset; color-interpolation: unset; color-interpolation-filters: unset; color-rendering: unset; columns: unset; column-fill: unset; gap: unset; rule-break: unset; rule: unset; rule-inset: unset; rule-visibility-items: unset; column-span: unset; contain: unset; contain-intrinsic-block-size: unset; contain-intrinsic-size: unset; contain-intrinsic-inline-size: unset; container: unset; content: unset; content-visibility: unset; corner-shape: unset; corner-block-end-shape: unset; corner-block-start-shape: unset; counter-increment: unset; counter-reset: unset; counter-set: unset; cursor: unset; cx: unset; cy: unset; d: unset; display: unset; dominant-baseline: unset; dynamic-range-limit: unset; empty-cells: unset; field-sizing: unset; fill: unset; fill-opacity: unset; fill-rule: unset; filter: unset; flex: unset; flex-flow: unset; float: unset; flood-color: unset; flood-opacity: unset; grid: unset; grid-area: unset; height: unset; hyphenate-character: unset; hyphenate-limit-chars: unset; hyphens: unset; image-orientation: unset; image-rendering: unset; initial-letter: unset; inline-size: unset; inset-block: unset; inset-inline: unset; interactivity: unset; interest-delay: unset; interpolate-size: unset; isolation: unset; letter-spacing: unset; lighting-color: unset; line-break: unset; list-style: unset; margin-block: unset; margin: unset; margin-inline: unset; marker: unset; mask: unset; mask-type: unset; math-shift: unset; math-style: unset; max-block-size: unset; max-height: unset; max-inline-size: unset; max-width: unset; min-block-size: unset; min-height: unset; min-inline-size: unset; min-width: unset; mix-blend-mode: unset; object-fit: unset; object-position: unset; object-view-box: unset; offset: unset; opacity: unset; order: unset; orphans: unset; outline: unset; outline-offset: unset; overflow-anchor: unset; overflow-block: unset; overflow-clip-margin: unset; overflow-inline: unset; overflow-wrap: unset; overflow: unset; overlay: unset; overscroll-behavior-block: unset; overscroll-behavior-inline: unset; overscroll-behavior: unset; padding-block: unset; padding: unset; padding-inline: unset; page: unset; page-orientation: unset; paint-order: unset; perspective: unset; perspective-origin: unset; pointer-events: unset; position-try: unset; position-visibility: unset; print-color-adjust: unset; quotes: unset; r: unset; reading-flow: unset; reading-order: unset; resize: unset; rotate: unset; ruby-align: unset; ruby-position: unset; rule-overlap: unset; rx: unset; ry: unset; scale: unset; scroll-behavior: unset; scroll-initial-target: unset; scroll-margin-block: unset; scroll-margin: unset; scroll-margin-inline: unset; scroll-marker-group: unset; scroll-padding-block: unset; scroll-padding: unset; scroll-padding-inline: unset; scroll-snap-align: unset; scroll-snap-stop: unset; scroll-snap-type: unset; scroll-target-group: unset; scroll-timeline: unset; scrollbar-color: unset; scrollbar-gutter: unset; scrollbar-width: unset; shape-image-threshold: unset; shape-margin: unset; shape-outside: unset; shape-rendering: unset; size: unset; speak: unset; stop-color: unset; stop-opacity: unset; stroke: unset; stroke-dasharray: unset; stroke-dashoffset: unset; stroke-linecap: unset; stroke-linejoin: unset; stroke-miterlimit: unset; stroke-opacity: unset; stroke-width: unset; tab-size: unset; table-layout: unset; text-align: unset; text-align-last: unset; text-anchor: unset; text-autospace: unset; text-box: unset; text-combine-upright: unset; text-decoration: unset; text-decoration-skip-ink: unset; text-emphasis: unset; text-emphasis-position: unset; text-indent: unset; text-justify: unset; text-overflow: unset; text-shadow: unset; text-transform: unset; text-underline-offset: unset; text-underline-position: unset; text-wrap: unset; timeline-scope: unset; timeline-trigger: unset; touch-action: unset; transform: unset; transform-box: unset; transform-origin: unset; transform-style: unset; transition: unset; translate: unset; trigger-scope: unset; user-select: unset; vector-effect: unset; vertical-align: unset; view-timeline: unset; view-transition-class: unset; view-transition-group: unset; view-transition-name: unset; view-transition-scope: unset; visibility: unset; border-spacing: unset; -webkit-box-align: unset; -webkit-box-decoration-break: unset; -webkit-box-direction: unset; -webkit-box-flex: unset; -webkit-box-ordinal-group: unset; -webkit-box-orient: unset; -webkit-box-pack: unset; -webkit-box-reflect: unset; -webkit-line-break: unset; -webkit-line-clamp: unset; -webkit-mask-box-image: unset; -webkit-rtl-ordering: unset; -webkit-ruby-position: unset; -webkit-tap-highlight-color: unset; -webkit-text-combine: unset; -webkit-text-decorations-in-effect: unset; -webkit-text-fill-color: unset; -webkit-text-security: unset; -webkit-text-stroke: unset; -webkit-user-drag: unset; white-space-collapse: unset; widows: unset; width: unset; will-change: unset; word-break: unset; word-spacing: unset; x: unset; y: unset; z-index: unset; font-size: 100%; line-height: normal; } + +.VIpgJd-yAWNEb-L7lbkb ol, .VIpgJd-yAWNEb-L7lbkb ul { list-style: none; } + +.VIpgJd-yAWNEb-L7lbkb table { border-collapse: collapse; border-spacing: 0px; } + +.VIpgJd-yAWNEb-L7lbkb caption, .VIpgJd-yAWNEb-L7lbkb td, .VIpgJd-yAWNEb-L7lbkb th { text-align: left; font-weight: 400; } + +div > .VIpgJd-yAWNEb-L7lbkb { padding: 10px 14px; } + +.VIpgJd-yAWNEb-L7lbkb { color: rgb(34, 34, 34); background-color: rgb(255, 255, 255); border: 1px solid rgb(238, 238, 238); box-shadow: rgba(0, 0, 0, 0.2) 0px 4px 16px; display: none; font-family: arial; font-size: 10pt; width: 420px; padding: 12px; position: absolute; z-index: 10000; } + +.VIpgJd-yAWNEb-L7lbkb .VIpgJd-yAWNEb-nVMfcd-fmcmS, .VIpgJd-yAWNEb-yAWNEb-Vy2Aqc-pbTTYe { clear: both; font-size: 10pt; position: relative; text-align: justify; width: 100%; } + +.VIpgJd-yAWNEb-L7lbkb .VIpgJd-yAWNEb-r4nke { color: rgb(153, 153, 153); font-family: arial, sans-serif; margin: 4px 0px; text-align: left; } + +.VIpgJd-yAWNEb-L7lbkb .VIpgJd-yAWNEb-TvD9Pc-LgbsSe { display: none; } + +.VIpgJd-yAWNEb-L7lbkb .VIpgJd-yAWNEb-l4eHX { float: left; margin: 0px; } + +.VIpgJd-yAWNEb-L7lbkb .VIpgJd-yAWNEb-Z0Arqf-PLDbbf { display: inline-block; } + +.VIpgJd-yAWNEb-L7lbkb .VIpgJd-yAWNEb-fw42Ze-Z0Arqf-haAclf { display: none; width: 100%; } + +.VIpgJd-yAWNEb-L7lbkb .VIpgJd-yAWNEb-Z0Arqf-H9tDt { margin-top: 20px; } + +.VIpgJd-yAWNEb-L7lbkb .VIpgJd-yAWNEb-LK5yu { float: left; } + +.VIpgJd-yAWNEb-L7lbkb .VIpgJd-yAWNEb-qwU8Me { float: right; } + +.VIpgJd-yAWNEb-L7lbkb .VIpgJd-yAWNEb-cGMI2b { min-height: 15px; position: relative; height: 1%; } + +.VIpgJd-yAWNEb-L7lbkb .VIpgJd-yAWNEb-jOfkMb-Ne3sFf { background: rgb(41, 145, 13); border-radius: 4px; box-shadow: rgb(30, 102, 9) 0px 2px 2px inset; color: white; font-size: 9pt; font-weight: bolder; margin-top: 12px; padding: 6px; text-shadow: rgb(30, 102, 9) 1px 1px 1px; } + +.VIpgJd-yAWNEb-L7lbkb .VIpgJd-yAWNEb-Z0Arqf-hSRGPd { color: rgb(17, 85, 204); cursor: pointer; font-family: arial; font-size: 11px; margin-right: 15px; text-decoration: none; } + +.VIpgJd-yAWNEb-L7lbkb > textarea { font-family: arial; resize: vertical; width: 100%; margin-bottom: 10px; border-radius: 1px; border-width: 1px; border-style: solid; border-color: silver rgb(217, 217, 217) rgb(217, 217, 217); border-image: initial; font-size: 13px; height: auto; overflow-y: auto; padding: 1px; } + +.VIpgJd-yAWNEb-L7lbkb textarea:focus { box-shadow: rgba(0, 0, 0, 0.3) 0px 1px 2px inset; border: 1px solid rgb(77, 144, 254); outline: none; } + +.VIpgJd-yAWNEb-L7lbkb .VIpgJd-yAWNEb-Z0Arqf-IbE0S { margin-right: 10px; } + +.VIpgJd-yAWNEb-L7lbkb .VIpgJd-yAWNEb-L4Nn5e-I9GLp { min-height: 25px; vertical-align: middle; padding-top: 8px; } + +.VIpgJd-yAWNEb-L7lbkb .VIpgJd-yAWNEb-L4Nn5e-I9GLp .VIpgJd-yAWNEb-Z0Arqf-I9GLp { margin-bottom: 0px; } + +.VIpgJd-yAWNEb-L7lbkb .VIpgJd-yAWNEb-L4Nn5e-I9GLp .VIpgJd-yAWNEb-Z0Arqf-I9GLp input { display: inline-block; min-width: 54px; border: 1px solid rgba(0, 0, 0, 0.1); text-align: center; color: rgb(68, 68, 68); font-size: 11px; font-weight: 700; height: 27px; outline: 0px; padding: 0px 8px; vertical-align: middle; line-height: 27px; margin: 0px 16px 0px 0px; box-shadow: rgba(0, 0, 0, 0.1) 0px 1px 2px; border-radius: 2px; transition: 0.218s; background-color: rgb(245, 245, 245); background-image: -webkit-linear-gradient(top, rgb(245, 245, 245), rgb(241, 241, 241)); user-select: none; cursor: default; } + +.VIpgJd-yAWNEb-L7lbkb .VIpgJd-yAWNEb-L4Nn5e-I9GLp .VIpgJd-yAWNEb-Z0Arqf-I9GLp input:hover { border: 1px solid rgb(198, 198, 198); color: rgb(34, 34, 34); transition: all; background-color: rgb(248, 248, 248); background-image: -webkit-linear-gradient(top, rgb(248, 248, 248), rgb(241, 241, 241)); } + +.VIpgJd-yAWNEb-L7lbkb .VIpgJd-yAWNEb-L4Nn5e-I9GLp .VIpgJd-yAWNEb-Z0Arqf-I9GLp input:active { border: 1px solid rgb(198, 198, 198); color: rgb(51, 51, 51); background-color: rgb(246, 246, 246); background-image: -webkit-linear-gradient(top, rgb(246, 246, 246), rgb(241, 241, 241)); } + +.VIpgJd-yAWNEb-L7lbkb .VIpgJd-yAWNEb-L4Nn5e-I9GLp .VIpgJd-yAWNEb-Z0Arqf-I9GLp input:focus .VIpgJd-yAWNEb-L7lbkb .VIpgJd-yAWNEb-L4Nn5e-I9GLp .VIpgJd-yAWNEb-Z0Arqf-I9GLp input.AHmuwe .VIpgJd-yAWNEb-L7lbkb .VIpgJd-yAWNEb-L4Nn5e-I9GLp .VIpgJd-yAWNEb-Z0Arqf-I9GLp input:active, .VIpgJd-yAWNEb-L7lbkb .VIpgJd-yAWNEb-L4Nn5e-I9GLp .VIpgJd-yAWNEb-Z0Arqf-I9GLp input:focus:active { box-shadow: rgba(255, 255, 255, 0.5) 0px 0px 0px 1px inset; } + +.VIpgJd-yAWNEb-L7lbkb .VIpgJd-yAWNEb-L4Nn5e-I9GLp .VIpgJd-yAWNEb-Z0Arqf-I9GLp input.AHmuwe, .VIpgJd-yAWNEb-L7lbkb .VIpgJd-yAWNEb-L4Nn5e-I9GLp .VIpgJd-yAWNEb-Z0Arqf-I9GLp input:focus { outline: none; border: 1px solid rgb(77, 144, 254); z-index: 4 !important; } + +.VIpgJd-yAWNEb-L7lbkb .VIpgJd-yAWNEb-L4Nn5e-I9GLp .VIpgJd-yAWNEb-Z0Arqf-I9GLp input.gk6SMd { background-color: rgb(238, 238, 238); background-image: -webkit-linear-gradient(top, rgb(238, 238, 238), rgb(224, 224, 224)); box-shadow: rgba(0, 0, 0, 0.1) 0px 1px 2px inset; border: 1px solid rgb(204, 204, 204); color: rgb(51, 51, 51); } + +.VIpgJd-yAWNEb-L7lbkb .VIpgJd-yAWNEb-L4Nn5e-I9GLp .VIpgJd-yAWNEb-Z0Arqf-I9GLp input .VIpgJd-yAWNEb-Z0Arqf-sFeBqf { color: white; border-color: rgb(48, 121, 237); background-color: rgb(77, 144, 254); background-image: -webkit-linear-gradient(top, rgb(77, 144, 254), rgb(71, 135, 237)); } + +.VIpgJd-yAWNEb-L7lbkb .VIpgJd-yAWNEb-L4Nn5e-I9GLp .VIpgJd-yAWNEb-Z0Arqf-I9GLp input .VIpgJd-yAWNEb-Z0Arqf-sFeBqf.AHmuwe .VIpgJd-yAWNEb-L7lbkb .VIpgJd-yAWNEb-L4Nn5e-I9GLp .VIpgJd-yAWNEb-Z0Arqf-I9GLp input .VIpgJd-yAWNEb-Z0Arqf-sFeBqf:active, .VIpgJd-yAWNEb-L7lbkb .VIpgJd-yAWNEb-L4Nn5e-I9GLp .VIpgJd-yAWNEb-Z0Arqf-I9GLp input .VIpgJd-yAWNEb-Z0Arqf-sFeBqf:hover .VIpgJd-yAWNEb-L7lbkb .VIpgJd-yAWNEb-L4Nn5e-I9GLp .VIpgJd-yAWNEb-Z0Arqf-I9GLp input .VIpgJd-yAWNEb-Z0Arqf-sFeBqf:focus { border-color: rgb(48, 121, 237); background-color: rgb(53, 122, 232); background-image: -webkit-linear-gradient(top, rgb(77, 144, 254), rgb(53, 122, 232)); } + +.VIpgJd-yAWNEb-L7lbkb .VIpgJd-yAWNEb-L4Nn5e-I9GLp .VIpgJd-yAWNEb-Z0Arqf-I9GLp input .VIpgJd-yAWNEb-Z0Arqf-sFeBqf:hover { box-shadow: rgb(255, 255, 255) 0px 0px 0px 1px inset, rgba(0, 0, 0, 0.1) 0px 1px 1px; } + +.VIpgJd-yAWNEb-L7lbkb .VIpgJd-yAWNEb-L4Nn5e-I9GLp .VIpgJd-yAWNEb-Z0Arqf-I9GLp input .VIpgJd-yAWNEb-Z0Arqf-sFeBqf.AHmuwe, .VIpgJd-yAWNEb-L7lbkb .VIpgJd-yAWNEb-L4Nn5e-I9GLp .VIpgJd-yAWNEb-Z0Arqf-I9GLp input .VIpgJd-yAWNEb-Z0Arqf-sFeBqf:active, .VIpgJd-yAWNEb-L7lbkb .VIpgJd-yAWNEb-L4Nn5e-I9GLp .VIpgJd-yAWNEb-Z0Arqf-I9GLp input .VIpgJd-yAWNEb-Z0Arqf-sFeBqf:focus, .VIpgJd-yAWNEb-L7lbkb .VIpgJd-yAWNEb-L4Nn5e-I9GLp .VIpgJd-yAWNEb-Z0Arqf-I9GLp input .VIpgJd-yAWNEb-Z0Arqf-sFeBqf:hover, .VIpgJd-yAWNEb-L7lbkb .VIpgJd-yAWNEb-L4Nn5e-I9GLp .VIpgJd-yAWNEb-Z0Arqf-I9GLp input.AHmuwe, .VIpgJd-yAWNEb-L7lbkb .VIpgJd-yAWNEb-L4Nn5e-I9GLp .VIpgJd-yAWNEb-Z0Arqf-I9GLp input:active, .VIpgJd-yAWNEb-L7lbkb .VIpgJd-yAWNEb-L4Nn5e-I9GLp .VIpgJd-yAWNEb-Z0Arqf-I9GLp input:focus, .VIpgJd-yAWNEb-L7lbkb .VIpgJd-yAWNEb-L4Nn5e-I9GLp .VIpgJd-yAWNEb-Z0Arqf-I9GLp input:hover { border-color: rgb(48, 121, 237); } + +.VIpgJd-yAWNEb-L7lbkb .VIpgJd-yAWNEb-mrxPge { color: rgb(153, 153, 153); font-family: arial, sans-serif; } + +.VIpgJd-yAWNEb-L7lbkb .VIpgJd-yAWNEb-IFdKyd-W0vJo-fmcmS { color: rgb(153, 153, 153); font-size: 11px; font-family: arial, sans-serif; margin: 15px 0px 5px; } + +.VIpgJd-yAWNEb-L7lbkb .VIpgJd-yAWNEb-IFdKyd-u0pjoe-fmcmS { color: rgb(136, 0, 0); display: none; font-size: 9pt; } + +.VIpgJd-yAWNEb-VIpgJd-fmcmS-sn54Q { background-color: rgb(201, 215, 241); box-shadow: rgb(153, 153, 170) 2px 2px 4px; box-sizing: border-box; position: relative; } + +.VIpgJd-yAWNEb-L7lbkb .VIpgJd-yAWNEb-IFdKyd-xl07Ob .VIpgJd-yAWNEb-VIpgJd-xl07Ob { background: rgb(255, 255, 255); border: 1px solid rgb(221, 221, 221); box-shadow: rgb(153, 153, 170) 0px 2px 4px; min-width: 0px; outline: none; padding: 0px; position: absolute; z-index: 2000; } + +.VIpgJd-yAWNEb-L7lbkb .VIpgJd-yAWNEb-IFdKyd-xl07Ob .VIpgJd-yAWNEb-VIpgJd-j7LFlb { cursor: pointer; padding: 2px 5px 5px; margin-right: 0px; border-style: none; } + +.VIpgJd-yAWNEb-L7lbkb .VIpgJd-yAWNEb-IFdKyd-xl07Ob .VIpgJd-yAWNEb-VIpgJd-j7LFlb:hover { background: rgb(221, 221, 221); } + +.VIpgJd-yAWNEb-L7lbkb .VIpgJd-yAWNEb-IFdKyd-xl07Ob .VIpgJd-yAWNEb-VIpgJd-j7LFlb h1 { font-size: 100%; font-weight: 700; margin: 4px 0px; } + +.VIpgJd-yAWNEb-L7lbkb .VIpgJd-yAWNEb-IFdKyd-xl07Ob .VIpgJd-yAWNEb-VIpgJd-j7LFlb strong { color: rgb(52, 90, 173); } + +.VIpgJd-yAWNEb-L7lbkb .VIpgJd-yAWNEb-VIpgJd-eKm5Fc-hFsbo { text-align: right; position: absolute; right: 0px; left: auto; } + +.VIpgJd-yAWNEb-L7lbkb .VIpgJd-yAWNEb-VIpgJd-j7LFlb-SIsrTd .VIpgJd-yAWNEb-VIpgJd-eKm5Fc-hFsbo { text-align: left; position: absolute; left: 0px; right: auto; } + +.VIpgJd-yAWNEb-L7lbkb .VIpgJd-yAWNEb-TVLw9c-ppHlrf-sn54Q, .VIpgJd-yAWNEb-L7lbkb .VIpgJd-yAWNEb-yAWNEb-Vy2Aqc-fmcmS { background-color: rgb(241, 234, 0); border-radius: 4px; box-shadow: rgba(0, 0, 0, 0.5) 3px 3px 4px; box-sizing: border-box; color: rgb(241, 234, 0); cursor: pointer; margin: -2px -2px -2px -3px; padding: 2px 2px 2px 3px; position: relative; } + +.VIpgJd-yAWNEb-L7lbkb .VIpgJd-yAWNEb-TVLw9c-ppHlrf-sn54Q { color: rgb(34, 34, 34); } + +.VIpgJd-yAWNEb-L7lbkb .VIpgJd-yAWNEb-yAWNEb-Vy2Aqc-pbTTYe { color: white; position: absolute !important; } + +.VIpgJd-yAWNEb-L7lbkb .VIpgJd-yAWNEb-TVLw9c-ppHlrf, .VIpgJd-yAWNEb-L7lbkb .VIpgJd-yAWNEb-TVLw9c-ppHlrf .VIpgJd-yAWNEb-TVLw9c-ppHlrf-sn54Q { background-color: rgb(201, 215, 241); border-radius: 4px 4px 0px 0px; box-shadow: rgba(0, 0, 0, 0.5) 3px 3px 4px; box-sizing: border-box; cursor: pointer; margin: -2px -2px -2px -3px; padding: 2px 2px 3px 3px; position: relative; } + +.VIpgJd-yAWNEb-L7lbkb span:focus { outline: none; } + +.VIpgJd-yAWNEb-L7lbkb .VIpgJd-yAWNEb-TVLw9c-DyVDA { background-color: transparent; border: 1px solid rgb(77, 144, 254); border-radius: 0px; margin: -2px; padding: 1px; } + +.VIpgJd-yAWNEb-L7lbkb .VIpgJd-yAWNEb-yAWNEb-TVLw9c-sn54Q-LzX3ef { border-left: 2px solid red; margin-left: -2px; } + +.VIpgJd-yAWNEb-L7lbkb .VIpgJd-yAWNEb-yAWNEb-TVLw9c-sn54Q-YIAiIb { border-right: 2px solid red; margin-right: -2px; } + +.VIpgJd-yAWNEb-L7lbkb .VIpgJd-yAWNEb-IFdKyd-YPqjbf { padding: 2px; } + +.VIpgJd-yAWNEb-L7lbkb .VIpgJd-yAWNEb-IFdKyd-YPqjbf-fmcmS { font-size: 11px; padding: 2px 2px 3px; margin: 0px; background-color: rgb(255, 255, 255); color: rgb(51, 51, 51); border-width: 1px; border-style: solid; border-color: rgb(192, 192, 192) rgb(217, 217, 217) rgb(217, 217, 217); border-image: initial; display: inline-block; vertical-align: top; height: 21px; box-sizing: border-box; border-radius: 1px; } + +.VIpgJd-yAWNEb-L7lbkb .VIpgJd-yAWNEb-IFdKyd-YPqjbf-fmcmS:hover { border-width: 1px; border-style: solid; border-color: rgb(160, 160, 160) rgb(185, 185, 185) rgb(185, 185, 185); border-image: initial; box-shadow: rgba(0, 0, 0, 0.1) 0px 1px 2px inset; } + +.VIpgJd-yAWNEb-L7lbkb .VIpgJd-yAWNEb-IFdKyd-YPqjbf-fmcmS:focus { box-shadow: rgba(0, 0, 0, 0.3) 0px 1px 2px inset; outline: none; border: 1px solid rgb(77, 144, 254); } + +.VIpgJd-yAWNEb-L7lbkb .VIpgJd-yAWNEb-IFdKyd-YPqjbf-sFeBqf { font-size: 11px; padding: 2px 6px 3px; margin: 0px 0px 0px 2px; height: 21px; } + +.VIpgJd-yAWNEb-L7lbkb > div { display: flex; -webkit-box-orient: vertical; -webkit-box-direction: normal; flex-direction: column; font-family: "Google Sans", Arial, sans-serif; } + +.VIpgJd-yAWNEb-hvhgNd .VIpgJd-yAWNEb-hvhgNd-Ud7fr { display: flex; -webkit-box-align: end; align-items: end; margin: 14px; } + +.VIpgJd-yAWNEb-hvhgNd .VIpgJd-yAWNEb-hvhgNd-IuizWc-SIsrTd { margin-right: 14px; color: rgb(116, 119, 117); font-size: 14px; font-weight: 500; } + +.VIpgJd-yAWNEb-hvhgNd .VIpgJd-yAWNEb-hvhgNd-IuizWc-i3jM8c { margin-left: 14px; color: rgb(116, 119, 117); font-size: 14px; font-weight: 500; } + +.VIpgJd-yAWNEb-hvhgNd .VIpgJd-yAWNEb-hvhgNd-k77Iif { margin: 0px 16px 16px; } + +.VIpgJd-yAWNEb-hvhgNd .VIpgJd-yAWNEb-hvhgNd-axAV1 { width: auto; color: rgb(31, 31, 31); font-size: 16px; text-align: initial; } + +.VIpgJd-yAWNEb-hvhgNd .VIpgJd-yAWNEb-hvhgNd-axAV1 .VIpgJd-yAWNEb-SIsrTd { text-align: right; } + +.VIpgJd-yAWNEb-hvhgNd .VIpgJd-yAWNEb-hvhgNd-N7Eqid { border-radius: 0px 0px 12px 12px; margin: 0px; background: rgb(241, 244, 249); position: relative; min-height: 50px; } + +.VIpgJd-yAWNEb-hvhgNd .VIpgJd-yAWNEb-hvhgNd-N7Eqid .VIpgJd-yAWNEb-SIsrTd { text-align: right; } + +.VIpgJd-yAWNEb-hvhgNd .VIpgJd-yAWNEb-hvhgNd-N7Eqid-B7I4Od { display: flex; -webkit-box-orient: vertical; -webkit-box-direction: normal; flex-direction: column; width: 77%; padding: 12px; } + +.VIpgJd-yAWNEb-hvhgNd .VIpgJd-yAWNEb-hvhgNd-N7Eqid-B7I4Od .VIpgJd-yAWNEb-SIsrTd { text-align: right; } + +.VIpgJd-yAWNEb-hvhgNd .VIpgJd-yAWNEb-hvhgNd-UTujCb { color: rgb(31, 31, 31); font-size: 12px; font-weight: 500; } + +.VIpgJd-yAWNEb-hvhgNd .VIpgJd-yAWNEb-hvhgNd-N7Eqid-B7I4Od .VIpgJd-yAWNEb-SIsrTd .VIpgJd-yAWNEb-hvhgNd-UTujCb { text-align: right; } + +.VIpgJd-yAWNEb-hvhgNd .VIpgJd-yAWNEb-hvhgNd-eO9mKe { color: rgb(68, 71, 70); font-size: 12px; padding-top: 4px; } + +.VIpgJd-yAWNEb-hvhgNd .VIpgJd-yAWNEb-hvhgNd-N7Eqid-B7I4Od .VIpgJd-yAWNEb-SIsrTd .VIpgJd-yAWNEb-hvhgNd-eO9mKe { text-align: right; } + +.VIpgJd-yAWNEb-hvhgNd .VIpgJd-yAWNEb-hvhgNd-xgov5 { position: absolute; top: 10px; right: 5px; } + +.VIpgJd-yAWNEb-hvhgNd .VIpgJd-yAWNEb-hvhgNd-xgov5 .VIpgJd-yAWNEb-SIsrTd { left: 5px; right: auto; } + +.VIpgJd-yAWNEb-hvhgNd .VIpgJd-yAWNEb-hvhgNd-THI6Vb { fill: rgb(11, 87, 208); } + +.VIpgJd-yAWNEb-hvhgNd .VIpgJd-yAWNEb-hvhgNd-bgm6sf { margin: -4px 2px 0px 0px; padding: 2px 0px 0px; width: 48px; height: 48px; border-width: medium; border-style: none; border-color: currentcolor; border-image: initial; border-radius: 24px; cursor: pointer; background: none; } + +.VIpgJd-yAWNEb-hvhgNd .VIpgJd-yAWNEb-hvhgNd-bgm6sf:hover { background: rgb(232, 235, 236); } + +.VIpgJd-yAWNEb-hvhgNd .VIpgJd-yAWNEb-hvhgNd-aXYTce { display: none; } + +sentinel { } +------MultipartBoundary--kxwvuFwyuMYcePAR51VZyTenwsfxKEx0HaVbZWicZr---- +Content-Type: image/png +Content-Transfer-Encoding: binary +Content-Location: https://choosealicense.com/assets/img/home-sprite@2x.png + +PNG + + IHDRl\PLTEҋ(tRNS@fbKGDH pHYs  tIMEsIDATxۿUGsNjn%lqjm\XaB1"q `%hF+X($&HXjlbggg?&?ݽw93gfkvߝ>ߗ'~%x% %,e{"7W^):~gMzZo:f9m,tL:Kjȧʀ.FA[\ I] MXLJC~6,|  #+ߕAxl c}Agȧ-+QK#[zN"ruJЇcE*KY|pr=@^DW?#pn\. Ya}5D8nq2Pd"zh~ +ҳ~mNġ.(j;AE\DwnKrDM,MA{vBޞIIa,kCH)Z4sRa'٢>t35X/I%_`׏I `(Xk[J\/*14) ӓ>OX{׆8$%ꇜ\ڞw@)bո`$\.rL܇Z"Žswb1q֥WvCYugE?&OQCx8s1}`W3A)4bx b鉯:zl[h8;0s]tAsоh B| &0} B ݢ8= a { text-decoration: none; } + +.triptych h3 { font-size: 1.375rem; margin: 0px auto 20px; width: 220px; } + +.situations .existing { margin-top: 16px; } + +.situations .whatever { margin-top: 16px; } + +.situations .copyleft { margin-top: 3px; } + +.situations .button { margin-top: 20px; } + +.triptych-sprite { background-image: url("../img/home-sprite.png"); background-repeat: no-repeat; display: inline-block; } + +.three-arrows { background-position: 0px 0px; width: 72px; height: 56px; } + +.community { background-position: 0px -57px; width: 72px; height: 56px; } + +.circular { background-position: 0px -115px; width: 72px; height: 68px; } + +.license-overview { clear: both; margin-bottom: 40px; } + +.license-overview-heading { float: left; width: 35%; } + +.license-details { box-sizing: border-box; float: left; width: 55%; padding-left: 20px; } + +.license-page-details { box-sizing: border-box; } + +.license-overview-name { font-size: 1.75rem; margin-top: 5px; } + +.license-overview-description { color: rgb(85, 85, 85); } + +.license-rules { border-bottom: 1px solid rgb(221, 221, 221); font-size: 0.8125rem; line-height: 1.3; margin-bottom: 12px; width: 100%; } + +.license-rules th, .license-rules td { width: 33%; } + +.license-rules th { font-size: 0.9375rem; padding: 5px 10px 5px 0px; vertical-align: bottom; } + +.license-rules th.summary { line-height: 1.4; } + +.license-rules .name { box-sizing: content-box; border-right: 1px solid rgb(221, 221, 221); padding-left: 0px; width: 280px; } + +.license-rules .name a { font-size: 1.75rem; } + +.license-rules .name small a { font-size: 1rem; } + +.license-rules td { padding: 4px 0px 12px; vertical-align: top; } + +.license-rules .label { font-weight: bold; } + +.license-rules li { position: relative; padding-left: 18px; margin-right: 15px; margin-bottom: 5px; } + +.license-rules li:hover { color: rgb(68, 68, 68); } + +.source-marker { display: inline-block; width: 16px; text-align: center; margin-right: 4px; font-size: 0.875rem; line-height: 1; } + +.license-marker { display: inline-block; width: 12px; text-align: center; font-weight: 700; line-height: 1; } + +.license-rules li .license-marker { position: absolute; left: 0px; top: 0.1em; } + +.license-types td .license-marker { display: block; margin: 0px auto; } + +.license-types td .license-marker, .license-types dd .license-marker { font-size: 0.8125rem; } + +.license-permissions .license-marker { color: rgb(41, 134, 37); } + +.license-conditions .license-marker { color: rgb(13, 100, 138); } + +.license-limitations .license-marker { color: rgb(129, 42, 40); } + +.license-permissions .lite .license-marker { color: rgba(41, 134, 37, 0.5); } + +.license-conditions .lite .license-marker { color: rgba(13, 100, 138, 0.5); } + +.license-limitations .lite .license-marker { color: rgba(129, 42, 40, 0.5); } + +.license-rules-sidebar li { float: none; padding-bottom: 3px; } + +.license-body { font-size: 0.9375rem; float: left; width: 700px; } + +.license-body pre { font-family: Consolas, Monaco, Courier, monospace; font-size: 0.875rem; background-color: rgb(255, 255, 255); border: 1px solid rgb(238, 238, 238); border-radius: 3px; padding: 20px; } + +.license-nickname { margin-top: 0px; } + +.sidebar { float: right; width: 220px; font-size: 0.75rem; } + +.sidebar a.button { margin-top: -110px; width: 100%; } + +.sidebar input#repository-url { width: 100%; padding: 5px 20px 5px 10px; box-sizing: border-box; margin-right: 12px; } + +.input-wrapper { position: relative; } + +.input-wrapper .status-indicator { position: absolute; right: 5px; top: 6px; height: 8px; width: 8px; border-radius: 50%; background: rgb(255, 255, 255); animation: auto ease 0s 1 normal none running none; border: 4px solid rgb(221, 221, 221); } + +.input-wrapper .status-indicator.fetching { border-right-color: transparent; animation: 0.8s linear 0s infinite normal none running rotate; } + +.input-wrapper .status-indicator.error { border: 4px solid rgb(198, 64, 61); } + +@keyframes rotate { + 0% { transform: rotate(0deg); } + 100% { transform: rotate(360deg); } +} + +.note { color: rgb(104, 112, 114); } + +.button { border-radius: 3px; box-sizing: border-box; border-color: rgb(204, 204, 204) rgb(187, 187, 187) rgb(170, 170, 170); border-style: solid; border-width: 1px; color: rgb(68, 68, 68); box-shadow: rgba(0, 0, 0, 0.1) 0px 2px 4px, rgba(255, 255, 255, 0.8) 0px 1px 0px 0px inset; background-image: linear-gradient(rgb(238, 238, 238), rgb(221, 221, 221)); display: inline-block; font-size: 0.75rem; font-weight: normal; padding: 5px 10px; text-align: center; vertical-align: middle; } + +.button:hover { text-decoration: none; background-image: linear-gradient(rgb(238, 238, 238), rgb(204, 204, 204)); } + +.projects-with-license li { padding-bottom: 3px; } + +.site-footer { border-top: 1px solid rgb(238, 238, 238); margin-top: 30px; padding-top: 20px; color: rgb(85, 85, 85); font-size: 0.75rem; text-align: left; line-height: 1.5; } + +.site-footer a { color: rgb(68, 68, 68); font-weight: normal; } + +.site-footer p { float: left; margin-top: 0px; } + +.site-footer nav { float: right; } + +.site-footer nav a { display: inline-block; margin-left: 20px; } + +.bullets { list-style-type: disc; } + +.bullets > li { margin-left: 2em; } + +.small { font-size: 90%; } + +.override-hint-inline { display: block; } + +[class*="hint--"][aria-label]::after { font-size: 0.8rem; font-weight: 400; text-shadow: none; } + +.tooltip--permissions.hint--bottom::before { border-bottom-color: rgb(41, 134, 37); } + +.tooltip--conditions.hint--bottom::before { border-bottom-color: rgb(13, 100, 138); } + +.tooltip--error.hint--bottom::before, .tooltip--limitations.hint--bottom::before { border-bottom-color: rgb(129, 42, 40); } + +.tooltip--permissions::after { background-color: rgb(216, 244, 215); color: rgb(26, 88, 24); border-color: rgb(61, 198, 55); } + +.tooltip--conditions::after { background-color: rgb(208, 235, 246); border-color: rgb(20, 154, 212); color: rgb(13, 100, 138); } + +.tooltip--error::after, .tooltip--limitations::after { background-color: rgb(244, 217, 216); border-color: rgb(198, 64, 61); color: rgb(129, 42, 40); } + +.clearfix::before, .clearfix::after { content: ""; display: table; } + +.clearfix::after { clear: both; } + +.with-love { float: right; clear: right; } + +@media only screen and (-webkit-min-device-pixel-ratio: 2), only screen and (min--moz-device-pixel-ratio: 2), only screen and (-o-min-device-pixel-ratio: 200 / 100), only screen and (min-device-pixel-ratio: 2) { + .three-arrows, .community, .circular { background-image: url("../img/home-sprite@2x.png"); background-size: 72px 182px; } +} + +@media only screen and (max-width: 1050px) { + .container { width: 100%; padding: 0px 20px; box-sizing: border-box; } + .triptych { width: 100%; } + .triptych li { width: 33%; margin-left: 0px; padding: 0px 20px; box-sizing: border-box; } + .triptych h3 { width: auto; padding: 0px 30px; } + .home h2 { line-height: 30px; padding: 20px 100px; position: relative; } + .home h2 span { position: absolute; display: block; float: left; top: 50%; margin-top: -22px; } + .home h2 span:first-child { left: 65px; } + .home h2 span:last-child { right: 65px; } + .sidebar a.button { margin: 14px 0px 20px; } + .license-body { width: calc(100% - 250px); } + .hint--large::after { width: 150px; } +} + +@media only screen and (max-width: 800px), (max-device-width: 1050px) and (orientation: portrait) { + .triptych h3 { width: auto; padding: 0px 10px; margin-bottom: 10px; } + .sidebar { float: left; width: 50%; } + .license-body { width: 100%; } + .license-rules { border-bottom-width: medium; border-bottom-style: none; border-bottom-color: currentcolor; } + .license-details { width: 65%; } +} + +@media only screen and (max-width: 680px) { + .triptych li { float: none; width: 100%; margin-bottom: 50px; } + .home h2 { padding: 20px 70px; } + .home h2 span:first-child { left: 35px; } + .home h2 span:last-child { right: 35px; } + .license-overview { margin-bottom: 20px; } + .license-overview-heading { float: none; width: 100%; } + .license-details { float: none; width: 100%; padding-left: 0px; } + .site-footer { text-align: center; } + .site-footer nav, .site-footer p, .with-love { float: none; } + .site-footer nav { margin: 0px auto 10px; } +} + +@media only screen and (max-width: 481px) { + h1 { font-size: 30px; margin-bottom: 15px; } + .home h1 { font-size: 33px; } + .home h2 { font-size: 17px; line-height: 20px; padding: 20px 45px; } + .home h2 span:first-child { left: 0px; } + .home h2 span:last-child { right: 0px; } + .home h2 span { margin-top: -16px; } + .sidebar { width: 100%; } + .license-body { overflow-wrap: break-word; } + .license-body pre { font-size: 10px; } + .license-rules:not(.license-rules-sidebar) li { padding-left: 14px; margin-right: 5px; font-size: 10px; text-size-adjust: none; } + .license-rules:not(.license-rules-sidebar) .license-marker { width: 10px; font-size: 10px; left: 0px; top: 1px; position: absolute; } + .hint--large::after { width: 80px; } +} + +@media only screen and (max-width: 321px) { + .container { padding: 0px 10px; } +} +------MultipartBoundary--kxwvuFwyuMYcePAR51VZyTenwsfxKEx0HaVbZWicZr---- +Content-Type: text/css +Content-Transfer-Encoding: binary +Content-Location: https://fonts.googleapis.com/css?family=Chivo:900 + +@charset "utf-8"; + +@font-face { font-family: Chivo; font-style: normal; font-weight: 900; src: url("https://fonts.gstatic.com/s/chivo/v21/va9b4kzIxd1KFppkaRKvDRPJVDf_FRjen2rTN3vAiIsJ.woff2") format("woff2"); unicode-range: U+102-103, U+110-111, U+128-129, U+168-169, U+1A0-1A1, U+1AF-1B0, U+300-301, U+303-304, U+308-309, U+323, U+329, U+1EA0-1EF9, U+20AB; } + +@font-face { font-family: Chivo; font-style: normal; font-weight: 900; src: url("https://fonts.gstatic.com/s/chivo/v21/va9b4kzIxd1KFppkaRKvDRPJVDf_FRjenmrTN3vAiIsJ.woff2") format("woff2"); unicode-range: U+100-2BA, U+2BD-2C5, U+2C7-2CC, U+2CE-2D7, U+2DD-2FF, U+304, U+308, U+329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF; } + +@font-face { font-family: Chivo; font-style: normal; font-weight: 900; src: url("https://fonts.gstatic.com/s/chivo/v21/va9b4kzIxd1KFppkaRKvDRPJVDf_FRjekGrTN3vAiA.woff2") format("woff2"); unicode-range: U+0-FF, U+131, U+152-153, U+2BB-2BC, U+2C6, U+2DA, U+2DC, U+304, U+308, U+329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; } +------MultipartBoundary--kxwvuFwyuMYcePAR51VZyTenwsfxKEx0HaVbZWicZr---- +Content-Type: text/html +Content-ID: +Content-Transfer-Encoding: binary + + +------MultipartBoundary--kxwvuFwyuMYcePAR51VZyTenwsfxKEx0HaVbZWicZr------ From 24a57245fcd1eb8d900eae98ef2e00a04723d97f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hu=E1=BB=B3nh=20Th=C6=B0=C6=A1ng?= <252359928+Huynhthuongg@users.noreply.github.com> Date: Sat, 20 Jun 2026 07:18:01 +0700 Subject: [PATCH 7/8] Delete CNAME --- CNAME | 1 - 1 file changed, 1 deletion(-) delete mode 100644 CNAME diff --git a/CNAME b/CNAME deleted file mode 100644 index 7da29fa..0000000 --- a/CNAME +++ /dev/null @@ -1 +0,0 @@ -gitbot.dev \ No newline at end of file From fed96b87dbf012975c679f5010cce2c6a4d42567 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hu=E1=BB=B3nh=20Th=C6=B0=C6=A1ng?= <252359928+Huynhthuongg@users.noreply.github.com> Date: Sat, 20 Jun 2026 07:18:55 +0700 Subject: [PATCH 8/8] =?UTF-8?q?Update=20Ch=E1=BB=8Dn=20gi=E1=BA=A5y=20ph?= =?UTF-8?q?=C3=A9p=20m=C3=A3=20ngu=E1=BB=93n=20m=E1=BB=9F=20=5F=20Ch?= =?UTF-8?q?=E1=BB=8Dn=20gi=E1=BA=A5y=20ph=C3=A9p=20(1)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...1\273\215n gi\341\272\245y ph\303\251p (1)" | 18 +++++------------- 1 file changed, 5 insertions(+), 13 deletions(-) diff --git "a/Ch\341\273\215n gi\341\272\245y ph\303\251p m\303\243 ngu\341\273\223n m\341\273\237 _ Ch\341\273\215n gi\341\272\245y ph\303\251p (1)" "b/Ch\341\273\215n gi\341\272\245y ph\303\251p m\303\243 ngu\341\273\223n m\341\273\237 _ Ch\341\273\215n gi\341\272\245y ph\303\251p (1)" index f03b19a..e032049 100644 --- "a/Ch\341\273\215n gi\341\272\245y ph\303\251p m\303\243 ngu\341\273\223n m\341\273\237 _ Ch\341\273\215n gi\341\272\245y ph\303\251p (1)" +++ "b/Ch\341\273\215n gi\341\272\245y ph\303\251p m\303\243 ngu\341\273\223n m\341\273\237 _ Ch\341\273\215n gi\341\272\245y ph\303\251p (1)" @@ -80,16 +80,8 @@ Content-Location: https://choosealicense.com/

Giấy phép MIT ngắn gọn và đi thẳng vào vấn đề. Nó cho phép mọi người làm hầu hết mọi thứ họ muốn với dự án của bạn, chẳng hạn như tạo và phân phối các phiên bản mã nguồn đóng.

-

- - - - - - - - - Babel , +

+ Babel , @@ -519,10 +511,10 @@ Content-Type: image/png Content-Transfer-Encoding: binary Content-Location: https://choosealicense.com/assets/img/home-sprite@2x.png -PNG +�PNG  - IHDRl\PLTEҋ(tRNS@fbKGDH pHYs  tIMEsIDATxۿUGsNjn%lqjm\XaB1"q `%hF+X($&HXjlbggg?&?ݽw93gfkvߝ>ߗ'~%x% %,e{"7W^):~gMzZo:f9m,tL:Kjȧʀ.FA[\ I] MXLJC~6,|  #+ߕAxl c}Agȧ-+QK#[zN"ruJЇcE*KY|pr=@^DW?#pn\. Ya}5D8nq2Pd"zh~ -ҳ~mNġ.(j;AE\DwnKrDM,MA{vBޞIIa,kCH)Z4sRa'٢>t35X/I%_`׏I `(Xk[J\/*14) ӓ>OX{׆8$%ꇜ\ڞw@)bո`$\.rL܇Z"Žswb1q֥WvCYugE?&OQCx8s1}`W3A)4bx b鉯:zl[h8;0s]tAsоh B| &0} B ݢ8=���ߗ�'~%�x%� %�,��e{"�����<��Gq����OZ{^Ȯx��sZ��w`��<�e0N���]�Ѹ���D�e}�A�ƕڞ�2�zN�d<󈜪�9/�8_�sV�q��縨�x �a1����b�;�=w�G�z��@�<"�yHR<,�y(��u�!��8Ѵ�?:0�As���A ���PhI�5 ZУ�3�� ZοdK����Z�u>7�W^���)���:��~��<�Y>��g��M�z�Z�o:f9��m�,t�L�:K�j����ȧ�ʀ.FA�[�\ � I�]� �M���X�<�D~s�E��IOТ���'��%/Џ���L �G �[�o�$G�A��4&҃��u-H�灴dٙr1R�^(�wuyt1Z�t�����@'~��T�Չ{�]�<�g�@7'��n���/�����[����Q��A���� z�lW��Me���tL�*��@����1h��oY��:C?k�?І�'��u�����-c��d󼫯hG~��`K�̣���A7�+[�r�xoAh%i��1 J��%J��=/�:}��ڔhth���9 k�y��@ϷyK!��8�����x�kc������c1� (���cMlc<�P��jiOTd��� �|<���d��\=D+��ϽןW�<_�����y�DELJ�C~6����,|� � ����#����+��ߕA��x�l� ��c�}���A������g��ȧ-���+���Q�K���#[z�N������"ru��J����ЇcE*��K�Y|p�r���=@^D��W?�#p���n��\. �Ya}5�D�8n��q��2��Pd"��z�h��~� +�ҳ�~m�Nġ.(j��;���A�E���\��D�w��nK��r��D���M����,�M���A�{�v�B�ޞ��II�a���,k�CH���)Z�4sRa�'�٢����>t����3���5X�/�I%����_`�������׏I `(X��k[J�\���/*�14���) ӓ�>�O�X{׆8$���%ꇜ�\�ڞ����w��@)b�ո`�$���\.�rL܇Z"Ž�s��wb�1q֥Wv�C��Yug�E?�&��OQ�Cx�8s���1�}`��W�3A�)4�b��x� b�鉯�:�z�l�[h8��;0�s]��t�Asо�h B�|� &0}� B�� �ݢ�8��=�