Delete index.html
Browse files- index.html +0 -349
index.html
DELETED
|
@@ -1,349 +0,0 @@
|
|
| 1 |
-
<!DOCTYPE html>
|
| 2 |
-
<html lang="en">
|
| 3 |
-
<head>
|
| 4 |
-
<meta charset="UTF-8">
|
| 5 |
-
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
| 6 |
-
<title>HostCast — Your Digital Host. Your Studio. Offline.</title>
|
| 7 |
-
<meta name="description" content="HostCast is an offline-first digital-host studio. Write a script, pick a host, and record a broadcast or interview — all on your iPhone, with no servers and no account.">
|
| 8 |
-
<style>
|
| 9 |
-
/* 复用 index.html 的金色主题变量,扩展为现代 landing 布局 */
|
| 10 |
-
:root {
|
| 11 |
-
--primary-color: #d9b779;
|
| 12 |
-
--primary-dark: #b8965a;
|
| 13 |
-
--primary-light: #f0dcb8;
|
| 14 |
-
--text-color: #1f1b16;
|
| 15 |
-
--bg-color: #f6f4f1;
|
| 16 |
-
--container-bg: #ffffff;
|
| 17 |
-
--border-color: #e7e1d8;
|
| 18 |
-
--muted: #6b6253;
|
| 19 |
-
--ink: #2a241d;
|
| 20 |
-
--hero-grad: radial-gradient(1200px 600px at 50% -10%, #fbf3df 0%, #f6f4f1 55%);
|
| 21 |
-
}
|
| 22 |
-
* { box-sizing: border-box; }
|
| 23 |
-
html { scroll-behavior: smooth; }
|
| 24 |
-
body {
|
| 25 |
-
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
|
| 26 |
-
line-height: 1.65;
|
| 27 |
-
color: var(--text-color);
|
| 28 |
-
background: var(--bg-color);
|
| 29 |
-
margin: 0;
|
| 30 |
-
padding: 0;
|
| 31 |
-
}
|
| 32 |
-
.wrap { max-width: 1040px; margin: 0 auto; padding: 0 24px; }
|
| 33 |
-
|
| 34 |
-
/* 顶栏 */
|
| 35 |
-
.nav {
|
| 36 |
-
position: sticky; top: 0; z-index: 20;
|
| 37 |
-
background: rgba(246,244,241,0.86);
|
| 38 |
-
backdrop-filter: saturate(180%) blur(14px);
|
| 39 |
-
-webkit-backdrop-filter: saturate(180%) blur(14px);
|
| 40 |
-
border-bottom: 1px solid var(--border-color);
|
| 41 |
-
}
|
| 42 |
-
.nav .row { display: flex; align-items: center; justify-content: space-between; height: 60px; }
|
| 43 |
-
.brand { font-weight: 800; font-size: 20px; color: var(--primary-dark); letter-spacing: 0.2px; }
|
| 44 |
-
.brand .dot { color: var(--primary-color); }
|
| 45 |
-
.nav ul { display: flex; gap: 26px; list-style: none; margin: 0; padding: 0; }
|
| 46 |
-
.nav a { color: var(--ink); text-decoration: none; font-size: 15px; font-weight: 500; }
|
| 47 |
-
.nav a:hover { color: var(--primary-dark); }
|
| 48 |
-
.btn {
|
| 49 |
-
display: inline-block; padding: 12px 22px; border-radius: 999px;
|
| 50 |
-
background: var(--primary-dark); color: #fff; text-decoration: none;
|
| 51 |
-
font-weight: 700; font-size: 15px; border: none; cursor: pointer;
|
| 52 |
-
transition: transform .15s ease, box-shadow .15s ease, background .15s ease;
|
| 53 |
-
box-shadow: 0 6px 18px rgba(184,150,90,0.28);
|
| 54 |
-
}
|
| 55 |
-
.btn:hover { transform: translateY(-1px); background: #a8854a; box-shadow: 0 10px 24px rgba(184,150,90,0.34); }
|
| 56 |
-
.btn.ghost { background: transparent; color: var(--primary-dark); border: 1.5px solid var(--primary-color); box-shadow: none; }
|
| 57 |
-
.btn.ghost:hover { background: #fbf3df; }
|
| 58 |
-
.btn.small { padding: 9px 16px; font-size: 14px; }
|
| 59 |
-
|
| 60 |
-
/* Hero */
|
| 61 |
-
.hero { background: var(--hero-grad); padding: 72px 0 56px; text-align: center; }
|
| 62 |
-
.hero h1 { font-size: clamp(34px, 6vw, 60px); line-height: 1.08; margin: 0 0 14px; color: var(--ink); letter-spacing: -0.5px; }
|
| 63 |
-
.hero h1 .gold { color: var(--primary-dark); }
|
| 64 |
-
.hero .lead { font-size: clamp(17px, 2.2vw, 21px); color: var(--muted); max-width: 640px; margin: 0 auto 28px; }
|
| 65 |
-
.hero .cta { display: flex; gap: 14px; justify-content: center; flex-wrap: wrap; }
|
| 66 |
-
.hero .meta { margin-top: 18px; font-size: 13px; color: var(--muted); }
|
| 67 |
-
.hero .shot {
|
| 68 |
-
margin: 48px auto 0; max-width: 760px;
|
| 69 |
-
border-radius: 18px; overflow: hidden;
|
| 70 |
-
box-shadow: 0 24px 60px rgba(31,27,22,0.18);
|
| 71 |
-
border: 1px solid var(--border-color);
|
| 72 |
-
background: #fff;
|
| 73 |
-
}
|
| 74 |
-
.hero .shot img { display: block; width: 100%; height: auto; }
|
| 75 |
-
|
| 76 |
-
/* 章节标题 */
|
| 77 |
-
.section { padding: 80px 0; }
|
| 78 |
-
.section h2 { font-size: clamp(26px, 3.4vw, 36px); text-align: center; color: var(--ink); margin: 0 0 12px; letter-spacing: -0.3px; }
|
| 79 |
-
.section .sub { text-align: center; color: var(--muted); max-width: 620px; margin: 0 auto 48px; font-size: 17px; }
|
| 80 |
-
|
| 81 |
-
/* 功能网格 */
|
| 82 |
-
.grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 22px; }
|
| 83 |
-
.card {
|
| 84 |
-
background: var(--container-bg); border: 1px solid var(--border-color);
|
| 85 |
-
border-radius: 16px; padding: 28px; transition: transform .18s ease, box-shadow .18s ease;
|
| 86 |
-
}
|
| 87 |
-
.card:hover { transform: translateY(-3px); box-shadow: 0 14px 32px rgba(31,27,22,0.08); }
|
| 88 |
-
.card .ico { font-size: 30px; line-height: 1; margin-bottom: 14px; }
|
| 89 |
-
.card h3 { margin: 0 0 8px; font-size: 18px; color: var(--primary-dark); }
|
| 90 |
-
.card p { margin: 0; color: var(--muted); font-size: 15px; }
|
| 91 |
-
|
| 92 |
-
/* 模式对比 */
|
| 93 |
-
.modes { display: grid; grid-template-columns: 1fr 1fr; gap: 24px; }
|
| 94 |
-
.mode {
|
| 95 |
-
background: var(--container-bg); border: 1px solid var(--border-color);
|
| 96 |
-
border-radius: 18px; padding: 32px; position: relative; overflow: hidden;
|
| 97 |
-
}
|
| 98 |
-
.mode::before { content: ""; position: absolute; inset: 0 auto 0 0; width: 4px; background: var(--primary-color); }
|
| 99 |
-
.mode .tag { display: inline-block; font-size: 12px; font-weight: 700; letter-spacing: 0.6px; text-transform: uppercase; color: var(--primary-dark); background: var(--primary-light); padding: 4px 10px; border-radius: 6px; margin-bottom: 14px; }
|
| 100 |
-
.mode h3 { margin: 0 0 10px; font-size: 22px; color: var(--ink); }
|
| 101 |
-
.mode p { color: var(--muted); margin: 0 0 14px; }
|
| 102 |
-
.mode ul { margin: 0; padding-left: 20px; color: var(--ink); }
|
| 103 |
-
.mode li { margin-bottom: 6px; font-size: 15px; }
|
| 104 |
-
|
| 105 |
-
/* 画廊 */
|
| 106 |
-
.gallery { display: grid; grid-template-columns: repeat(4, 1fr); gap: 14px; }
|
| 107 |
-
.gallery .frame {
|
| 108 |
-
border-radius: 12px; overflow: hidden; border: 1px solid var(--border-color);
|
| 109 |
-
background: #fff; aspect-ratio: 9 / 19.5;
|
| 110 |
-
}
|
| 111 |
-
.gallery img { width: 100%; height: 100%; object-fit: cover; display: block; transition: transform .3s ease; }
|
| 112 |
-
.gallery .frame:hover img { transform: scale(1.03); }
|
| 113 |
-
|
| 114 |
-
/* 隐私横幅 */
|
| 115 |
-
.privacy {
|
| 116 |
-
background: linear-gradient(135deg, #fbf3df 0%, #f6f4f1 100%);
|
| 117 |
-
border: 1px solid var(--primary-light);
|
| 118 |
-
border-radius: 20px; padding: 40px; text-align: center;
|
| 119 |
-
}
|
| 120 |
-
.privacy h2 { color: var(--primary-dark); }
|
| 121 |
-
.privacy p { color: var(--muted); max-width: 620px; margin: 12px auto 0; }
|
| 122 |
-
.privacy .badges { display: flex; gap: 26px; justify-content: center; flex-wrap: wrap; margin-top: 24px; }
|
| 123 |
-
.privacy .badge { font-size: 14px; color: var(--ink); }
|
| 124 |
-
.privacy .badge strong { color: var(--primary-dark); }
|
| 125 |
-
|
| 126 |
-
/* FAQ */
|
| 127 |
-
.faq { max-width: 760px; margin: 0 auto; }
|
| 128 |
-
.faq details {
|
| 129 |
-
background: var(--container-bg); border: 1px solid var(--border-color);
|
| 130 |
-
border-radius: 12px; padding: 18px 22px; margin-bottom: 12px;
|
| 131 |
-
}
|
| 132 |
-
.faq summary { font-weight: 700; color: var(--ink); cursor: pointer; font-size: 16px; list-style: none; }
|
| 133 |
-
.faq summary::-webkit-details-marker { display: none; }
|
| 134 |
-
.faq summary::after { content: " +"; color: var(--primary-dark); float: right; }
|
| 135 |
-
.faq details[open] summary::after { content: " −"; }
|
| 136 |
-
.faq details p { margin: 10px 0 0; color: var(--muted); font-size: 15px; }
|
| 137 |
-
|
| 138 |
-
/* 最终 CTA */
|
| 139 |
-
.final { text-align: center; padding: 80px 0 60px; }
|
| 140 |
-
.final h2 { font-size: clamp(28px, 4vw, 40px); color: var(--ink); margin: 0 0 14px; }
|
| 141 |
-
.final p { color: var(--muted); margin: 0 0 26px; }
|
| 142 |
-
|
| 143 |
-
/* 页脚 */
|
| 144 |
-
footer { border-top: 1px solid var(--border-color); background: #fbfaf8; padding: 40px 0; }
|
| 145 |
-
footer .row { display: flex; justify-content: space-between; align-items: center; flex-wrap: wrap; gap: 16px; }
|
| 146 |
-
footer .links { display: flex; gap: 22px; }
|
| 147 |
-
footer a { color: var(--muted); text-decoration: none; font-size: 14px; }
|
| 148 |
-
footer a:hover { color: var(--primary-dark); }
|
| 149 |
-
footer .copy { color: var(--muted); font-size: 13px; }
|
| 150 |
-
|
| 151 |
-
/* 响应式 */
|
| 152 |
-
@media (max-width: 860px) {
|
| 153 |
-
.grid { grid-template-columns: 1fr; }
|
| 154 |
-
.modes { grid-template-columns: 1fr; }
|
| 155 |
-
.gallery { grid-template-columns: repeat(2, 1fr); }
|
| 156 |
-
.nav ul { display: none; }
|
| 157 |
-
}
|
| 158 |
-
</style>
|
| 159 |
-
</head>
|
| 160 |
-
<body>
|
| 161 |
-
|
| 162 |
-
<!-- 顶栏导航 -->
|
| 163 |
-
<nav class="nav">
|
| 164 |
-
<div class="wrap row">
|
| 165 |
-
<div class="brand">Host<span class="dot">Cast</span></div>
|
| 166 |
-
<ul>
|
| 167 |
-
<li><a href="#features">Features</a></li>
|
| 168 |
-
<li><a href="#modes">Modes</a></li>
|
| 169 |
-
<li><a href="#gallery">Gallery</a></li>
|
| 170 |
-
<li><a href="#faq">FAQ</a></li>
|
| 171 |
-
</ul>
|
| 172 |
-
<a class="btn small" href="https://apps.apple.com/app/id6802987480">Download</a>
|
| 173 |
-
</div>
|
| 174 |
-
</nav>
|
| 175 |
-
|
| 176 |
-
<!-- Hero -->
|
| 177 |
-
<header class="hero">
|
| 178 |
-
<div class="wrap">
|
| 179 |
-
<h1>Your digital host.<br><span class="gold">Your studio. Offline.</span></h1>
|
| 180 |
-
<p class="lead">HostCast puts a lifelike digital host in your pocket. Write a script, hit record, and broadcast — or run a two-camera interview. No servers, no account, no cloud. Everything runs on your iPhone.</p>
|
| 181 |
-
<div class="cta">
|
| 182 |
-
<a class="btn" href="https://apps.apple.com/app/id6802987480">Download for iPhone</a>
|
| 183 |
-
<a class="btn ghost" href="#modes">See how it works</a>
|
| 184 |
-
</div>
|
| 185 |
-
<p class="meta">Offline-first · No sign-up · One-time Pro unlock</p>
|
| 186 |
-
<div class="shot">
|
| 187 |
-
<img src="fastlane/screenshots/en-US/01_iPhone_65.png" alt="HostCast home screen" loading="lazy">
|
| 188 |
-
</div>
|
| 189 |
-
</div>
|
| 190 |
-
</header>
|
| 191 |
-
|
| 192 |
-
<!-- 功能网格 -->
|
| 193 |
-
<section class="section" id="features">
|
| 194 |
-
<div class="wrap">
|
| 195 |
-
<h2>A studio that fits in your hand</h2>
|
| 196 |
-
<p class="sub">Six things HostCast does — all on your device, all without an internet connection.</p>
|
| 197 |
-
<div class="grid">
|
| 198 |
-
<div class="card">
|
| 199 |
-
<div class="ico">🎙️</div>
|
| 200 |
-
<h3>Lifelike Digital Host</h3>
|
| 201 |
-
<p>A virtual character with natural lip-sync that moves with her voice. Not a chat bubble — a presence on camera.</p>
|
| 202 |
-
</div>
|
| 203 |
-
<div class="card">
|
| 204 |
-
<div class="ico">📝</div>
|
| 205 |
-
<h3>Script Desk</h3>
|
| 206 |
-
<p>Write your own script or pick a starter. The host reads it straight to camera, word for word, in a natural voice.</p>
|
| 207 |
-
</div>
|
| 208 |
-
<div class="card">
|
| 209 |
-
<div class="ico">📺</div>
|
| 210 |
-
<h3>Broadcast Mode</h3>
|
| 211 |
-
<p>One host, one camera, one take. Press record and let your digital host deliver the script on screen.</p>
|
| 212 |
-
</div>
|
| 213 |
-
<div class="card">
|
| 214 |
-
<div class="ico">🎥</div>
|
| 215 |
-
<h3>Interview Mode</h3>
|
| 216 |
-
<p>A director's console switches between the host and your own close-up. Record both sides, cut like a pro.</p>
|
| 217 |
-
</div>
|
| 218 |
-
<div class="card">
|
| 219 |
-
<div class="ico">🔒</div>
|
| 220 |
-
<h3>Private by Design</h3>
|
| 221 |
-
<p>The avatar engine, speech, and recording all run locally. Your scripts and videos never leave the phone.</p>
|
| 222 |
-
</div>
|
| 223 |
-
<div class="card">
|
| 224 |
-
<div class="ico">⭐</div>
|
| 225 |
-
<h3>HostCast Pro</h3>
|
| 226 |
-
<p>One-time unlock — no subscription, ever. Extra hosts, longer takes, and advanced director controls.</p>
|
| 227 |
-
</div>
|
| 228 |
-
</div>
|
| 229 |
-
</div>
|
| 230 |
-
</section>
|
| 231 |
-
|
| 232 |
-
<!-- 模式对比 -->
|
| 233 |
-
<section class="section" id="modes" style="background:#fbfaf8;">
|
| 234 |
-
<div class="wrap">
|
| 235 |
-
<h2>Two ways to create</h2>
|
| 236 |
-
<p class="sub">Whether you're hosting a solo show or running a guest interview, HostCast has a mode for it.</p>
|
| 237 |
-
<div class="modes">
|
| 238 |
-
<div class="mode">
|
| 239 |
-
<span class="tag">Broadcast</span>
|
| 240 |
-
<h3>The host takes the stage</h3>
|
| 241 |
-
<p>Hand the script to your digital host and let them deliver it on camera.</p>
|
| 242 |
-
<ul>
|
| 243 |
-
<li>Host reads your script with natural voice & lip-sync</li>
|
| 244 |
-
<li>Single clean recording, ready to share</li>
|
| 245 |
-
<li>Ideal for news, updates, storytelling, monologues</li>
|
| 246 |
-
</ul>
|
| 247 |
-
</div>
|
| 248 |
-
<div class="mode">
|
| 249 |
-
<span class="tag">Interview</span>
|
| 250 |
-
<h3>Two cameras, director-cut</h3>
|
| 251 |
-
<p>The host asks the questions — you answer from your own close-up camera.</p>
|
| 252 |
-
<ul>
|
| 253 |
-
<li>Dual-camera split: host + guest, side by side</li>
|
| 254 |
-
<li>Director console cuts between the two shots</li>
|
| 255 |
-
<li>Ideal for talk shows, Q&A, practice interviews</li>
|
| 256 |
-
</ul>
|
| 257 |
-
</div>
|
| 258 |
-
</div>
|
| 259 |
-
</div>
|
| 260 |
-
</section>
|
| 261 |
-
|
| 262 |
-
<!-- 截图画廊 -->
|
| 263 |
-
<section class="section" id="gallery">
|
| 264 |
-
<div class="wrap">
|
| 265 |
-
<h2>See it in motion</h2>
|
| 266 |
-
<p class="sub">Real screens from the current build. Everything below runs offline.</p>
|
| 267 |
-
<div class="gallery">
|
| 268 |
-
<div class="frame"><img src="fastlane/screenshots/en-US/02_iPhone_65.png" alt="Host selection" loading="lazy"></div>
|
| 269 |
-
<div class="frame"><img src="fastlane/screenshots/en-US/04_iPhone_65.png" alt="Script desk" loading="lazy"></div>
|
| 270 |
-
<div class="frame"><img src="fastlane/screenshots/en-US/06_iPhone_65.png" alt="Broadcast recording" loading="lazy"></div>
|
| 271 |
-
<div class="frame"><img src="fastlane/screenshots/en-US/08_iPhone_65.png" alt="Interview split" loading="lazy"></div>
|
| 272 |
-
<div class="frame"><img src="fastlane/screenshots/en-US/03_iPhone_65.png" alt="Mode chooser" loading="lazy"></div>
|
| 273 |
-
<div class="frame"><img src="fastlane/screenshots/en-US/05_iPhone_65.png" alt="Settings" loading="lazy"></div>
|
| 274 |
-
<div class="frame"><img src="fastlane/screenshots/en-US/07_iPhone_65.png" alt="Director console" loading="lazy"></div>
|
| 275 |
-
<div class="frame"><img src="fastlane/screenshots/en-US/10_iPhone_65.png" alt="Playback" loading="lazy"></div>
|
| 276 |
-
</div>
|
| 277 |
-
</div>
|
| 278 |
-
</section>
|
| 279 |
-
|
| 280 |
-
<!-- 隐私横幅 -->
|
| 281 |
-
<section class="section">
|
| 282 |
-
<div class="wrap">
|
| 283 |
-
<div class="privacy">
|
| 284 |
-
<h2>No cloud. No account. No tracking.</h2>
|
| 285 |
-
<p>HostCast is built offline-first. The digital-human engine, text-to-speech, and screen recording all run on your device. We do not operate servers that receive your scripts or videos — because there are no servers.</p>
|
| 286 |
-
<div class="badges">
|
| 287 |
-
<span class="badge">🔒 <strong>No personal data collected</strong></span>
|
| 288 |
-
<span class="badge">📱 <strong>On-device sandboxing</strong></span>
|
| 289 |
-
<span class="badge">🚫 <strong>No third-party trackers</strong></span>
|
| 290 |
-
<span class="badge">🌍 <strong>No mainland China availability</strong></span>
|
| 291 |
-
</div>
|
| 292 |
-
</div>
|
| 293 |
-
</div>
|
| 294 |
-
</section>
|
| 295 |
-
|
| 296 |
-
<!-- FAQ -->
|
| 297 |
-
<section class="section" id="faq" style="background:#fbfaf8;">
|
| 298 |
-
<div class="wrap">
|
| 299 |
-
<h2>Frequently asked</h2>
|
| 300 |
-
<p class="sub">Quick answers. Full details on the support page.</p>
|
| 301 |
-
<div class="faq">
|
| 302 |
-
<details>
|
| 303 |
-
<summary>Do I need an internet connection?</summary>
|
| 304 |
-
<p>No. HostCast runs fully on-device. There is no cloud backend, no account, and nothing is sent to any server.</p>
|
| 305 |
-
</details>
|
| 306 |
-
<details>
|
| 307 |
-
<summary>Is my script or video uploaded?</summary>
|
| 308 |
-
<p>Never. Your scripts, recordings, and settings stay on your device. Uninstalling the app permanently deletes everything.</p>
|
| 309 |
-
</details>
|
| 310 |
-
<details>
|
| 311 |
-
<summary>Who are the hosts?</summary>
|
| 312 |
-
<p>All hosts are virtual, fictional characters rendered by an on-device avatar engine. They are not real people and do not represent any individual.</p>
|
| 313 |
-
</details>
|
| 314 |
-
<details>
|
| 315 |
-
<summary>How do I start?</summary>
|
| 316 |
-
<p>Pick a host, write or choose a script in the Script Desk, then record. In Broadcast the host reads on camera; in Interview the director console switches between host and your close-up.</p>
|
| 317 |
-
</details>
|
| 318 |
-
<details>
|
| 319 |
-
<summary>What permissions does it need?</summary>
|
| 320 |
-
<p>Microphone for voice recording, optional Camera for your close-up, and Photo Library (add-only) for saving screen recordings. No location, no network tracking.</p>
|
| 321 |
-
</details>
|
| 322 |
-
</div>
|
| 323 |
-
</div>
|
| 324 |
-
</section>
|
| 325 |
-
|
| 326 |
-
<!-- 最终 CTA -->
|
| 327 |
-
<section class="final">
|
| 328 |
-
<div class="wrap">
|
| 329 |
-
<h2>Ready to go on camera?</h2>
|
| 330 |
-
<p>Download HostCast and start your first take in minutes.</p>
|
| 331 |
-
<a class="btn" href="https://apps.apple.com/app/id6802987480">Download for iPhone</a>
|
| 332 |
-
</div>
|
| 333 |
-
</section>
|
| 334 |
-
|
| 335 |
-
<!-- 页脚 -->
|
| 336 |
-
<footer>
|
| 337 |
-
<div class="wrap row">
|
| 338 |
-
<div class="brand">Host<span style="color:var(--primary-color)">Cast</span></div>
|
| 339 |
-
<div class="links">
|
| 340 |
-
<a href="index.html#support">Support</a>
|
| 341 |
-
<a href="index.html#privacy">Privacy Policy</a>
|
| 342 |
-
<a href="index.html#terms">Terms of Service</a>
|
| 343 |
-
</div>
|
| 344 |
-
<div class="copy">© 2026 HostCast. Not available on the App Store in mainland China.</div>
|
| 345 |
-
</div>
|
| 346 |
-
</footer>
|
| 347 |
-
|
| 348 |
-
</body>
|
| 349 |
-
</html>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|