Repository: rinja-rs/askama (language: rust)

Issue:
Nested comments causes parser to timeout
Hi,

Large nested comments like below(produced by fuzzing);
```
{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{{##}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#
```
makes the parser get stuck at following lines.
https://github.com/djc/askama/blob/5955ba23c172ef6bbc0116b9ab0d6f068b86a688/askama_parser/src/node.rs#L1027-L1029

<br>

Steps to reproduce:
[comment-testcase.txt](https://github.com/djc/askama/files/15170493/comment-testcase.txt)

```rust
#[test]
fn test_fuzzed_comment_recursion() {
    const TEMPLATE: &str = include_str!("../../comment-testcase.txt");
    assert!(Ast::from_str(TEMPLATE, None, &Syntax::default()).is_err());
}
```
```sh
Executing task: cargo test --package askama_parser --lib -- tests::test_fuzzed_comment_recursion --exact --show-output 

   Compiling askama_parser v0.2.1 (/home/maxx/dev/security/oss-fuzz-projects/askama/askama_parser)
    Finished test [unoptimized + debuginfo] target(s) in 1.12s
     Running unittests src/lib.rs (target/debug/deps/askama_parser-c458ed7d8982bb6b)

running 1 test
```
<br> 

Will having a guard against deep nesting can be considered as a fix here ?

```diff
 use nom::multi::{fold_many0, many0, many1, separated_list0, separated_list1};
 use nom::sequence::{delimited, pair, preceded, terminated, tuple};

-use crate::{ErrorContext, ParseResult};
+use crate::{ErrorContext, Level, ParseResult};

 use super::{
     bool_lit, char_lit, filter, identifier, is_ws, keyword, num_lit, path_or_identifier, skip_till,
@@ -1025,6 +1025,9 @@ impl<'a> Comment<'a> {
                 let (end, tail) = take_until(s.syntax.comment_end)(i)?;
                 match take_until::<_, _, ErrorContext<'_>>(s.syntax.comment_start)(i) {
                     Ok((start, _)) if start.as_ptr() < end.as_ptr() => {
+                        if level >= Level::MAX_DEPTH {
+                            return Err(nom::Err::Failure(error_position!(i, ErrorKind::TooLarge)));
+                        }
                         level += 1;
                         i = &start[2..];
                     }
```



Discussion / hints:

Fix patch:
diff --git a/askama_parser/src/node.rs b/askama_parser/src/node.rs
index 27f81e751..545037a06 100644
--- a/askama_parser/src/node.rs
+++ b/askama_parser/src/node.rs
@@ -2,7 +2,7 @@ use std::borrow::Cow;
 use std::str;
 
 use nom::branch::alt;
-use nom::bytes::complete::{tag, take_until};
+use nom::bytes::complete::tag;
 use nom::character::complete::char;
 use nom::combinator::{
     complete, consumed, cut, eof, map, map_res, not, opt, peek, recognize, value,
@@ -1019,42 +1019,57 @@ pub struct Comment<'a> {
 
 impl<'a> Comment<'a> {
     fn parse(i: &'a str, s: &State<'_>) -> ParseResult<'a, Self> {
-        fn body<'a>(mut i: &'a str, s: &State<'_>) -> ParseResult<'a> {
-            let mut level = 0;
+        #[derive(Debug, Clone, Copy)]
+        enum Tag {
+            Open,
+            Close,
+        }
+
+        fn tag<'a>(i: &'a str, s: &State<'_>) -> ParseResult<'a, Tag> {
+            alt((
+                value(Tag::Open, |i| s.tag_comment_start(i)),
+                value(Tag::Close, |i| s.tag_comment_end(i)),
+            ))(i)
+        }
+
+        fn content<'a>(mut i: &'a str, s: &State<'_>) -> ParseResult<'a, ()> {
+            let mut depth = 0usize;
             loop {
-                let (end, tail) = take_until(s.syntax.comment_end)(i)?;
-                match take_until::<_, _, ErrorContext<'_>>(s.syntax.comment_start)(i) {
-                    Ok((start, _)) if start.as_ptr() < end.as_ptr() => {
-                        level += 1;
-                        i = &start[2..];
-                    }
-                    _ if level > 0 => {
-                        level -= 1;
-                        i = &end[2..];
-                    }
-                    _ => return Ok((end, tail)),
+                let (_, (j, tag)) = skip_till(|i| tag(i, s))(i)?;
+                match tag {
+                    Tag::Open => match depth.checked_add(1) {
+                        Some(new_depth) => depth = new_depth,
+                        None => {
+                            return Err(nom::Err::Failure(ErrorContext {
+                                input: i,
+                                message: Some(Cow::Borrowed("too deeply nested comments")),
+                            }))
+                        }
+                    },
+                    Tag::Close => match depth.checked_sub(1) {
+                        Some(new_depth) => depth = new_depth,
+                        None => return Ok((j, ())),
+                    },
                 }
+                i = j;
             }
         }
 
-        let mut p = tuple((
-            |i| s.tag_comment_start(i),
-            cut(tuple((
-                opt(Whitespace::parse),
-                |i| body(i, s),
-                |i| s.tag_comment_end(i),
-            ))),
-        ));
-        let (i, (content, (pws, tail, _))) = p(i)?;
-        let nws = if tail.ends_with('-') {
-            Some(Whitespace::Suppress)
-        } else if tail.ends_with('+') {
-            Some(Whitespace::Preserve)
-        } else if tail.ends_with('~') {
-            Some(Whitespace::Minimize)
-        } else {
-            None
+        let (i, (pws, content)) = pair(
+            preceded(|i| s.tag_comment_start(i), opt(Whitespace::parse)),
+            recognize(cut(|i| content(i, s))),
+        )(i)?;
+
+        let mut nws = None;
+        if let Some(content) = content.strip_suffix(s.syntax.comment_end) {
+            nws = match content.chars().last() {
+                Some('-') => Some(Whitespace::Suppress),
+                Some('+') => Some(Whitespace::Preserve),
+                Some('~') => Some(Whitespace::Minimize),
+                _ => None,
+            }
         };
+
         Ok((
             i,
             Self {


Test patch:
diff --git a/askama_parser/src/tests.rs b/askama_parser/src/tests.rs
index 5b9616142..3e7f8caa8 100644
--- a/askama_parser/src/tests.rs
+++ b/askama_parser/src/tests.rs
@@ -918,3 +918,17 @@ fn fuzzed_unary_recursion() {
     const TEMPLATE: &str = include_str!("../tests/unary-recursion.txt");
     assert!(Ast::from_str(TEMPLATE, None, &Syntax::default()).is_err());
 }
+
+#[test]
+fn fuzzed_comment_depth() {
+    let (sender, receiver) = std::sync::mpsc::channel();
+    let test = std::thread::spawn(move || {
+        const TEMPLATE: &str = include_str!("../tests/comment-depth.txt");
+        assert!(Ast::from_str(TEMPLATE, None, &Syntax::default()).is_ok());
+        sender.send(()).unwrap();
+    });
+    receiver
+        .recv_timeout(std::time::Duration::from_secs(3))
+        .expect("timeout");
+    test.join().unwrap();
+}
diff --git a/askama_parser/tests/comment-depth.txt b/askama_parser/tests/comment-depth.txt
new file mode 100644
index 000000000..a407171eb
--- /dev/null
+++ b/askama_parser/tests/comment-depth.txt
@@ -0,0 +1,1 @@
+{#{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{;#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{{#{{##}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}#}
\ No newline at end of file