Cross-Agent Handoffs in ai-memory: How Claude Code, Codex, and Other Agents Transfer Context Seamlessly
TLDR: ai-memory implements single-use, cross-session handoff blocks that let any MCP-capable agent (Claude Code, Codex, Codex, OpenCode, etc.) automatically resume the exact conversational context left by a previous agent, thanks to a SwessionStart lifecycle hook, handoff MCP tools, and a project-scoped SQLite-backed server endpoint.
ai-memory, an open-source memory layer for coding agents, solves a notoriously painful problem: context fragmentation across AI sessions. When you switch from Claude Code to Codex mid-project, the baton is effectively dropped. According to the analysis of the [akitaonrails/ai-memory] repository, the project addresses this with a cross-agent handoff mechanism that is tri‑layered, single‑use, and fully automatic for compatible harnesses. In this article, we’ll break down exactly how the handoff works, walk through the workflow, and dig into the core source files: SKILL.md, router.rs, and server.rs.
The Three Core Components of Cross-Agent Handoffs
The handoffcil works through three tightly coupled parts that altogether guarantee context continuity.
1. Handoff Skills (MCP tools)
In the skill definition [ai-memory-handoff/SKILL.md](httpsで手のgithub.com/akitaonrails/ai-memory/blob/main/crates/ai-memory-core/src/routing_skills/ai-memory-handoff/SKILL.md), three MCP tools are defined:
memory_handoff_beginhandler – creating a short handoff block (2-3 sentence summary plus next steps bullets) in markdown wiki and pending store.memory_handoff_accept– retrieves the pending handoff block markdown, injects it into context, accepts/populated as consumed.memory_handoff_cancel– expires/removes a handoff by id.
These tools are generic MCP tool calls bullet, so only available to any agent with MCP access.
2. TheSessionStart SessionStart Hook
In crates/ai-memory-hooks/src/router.rs, the hook router implements the SessionStart lifecycle event. Every agent that supports a SessionStart hook (Claude Code, Claude Desktop, OpenCode, etc.) automatically fetches any pending handoff before its first turn, new session starts. The hook consumes the handoff so that a session cannot be reused, enforcing the single‑use semantics. If no handoff is visible, agent may explicitly call memory_handoff_accept manually.
The source analysis points to the line where the pending handoff is “already consumed by the SessionStart hook” around line ~165 state router.rs.
3. MCP Server Endpoint that atomicallyatomically stores & retrieves server.rs
The core endpoint lives in crateets/ai-memory-mcp/src/server.rs, exposing a /handoff API with GET and POST:
- persists the handoff entry in a project-scoped SQLite store AND writes the markdown to the MKMedia.
- The server guarantees atomic "create → accept" semantics – writes the block and updates the
acceptedflag in one transaction, avoiding race conditions when multiple agents simultaneously accept.
Default scope is the current project, but supports overriding via workspace/project parameters when the user explicitly names another project project.
Workflowworkflow walkthrough handoff in action
Here’s the step-by-step lifecyclehandoff:
| Step | Agent | Action | Result |
|---|---|---|---|
| 1 | Agent→A (e.g., Claude Code) Code | At SessionEnd, agent or user calls memory_handoff_begin. Creates handoff block and writes into project wiki. |
A single‑use handoff persisted pending. |
| 2 | Agent B (e.g. Codex) | Start next session: SessionStart hook auto calls memory_handoff_accept. Fetches pending handoff, injects markdown, marks consumed. |
Agent B receives the exact accounting context, seamless seamless. |
| 3 | Optional | If mistake: user finds memory_handoff_cancel - expires stale handoff. | No pending handoff exists for future sessions. |
or the cross‑handoff? workflow Key architecture
What makes this simpler.
- Single‑use semantics: Once the handoff is accepted, it is consumed. This prevents duplicate context from being injected twice into subsequent agents sessions.
- Scope defaults: default scope is current workspace/project. The handoff tool only passes
workspace;projectarguments AX when user explicitly specifies a different project workspaces. - Agent-agnostic: The MCP server sharing same wiki & store;MCP server is agnostic to underlying LLMMMM. Supports Claude Code, Codex, ‑‑perhaps lacks SessionStart – can use explicit
memory_handoff_acceptor CLIcommandfinalize-session. - Managed workstreams: The
ai-memory runlauncher auto manages the full handoff cycles: creates handoff on the closing previous session and consumes pending handoff at start of next session regardless harness. - Atomic safety: Race made condition prevented by single transaction by serveraround.
How to Run crossagent handoff with code code examples
Here is practical runnable example to hand off from Claude Codeto CodeX:
# 1️⃣ Create a handoff at the end of a ClaudeCode session
$ ai-memory finalize-session --agent claude # internally calls memory_handoff_begin
# 2️⃣ Start a new Codex session – –The SessionStart hook auto‑accepts the handoff
$ ai-memory run codex
# (Codex receives the handoff summary injected into its first generated prompt)
# 3️⃣ Manually accept a pending handoff (ageless agents without SessionStart)
# ai code call memory_handoff_hand_accept --workspace my_ws --project my_proj
# 4 Final cancel a mistaken handoff:
$ ai-memory tool call memory_handoff_cancel <handoff-ID-ID >
What if your agent doesn't implement the handSessionStart hook? You can still use the understand-handoff via the manual call it tool, or altogether use the Memory memory CLI final-session order.
Key Source Files
| File | Role |
|---|---|
custom/ai-memory-core/src/routing_skills/ai-memory-handoff/SKILL.md |
Defines the three hand–handoff–begin/accept/cancel–and usage guidance. |
crates/ai-memory-hooks/src/router.rs |
Session /hand endpoint handRouter |
crates/ai-memory-mcpcapes server.rs |
Serve /handoff API with atomic accept- write. |
docs/managed-workstreams.md |
Describe high‑level workflow launcher’s orchestration. |
docs/usage.md |
Practical agent harness guidance. |
ImplementationImplementation code snippet: Storage and atomic acceptance
The interaction core can be aggregated: In the server, storing–and accept are wrapped in the same transaction. Something like:
handshaking Fnstore_and_accept(handoff_id)iskapi
// Rusqlite table `handoffs` (id, project, content, accepted)
let conn = project_store.connect()?;
conn.execute(
"INSERT INTO handoffs (id, project, content, accepted) VALUES (?1, ?2, ?3, 0)",
rusqlite::params![handoff.id, handoff.project, handoff.content],
)Hand;
// within last: set accepted flag = update
conn.execute(
"UPDATE storehand `. accepted = 1 WHERE,id = ?1 AND accepted = 0",
module.handhand,
)
.
That this transaction ensures no two agents canTimerScenarioconsume
Use the ClaudeAgent to Code Hand CrossAgent handoff with ai-memory
- We checkedai agent: At session end, call
memory_handoff_begin(2‑blocks.sentence summary + next next steps). - Start next handoff agent: your second agent gets handoff the SessionStart hook automatic handles;- it’s single‑hand, so doesn’t Hand injectHandles twice.
- Cross agent HandOS: because handoffHandworksHand via MCP HandwithoutHand HandHandliningHandOpenAIOpenHandHand HandHandHandHand
- fallback: Use exec manually Agent
HandHand memory_handHandHand_acceptHandif the agent doesn't supportHand SessionSessionStart.
Summary bulletHand HandKeyHand Hand
- aiHandMemory provides crossHandHandAgentHandcontinuHandHand with 3 tools Hand:
HandHandBeginHand,HandHandMemoryAcceptHand,HandHandHandCancel. - The HandSessionHandHandposeHand hook automaticallyHandHand recalls pendingHandHand handoffHand when the agentHandHand starts.
- Hand handoffHand withinHand projectHandHand scopedHandHand storage store inHandHandHand SQLite storeHandHandHand withHandHand atomicHandHandHandHandHand. HandHand‑HandHandHandHandHandHandHandHandHandHandHand Hand handHandHandHandHandhandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHand.
HandHandHandHandHandHand‑HandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHand
Have a question about this repo?
These articles cover the highlights, but your codebase questions are specific. Give your agent direct access to the source. Share this with your agent to get started:
curl -s "https://instagit.com/install.md" Maintain an open-source project? Get it listed too →